Engine
Frameworkcreatedbymeusableforthecreationofsimplegames.CurrentlysupportsOpenGL(Verysimple)andVulkan.
Model.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Engine/api.hpp"
3 #include "Engine/Mesh/Mesh.hpp"
6 
7 #include <ThirdParty/EASTL-master/include/EASTL/string.h>
8 #include <ThirdParty/EASTL-master/include/EASTL/vector.h>
9 
10 namespace Engine
11 {
16  {
17  public:
22  eastl::vector<eastl::shared_ptr<Mesh>>& GetModelMeshes();
23 
28  eastl::string GetName();
29 
30  void SetSkeleton(eastl::shared_ptr<Skeleton> skeleton);
31 
38  eastl::shared_ptr<Skeleton> GetSkeleton() const;
39 
44  eastl::vector<eastl::string> GetAnimations();
45 
51  void SetAnimation(eastl::string animation, bool resetTime);
52 
56  void ResetAnimation();
57 
63  void SetAnimationTime(float time);
64 
69  void Update(float deltaTime);
70 
75  void UpdateAnimation(float deltaTime);
76 
81  float GetAnimationTime() const;
82 
87  float GetAnimationDuration() const;
88 
93  void SetPaused(bool paused);
94 
99  bool IsPaused() const;
100 
105  bool HasAnimations() const;
106 
111  void SetLooping(bool looping);
112 
117  bool IsLooping() const;
118 
123  void SetSpeed(float speed);
124 
129  float GetSpeed() const;
130 
135  eastl::string GetCurrentAnimationName() const;
136 
141  size_t GetCurrentAnimationIndex() const;
142 
149  eastl::shared_ptr<Material> GetMeshMaterial(eastl::shared_ptr<Mesh> mesh);
150 
158  void SetMeshMaterial(eastl::shared_ptr<Mesh> mesh, eastl::shared_ptr<Material> material);
159 
165  bool operator==(Model& other);
171  bool operator!=(Model& other);
172  protected:
173  //Model data
174 
175  eastl::string name;
176  friend class ResourceManager;
177  explicit Model(const aiScene* scene, eastl::string name = "");
178  public:
179  ~Model() = default;
180  protected:
181 
182  eastl::shared_ptr<Skeleton> skeleton;
183 
184  void AddMesh(eastl::shared_ptr<Mesh> meshToAdd);
185  eastl::vector<eastl::shared_ptr<Mesh>> meshes;
186 
187  eastl::map<eastl::shared_ptr<Mesh>, eastl::shared_ptr<Material>> meshMaterialMap;
188 
189 #pragma region AnimationData
190 
191  float speed;
192 
193  bool looping;
194 
195  bool paused;
196 
197  float time;
198 
200 
201  eastl::string currentAnimationName;
202 
203 #pragma endregion
204  };
205 } // namespace Engine
eastl::string currentAnimationName
Definition: Model.hpp:201
#define ENGINE_API
Definition: api.hpp:25
eastl::string name
Definition: Model.hpp:175
This class is used to create models, load in meshes and textures. NOTE: Only the Engine is allowed to...
This object is a storage container for meshes.
Definition: Model.hpp:15
float speed
Definition: Model.hpp:191
bool looping
Definition: Model.hpp:193
float time
Definition: Model.hpp:197
eastl::shared_ptr< Skeleton > skeleton
Definition: Model.hpp:182
bool paused
Definition: Model.hpp:195
eastl::vector< eastl::shared_ptr< Mesh > > meshes
Definition: Model.hpp:185
eastl::map< eastl::shared_ptr< Mesh >, eastl::shared_ptr< Material > > meshMaterialMap
Definition: Model.hpp:187
size_t currentAnimation
Definition: Model.hpp:199