X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=blender_export.py;h=ccad7bfcb04d001d45f56c083d8dc2f8b8d6262e;hb=409edea2cf6271956137918e4e0b4f1c2addf620;hp=538ed6cdd69168bf32316d683daa90cfbd57deca;hpb=33de52d9660ab86caafdd0ae4abb496dbc072778;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/blender_export.py b/blender_export.py index 538ed6c..ccad7bf 100644 --- a/blender_export.py +++ b/blender_export.py @@ -2,7 +2,7 @@ # ============================================================================= # # Copyright . . . -----, ,----- ,---. .---. -# 2021-2022 |\ /| | / | | | | /| +# 2021-2023 |\ /| | / | | | | /| # | \ / | +-- / +----- +---' | / | # | \ / | | / | | \ | / | # | \/ | | / | | \ | / | @@ -255,6 +255,40 @@ class classtype_gate(Structure): #} #} +class classtype_nonlocal_gate(classtype_gate): +#{ + def encode_obj(_,node,node_def): + #{ + node.classtype = 300 + + obj = node_def['obj'] + _.target = encoder_process_pstr( node_def['obj'].cv_data.strp ) + + if obj.type == 'MESH': + #{ + _.dims[0] = obj.data.cv_data.v0[0] + _.dims[1] = obj.data.cv_data.v0[1] + _.dims[2] = obj.data.cv_data.v0[2] + #} + else: + #{ + _.dims[0] = obj.cv_data.v0[0] + _.dims[1] = obj.cv_data.v0[1] + _.dims[2] = obj.cv_data.v0[2] + #} + #} + + @staticmethod + def editor_interface( layout, obj ): + #{ + layout.prop( obj.cv_data, "strp", text="Nonlocal ID" ) + + mesh = obj.data + layout.label( text=F"(i) Data is stored in {mesh.name}" ) + layout.prop( mesh.cv_data, "v0", text="Gate dimensions" ) + #} +#} + # Classtype 3 # # Purpose: player can reset here, its a safe place @@ -771,6 +805,61 @@ class classtype_audio(Structure): #} #} +# Classtype 200 +# +# Purpose: point light +# +class classtype_point_light(Structure): +#{ + _pack_ = 1 + _fields_ = [("colour",c_float*4)] + + def encode_obj(_, node, node_def): + #{ + node.classtype = 200 + + data = node_def['obj'].data + _.colour[0] = data.color[0] + _.colour[1] = data.color[1] + _.colour[2] = data.color[2] + _.colour[3] = data.energy + #} + + @staticmethod + def editor_interface( layout, obj ): + #{ + pass + #} +#} + +# Classtype 201 +# +# Purpose: lighting settings for world +# +class classtype_lighting_info(Structure): +#{ + _pack_ = 1 + _fields_ = [("colours",(c_float*3)*3), + ("directions",(c_float*2)*3), + ("states",c_uint32*3), + ("shadow_spread",c_float), + ("shadow_length",c_float), + ("ambient",c_float*3)] + + def encode_obj(_, node, node_def): + #{ + node.classtype = 201 + + # TODO + #} + + @staticmethod + def editor_interface( layout, obj ): + #{ + pass + #} +#} + class classtype_spawn_link(Structure): #{ _pack_ = 1 @@ -1816,6 +1905,11 @@ def encoder_process_definition( node_def ): if obj_type == 'ARMATURE': obj_classtype = 'classtype_skeleton' + elif obj_type == 'LIGHT': + #{ + if obj.data.type == 'POINT': + obj_classtype = 'classtype_point_light' + #} else: #{ obj_classtype = obj.cv_data.classtype @@ -2573,6 +2667,7 @@ class CV_OBJ_SETTINGS(bpy.types.PropertyGroup): ('classtype_logic_achievement',"classtype_logic_achievement","",101), ('classtype_logic_relay',"classtype_logic_relay","",102), ('classtype_spawn_link',"classtype_spawn_link","",150), + ('classtype_nonlocal_gate', "classtype_nonlocal_gate", "", 300) ]) #}