Files
blender-portable-repo/extensions/blender_org/govietools/Properties/properties.py
T
2026-03-17 14:58:51 -06:00

116 lines
3.8 KiB
Python

from pathlib import Path
import glob
import bpy # type: ignore
from bpy.props import ( # type: ignore
BoolProperty,
EnumProperty,
FloatProperty,
IntProperty,
PointerProperty,
StringProperty,
)
from ..Functions import gui_functions
class Export_Settings(bpy.types.PropertyGroup):
glb_filename: StringProperty(name="Filename", default="./glb/filename.glb")
join_objects: BoolProperty(name="Join Static Objects", default=False)
export_preset: StringProperty(name="Export Preset", default="")
bpy.utils.register_class(Export_Settings)
bpy.types.Scene.export_settings = PointerProperty(type=Export_Settings)
bpy.types.Scene.object_index = IntProperty(
name="Index for Visibility UI List", update=gui_functions.update_sel_item
)
bpy.types.Object.visibility_bool = BoolProperty(
name="Mapping for Property Value", update=gui_functions.remap_vis_prop, default=True
)
bpy.types.Scene.open_verification_menu = BoolProperty(default=False)
bpy.types.Scene.open_animation_manage = BoolProperty(default=False)
bpy.types.Scene.open_animation_particle = BoolProperty(default=False)
bpy.types.Scene.open_animation_simplifly = BoolProperty(default=False)
bpy.types.Scene.open_uv_animation_menu = BoolProperty(default=False)
class ParticleSettings(bpy.types.PropertyGroup):
key_loc: BoolProperty(name="Key Location", default=1)
key_rot: BoolProperty(name="Key Rotation", default=1)
key_scale: BoolProperty(name="Key Scale", default=1)
key_vis: BoolProperty(name="Key Visibility", default=0)
frame_offset: IntProperty(name="Frame Offset", default=1)
collection_name: StringProperty(name="Collection Name", default="Collection Name")
bpy.utils.register_class(ParticleSettings)
bpy.types.Scene.particle_settings = PointerProperty(type=ParticleSettings)
class AnimationSettings(bpy.types.PropertyGroup):
simplify_keyframes_modes = [
(
"RATIO",
"Ratio",
"Use a percentage to specify how many keyframes you want to remove.",
),
(
"ERROR",
"Error ",
"Use an error margin to specify how much the curve is allowed to deviate from the original path.",
),
]
simplify_keyframes_enum: EnumProperty(
name="Simplify Mode",
description="Choose mode to decimate keyframes",
items=simplify_keyframes_modes,
)
join_anim_name: StringProperty(name="Animation Name", default="Animation Name")
action_name: StringProperty(name="Action name", default="Action Name")
decimate_ratio: FloatProperty(name="Decimate Ratio", default=0.1)
bpy.utils.register_class(AnimationSettings)
bpy.types.Scene.animation_settings = PointerProperty(type=AnimationSettings)
def get_export_presets(self, context):
presets = []
presets.append(("none", "none", "Use selected export preset for export"))
# find all preset files for gltf exporter
preset_directory = Path(bpy.utils.preset_paths("operator/export_scene.gltf/")[0])
preset_files = glob.glob("*.py", root_dir=preset_directory.absolute())
for p in preset_files:
preset_name = p.split(".")[0]
presets.append(
(preset_name, preset_name, "Use selected export preset for export")
)
return presets
def update_presets(self, context):
scene = self
scene.export_settings.export_preset = scene.glb_preset_dropdown
bpy.types.Scene.glb_preset_dropdown = bpy.props.EnumProperty(
items=get_export_presets, name="Export Preset", update=update_presets
)
def register():
bpy.utils.register_class(Export_Settings)
bpy.utils.register_class(ParticleSettings)
bpy.utils.register_class(AnimationSettings)
def unregister():
bpy.utils.unregister_class(Export_Settings)
bpy.utils.unregister_class(ParticleSettings)
bpy.utils.unregister_class(AnimationSettings)