From 0bf17a8dc4a4e7c7c1b763a2e12ac0de27caff1a Mon Sep 17 00:00:00 2001 From: WasabiRaptor Date: Sun, 18 May 2025 20:05:41 -0400 Subject: big feature expansion --- .../scripting/StarNetworkedAnimatorLuaBindings.cpp | 39 ++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) (limited to 'source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp') diff --git a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp index dfafeb0..937e237 100644 --- a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp +++ b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp @@ -8,12 +8,21 @@ namespace Star { LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* networkedAnimator) { LuaCallbacks callbacks; - callbacks.registerCallbackWithSignature( - "setAnimationState", bind(&NetworkedAnimator::setState, networkedAnimator, _1, _2, _3)); + callbacks.registerCallbackWithSignature( + "setAnimationState", bind(&NetworkedAnimator::setState, networkedAnimator, _1, _2, _3, _4)); callbacks.registerCallbackWithSignature( "animationState", bind(&NetworkedAnimator::state, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "animationStateProperty", bind(&NetworkedAnimator::stateProperty, networkedAnimator, _1, _2)); + callbacks.registerCallbackWithSignature( + "animationStateFrame", bind(&NetworkedAnimator::stateFrame, networkedAnimator, _1)); + callbacks.registerCallbackWithSignature( + "animationStateFrameProgress", bind(&NetworkedAnimator::stateFrameProgress, networkedAnimator, _1)); + callbacks.registerCallbackWithSignature( + "animationStateTimer", bind(&NetworkedAnimator::stateTimer, networkedAnimator, _1)); + callbacks.registerCallbackWithSignature( + "animationStateReverse", bind(&NetworkedAnimator::stateReverse, networkedAnimator, _1)); + callbacks.registerCallbackWithSignature( "setGlobalTag", bind(&NetworkedAnimator::setGlobalTag, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( @@ -30,6 +39,7 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw "currentRotationAngle", bind(&NetworkedAnimator::currentRotationAngle, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "hasTransformationGroup", bind(&NetworkedAnimator::hasTransformationGroup, networkedAnimator, _1)); + callbacks.registerCallbackWithSignature("translateTransformationGroup", bind(&NetworkedAnimator::translateTransformationGroup, networkedAnimator, _1, _2)); callbacks.registerCallback("rotateTransformationGroup", @@ -48,6 +58,27 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw bind(&NetworkedAnimator::transformTransformationGroup, networkedAnimator, _1, _2, _3, _4, _5, _6, _7)); callbacks.registerCallbackWithSignature( "resetTransformationGroup", bind(&NetworkedAnimator::resetTransformationGroup, networkedAnimator, _1)); + + callbacks.registerCallbackWithSignature("translateLocalTransformationGroup", + bind(&NetworkedAnimator::translateLocalTransformationGroup, networkedAnimator, _1, _2)); + callbacks.registerCallback("rotateLocalTransformationGroup", + [networkedAnimator](String const& transformationGroup, float rotation, Maybe const& rotationCenter) { + networkedAnimator->rotateLocalTransformationGroup(transformationGroup, rotation, rotationCenter.value()); + }); + callbacks.registerCallback("scaleLocalTransformationGroup", + [networkedAnimator](LuaEngine& engine, String const& transformationGroup, LuaValue scale, Maybe const& scaleCenter) { + if (auto cs = engine.luaMaybeTo(scale)) + networkedAnimator->scaleLocalTransformationGroup(transformationGroup, *cs, scaleCenter.value()); + else + networkedAnimator->scaleLocalTransformationGroup(transformationGroup, engine.luaTo(scale), scaleCenter.value()); + }); + callbacks.registerCallbackWithSignature( + "transformLocalTransformationGroup", + bind(&NetworkedAnimator::transformLocalTransformationGroup, networkedAnimator, _1, _2, _3, _4, _5, _6, _7)); + callbacks.registerCallbackWithSignature( + "resetLocalTransformationGroup", bind(&NetworkedAnimator::resetLocalTransformationGroup, networkedAnimator, _1)); + + callbacks.registerCallbackWithSignature( "setParticleEmitterActive", bind(&NetworkedAnimator::setParticleEmitterActive, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature("setParticleEmitterEmissionRate", @@ -105,6 +136,10 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw return poly; }); + callbacks.registerCallbackWithSignature>( + "addPartDrawables", bind(&NetworkedAnimator::addPartDrawables, networkedAnimator, _1, _2)); + callbacks.registerCallbackWithSignature>( + "setPartDrawables", bind(&NetworkedAnimator::setPartDrawables, networkedAnimator, _1, _2)); return callbacks; } -- cgit v1.2.3 From ffb2fdee70353b4d55cce22388813274e5368879 Mon Sep 17 00:00:00 2001 From: WasabiRaptor Date: Sun, 18 May 2025 23:28:06 -0400 Subject: apply part tags callback --- source/game/StarNetworkedAnimator.cpp | 50 ++++++++++++++++++++++ source/game/StarNetworkedAnimator.hpp | 2 + .../scripting/StarNetworkedAnimatorLuaBindings.cpp | 5 +++ .../scripting/StarScriptedAnimatorLuaBindings.cpp | 2 + 4 files changed, 59 insertions(+) (limited to 'source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp') diff --git a/source/game/StarNetworkedAnimator.cpp b/source/game/StarNetworkedAnimator.cpp index 45553eb..31bd066 100644 --- a/source/game/StarNetworkedAnimator.cpp +++ b/source/game/StarNetworkedAnimator.cpp @@ -442,6 +442,56 @@ void NetworkedAnimator::setPartDrawables(String const& partName, List void NetworkedAnimator::addPartDrawables(String const& partName, List drawables) { m_partDrawables.ptr(partName)->appendAll(drawables); } +String NetworkedAnimator::applyPartTags(String const& partName, String apply) { + HashMap animationTags = {}; + Maybe frame; + String frameStr; + String frameIndexStr; + auto activePart = m_animatedParts.activePart(partName); + auto partTags = m_partTags.get(partName); + if (activePart.activeState) { + unsigned stateFrame = activePart.activeState->frame; + frame = stateFrame; + frameStr = static_cast(toString(stateFrame + 1)); + frameIndexStr = static_cast(toString(stateFrame)); + } + if (version() > 0) + m_animatedParts.forEachActiveState([&](String const& stateTypeName, AnimatedPartSet::ActiveStateInformation const& activeState) { + unsigned stateFrame = activeState.frame; + Maybe frame; + String frameStr; + String frameIndexStr; + + frame = stateFrame; + frameStr = static_cast(toString(stateFrame + 1)); + frameIndexStr = static_cast(toString(stateFrame)); + if (frame) { + animationTags.set(stateTypeName + "_frame", frameStr); + animationTags.set(stateTypeName + "_frameIndex", frameIndexStr); + } + animationTags.set(stateTypeName + "_state", activeState.stateName); + }); + + auto applied = apply.maybeLookupTagsView([&](StringView tag) -> StringView { + if (tag == "frame") { + if (frame) + return frameStr; + } else if (tag == "frameIndex") { + if (frame) + return frameIndexStr; + } else if (auto p = animationTags.ptr(tag)) { + return StringView(*p); + } else if (auto p = partTags.ptr(tag)) { + return StringView(*p); + } else if (auto p = m_globalTags.ptr(tag)) { + return StringView(*p); + } + + return StringView("default"); + }); + return applied ? applied.get() : apply; +} + void NetworkedAnimator::setProcessingDirectives(Directives const& directives) { m_processingDirectives.set(directives); diff --git a/source/game/StarNetworkedAnimator.hpp b/source/game/StarNetworkedAnimator.hpp index fd84ec1..f3f6568 100644 --- a/source/game/StarNetworkedAnimator.hpp +++ b/source/game/StarNetworkedAnimator.hpp @@ -129,6 +129,8 @@ public: void setPartDrawables(String const& partName, List drawables); void addPartDrawables(String const& partName, List drawables); + String applyPartTags(String const& partName, String apply); + void setProcessingDirectives(Directives const& directives); void setZoom(float zoom); bool flipped() const; diff --git a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp index 937e237..68bd35c 100644 --- a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp +++ b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp @@ -14,6 +14,8 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw "animationState", bind(&NetworkedAnimator::state, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "animationStateProperty", bind(&NetworkedAnimator::stateProperty, networkedAnimator, _1, _2)); + callbacks.registerCallbackWithSignature( + "animationStateNextProperty", bind(&NetworkedAnimator::stateNextProperty, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "animationStateFrame", bind(&NetworkedAnimator::stateFrame, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( @@ -141,6 +143,9 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw callbacks.registerCallbackWithSignature>( "setPartDrawables", bind(&NetworkedAnimator::setPartDrawables, networkedAnimator, _1, _2)); + callbacks.registerCallbackWithSignature( + "applyPartTags", bind(&NetworkedAnimator::applyPartTags, networkedAnimator, _1, _2)); + return callbacks; } diff --git a/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp b/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp index db0237d..d29e3a5 100644 --- a/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp +++ b/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp @@ -61,6 +61,8 @@ LuaCallbacks LuaBindings::makeScriptedAnimatorCallbacks(NetworkedAnimator* netwo "addPartDrawables", bind(&NetworkedAnimator::addPartDrawables, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature>( "setPartDrawables", bind(&NetworkedAnimator::setPartDrawables, networkedAnimator, _1, _2)); + callbacks.registerCallbackWithSignature( + "applyPartTags", bind(&NetworkedAnimator::applyPartTags, networkedAnimator, _1, _2)); return callbacks; -- cgit v1.2.3 From a117a34c3d352f005f64abef2636c25ca9ea9172 Mon Sep 17 00:00:00 2001 From: WasabiRaptor Date: Sun, 18 May 2025 23:37:30 -0400 Subject: callback for setting local anim state --- source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp | 2 ++ source/game/scripting/StarScriptedAnimatorLuaBindings.cpp | 2 ++ 2 files changed, 4 insertions(+) (limited to 'source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp') diff --git a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp index 68bd35c..49df283 100644 --- a/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp +++ b/source/game/scripting/StarNetworkedAnimatorLuaBindings.cpp @@ -10,6 +10,8 @@ LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* netw callbacks.registerCallbackWithSignature( "setAnimationState", bind(&NetworkedAnimator::setState, networkedAnimator, _1, _2, _3, _4)); + callbacks.registerCallbackWithSignature( + "setLocalAnimationState", bind(&NetworkedAnimator::setLocalState, networkedAnimator, _1, _2, _3, _4)); callbacks.registerCallbackWithSignature( "animationState", bind(&NetworkedAnimator::state, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( diff --git a/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp b/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp index d29e3a5..593d2cd 100644 --- a/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp +++ b/source/game/scripting/StarScriptedAnimatorLuaBindings.cpp @@ -20,6 +20,8 @@ LuaCallbacks LuaBindings::makeScriptedAnimatorCallbacks(NetworkedAnimator* netwo return poly; }); + callbacks.registerCallbackWithSignature( + "setLocalAnimationState", bind(&NetworkedAnimator::setLocalState, networkedAnimator, _1, _2, _3, _4)); callbacks.registerCallbackWithSignature( "animationStateProperty", bind(&NetworkedAnimator::stateProperty, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( -- cgit v1.2.3