// // VROAnimationFloat.h // ViroRenderer // // Created by Raj Advani on 12/17/15. // Copyright © 2015 Viro Media. All rights reserved. // #ifndef VROAnimationFloat_h #define VROAnimationFloat_h #include "VROAnimation.h" #include "VROAnimatable.h" #include "VROMath.h" class VROAnimationFloat : public VROAnimation { public: VROAnimationFloat(std::function method, float start, float end) : VROAnimation(), _keyTimes({ 0, 1 }), _keyValues({ start, end }), _method(method) {} VROAnimationFloat(std::function method, float start, float end, std::function finishCallback) : VROAnimation(finishCallback), _keyTimes({ 0, 1 }), _keyValues({ start, end }), _method(method) {} VROAnimationFloat(std::function method, std::vector keyTimes, std::vector keyValues) : VROAnimation(), _keyTimes(keyTimes), _keyValues(keyValues), _method(method) {} VROAnimationFloat(std::function method, std::vector keyTimes, std::vector keyValues, std::function finishCallback) : VROAnimation(finishCallback), _keyTimes(keyTimes), _keyValues(keyValues), _method(method) {} void processAnimationFrame(float t) { float value = VROMathInterpolateKeyFrame(t, _keyTimes, _keyValues); std::shared_ptr animatable = _animatable.lock(); if (animatable) { _method(animatable.get(), value); } } void finish() { std::shared_ptr animatable = _animatable.lock(); if (animatable) { _method(animatable.get(), _keyValues.back()); } } private: std::vector _keyTimes; std::vector _keyValues; std::function _method; }; #endif /* VROAnimationFloat_h */