11#include " gdbvertexarraytypetwo0x20.h"
22
33#include " color.h"
4+ #include " golerror.h"
5+ #include " golfileparser.h"
46#include " golmath.h"
57
68// FUNCTION: GOLDP 0x10016b80
@@ -10,18 +12,82 @@ GdbVertexArrayTypeTwo0x20::GdbVertexArrayTypeTwo0x20()
1012 m_unk0x06 = 2 ;
1113}
1214
13- // STUB : GOLDP 0x10016ba0
15+ // FUNCTION : GOLDP 0x10016ba0
1416void GdbVertexArrayTypeTwo0x20::VTable0x08 (GolFileParser& p_parser)
1517{
16- // TODO
17- STUB (0x10016ba0 );
18+ LegoU32 i;
19+ if (m_unk0x04 != 0 ) {
20+ VTable0x0c ();
21+ }
22+ p_parser.ReadLeftBracket ();
23+ m_unk0x04 = p_parser.ReadInteger ();
24+ if (m_unk0x04 == 0 ) {
25+ p_parser.HandleUnexpectedToken (GolFileParser::e_int);
26+ }
27+ p_parser.ReadRightBracket ();
28+ p_parser.ReadLeftCurly ();
29+ m_unk0x08 = new GolVec3[m_unk0x04];
30+ if (m_unk0x08 == NULL ) {
31+ GOL_FATALERROR (c_golErrorOutOfMemory);
32+ }
33+ m_unk0x0c = new GolVec2[m_unk0x04];
34+ if (m_unk0x0c == NULL ) {
35+ GOL_FATALERROR (c_golErrorOutOfMemory);
36+ }
37+ m_unk0x10 = new LegoU32[m_unk0x04];
38+ if (m_unk0x10 == NULL ) {
39+ GOL_FATALERROR (c_golErrorOutOfMemory);
40+ }
41+ m_unk0x1c = new GolVec3[m_unk0x04];
42+ if (m_unk0x1c == NULL ) {
43+ GOL_FATALERROR (c_golErrorOutOfMemory);
44+ }
45+ for (i = 0 ; i < m_unk0x04; i++) {
46+ m_unk0x08[i].m_x = p_parser.ReadFloat ();
47+ m_unk0x08[i].m_y = p_parser.ReadFloat ();
48+ m_unk0x08[i].m_z = p_parser.ReadFloat ();
49+ m_unk0x0c[i].m_x = p_parser.ReadFloat ();
50+ m_unk0x0c[i].m_y = p_parser.ReadFloat ();
51+ m_unk0x1c[i].m_x = p_parser.ReadFloat ();
52+ m_unk0x1c[i].m_y = p_parser.ReadFloat ();
53+ m_unk0x1c[i].m_z = p_parser.ReadFloat ();
54+ m_unk0x10[i] = ARGBU32 (0xff , 0xff , 0xff , 0xff );
55+ }
56+ p_parser.ReadRightCurly ();
1857}
1958
20- // STUB : GOLDP 0x10016d30
59+ // FUNCTION : GOLDP 0x10016d30
2160void GdbVertexArrayTypeTwo0x20::VTable0x04 (LegoU16 p_count)
2261{
23- // TODO
24- STUB (0x10016d30 );
62+ LegoU32 i;
63+ if (m_unk0x04 != 0 ) {
64+ VTable0x0c ();
65+ }
66+ m_unk0x04 = p_count;
67+ m_unk0x08 = new GolVec3[m_unk0x04];
68+ if (m_unk0x08 == NULL ) {
69+ GOL_FATALERROR (c_golErrorOutOfMemory);
70+ }
71+ m_unk0x0c = new GolVec2[m_unk0x04];
72+ if (m_unk0x0c == NULL ) {
73+ GOL_FATALERROR (c_golErrorOutOfMemory);
74+ }
75+ m_unk0x1c = new GolVec3[m_unk0x04];
76+ if (m_unk0x1c == NULL ) {
77+ GOL_FATALERROR (c_golErrorOutOfMemory);
78+ }
79+ m_unk0x10 = new LegoU32[m_unk0x04];
80+ if (m_unk0x10 == NULL ) {
81+ GOL_FATALERROR (c_golErrorOutOfMemory);
82+ }
83+ for (i = 0 ; i < m_unk0x04; i++) {
84+ m_unk0x1c[i].m_x = 0 .0f ;
85+ m_unk0x1c[i].m_y = 0 .0f ;
86+ m_unk0x1c[i].m_z = 1 .0f ;
87+ m_unk0x0c[i].m_x = 0 .0f ;
88+ m_unk0x0c[i].m_y = 0 .0f ;
89+ m_unk0x10[i] = ARGBU32 (0xff , 0xff , 0xff , 0xff );
90+ }
2591}
2692
2793// FUNCTION: GOLDP 0x10016e40
0 commit comments