digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__renderware_binary_stream {
label="RenderwareBinaryStream";
graph[style=dotted];
renderware_binary_stream__seq [label=<
pos | size | type | id |
0 | 4 | u4le→Sections | code |
4 | 4 | u4le | size |
8 | 4 | u4le | library_id_stamp |
12 | ... | switch (code) | body |
>];
renderware_binary_stream__inst__version [label=<
id | value |
version | ((library_id_stamp & 4294901760) != 0 ? ((((library_id_stamp >> 14) & 261888) + 196608) | ((library_id_stamp >> 16) & 63)) : (library_id_stamp << 8)) |
>];
renderware_binary_stream__seq_body_switch [label=<
case | type |
:sections_atomic | ListWithHeader |
:sections_geometry | ListWithHeader |
:sections_texture_dictionary | ListWithHeader |
:sections_geometry_list | ListWithHeader |
:sections_texture_native | ListWithHeader |
:sections_clump | ListWithHeader |
:sections_frame_list | ListWithHeader |
>];
subgraph cluster__struct_clump {
label="RenderwareBinaryStream::StructClump";
graph[style=dotted];
struct_clump__seq [label=<
pos | size | type | id |
0 | 4 | u4le | num_atomics |
4 | 4 | u4le | num_lights |
8 | 4 | u4le | num_cameras |
>];
}
subgraph cluster__struct_geometry {
label="RenderwareBinaryStream::StructGeometry";
graph[style=dotted];
struct_geometry__seq [label=<
pos | size | type | id |
0 | 4 | u4le | format |
4 | 4 | u4le | num_triangles |
8 | 4 | u4le | num_vertices |
12 | 4 | u4le | num_morph_targets |
16 | 12 | SurfaceProperties | surf_prop |
28 | ... | GeometryNonNative | geometry |
... | ... | MorphTarget | morph_targets |
repeat num_morph_targets times |
>];
struct_geometry__inst__num_uv_layers_raw [label=<
id | value |
num_uv_layers_raw | ((format & 16711680) >> 16) |
>];
struct_geometry__inst__is_textured [label=<
id | value |
is_textured | (format & 4) != 0 |
>];
struct_geometry__inst__is_native [label=<
id | value |
is_native | (format & 16777216) != 0 |
>];
struct_geometry__inst__num_uv_layers [label=<
id | value |
num_uv_layers | (num_uv_layers_raw == 0 ? (is_textured2 ? 2 : (is_textured ? 1 : 0)) : num_uv_layers_raw) |
>];
struct_geometry__inst__is_textured2 [label=<
id | value |
is_textured2 | (format & 128) != 0 |
>];
struct_geometry__inst__is_prelit [label=<
id | value |
is_prelit | (format & 8) != 0 |
>];
}
subgraph cluster__geometry_non_native {
label="RenderwareBinaryStream::GeometryNonNative";
graph[style=dotted];
geometry_non_native__seq [label=<
pos | size | type | id |
0 | 4 | Rgba | prelit_colors |
repeat _parent.num_vertices times |
... | ... | UvLayer | uv_layers |
repeat _parent.num_uv_layers times |
... | 8 | Triangle | triangles |
repeat _parent.num_triangles times |
>];
}
subgraph cluster__struct_geometry_list {
label="RenderwareBinaryStream::StructGeometryList";
graph[style=dotted];
struct_geometry_list__seq [label=<
pos | size | type | id |
0 | 4 | u4le | num_geometries |
>];
}
subgraph cluster__rgba {
label="RenderwareBinaryStream::Rgba";
graph[style=dotted];
rgba__seq [label=<
pos | size | type | id |
0 | 1 | u1 | r |
1 | 1 | u1 | g |
2 | 1 | u1 | b |
3 | 1 | u1 | a |
>];
}
subgraph cluster__sphere {
label="RenderwareBinaryStream::Sphere";
graph[style=dotted];
sphere__seq [label=<
pos | size | type | id |
0 | 4 | f4le | x |
4 | 4 | f4le | y |
8 | 4 | f4le | z |
12 | 4 | f4le | radius |
>];
}
subgraph cluster__morph_target {
label="RenderwareBinaryStream::MorphTarget";
graph[style=dotted];
morph_target__seq [label=<
pos | size | type | id |
0 | 16 | Sphere | bounding_sphere |
16 | 4 | u4le | has_vertices |
20 | 4 | u4le | has_normals |
24 | 12 | Vector3d | vertices |
repeat _parent.num_vertices times |
... | 12 | Vector3d | normals |
repeat _parent.num_vertices times |
>];
}
subgraph cluster__struct_atomic {
label="RenderwareBinaryStream::StructAtomic";
graph[style=dotted];
struct_atomic__seq [label=<
pos | size | type | id |
0 | 4 | u4le | frame_index |
4 | 4 | u4le | geometry_index |
8 | 1b | BitsType1(LittleBitEndian) | flag_render |
8:1 | 1b | BitsType1(LittleBitEndian) | _unnamed3 |
8:2 | 1b | BitsType1(LittleBitEndian) | flag_collision_test |
8:3 | 29b | b29 | _unnamed5 |
12 | 4 | u4le | unused |
>];
}
subgraph cluster__surface_properties {
label="RenderwareBinaryStream::SurfaceProperties";
graph[style=dotted];
surface_properties__seq [label=<
pos | size | type | id |
0 | 4 | f4le | ambient |
4 | 4 | f4le | specular |
8 | 4 | f4le | diffuse |
>];
}
subgraph cluster__struct_frame_list {
label="RenderwareBinaryStream::StructFrameList";
graph[style=dotted];
struct_frame_list__seq [label=<
pos | size | type | id |
0 | 4 | u4le | num_frames |
4 | 56 | Frame | frames |
repeat num_frames times |
>];
}
subgraph cluster__matrix {
label="RenderwareBinaryStream::Matrix";
graph[style=dotted];
matrix__seq [label=<
pos | size | type | id |
0 | 12 | Vector3d | entries |
repeat 3 times |
>];
}
subgraph cluster__vector_3d {
label="RenderwareBinaryStream::Vector3d";
graph[style=dotted];
vector_3d__seq [label=<
pos | size | type | id |
0 | 4 | f4le | x |
4 | 4 | f4le | y |
8 | 4 | f4le | z |
>];
}
subgraph cluster__list_with_header {
label="RenderwareBinaryStream::ListWithHeader";
graph[style=dotted];
list_with_header__seq [label=<
pos | size | type | id |
0 | 4 | | code |
4 | 4 | u4le | header_size |
8 | 4 | u4le | library_id_stamp |
12 | ... | switch (_parent.code) | header |
... | ... | RenderwareBinaryStream | entries |
repeat to end of stream |
>];
list_with_header__inst__version [label=<
id | value |
version | ((library_id_stamp & 4294901760) != 0 ? ((((library_id_stamp >> 14) & 261888) + 196608) | ((library_id_stamp >> 16) & 63)) : (library_id_stamp << 8)) |
>];
list_with_header__seq_header_switch [label=<
case | type |
:sections_atomic | StructAtomic |
:sections_geometry | StructGeometry |
:sections_texture_dictionary | StructTextureDictionary |
:sections_geometry_list | StructGeometryList |
:sections_clump | StructClump |
:sections_frame_list | StructFrameList |
>];
}
subgraph cluster__triangle {
label="RenderwareBinaryStream::Triangle";
graph[style=dotted];
triangle__seq [label=<
pos | size | type | id |
0 | 2 | u2le | vertex2 |
2 | 2 | u2le | vertex1 |
4 | 2 | u2le | material_id |
6 | 2 | u2le | vertex3 |
>];
}
subgraph cluster__frame {
label="RenderwareBinaryStream::Frame";
graph[style=dotted];
frame__seq [label=<
pos | size | type | id |
0 | 36 | Matrix | rotation_matrix |
36 | 12 | Vector3d | position |
48 | 4 | s4le | cur_frame_idx |
52 | 4 | u4le | matrix_creation_flags |
>];
}
subgraph cluster__tex_coord {
label="RenderwareBinaryStream::TexCoord";
graph[style=dotted];
tex_coord__seq [label=<
pos | size | type | id |
0 | 4 | f4le | u |
4 | 4 | f4le | v |
>];
}
subgraph cluster__uv_layer {
label="RenderwareBinaryStream::UvLayer";
graph[style=dotted];
uv_layer__seq [label=<
pos | size | type | id |
0 | 8 | TexCoord | tex_coords |
repeat num_vertices times |
>];
}
subgraph cluster__struct_texture_dictionary {
label="RenderwareBinaryStream::StructTextureDictionary";
graph[style=dotted];
struct_texture_dictionary__seq [label=<
pos | size | type | id |
0 | 4 | u4le | num_textures |
>];
}
}
renderware_binary_stream__seq:body_type -> renderware_binary_stream__seq_body_switch [style=bold];
renderware_binary_stream__seq_body_switch:case0 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case1 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case2 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case3 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case4 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case5 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq_body_switch:case6 -> list_with_header__seq [style=bold];
renderware_binary_stream__seq:code_type -> renderware_binary_stream__seq:body_type [color="#404040"];
renderware_binary_stream__seq:library_id_stamp_type -> renderware_binary_stream__inst__version [color="#404040"];
renderware_binary_stream__seq:library_id_stamp_type -> renderware_binary_stream__inst__version [color="#404040"];
renderware_binary_stream__seq:library_id_stamp_type -> renderware_binary_stream__inst__version [color="#404040"];
renderware_binary_stream__seq:library_id_stamp_type -> renderware_binary_stream__inst__version [color="#404040"];
struct_geometry__seq:surf_prop_type -> surface_properties__seq [style=bold];
struct_geometry__seq:geometry_type -> geometry_non_native__seq [style=bold];
struct_geometry__seq:morph_targets_type -> morph_target__seq [style=bold];
struct_geometry__seq:num_morph_targets_type -> struct_geometry__seq:morph_targets__repeat [color="#404040"];
struct_geometry__seq:format_type -> struct_geometry__inst__num_uv_layers_raw [color="#404040"];
struct_geometry__seq:format_type -> struct_geometry__inst__is_textured [color="#404040"];
struct_geometry__seq:format_type -> struct_geometry__inst__is_native [color="#404040"];
struct_geometry__inst__num_uv_layers_raw:num_uv_layers_raw_type -> struct_geometry__inst__num_uv_layers [color="#404040"];
struct_geometry__inst__is_textured2:is_textured2_type -> struct_geometry__inst__num_uv_layers [color="#404040"];
struct_geometry__inst__is_textured:is_textured_type -> struct_geometry__inst__num_uv_layers [color="#404040"];
struct_geometry__inst__num_uv_layers_raw:num_uv_layers_raw_type -> struct_geometry__inst__num_uv_layers [color="#404040"];
struct_geometry__seq:format_type -> struct_geometry__inst__is_textured2 [color="#404040"];
struct_geometry__seq:format_type -> struct_geometry__inst__is_prelit [color="#404040"];
geometry_non_native__seq:prelit_colors_type -> rgba__seq [style=bold];
struct_geometry__seq:num_vertices_type -> geometry_non_native__seq:prelit_colors__repeat [color="#404040"];
geometry_non_native__seq:uv_layers_type -> uv_layer__seq [style=bold];
struct_geometry__inst__num_uv_layers:num_uv_layers_type -> geometry_non_native__seq:uv_layers__repeat [color="#404040"];
geometry_non_native__seq:triangles_type -> triangle__seq [style=bold];
struct_geometry__seq:num_triangles_type -> geometry_non_native__seq:triangles__repeat [color="#404040"];
morph_target__seq:bounding_sphere_type -> sphere__seq [style=bold];
morph_target__seq:vertices_type -> vector_3d__seq [style=bold];
struct_geometry__seq:num_vertices_type -> morph_target__seq:vertices__repeat [color="#404040"];
morph_target__seq:normals_type -> vector_3d__seq [style=bold];
struct_geometry__seq:num_vertices_type -> morph_target__seq:normals__repeat [color="#404040"];
struct_frame_list__seq:frames_type -> frame__seq [style=bold];
struct_frame_list__seq:num_frames_type -> struct_frame_list__seq:frames__repeat [color="#404040"];
matrix__seq:entries_type -> vector_3d__seq [style=bold];
list_with_header__seq:header_type -> list_with_header__seq_header_switch [style=bold];
list_with_header__seq_header_switch:case0 -> struct_atomic__seq [style=bold];
list_with_header__seq_header_switch:case1 -> struct_geometry__seq [style=bold];
list_with_header__seq_header_switch:case2 -> struct_texture_dictionary__seq [style=bold];
list_with_header__seq_header_switch:case3 -> struct_geometry_list__seq [style=bold];
list_with_header__seq_header_switch:case4 -> struct_clump__seq [style=bold];
list_with_header__seq_header_switch:case5 -> struct_frame_list__seq [style=bold];
renderware_binary_stream__seq:code_type -> list_with_header__seq:header_type [color="#404040"];
list_with_header__seq:entries_type -> renderware_binary_stream__seq [style=bold];
list_with_header__seq:library_id_stamp_type -> list_with_header__inst__version [color="#404040"];
list_with_header__seq:library_id_stamp_type -> list_with_header__inst__version [color="#404040"];
list_with_header__seq:library_id_stamp_type -> list_with_header__inst__version [color="#404040"];
list_with_header__seq:library_id_stamp_type -> list_with_header__inst__version [color="#404040"];
frame__seq:rotation_matrix_type -> matrix__seq [style=bold];
frame__seq:position_type -> vector_3d__seq [style=bold];
uv_layer__seq:tex_coords_type -> tex_coord__seq [style=bold];
uv_layer__params:num_vertices_type -> uv_layer__seq:tex_coords__repeat [color="#404040"];
}