k_classtype_audio = 14,
k_classtype_trigger = 100,
k_classtype_logic_achievement = 101,
- k_classtype_logic_relay = 102
+ k_classtype_logic_relay = 102,
+ k_classtype_world_light = 200,
+ k_classtype_nonlocal_gate = 300
};
enum mdl_shader
{
k_surface_prop_concrete = 0,
k_surface_prop_wood = 1,
- k_surface_prop_grass = 2
+ k_surface_prop_grass = 2,
+ k_surface_prop_tiles = 3
};
enum material_flag
k_material_flag_grind_surface = 0x8
};
+enum bone_flag
+{
+ k_bone_flag_deform = 0x1,
+ k_bone_flag_ik = 0x2,
+ k_bone_flag_collider_box = 0x4,
+ k_bone_flag_collider_capsule = 0x8,
+ k_bone_flag_collider_reserved0 = 0x10,
+ k_bone_flag_collider_reserved1 = 0x20,
+ k_bone_flag_collider_reserved2 = 0x40,
+ k_bone_flag_collider_reserved3 = 0x80,
+ k_bone_flag_collider_any = k_bone_flag_collider_box |
+ k_bone_flag_collider_capsule |
+ k_bone_flag_collider_reserved0 |
+ k_bone_flag_collider_reserved1 |
+ k_bone_flag_collider_reserved2 |
+ k_bone_flag_collider_reserved3,
+ k_bone_flag_cone_constraint = 0x100,
+ k_bone_flag_force_u32 = 0xffffffff
+};
+
#pragma pack(push,1)
+/* 48 byte */
struct mdl_vert
{
- v3f co,
- norm;
- v2f uv;
- u8 colour[4];
- u16 weights[4];
- u8 groups[4];
+ v3f co, /* 3*32 */
+ norm; /* 3*32 */
+ v2f uv; /* 2*32 */
+
+ u8 colour[4]; /* 4*8 */
+ u16 weights[4];/* 4*16 */
+ u8 groups[4]; /* 4*8 */
};
struct mdl_submesh
struct classtype_bone
{
- u32 deform,
+ u32 flags,
ik_target,
- ik_pole,
- collider,
- use_limits;
+ ik_pole;
- v3f angle_limits[2];
boxf hitbox;
+
+ v3f conevx, conevy, coneva;
+ float conet;
};
struct classtype_skeleton
float volume;
};
+struct classtype_world_light
+{
+ enum light_type
+ {
+ k_light_type_point,
+ k_light_type_spot,
+ k_light_type_point_nighttime_only,
+ k_light_type_spot_nighttime_only
+ }
+ type;
+
+ v4f colour; /* RGB, Energy */
+ float angle, range;
+};
+
#pragma pack(pop)