Potato Engine
Loading...
Searching...
No Matches
Actor.cpp
Go to the documentation of this file.
1
2
3#include <algorithm>
4
5#include "Util/Vector2.hpp"
6#include "Debug/Debug.hpp"
7#include "Game/World.hpp"
8
9#include "Actor.hpp"
10
12
14
15 Position = Vector2();
16 Size = Vector2();
17 Rotation = 0.f;
18 Visible = true;
19
20}
21
23 if (isInPlay) { return; }
24 isInPlay = true;
25
26 BeginPlay();
27}
28
30
31}
32
33void Actor::Tick(float dt) {
35
36}
37
39 return Position;
40}
41void Actor::SetPosition(const Vector2 &position) {
42 // TODO: enforce world bounds somewhere better later
43 Position = Vector2(
44 std::clamp(position.x, 0.f, static_cast<float>(World::EXTENT_X-1) - Size.x),
45 std::clamp(position.y, 0.f, static_cast<float>(World::EXTENT_Y-1)) // TODO: enforce position restriction for Y based on size
46 );
47}
48void Actor::AddLocalOffset(const Vector2& offset) {
49 SetPosition(Position + offset);
50}
51
53 return Size;
54}
55void Actor::SetSize(const Vector2 &size) {
56 // TODO: enforce size restrictions
57 Size = size;
58}
59
60float Actor::GetRotation() const {
61 return Rotation;
62}
63void Actor::SetRotation(float rotation) {
64
65 // Normalize rotation to [0, 360)
66 rotation = fmodf(rotation, 360.0f);
67 if (rotation < 0.0f) { rotation += 360.0f; }
68 Rotation = rotation;
69}
70void Actor::AddLocalRotation(float rotation) {
71 SetRotation(GetRotation() + rotation);
72}
73
74bool Actor::isVisible() const {
75 return Visible;
76}
77void Actor::SetVisibility(bool visibility) {
78 Visible = visibility;
79}
80
81
82Actor::~Actor() {
83
84}
#define ARCHIVE_STATIC(type)
Registers classes to be archived as a static actor.
Base actor class.
Definition Actor.hpp:14
bool isVisible() const
Checks if actor visible.
Definition Actor.cpp:74
virtual void BeginPlay()
Gameplay start.
Definition Actor.cpp:29
void AddLocalRotation(float rotation)
Adds to rotation value.
Definition Actor.cpp:70
Actor()
Constructs actor object.
Definition Actor.cpp:13
Vector2 GetSize() const
Gets size.
Definition Actor.cpp:52
Vector2 GetPosition() const
Gets position.
Definition Actor.cpp:38
void SetRotation(float rotation)
Sets rotation.
Definition Actor.cpp:63
virtual void Tick(float dt) override
Update tick event.
Definition Actor.cpp:33
void AddLocalOffset(const Vector2 &offset)
Adds to location vector.
Definition Actor.cpp:48
void SetPosition(const Vector2 &position)
Sets position.
Definition Actor.cpp:41
float GetRotation() const
Gets rotation.
Definition Actor.cpp:60
void SetSize(const Vector2 &size)
Sets size.
Definition Actor.cpp:55
void SetVisibility(bool visibility)
Sets visibility of actor.
Definition Actor.cpp:77
void DispatchBeginPlay()
Internal function used to queue BeginPlay() on actor.
Definition Actor.cpp:22
virtual void Tick(float dt)
Update tick event.
Definition Tickable.cpp:26
static constexpr int EXTENT_Y
y-height of game world
Definition World.hpp:24
static constexpr int EXTENT_X
x-width of game world
Definition World.hpp:22
Standard 2-dimensional vector.
Definition Vector2.hpp:11
float x
X Component.
Definition Vector2.hpp:13
float y
Y Component.
Definition Vector2.hpp:15