fix legacy behaviour for trigger exits
[carveJwlIkooP6JGAAIwe30JlM.git] / blender_export.py
index 36ca3681d866831fdf74430cc34176450c85435a..5eb5975deefd5ffa90abd7d8ea54d3786604c3f2 100644 (file)
@@ -528,7 +528,7 @@ class ent_cubemap(Structure):#{
 class ent_miniworld(Structure):#{
    _fields_ = [("transform",mdl_transform),
                ("pstr_world",c_uint32),
-               ("purpose",c_int32),
+               ("camera",c_uint32),
                ("proxy",c_uint32)]
 
    sr_functions = { 0: 'zone', 1: 'leave' }
@@ -1851,7 +1851,10 @@ def sr_compile( collection ):
             if obj_data.target:#{
                volume.target = sr_entity_id( obj_data.target )
                volume._anon.trigger.event = obj_data.target_event
-               volume._anon.trigger.event_leave = obj_data.target_event_leave
+
+               ev = 0xffffffff if obj_data.target_event_leave < 0 else \
+                     obj_data.target_event_leave
+               volume._anon.trigger.event_leave = ev
             #}
 
             sr_ent_push(volume)
@@ -1972,6 +1975,7 @@ def sr_compile( collection ):
             compile_obj_transform( obj, miniworld.transform )
             miniworld.pstr_world = sr_compile_string( obj_data.world )
             miniworld.proxy = sr_entity_id( obj_data.proxy )
+            miniworld.camera = sr_entity_id( obj_data.camera )
             sr_ent_push( miniworld )
          #}
          elif ent_type == 'ent_prop':#{
@@ -2624,6 +2628,9 @@ class SR_OBJECT_ENT_MINIWORLD(bpy.types.PropertyGroup):
    proxy: bpy.props.PointerProperty( \
                type=bpy.types.Object, name='proxy', \
                poll=lambda self,obj: sr_filter_ent_type(obj,['ent_prop']))
+   camera: bpy.props.PointerProperty( \
+           type=bpy.types.Object, name="Camera", \
+           poll=lambda self,obj: sr_filter_ent_type(obj,['ent_camera']))
 #}
 
 class SR_UL_ROUTE_NODE_LIST(bpy.types.UIList):
@@ -2974,7 +2981,7 @@ class SR_OBJECT_ENT_VOLUME(bpy.types.PropertyGroup):#{
            type=bpy.types.Object, name="Target", \
            poll=lambda self,obj: sr_filter_ent_type(obj,SR_TRIGGERABLE))
    target_event: bpy.props.IntProperty( name="Enter Ev" )
-   target_event_leave: bpy.props.IntProperty( name="Leave Ev" )
+   target_event_leave: bpy.props.IntProperty( name="Leave Ev", default=-1 )
 
    @staticmethod
    def inspect_target( layout, data, propname, evs = ['_event'] ):#{