typedef struct ent_region ent_region;
typedef struct ent_list ent_list;
typedef struct ent_glider ent_glider;
+typedef struct ent_npc ent_npc;
+
+typedef struct ent_call ent_call;
+struct ent_call{
+ u32 id;
+ i32 function;
+ void *data;
+};
+
+typedef enum entity_call_result entity_call_result;
+enum entity_call_result
+{
+ k_entity_call_result_OK,
+ k_entity_call_result_unhandled,
+ k_entity_call_result_invalid
+};
+
+typedef enum entity_call_result
+ (*fn_entity_call_handler)( world_instance *, ent_call *);
+
enum entity_alias{
k_ent_none = 0,
k_ent_prop = 23,
k_ent_list = 24,
k_ent_region = 25,
- k_ent_glider = 26
+ k_ent_glider = 26,
+ k_ent_npc = 27
};
static inline u32 mdl_entity_id_type( u32 entity_id )
};
struct volume_trigger{
- u32 event, event_leave;
+ i32 event, event_leave;
};
enum ent_volume_flag {
flags,
id_next,
filter,filter2,
- id_win,
- win_event;
+ id_win;
+ i32 win_event;
f32 time_limit;
};
mdl_transform transform;
u32 pstr_alias,
flags,
- target,
- target_event,
- reset,
- reset_event,
- first,
+ target;
+ i32 target_event;
+ u32 reset;
+ i32 reset_event;
+ u32 first,
camera,
status;
};
struct ent_relay {
u32 targets[4][2];
- u32 targets_events[4];
+ i32 targets_events[4];
};
struct ent_cubemap {
framebuffer_id, renderbuffer_id, placeholder[2];
};
-typedef struct ent_call ent_call;
-struct ent_call{
- u32 id, function;
- void *data;
-};
-
struct ent_miniworld {
mdl_transform transform;
u32 pstr_world;
f32 cooldown;
};
+struct ent_npc
+{
+ mdl_transform transform;
+ u32 id, context, camera;
+};
+
#include "world.h"
void entity_call( world_instance *world, ent_call *call );