X-Git-Url: https://harrygodden.com/git/?p=convexer.git;a=blobdiff_plain;f=__init__.py;fp=__init__.py;h=b136c396e93e1fb90d7a5c119356b57a00fd8fe4;hp=dfc7f3a31db749ffdc797d9d2f5adbcc6d73da46;hb=23283f27eb4a14456ba00dc05e83bf19ad71b1a6;hpb=bf8765905390844abea94bfa7113a017740b253e diff --git a/__init__.py b/__init__.py index dfc7f3a..b136c39 100644 --- a/__init__.py +++ b/__init__.py @@ -624,6 +624,7 @@ def ent_prop(context): kvs['origin'] = [pos[1],-pos[0],pos[2]] kvs['angles'] = [0,180,0] + kvs['uniformscale'] = 1.0 else: kvs = cxr_baseclass([ent_origin],{}) target = context['object'].instance_collection @@ -636,10 +637,15 @@ def ent_prop(context): angle[2] = euler[0] kvs['angles'] = angle + kvs['uniformscale'] = obj.scale[0] + + if target.cxr_data.shadow_caster: + kvs['enablelightbounce'] = 1 + kvs['disableshadows'] = 0 + else: + kvs['enablelightbounce'] = 0 + kvs['disableshadows'] = 1 - - kvs['enablelightbounce'] = 1 - kvs['disableshadows'] = 0 kvs['fademindist'] = -1 kvs['fadescale'] = 1 kvs['model'] = F"{asset_path('models',target)}.mdl".lower() @@ -647,7 +653,6 @@ def ent_prop(context): kvs['rendercolor'] = [255, 255, 255] kvs['skin'] = 0 kvs['solid'] = 6 - kvs['uniformscale'] = 1.0 return kvs @@ -1346,8 +1351,16 @@ def cxr_export_modelsrc( mdl, origin, asset_dir, project_name, transform ): o.write(F'$scale {transform["scale"]/100.0}\n') o.write(F'$body _ "{uid}_ref.fbx"\n') o.write(F'$staticprop\n') - o.write(F'$origin {origin[0]} {origin[1]} {origin[2]}\n') + o.write(F'$origin {origin[0]:.6f} {origin[1]:.6f} {origin[2]:.6f}\n') + if mdl.cxr_data.preserve_order: + o.write(F"$preservetriangleorder\n") + + if mdl.cxr_data.texture_shadows: + o.write(F"$casttextureshadows\n") + + o.write(F"$surfaceprop {mdl.cxr_data.surfaceprop}\n") + if vphys != None: o.write(F'$collisionmodel "{uid}_phy.fbx"\n') o.write("{\n") @@ -1441,7 +1454,8 @@ class CXR_PREVIEW_OPERATOR(bpy.types.Operator): "Internal-Fail",\ "Non-Coplanar",\ "Non-Convex Polygon",\ - "Bad Result"]\ + "Bad Result",\ + "Invalid-Input"]\ [err.value] if static.RUNNING: @@ -2204,6 +2218,25 @@ class CXR_LIGHT_PANEL(bpy.types.Panel): elif active_object.type == 'LIGHT_PROBE': layout.prop( properties, "size" ) +class CXR_COLLECTION_PANEL(bpy.types.Panel): + bl_label = "Source Settings" + bl_idname = "COL_PT_cxr" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "collection" + + def draw(self, context): + layout = self.layout + scene = context.scene + + active_collection = bpy.context.collection + + if active_collection != None: + layout.prop( active_collection.cxr_data, "shadow_caster" ) + layout.prop( active_collection.cxr_data, "texture_shadows" ) + layout.prop( active_collection.cxr_data, "preserve_order" ) + layout.prop( active_collection.cxr_data, "surfaceprop" ) + # Settings groups # ------------------------------------------------------------------------------ @@ -2277,6 +2310,10 @@ class CXR_ENTITY_SETTINGS(bpy.types.PropertyGroup): class CXR_MODEL_SETTINGS(bpy.types.PropertyGroup): last_hash: bpy.props.StringProperty( name="" ) asset_id: bpy.props.IntProperty(name="vmf_settings",default=0) + shadow_caster: bpy.props.BoolProperty( name="Shadow caster", default=True ) + texture_shadows: bpy.props.BoolProperty( name="Texture Shadows", default=False ) + preserve_order: bpy.props.BoolProperty( name="Preserve Order", default=False ) + surfaceprop: bpy.props.StringProperty( name="Suface prop",default="default" ) class CXR_SCENE_SETTINGS(bpy.types.PropertyGroup): project_name: bpy.props.StringProperty( name="Project Name" ) @@ -2318,7 +2355,7 @@ classes = [ CXR_RELOAD, CXR_DEV_OPERATOR, CXR_INTERFACE, \ CXR_LIGHT_SETTINGS, CXR_SCENE_SETTINGS, CXR_DETECT_COMPILERS,\ CXR_ENTITY_PANEL, CXR_LIGHT_PANEL, CXR_PREVIEW_OPERATOR,\ CXR_VIEW3D, CXR_COMPILER_CHAIN, CXR_RESET_HASHES,\ - CXR_COMPILE_MATERIAL] + CXR_COMPILE_MATERIAL, CXR_COLLECTION_PANEL ] vmt_param_dynamic_class = None