i6engine  1.0
AnimationControllerComponent.h
Go to the documentation of this file.
1 /*
2  * i6engine
3  * Copyright (2016) Daniel Bonrath, Michael Baer, All rights reserved.
4  *
5  * This file is part of i6engine; i6engine is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
25 #ifndef __I6ENGINE_API_ANIMATIONCONTROLLERCOMPONENT_H__
26 #define __I6ENGINE_API_ANIMATIONCONTROLLERCOMPONENT_H__
27 
29 
30 namespace i6e {
31 namespace api {
32 
34 
40  public:
46  AnimationControllerComponent(const int64_t id, const attributeMap & params);
47 
52 
56  attributeMap synchronize() const override;
57 
58  std::string getTemplateName() const override {
59  return "AnimationController";
60  }
61 
65  void addAnimationFrameEvent(const std::string & animation, uint64_t frameTime, const std::function<void(void)> & func);
66 
70  void playAnimation(const std::string & anim, bool looping, double offsetPercent = 0.0) const;
71 
75  void setAnimationSpeed(double animationSpeed) const;
76 
80  void stopAnimation() const;
81 
82  private:
83  std::map<std::string, std::map<uint64_t, std::function<void(void)>>> _animationMap;
85 
86  void Init() override;
87 
88  virtual std::pair<AddStrategy, int64_t> howToAdd(const ComPtr & comp) const override;
89 
90  std::vector<componentOptions> getComponentOptions() override;
91  };
92 
93 } /* namespace api */
94 } /* namespace i6e */
95 
96 #endif /* __I6ENGINE_API_ANIMATIONCONTROLLERCOMPONENT_H__ */
97 
#define ISIXE_MODULES_API
A weak pointer observing a sharedPtr.
Definition: sharedPtr.h:53
std::map< std::string, std::string > attributeMap
Definition: attributeMap.h:42
A shared pointer counting references and adds objects being not referenced any more to an internal li...
Definition: sharedPtr.h:50
std::string getTemplateName() const override
returns the name this template was registered with
Stores different animation events for animations and registers them again when starting an animation...
Component Base Class. All Components must derive from Component.
Definition: Component.h:97