User Tools

Site Tools


kirby64_the_crystal_shards:level_settings_blocks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
kirby64_the_crystal_shards:level_settings_blocks [2020/09/15 11:21]
jesusyoshi54 [Triangle Groups]
kirby64_the_crystal_shards:level_settings_blocks [2021/04/09 18:11]
someone2639 [Normal Groups] edit struct definition since it's the only resource on the topic
Line 112: Line 112:
 The normal groups are a binary space partition tree of the level normals and corresponding triangles associated with those normals. Each normal group represents a node in the tree, and has a right and left child based on whether the ensemble of triangles is in front or behind the parent node. The normal groups are a binary space partition tree of the level normals and corresponding triangles associated with those normals. Each normal group represents a node in the tree, and has a right and left child based on whether the ensemble of triangles is in front or behind the parent node.
  
-The first index of the normal group is (-1,​-2,​-3,​-4), ​the search through ​the tree starts at the last member ​in the array, ​indices of zero refer to leaf nodes.+If a triangle group intersects a normal, then the group is split and the normal is repeated in both the left and right children. If that group shares a condition such as being breakable, then the entire group is repeated ​in the left and right branches. 
 + 
 +Child indices of zero refer to leaf nodes, the tree start is defined in the collision header.
  
 <code c> <code c>
 struct Norm_Group struct Norm_Group
 { {
-/​*0x0*/  ​u16  ​Normal_Index;​ +/​*0x0*/  ​u8  ​Normal_Index;​ 
-/*0x2*/  ​u16  ​Left_Child;​ +/*0x1*/  ​u8  ​Left_Child;​ 
-/*0x4*/  ​u16  ​Right_Child;​ +/*0x2*/  ​u8  ​Right_Child;​ 
-/*0x6*/  ​u16  ​Tri_Cell_Index+/*0x3*/  ​u8  ​Tri_Cell_Index
 }; };
 </​code>​ </​code>​
Line 136: Line 138:
 /​*0x0*/ ​ u16  Num_Dynamic_Geo_Group_Members;​ //Number of connected triangles /​*0x0*/ ​ u16  Num_Dynamic_Geo_Group_Members;​ //Number of connected triangles
 /​*0x2*/ ​ u16  Index_To_Dynamic_Geo_Group;​ //(0x30 in col header) /​*0x2*/ ​ u16  Index_To_Dynamic_Geo_Group;​ //(0x30 in col header)
-/​*0x4*/ ​ u16  ​Unk_Index; //Gets stored ​to unk struct+/​*0x4*/ ​ u16  ​Layout_Number; //Linked display geometry ​to also remove
 }; };
 </​code>​ </​code>​
Line 204: Line 206:
 /​*0x20*/ ​  ​u16 ​      ​(*Triangle_Norm_Cells)[][2];​ /​*0x20*/ ​  ​u16 ​      ​(*Triangle_Norm_Cells)[][2];​
 /​*0x24*/ ​  ​u32 ​      ​Len_Triangle_Norm_Cells;​ /​*0x24*/ ​  ​u32 ​      ​Len_Triangle_Norm_Cells;​
-/​*0x28*/ ​  ​u32 ​      Num_Floor_Norms; //Should be tri norm cells minus 1+/​*0x28*/ ​  ​u32 ​      Norm_Cell_BSP_Root; //Always last member
 /​*0x2C*/ ​  ​struct DynGeo_List ​    ​(*Destructable_Groups)[];​ /​*0x2C*/ ​  ​struct DynGeo_List ​    ​(*Destructable_Groups)[];​
 /​*0x30*/ ​  ​u16 ​      ​(*Destructable Indices)[]; /​*0x30*/ ​  ​u16 ​      ​(*Destructable Indices)[];
kirby64_the_crystal_shards/level_settings_blocks.txt · Last modified: 2021/04/09 18:18 by someone2639