oh yeah mr crabs
[carveJwlIkooP6JGAAIwe30JlM.git] / blender_export.py
index 3cff63d7eed48bb2023e8dc64e788423af102aff..c069d7f925fa5412562eadee4e9bc5e27dd1e38e 100644 (file)
@@ -163,7 +163,14 @@ class classtype_bone(Structure):
 
 class classtype_achievement_box(Structure):
    _pack_ = 1
-   _fields_ = [("pstr_name",c_uint32)]
+   _fields_ = [("pstr_name",c_uint32),
+               ("trigger",c_uint32)]
+
+class classtype_audio(Structure):
+   _pack_ = 1
+   _fields_ = [("pstr_file",c_uint32),
+               ("flags",c_uint32),
+               ("volume",c_float)]
 
 # Exporter
 # ==============================================================================
@@ -822,8 +829,24 @@ def write_model(collection_name):
          entdata_length += sizeof( classtype_achievement_box )
          ach = classtype_achievement_box()
          ach.pstr_name = emplace_string( obj.cv_data.strp )
+         ach.trigger = 0
+
+         if obj.cv_data.target != None:
+            ach.trigger = obj.cv_data.target.cv_data.uid
+
          entdata_buffer += [ach]
 
+      elif classtype == 'k_classtype_audio':
+         node.classtype = 14
+
+         entdata_length += sizeof( classtype_audio )
+         aud = classtype_audio()
+         aud.pstr_file = emplace_string( obj.cv_data.strp )
+         aud.flags = obj.cv_data.intp
+         aud.volume = obj.cv_data.fltp
+
+         entdata_buffer += [aud]
+
       elif classtype == 'k_classtype_spawn':
          node.classtype = 3
 
@@ -1191,6 +1214,19 @@ def cv_draw():
             verts += [(v1[0],v1[1],v1[2])]
             colours += [(0,1,0,1),(0,1,0,1)]
 
+         if obj.cv_data.target != None:
+            vs = [None]*2
+            vs[0] = obj.location
+            vs[1] = obj.cv_data.target.location
+            indices = [(0,1)]
+            for l in indices:
+               v0 = vs[l[0]]
+               v1 = vs[l[1]]
+               verts += [(v0[0],v0[1],v0[2])]
+               verts += [(v1[0],v1[1],v1[2])]
+               colours += [(0,1,1,1),(0,1,1,1)]
+
+
       elif obj.cv_data.classtype == 'k_classtype_block':
          a = obj.data.cv_data.v0
          b = obj.data.cv_data.v1
@@ -1368,7 +1404,9 @@ class CV_MESH_SETTINGS(bpy.types.PropertyGroup):
 class CV_OBJ_SETTINGS(bpy.types.PropertyGroup):
    uid: bpy.props.IntProperty( name="" )
 
-   strp: bpy.props.StringProperty(name="string")
+   strp: bpy.props.StringProperty( name="strp" )
+   intp: bpy.props.IntProperty( name="intp" )
+   fltp: bpy.props.FloatProperty( name="fltp" )
 
    target: bpy.props.PointerProperty( type=bpy.types.Object, name="target", \
          poll=cv_poll_target )
@@ -1395,6 +1433,7 @@ class CV_OBJ_SETTINGS(bpy.types.PropertyGroup):
       ('k_classtype_SKELETON', "","", 11 ),
       ('k_classtype_SKIN',"","",12),
       ('k_classtype_achievement_box',"k_classtype_achievement_box","",13),
+      ('k_classtype_audio',"k_classtype_audio","",14),
       ])
 
 class CV_BONE_SETTINGS(bpy.types.PropertyGroup):
@@ -1474,6 +1513,11 @@ class CV_OBJ_PANEL(bpy.types.Panel):
          _.layout.prop( mesh.cv_data, "v0" )
       elif active_object.cv_data.classtype == 'k_classtype_achievement_box':
          _.layout.prop( active_object.cv_data, "strp" )
+         _.layout.prop( active_object.cv_data, "target" )
+      elif active_object.cv_data.classtype == 'k_classtype_audio':
+         _.layout.prop( active_object.cv_data, "strp" )
+         _.layout.prop( active_object.cv_data, "intp" )
+         _.layout.prop( active_object.cv_data, "fltp" )
 
 class CV_INTERFACE(bpy.types.Panel):
    bl_idname = "VIEW3D_PT_carve"