sead
Loading...
Searching...
No Matches
aglPrimitiveShape.h
Go to the documentation of this file.
1#pragma once
2
3#include <common/aglVertexBuffer.h>
4#include <common/aglIndexStream.h>
5#include <container/seadBuffer.h>
6#include <container/seadSafeArray.h>
7#include <heap/seadDisposer.h>
8#include <math/seadVector.h>
9
10namespace agl { namespace utl {
11
13
15{
17
18public:
26 static_assert(cDrawType_Num == 3);
27
35 static_assert(cQuality_Num == 3);
36
37 struct Vertex
38 {
39 f32 pos[3];
40 f32 nrm[3];
41 f32 tex[2];
42 };
43 static_assert(sizeof(Vertex) == 0x20, "agl::utl::PrimitiveShape::Vertex size mismatch");
44
45public:
48
49 void initialize(sead::Heap* heap);
50
52 {
53 if (draw_type == cDrawType_Triangle)
54 return mIdxStreamQuad;
55
56 else // if (draw_type == cDrawType_Line)
57 return mIdxStreamLineQuad;
58 }
59
61 {
62 if (draw_type == cDrawType_Triangle)
63 return mIdxStreamQuadTriangle;
64
65 else // if (draw_type == cDrawType_Line)
66 return mIdxStreamLineQuadTriangle;
67 }
68
69private:
70 void setUpStreamQuad_(sead::Heap* heap);
79
80 static void setUpStreams_(VertexBuffer* p_vtx_buffer);
81
82private:
83 // Quad
90
91 // QuadTriangle
98
99 // Cube
106
107 // Circle
112
113 // Sphere
118
119 // Hemisphere
124
125 // Cylinder
132
133 // Cone
140
141 // Torus
148
150};
151static_assert(sizeof(PrimitiveShape) == 0x172C, "agl::utl::PrimitiveShape size mismatch");
152
153} }
Definition aglIndexStream.h:10
Definition aglVertexBuffer.h:11
Definition aglPrimitiveShape.h:15
VertexBuffer mVtxBufferSphere
Definition aglPrimitiveShape.h:116
IndexStream mIdxStreamLineCube
Definition aglPrimitiveShape.h:105
VertexBuffer mVtxBufferCube
Definition aglPrimitiveShape.h:103
void setUpStreamQuadTriangle_(sead::Heap *heap)
Definition aglPrimitiveShape.cpp:153
void setUpStreamCube_(sead::Heap *heap)
DrawType
Definition aglPrimitiveShape.h:20
@ cDrawType_Triangle
Definition aglPrimitiveShape.h:21
@ cDrawType_Point
Definition aglPrimitiveShape.h:23
@ cDrawType_Num
Definition aglPrimitiveShape.h:24
@ cDrawType_Line
Definition aglPrimitiveShape.h:22
IndexStream mIdxStreamCube
Definition aglPrimitiveShape.h:104
sead::Buffer< u32 > mIdxQuad
Definition aglPrimitiveShape.h:85
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamCylinder
Definition aglPrimitiveShape.h:130
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxCylinder
Definition aglPrimitiveShape.h:127
sead::Buffer< Vertex > mVtxQuadTriangle
Definition aglPrimitiveShape.h:92
sead::Buffer< Vertex > mVtxCube
Definition aglPrimitiveShape.h:100
void setUpStreamCircle_(u32, sead::Heap *heap)
sead::UnsafeArray< sead::UnsafeArray< sead::Buffer< u16 >, cDrawType_Num >, cQuality_Num > mIdxCircle
Definition aglPrimitiveShape.h:109
sead::UnsafeArray< sead::UnsafeArray< IndexStream, cDrawType_Num >, cQuality_Num > mIdxStreamHemisphere
Definition aglPrimitiveShape.h:123
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamLineTorus
Definition aglPrimitiveShape.h:147
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamCone
Definition aglPrimitiveShape.h:138
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxLineCone
Definition aglPrimitiveShape.h:136
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamLineCylinder
Definition aglPrimitiveShape.h:131
const IndexStream & getIdxStreamQuad(DrawType draw_type=cDrawType_Triangle) const
Definition aglPrimitiveShape.h:51
sead::Buffer< Vertex > mVtxTorus
Definition aglPrimitiveShape.h:142
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamLineCone
Definition aglPrimitiveShape.h:139
~PrimitiveShape()
Definition aglPrimitiveShape.cpp:12
static void setUpStreams_(VertexBuffer *p_vtx_buffer)
Definition aglPrimitiveShape.cpp:239
sead::Buffer< u32 > mIdxLineQuad
Definition aglPrimitiveShape.h:86
void setUpStreamCone_(u32, u32, sead::Heap *heap)
sead::Buffer< Vertex > mVtxCone
Definition aglPrimitiveShape.h:134
sead::UnsafeArray< sead::UnsafeArray< sead::Buffer< u16 >, cDrawType_Num >, cQuality_Num > mIdxSphere
Definition aglPrimitiveShape.h:115
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxLineCylinder
Definition aglPrimitiveShape.h:128
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxTorus
Definition aglPrimitiveShape.h:143
sead::Buffer< Vertex > mVtxSphere
Definition aglPrimitiveShape.h:114
sead::Buffer< u32 > mIdxLineQuadTriangle
Definition aglPrimitiveShape.h:94
sead::UnsafeArray< IndexStream, cQuality_Num > mIdxStreamTorus
Definition aglPrimitiveShape.h:146
void setUpStreamSphere_(u32, u32, sead::Heap *heap)
VertexBuffer mVtxBufferCylinder
Definition aglPrimitiveShape.h:129
sead::UnsafeArray< sead::UnsafeArray< IndexStream, cDrawType_Num >, cQuality_Num > mIdxStreamCircle
Definition aglPrimitiveShape.h:111
VertexBuffer mVtxBufferQuad
Definition aglPrimitiveShape.h:87
sead::Buffer< Vertex > mVtxHemisphere
Definition aglPrimitiveShape.h:120
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxLineTorus
Definition aglPrimitiveShape.h:144
VertexBuffer mVtxBufferTorus
Definition aglPrimitiveShape.h:145
IndexStream mIdxStreamLineQuadTriangle
Definition aglPrimitiveShape.h:97
sead::Buffer< Vertex > mVtxQuad
Definition aglPrimitiveShape.h:84
const IndexStream & getIdxStreamQuadTriangle(DrawType draw_type=cDrawType_Triangle) const
Definition aglPrimitiveShape.h:60
void setUpStreamQuad_(sead::Heap *heap)
Definition aglPrimitiveShape.cpp:64
void setUpStreamHemisphere_(u32, u32, sead::Heap *heap)
sead::Buffer< u32 > mIdxQuadTriangle
Definition aglPrimitiveShape.h:93
VertexBuffer mVtxBufferHemisphere
Definition aglPrimitiveShape.h:122
sead::Buffer< Vertex > mVtxCircle
Definition aglPrimitiveShape.h:108
void initialize(sead::Heap *heap)
Definition aglPrimitiveShape.cpp:51
sead::Buffer< u32 > mIdxCube
Definition aglPrimitiveShape.h:101
void setUpStreamCylinder_(u32, u32, sead::Heap *heap)
PrimitiveShape()
Definition aglPrimitiveShape.cpp:8
VertexBuffer mVtxBufferQuadTriangle
Definition aglPrimitiveShape.h:95
Quality
Definition aglPrimitiveShape.h:29
@ cQuality_0
Definition aglPrimitiveShape.h:30
@ cQuality_Num
Definition aglPrimitiveShape.h:33
@ cQuality_2
Definition aglPrimitiveShape.h:32
@ cQuality_1
Definition aglPrimitiveShape.h:31
sead::Buffer< Vertex > mVtxCylinder
Definition aglPrimitiveShape.h:126
void setUpStreamTorus_(u32, u32, sead::Heap *heap, f32, f32, s32, s32)
sead::Buffer< u32 > mIdxLineCube
Definition aglPrimitiveShape.h:102
IndexStream mIdxStreamQuadTriangle
Definition aglPrimitiveShape.h:96
IndexStream mIdxStreamLineQuad
Definition aglPrimitiveShape.h:89
sead::UnsafeArray< sead::UnsafeArray< sead::Buffer< u16 >, cDrawType_Num >, cQuality_Num > mIdxHemisphere
Definition aglPrimitiveShape.h:121
IndexStream mIdxStreamQuad
Definition aglPrimitiveShape.h:88
VertexBuffer mVtxBufferCircle
Definition aglPrimitiveShape.h:110
sead::UnsafeArray< sead::UnsafeArray< IndexStream, cDrawType_Num >, cQuality_Num > mIdxStreamSphere
Definition aglPrimitiveShape.h:117
sead::UnsafeArray< sead::Buffer< u32 >, cQuality_Num > mIdxCone
Definition aglPrimitiveShape.h:135
VertexBuffer mVtxBufferCone
Definition aglPrimitiveShape.h:137
Definition aglVertexAttributeHolder.h:10
Definition seadBuffer.h:13
Definition seadHeap.h:23
Definition seadSafeArray.h:257
Definition aglImageFilter2D.h:11
Definition aglDisplayList.cpp:5
Definition seadAssert.h:44
#define SEAD_SINGLETON_DISPOSER(CLASS)
Definition seadDisposer.h:29
Definition aglPrimitiveShape.h:38
f32 tex[2]
Definition aglPrimitiveShape.h:41
f32 nrm[3]
Definition aglPrimitiveShape.h:40
f32 pos[3]
Definition aglPrimitiveShape.h:39