X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=entity.h;h=80f4df7573fc7b62c440b9ba2cd29e4af024ddc4;hb=HEAD;hp=103e1a20635e1f32a91f7f0a4f8cc719350fff4d;hpb=df9f72d2912a5424d37dfdb02f76aba8f1ed4df1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/entity.h b/entity.h deleted file mode 100644 index 103e1a2..0000000 --- a/entity.h +++ /dev/null @@ -1,499 +0,0 @@ -#ifndef ENTITY_H -#define ENTITY_H - -#include "model.h" - -typedef struct ent_spawn ent_spawn; -typedef struct ent_light ent_light; -typedef struct ent_gate ent_gate; -typedef struct ent_route_node ent_route_node; -typedef struct ent_path_index ent_path_index; -typedef struct ent_checkpoint ent_checkpoint; -typedef struct ent_route ent_route; -typedef struct ent_water ent_water; -typedef struct ent_audio_clip ent_audio_clip; -typedef struct volume_particles volume_particles; -typedef struct volume_trigger volume_trigger; -typedef struct ent_volume ent_volume; -typedef struct ent_audio ent_audio; -typedef struct ent_marker ent_marker; -typedef struct ent_traffic ent_traffic; -typedef struct ent_font ent_font; -typedef struct ent_font_variant ent_font_variant; -typedef struct ent_glyph ent_glyph; -typedef struct ent_skateshop ent_skateshop; -typedef struct ent_camera ent_camera; -typedef struct ent_swspreview ent_swspreview; -typedef struct ent_worldinfo ent_worldinfo; -typedef struct ent_ccmd ent_ccmd; -typedef struct ent_objective ent_objective; -typedef struct ent_challenge ent_challenge; -typedef struct ent_relay ent_relay; -typedef struct ent_cubemap ent_cubemap; - -enum entity_alias{ - k_ent_none = 0, - k_ent_gate = 1, - k_ent_spawn = 2, - k_ent_route_node = 3, - k_ent_route = 4, - k_ent_water = 5, - k_ent_volume = 6, - k_ent_audio = 7, - k_ent_marker = 8, - k_ent_font = 9, - k_ent_font_variant= 10, - k_ent_traffic = 11, - k_ent_skateshop = 12, - k_ent_camera = 13, - k_ent_swspreview = 14, - k_ent_menuitem = 15, - k_ent_worldinfo = 16, - k_ent_ccmd = 17, - k_ent_objective = 18, - k_ent_challenge = 19, - k_ent_relay = 20, - k_ent_cubemap = 21 -}; - -static u32 mdl_entity_id_type( u32 entity_id ){ - return (entity_id & 0xffff0000) >> 16; -} - -static u32 mdl_entity_id_id( u32 entity_id ){ - return entity_id & 0x0000ffff; -} - -static u32 mdl_entity_id( u32 type, u32 index ){ - return (type & 0xfffff)<<16 | (index & 0xfffff); -} - -enum entity_function{ - k_ent_function_trigger, - k_ent_function_particle_spawn -}; - -struct ent_spawn{ - mdl_transform transform; - u32 pstr_name; -}; - -enum light_type{ - k_light_type_point = 0, - k_light_type_spot = 1 -}; - -struct ent_light{ - mdl_transform transform; - u32 daytime, - type; - - v4f colour; - float angle, - range; - - m4x3f inverse_world; - v2f angle_sin_cos; -}; - -/* v101 */ -#if 0 -enum gate_type{ - k_gate_type_unlinked = 0, - k_gate_type_teleport = 1, - k_gate_type_nonlocal_unlinked = 2, - k_gate_type_nonlocel = 3 -}; -#endif - -/* v102+ */ -enum ent_gate_flag{ - k_ent_gate_linked = 0x1, /* this is a working portal */ - k_ent_gate_nonlocal = 0x2, /* use the key string to link this portal. - NOTE: if set, it adds the flip flag. */ - k_ent_gate_flip = 0x4, /* flip direction 180* for exiting portal */ - k_ent_gate_custom_mesh = 0x8, /* use a custom submesh instead of default */ - k_ent_gate_locked = 0x10,/* has to be unlocked to be useful */ -}; - -struct ent_gate{ - u32 flags, - target, - key; - - v3f dimensions, - co[2]; - - v4f q[2]; - - /* runtime */ - m4x3f to_world, transport; - - union{ - u32 timing_version; - - struct{ - u8 ref_count; - }; - }; - - double timing_time; - u16 routes[4]; /* routes that pass through this gate */ - u8 route_count; - - /* v102+ */ - u32 submesh_start, submesh_count; -}; - -struct ent_route_node{ - v3f co; - u8 ref_count, ref_total; -}; - -struct ent_path_index{ - u16 index; -}; - -struct ent_checkpoint{ - u16 gate_index, - path_start, - path_count; -}; - -struct ent_route{ - union{ - mdl_transform transform; - u32 official_track_id; - } - anon; - - u32 pstr_name; - u16 checkpoints_start, - checkpoints_count; - - v4f colour; - - /* runtime */ - u16 active_checkpoint, - valid_checkpoints; - - float factive; - m4x3f board_transform; - mdl_submesh sm; - double timing_base; -}; - -struct ent_water{ - mdl_transform transform; - float max_dist; - u32 reserved0, reserved1; -}; - -struct ent_audio_clip{ - union{ - mdl_file file; - audio_clip clip; - }_; - - float probability; -}; - -struct volume_particles{ - u32 blank, blank2; -}; - -struct volume_trigger{ - u32 event, blank; -}; - -enum ent_volume_flag { - k_ent_volume_flag_particles = 0x1, - k_ent_volume_flag_disabled = 0x2 -}; - -struct ent_volume{ - mdl_transform transform; - m4x3f to_world, to_local; - u32 flags; - - u32 target; - union{ - volume_trigger trigger; - volume_particles particles; - }; -}; - -struct ent_audio{ - mdl_transform transform; - u32 flags, - clip_start, - clip_count; - float volume, crossfade; - u32 behaviour, - group, - probability_curve, - max_channels; -}; - -struct ent_marker{ - mdl_transform transform; - u32 pstr_alias; -}; - -enum skateshop_type{ - k_skateshop_type_boardshop, - k_skateshop_type_charshop, - k_skateshop_type_worldshop, -}; - -struct ent_skateshop{ - mdl_transform transform; - u32 type, id_camera; - - union{ - struct{ - u32 id_display, - id_info, - id_rack; - } - boards; - - struct{ - u32 id_display, - id_info; - } - character; - - struct{ - u32 id_display, - id_info; - } - worlds; - }; -}; - -struct ent_swspreview{ - u32 id_camera, id_display, id_display1; -}; - -struct ent_traffic{ - mdl_transform transform; - u32 submesh_start, - submesh_count, - start_node, - node_count; - float speed, - t; - u32 index; /* into the path */ -}; - -struct ent_camera{ - mdl_transform transform; - float fov; -}; - -enum ent_menuitem_type{ - k_ent_menuitem_type_visual = 0, - k_ent_menuitem_type_event_button = 1, - k_ent_menuitem_type_page_button = 2, - k_ent_menuitem_type_toggle = 3, - k_ent_menuitem_type_slider = 4, - k_ent_menuitem_type_page = 5, - k_ent_menuitem_type_binding = 6, - k_ent_menuitem_type_disabled = 90 -}; - -enum ent_menuitem_stack_behaviour{ - k_ent_menuitem_stack_append = 0, - k_ent_menuitem_stack_replace = 1 -}; - -typedef struct ent_menuitem ent_menuitem; -struct ent_menuitem{ - u32 type, groups, - id_links[4]; /* ent_menuitem */ - f32 factive, fvisible; - - mdl_transform transform; - u32 submesh_start, submesh_count; - - union{ u64 _u64; /* force storage for 64bit pointers */ - i32 *pi32; - f32 *pf32; - void *pvoid; - }; - - union{ - struct{ - u32 pstr_name; - } - visual; - - struct{ - u32 id_min, /* ent_marker */ - id_max, /* . */ - id_handle, /* ent_menuitem */ - pstr_data; - } - slider; - - struct{ - u32 pstr, - stack_behaviour; - } - button; - - struct{ - u32 id_check, /* ent_menuitem */ - pstr_data; - v3f offset; /* relative to parent */ - } - checkmark; - - struct{ - u32 pstr_name, - id_entrypoint, /* ent_menuitem */ - id_viewpoint; /* ent_camera */ - } - page; - - struct{ - u32 pstr_bind, - font_variant; - } - binding; - }; -}; - -struct ent_worldinfo{ - u32 pstr_name, pstr_author, pstr_desc; - f32 timezone; -}; - -static ent_marker *ent_find_marker( mdl_context *mdl, - mdl_array_ptr *arr, const char *alias ) -{ - for( u32 i=0; ipstr_alias ), alias ) ){ - return marker; - } - } - - return NULL; -} - -enum channel_behaviour{ - k_channel_behaviour_unlimited = 0, - k_channel_behaviour_discard_if_full = 1, - k_channel_behaviour_crossfade_if_full = 2 -}; - -enum probability_curve{ - k_probability_curve_constant = 0, - k_probability_curve_wildlife_day = 1, - k_probability_curve_wildlife_night = 2 -}; - -struct ent_font{ - u32 alias, - variant_start, - variant_count, - glyph_start, - glyph_count, - glyph_utf32_base; -}; - -struct ent_font_variant{ - u32 name, - material_id; -}; - -struct ent_glyph{ - v2f size; - u32 indice_start, - indice_count; -}; - -struct ent_ccmd{ - u32 pstr_command; -}; - -enum ent_objective_filter{ - k_ent_objective_filter_none = 0x00000000, - k_ent_objective_filter_trick_shuvit = 0x00000001, - k_ent_objective_filter_trick_kickflip = 0x00000002, - k_ent_objective_filter_trick_treflip = 0x00000004, - k_ent_objective_filter_trick_any = - k_ent_objective_filter_trick_shuvit| - k_ent_objective_filter_trick_treflip| - k_ent_objective_filter_trick_kickflip, - k_ent_objective_filter_flip_back = 0x00000008, - k_ent_objective_filter_flip_front = 0x00000010, - k_ent_objective_filter_flip_any = - k_ent_objective_filter_flip_back| - k_ent_objective_filter_flip_front, - k_ent_objective_filter_grind_truck_any = 0x00000020, - k_ent_objective_filter_grind_board_any = 0x00000040, - k_ent_objective_filter_grind_any = - k_ent_objective_filter_grind_truck_any| - k_ent_objective_filter_grind_board_any, - k_ent_objective_filter_footplant = 0x00000080, - k_ent_objective_filter_passthrough = 0x00000100 -}; - -enum ent_objective_flag { - k_ent_objective_hidden = 0x1, - k_ent_objective_passed = 0x2 -}; - -struct ent_objective{ - mdl_transform transform; - u32 submesh_start, - submesh_count, - flags, - id_next, - filter,filter2, - id_win, - win_event; - f32 time_limit; -}; - -enum ent_challenge_flag { - k_ent_challenge_timelimit = 0x1 -}; - -struct ent_challenge{ - mdl_transform transform; - u32 pstr_alias, - flags, - target, - target_event, - reset, - reset_event, - first, - camera, - status; -}; - -struct ent_relay { - u32 targets[4][2]; -}; - -struct ent_cubemap { - v3f co; - u32 resolution, live, texture_id, - framebuffer_id, renderbuffer_id, placeholder[2]; -}; - -typedef struct ent_call ent_call; -struct ent_call{ - u32 id, function; - void *data; -}; - -#include "world.h" -static void entity_call( world_instance *world, ent_call *call ); - -#endif /* ENTITY_H */