MDL_VERSION_NR = 105
SR_TRIGGERABLE = [ 'ent_audio', 'ent_ccmd', 'ent_gate', 'ent_challenge', \
'ent_relay', 'ent_skateshop', 'ent_objective', 'ent_route',\
- 'ent_miniworld', 'ent_region', 'ent_glider', 'ent_list' ]
+ 'ent_miniworld', 'ent_region', 'ent_glider', 'ent_list',\
+ 'ent_npc' ]
def get_entity_enum_id( alias ):
#{
class ent_npc(Structure):#{
_fields_ = [("transform",mdl_transform),
("id",c_uint32),
- ("context",c_uint32)]
+ ("context",c_uint32),
+ ("camera",c_uint32)]
+ sr_functions = { 0: 'proximity', -1: 'leave' }
#}
class ent_water(Structure):
class volume_trigger(Structure):
#{
_fields_ = [("event",c_uint32),
- ("event_leave",c_uint32)]
+ ("event_leave",c_int32)]
#}
class volume_particles(Structure):
("id_next",c_uint32),
("filter",c_uint32),("filter2",c_uint32),
("id_win",c_uint32),
- ("win_event",c_uint32),
+ ("win_event",c_int32),
("time_limit",c_float)]
sr_functions = { 0: 'trigger',
("pstr_alias",c_uint32),
("flags",c_uint32),
("target",c_uint32),
- ("target_event",c_uint32),
+ ("target_event",c_int32),
("reset",c_uint32),
- ("reset_event",c_uint32),
+ ("reset_event",c_int32),
("first",c_uint32),
("camera",c_uint32),
("status",c_uint32)] #runtime
class ent_relay(Structure):#{
_fields_ = [("targets",(c_uint32*2)*4),
- ("targets_events",c_uint32*4)]
+ ("targets_events",c_int32*4)]
sr_functions = { 0: 'trigger' }
#}
if obj_data.target:#{
volume.target = sr_entity_id( obj_data.target )
volume._anon.trigger.event = obj_data.target_event
-
- ev = 0xffffffff if obj_data.target_event_leave < 0 else \
- obj_data.target_event_leave
- volume._anon.trigger.event_leave = ev
+ volume._anon.trigger.event_leave = obj_data.target_event_leave
#}
sr_ent_push(volume)
compile_obj_transform( obj, npc.transform )
npc.id = obj_data.au
npc.context = obj_data.context
+ npc.camera = sr_entity_id( obj_data.cam )
sr_ent_push( npc )
#}
elif ent_type == 'ent_cubemap':#{
class SR_OBJECT_ENT_NPC(bpy.types.PropertyGroup):#{
au: bpy.props.IntProperty()
context: bpy.props.IntProperty()
+ cam: bpy.props.PointerProperty( \
+ type=bpy.types.Object, name="Viewpoint", \
+ poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera']))
#}
class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup):#{