Browse Source

More fixes per Hoikas

Adjusting things according to Hoikas' notes. The globalVarName is once again not exporting with the AgeGlobalAnim.
pull/219/head
Patrick Dulebohn 4 years ago
parent
commit
1e9ceccc9c
  1. 33
      korman/exporter/animation.py
  2. 10
      korman/properties/modifiers/anim.py

33
korman/exporter/animation.py

@ -22,7 +22,7 @@ import weakref
from . import utils from . import utils
class AnimationConverter(plAGAnim): class AnimationConverter:
def __init__(self, exporter): def __init__(self, exporter):
self._exporter = weakref.ref(exporter) self._exporter = weakref.ref(exporter)
self._bl_fps = bpy.context.scene.render.fps self._bl_fps = bpy.context.scene.render.fps
@ -72,10 +72,10 @@ class AnimationConverter(plAGAnim):
# There is a race condition in the client with animation loading. It expects for modifiers # There is a race condition in the client with animation loading. It expects for modifiers
# to be listed on the SceneObject in a specific order. D'OH! So, always use these funcs. # to be listed on the SceneObject in a specific order. D'OH! So, always use these funcs.
agmod, agmaster = self.get_anigraph_objects(bo, so) agmod, agmaster = self.get_anigraph_objects(bo, so)
anim_data = bo.plasma_modifiers.animation anim_mod = bo.plasma_modifiers.animation
if anim_data.obj_sdl_anim: if anim_mod.obj_sdl_anim:
atcanim = self._mgr.find_create_object(plAgeGlobalAnim, so=so) atcanim = self._mgr.find_create_object(plAgeGlobalAnim, so=so)
elif anim_data.obj_sdl_anim is None: else:
atcanim = self._mgr.find_create_object(plATCAnim, so=so) atcanim = self._mgr.find_create_object(plATCAnim, so=so)
# Add the animation data to the ATC # Add the animation data to the ATC
@ -93,22 +93,14 @@ class AnimationConverter(plAGAnim):
if i is not None: if i is not None:
yield i.frame_range[index] yield i.frame_range[index]
atcanim.name = "(Entire Animation)" atcanim.name = "(Entire Animation)"
if anim_data.obj_sdl_anim: def anim_range_type(plAGAnim):
atcanim.start = self._convert_frame_time(min(get_ranges(obj_action, index=0))) if anim_mod.obj_sdl_anim:
atcanim.end = self._convert_frame_time(max(get_ranges(obj_action, index=1))) atcanim.start = self._convert_frame_time(min(get_ranges(obj_action, data_action, index=0)))
elif anim_data.obj_sdl_anim is None: atcanim.end = self._convert_frame_time(max(get_ranges(obj_action, data_action, index=1)))
atcanim.globalVarName = anim_mod.obj_sdl_anim
else:
atcanim.start = self._convert_frame_time(min(get_ranges(obj_action, data_action, index=0))) atcanim.start = self._convert_frame_time(min(get_ranges(obj_action, data_action, index=0)))
atcanim.end = self._convert_frame_time(max(get_ranges(obj_action, data_action, index=1))) atcanim.end = self._convert_frame_time(max(get_ranges(obj_action, data_action, index=1)))
# Marker points
if obj_action is not None and anim_data.obj_sdl_anim is None:
for marker in obj_action.pose_markers:
atcanim.setMarker(marker.name, self._convert_frame_time(marker.frame))
sdl_name = bo.plasma_modifiers.animation.obj_sdl_anim
if sdl_name:
atcanim.globalVarName = sdl_name
elif sdl_name is None:
# Fixme? Not sure if we really need to expose this... # Fixme? Not sure if we really need to expose this...
atcanim.easeInMin = 1.0 atcanim.easeInMin = 1.0
atcanim.easeInMax = 1.0 atcanim.easeInMax = 1.0
@ -117,6 +109,11 @@ class AnimationConverter(plAGAnim):
atcanim.easeOutMax = 1.0 atcanim.easeOutMax = 1.0
atcanim.easeOutLength = 1.0 atcanim.easeOutLength = 1.0
# Marker points
if obj_action is not None and anim_mod is None:
for marker in obj_action.pose_markers:
atcanim.setMarker(marker.name, self._convert_frame_time(marker.frame))
def _convert_camera_animation(self, bo, so, obj_fcurves, data_fcurves): def _convert_camera_animation(self, bo, so, obj_fcurves, data_fcurves):
if data_fcurves: if data_fcurves:
# The hard part about this crap is that FOV animations are not stored in ATC Animations # The hard part about this crap is that FOV animations are not stored in ATC Animations

10
korman/properties/modifiers/anim.py

@ -64,11 +64,15 @@ class PlasmaAnimationModifier(ActionModifier, PlasmaModifierProperties):
description="Name of the SDL variable to use for this animation", description="Name of the SDL variable to use for this animation",
options=set()) options=set())
@property
def anim_type(self):
return plAgeGlobalAnim if self.obj_sdl_anim else plATCAnim
def export(self, exporter, bo, so): def export(self, exporter, bo, so):
action = self.blender_action action = self.blender_action
anim_mod = bo.plasma_modifiers.animation
anim_data = bo.plasma_modifiers.animation anim = exporter.mgr.find_create_object(anim_mod.anim_type, so=so)
if anim_data.obj_sdl_anim: if isinstance(anim, plAgeGlobalAnim):
atcanim = exporter.mgr.find_create_object(plAgeGlobalAnim, so=so) atcanim = exporter.mgr.find_create_object(plAgeGlobalAnim, so=so)
else: else:
atcanim = exporter.mgr.find_create_object(plATCAnim, so=so) atcanim = exporter.mgr.find_create_object(plATCAnim, so=so)

Loading…
Cancel
Save