X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=b1e7677fb232cf5c071a74ff4cff5f6a26af3e21;hb=1a194c3888293733939b2dd944251ae1b6c398ce;hp=7c8c69f6ab104cfdcb821d902e9e199e62066dc0;hpb=14851c4c820eb07a0db0ec0366a70bdd6518c331;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 7c8c69f..b1e7677 100644 --- a/blender_export.py +++ b/blender_export.py @@ -51,7 +51,8 @@ sr_entity_list = [ 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 ): #{ @@ -306,7 +307,9 @@ class ent_glider(Structure):#{ 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): @@ -320,7 +323,7 @@ class ent_water(Structure): class volume_trigger(Structure): #{ _fields_ = [("event",c_uint32), - ("event_leave",c_uint32)] + ("event_leave",c_int32)] #} class volume_particles(Structure): @@ -530,7 +533,7 @@ class ent_objective(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', @@ -543,9 +546,9 @@ class ent_challenge(Structure):#{ ("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 @@ -566,7 +569,7 @@ class ent_region(Structure):#{ class ent_relay(Structure):#{ _fields_ = [("targets",(c_uint32*2)*4), - ("targets_events",c_uint32*4)] + ("targets_events",c_int32*4)] sr_functions = { 0: 'trigger' } #} @@ -1920,10 +1923,7 @@ def sr_compile( collection ): 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) @@ -2080,6 +2080,7 @@ def sr_compile( collection ): 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':#{ @@ -3166,6 +3167,9 @@ class SR_OBJECT_ENT_GLIDER(bpy.types.PropertyGroup):#{ 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):#{