123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #ifndef __CCANIMATE3D_H__
- #define __CCANIMATE3D_H__
- #include <map>
- #include <unordered_map>
- #include "3d/CCAnimation3D.h"
- #include "base/ccMacros.h"
- #include "base/CCRef.h"
- #include "2d/CCActionInterval.h"
- NS_CC_BEGIN
- class Bone3D;
- class Sprite3D;
- class EventCustom;
- enum class Animate3DQuality
- {
- QUALITY_NONE = 0,
- QUALITY_LOW,
- QUALITY_HIGH,
- };
- class CC_DLL Animate3D: public ActionInterval
- {
- public:
-
-
- static Animate3D* create(Animation3D* animation);
-
-
- static Animate3D* create(Animation3D* animation, float fromTime, float duration);
-
-
- static Animate3D* createWithFrames(Animation3D* animation, int startFrame, int endFrame, float frameRate = 30.f);
-
-
-
-
- virtual void stop() override;
- virtual void step(float dt) override;
- virtual void startWithTarget(Node *target) override;
- virtual Animate3D* reverse() const override;
- virtual Animate3D *clone() const override;
-
- virtual void update(float t) override;
-
-
- float getSpeed() const;
- void setSpeed(float speed);
-
-
- float getWeight() const { return _weight; }
- void setWeight(float weight);
-
-
- void setOriginInterval(float interval);
- float getOriginInterval() const {return _originInterval; }
-
-
- static float getTransitionTime() { return _transTime; }
-
-
- static void setTransitionTime(float transTime) { if (transTime >= 0.f) _transTime = transTime; }
-
-
- CC_DEPRECATED_ATTRIBUTE bool getPlayBack() const { return _playReverse; }
- CC_DEPRECATED_ATTRIBUTE void setPlayBack(bool reverse) { _playReverse = reverse; }
-
-
- void setQuality(Animate3DQuality quality);
-
-
- Animate3DQuality getQuality() const;
- struct Animate3DDisplayedEventInfo
- {
- int frame;
- Node* target;
- const ValueMap* userInfo;
- };
- void setKeyFrameUserInfo(int keyFrame, const ValueMap &userInfo);
- const ValueMap* getKeyFrameUserInfo(int keyFrame) const;
- ValueMap* getKeyFrameUserInfo(int keyFrame);
-
-
- CC_CONSTRUCTOR_ACCESS:
-
- Animate3D();
- virtual ~Animate3D();
-
- void removeFromMap();
-
-
- bool init(Animation3D* animation);
- bool init(Animation3D* animation, float fromTime, float duration);
- bool initWithFrames(Animation3D* animation, int startFrame, int endFrame, float frameRate);
-
- protected:
-
- enum class Animate3DState
- {
- FadeIn,
- FadeOut,
- Running,
- };
- Animate3DState _state;
- Animation3D* _animation;
- float _absSpeed;
- float _weight;
- float _start;
- float _last;
- bool _playReverse;
- static float _transTime;
- float _accTransTime;
- float _lastTime;
- float _originInterval;
- float _frameRate;
-
-
- EvaluateType _translateEvaluate;
- EvaluateType _roteEvaluate;
- EvaluateType _scaleEvaluate;
- Animate3DQuality _quality;
-
- std::unordered_map<Bone3D*, Animation3D::Curve*> _boneCurves;
- std::unordered_map<Node*, Animation3D::Curve*> _nodeCurves;
-
- std::unordered_map<int, ValueMap> _keyFrameUserInfos;
- std::unordered_map<int, EventCustom*> _keyFrameEvent;
- std::unordered_map<int, Animate3DDisplayedEventInfo> _displayedEventInfo;
-
- static std::unordered_map<Node*, Animate3D*> s_fadeInAnimates;
- static std::unordered_map<Node*, Animate3D*> s_fadeOutAnimates;
- static std::unordered_map<Node*, Animate3D*> s_runningAnimates;
- };
- NS_CC_END
- #endif
|