#include "StarNetworkedAnimatorLuaBindings.hpp" #include "StarNetworkedAnimator.hpp" #include "StarJsonExtra.hpp" #include "StarLuaGameConverters.hpp" namespace Star { LuaCallbacks LuaBindings::makeNetworkedAnimatorCallbacks(NetworkedAnimator* networkedAnimator) { LuaCallbacks callbacks; callbacks.registerCallbackWithSignature( "setAnimationState", bind(&NetworkedAnimator::setState, networkedAnimator, _1, _2, _3)); callbacks.registerCallbackWithSignature( "animationState", bind(&NetworkedAnimator::state, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "animationStateProperty", bind(&NetworkedAnimator::stateProperty, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setGlobalTag", bind(&NetworkedAnimator::setGlobalTag, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setPartTag", bind(&NetworkedAnimator::setPartTag, networkedAnimator, _1, _2, _3)); callbacks.registerCallback("setFlipped", [networkedAnimator](bool flipped, Maybe relativeCenterLine) { networkedAnimator->setFlipped(flipped, relativeCenterLine.value()); }); callbacks.registerCallbackWithSignature( "setAnimationRate", bind(&NetworkedAnimator::setAnimationRate, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "rotateGroup", bind(&NetworkedAnimator::rotateGroup, networkedAnimator, _1, _2, _3)); callbacks.registerCallbackWithSignature( "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", [networkedAnimator](String const& transformationGroup, float rotation, Maybe const& rotationCenter) { networkedAnimator->rotateTransformationGroup(transformationGroup, rotation, rotationCenter.value()); }); callbacks.registerCallback("scaleTransformationGroup", [networkedAnimator](LuaEngine& engine, String const& transformationGroup, LuaValue scale, Maybe const& scaleCenter) { if (auto cs = engine.luaMaybeTo(scale)) networkedAnimator->scaleTransformationGroup(transformationGroup, *cs, scaleCenter.value()); else networkedAnimator->scaleTransformationGroup(transformationGroup, engine.luaTo(scale), scaleCenter.value()); }); callbacks.registerCallbackWithSignature( "transformTransformationGroup", bind(&NetworkedAnimator::transformTransformationGroup, networkedAnimator, _1, _2, _3, _4, _5, _6, _7)); callbacks.registerCallbackWithSignature( "resetTransformationGroup", bind(&NetworkedAnimator::resetTransformationGroup, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "setParticleEmitterActive", bind(&NetworkedAnimator::setParticleEmitterActive, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature("setParticleEmitterEmissionRate", bind(&NetworkedAnimator::setParticleEmitterEmissionRate, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature("setParticleEmitterBurstCount", bind(&NetworkedAnimator::setParticleEmitterBurstCount, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature("setParticleEmitterOffsetRegion", bind(&NetworkedAnimator::setParticleEmitterOffsetRegion, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "burstParticleEmitter", bind(&NetworkedAnimator::burstParticleEmitter, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "setLightActive", bind(&NetworkedAnimator::setLightActive, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setLightPosition", bind(&NetworkedAnimator::setLightPosition, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setLightColor", bind(&NetworkedAnimator::setLightColor, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setLightPointAngle", bind(&NetworkedAnimator::setLightPointAngle, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "hasSound", bind(&NetworkedAnimator::hasSound, networkedAnimator, _1)); callbacks.registerCallbackWithSignature( "setSoundPool", bind(&NetworkedAnimator::setSoundPool, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature( "setSoundPosition", bind(&NetworkedAnimator::setSoundPosition, networkedAnimator, _1, _2)); callbacks.registerCallback("playSound", [networkedAnimator](String const& sound, Maybe loops) { networkedAnimator->playSound(sound, loops.value()); }); callbacks.registerCallback("setSoundVolume", [networkedAnimator](String const& sound, float targetVolume, Maybe rampTime) { networkedAnimator->setSoundVolume(sound, targetVolume, rampTime.value(0)); }); callbacks.registerCallback("setSoundPitch", [networkedAnimator](String const& sound, float targetPitch, Maybe rampTime) { networkedAnimator->setSoundPitchMultiplier(sound, targetPitch, rampTime.value(0)); }); callbacks.registerCallback("stopAllSounds", [networkedAnimator](String const& sound, Maybe rampTime) { networkedAnimator->stopAllSounds(sound, rampTime.value()); }); callbacks.registerCallbackWithSignature( "setEffectActive", bind(&NetworkedAnimator::setEffectEnabled, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature, String, String>("partPoint", bind(&NetworkedAnimator::partPoint, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature, String, String>("partPoly", bind(&NetworkedAnimator::partPoly, networkedAnimator, _1, _2)); callbacks.registerCallbackWithSignature("partProperty", bind(&NetworkedAnimator::partProperty, networkedAnimator, _1, _2)); callbacks.registerCallback("transformPoint", [networkedAnimator] (Vec2F point, String const& part) -> Vec2F { return networkedAnimator->partTransformation(part).transformVec2(point); }); callbacks.registerCallback("transformPoly", [networkedAnimator] (PolyF poly, String const& part) -> PolyF { poly.transform(networkedAnimator->partTransformation(part)); return poly; }); return callbacks; } }