Entity.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <Critical.h>
  3. #include <Either.h>
  4. #include <Model3D.h>
  5. #include "Area.h"
  6. #include "EntityType.h"
  7. class Block;
  8. struct MovementFrame
  9. {
  10. Framework::Vec3<float> direction;
  11. Framework::Vec3<float> targetPosition;
  12. int movementFlags = 0;
  13. double duration = 0;
  14. };
  15. class Entity : public Framework::Model3D
  16. {
  17. private:
  18. int id;
  19. const EntityType* zType;
  20. Framework::Critical cs;
  21. bool playerControlled;
  22. float maxMovementSpeed;
  23. int lastFlags;
  24. double timeSinceSync;
  25. Framework::Vec3<float> lastDirection;
  26. Framework::Array<MovementFrame> movements;
  27. Framework::Vec3<float> speed;
  28. MovementFrame currentFrame;
  29. public:
  30. Entity(const EntityType* zType,
  31. Framework::Model3DData* model,
  32. Framework::Model3DTextur* texture,
  33. int id,
  34. Framework::Vec3<float> position,
  35. float maxMovementSpeed);
  36. ~Entity();
  37. void api(char* message);
  38. bool tick(double time) override;
  39. int getId() const;
  40. const EntityType* zEntityType() const;
  41. void lock();
  42. void unlock();
  43. void setPlayerControlled();
  44. };