cmdfx 0.3.2
Lightweight game engine for your terminal
Loading...
Searching...
No Matches
motion.hpp
Go to the documentation of this file.
1
11#pragma once
12
13extern "C" {
15}
16
18#include <memory>
19#include <vector>
20
21namespace CmdFX
22{
23
32class SpriteMotion final {
33 private:
34 std::unique_ptr<Sprite> sprite;
35
36 public:
37 SpriteMotion(std::unique_ptr<Sprite> sprite) : sprite(std::move(sprite)) {
38 }
39 SpriteMotion(CmdFX_Sprite* sprite)
40 : sprite(std::make_unique<Sprite>(sprite)) {
41 }
42 ~SpriteMotion() {
43 if (sprite) {
44 Sprite_resetAllMotion(sprite->getSprite());
45 }
46 }
47
71 std::vector<double> getMotion() {
72 std::vector<double> motion;
73 motion.reserve(4);
74
75 double* arr = Sprite_getMotion(sprite->getSprite());
76 if (arr) {
77 for (int i = 0; i < 4; ++i) {
78 motion.push_back(arr[i]);
79 }
80 }
81
82 return motion;
83 }
84
85 double getVelocityX() {
86 return Sprite_getVelocityX(sprite->getSprite());
87 }
88
89 int setVelocityX(double velocity) {
90 return Sprite_setVelocityX(sprite->getSprite(), velocity);
91 }
92
93 double getVelocityY() {
94 return Sprite_getVelocityY(sprite->getSprite());
95 }
96
97 int setVelocityY(double velocity) {
98 return Sprite_setVelocityY(sprite->getSprite(), velocity);
99 }
100
101 double getAccelerationX() {
102 return Sprite_getAccelerationX(sprite->getSprite());
103 }
104
105 int setAccelerationX(double acceleration) {
106 return Sprite_setAccelerationX(sprite->getSprite(), acceleration);
107 }
108
109 double getAccelerationY() {
110 return Sprite_getAccelerationY(sprite->getSprite());
111 }
112
113 int setAccelerationY(double acceleration) {
114 return Sprite_setAccelerationY(sprite->getSprite(), acceleration);
115 }
116
117 bool isAboutToCollide(Sprite& sprite2) {
119 sprite->getSprite(), sprite2.getSprite()
120 ) != 0;
121 }
122
123 bool isAboutToCollide(const std::unique_ptr<Sprite>& sprite2) {
124 return sprite2 && Sprite_isAboutToCollide(
125 sprite->getSprite(), sprite2->getSprite()
126 ) != 0;
127 }
128
129 std::vector<std::unique_ptr<Sprite>> getAboutToCollideSprites() {
130 std::vector<std::unique_ptr<Sprite>> sprites;
131 CmdFX_Sprite** arr =
132 Sprite_getAboutToCollideSprites(sprite->getSprite());
133 if (arr) {
134 for (int i = 0; arr[i] != nullptr; ++i) {
135 sprites.emplace_back(std::make_unique<Sprite>(arr[i]));
136 }
137 }
138 return sprites;
139 }
140
141 int resetAllMotion() {
142 return Sprite_resetAllMotion(sprite->getSprite());
143 }
144};
145
149namespace Engine
150{
151
161 return Engine_isMotionDebugEnabled() != 0;
162}
163
173
180} // namespace Engine
181
182} // namespace CmdFX
std::vector< double > getMotion()
Gets the motion array of a sprite as a vector.
Definition motion.hpp:71
Velocity and Acceleration functions.
double Sprite_getAccelerationY(CmdFX_Sprite *sprite)
Gets the Y acceleration of a sprite.
int Sprite_setAccelerationY(CmdFX_Sprite *sprite, double acceleration)
Sets the Y acceleration of a sprite.
double Sprite_getVelocityY(CmdFX_Sprite *sprite)
Gets the Y velocity of a sprite.
int Sprite_isAboutToCollide(CmdFX_Sprite *sprite1, CmdFX_Sprite *sprite2)
Whether a sprite is about to collide with another sprite.
double * Sprite_getMotion(CmdFX_Sprite *sprite)
Gets the motion array of a sprite.
void Engine_enableMotionDebug()
Enables motion debugging.
int Sprite_setVelocityX(CmdFX_Sprite *sprite, double velocity)
Sets the X velocity of a sprite.
int Sprite_setVelocityY(CmdFX_Sprite *sprite, double velocity)
Sets the Y velocity of a sprite.
CmdFX_Sprite ** Sprite_getAboutToCollideSprites(CmdFX_Sprite *sprite)
Gets all of the sprites the sprite is about to collide with.
double Sprite_getVelocityX(CmdFX_Sprite *sprite)
Gets the X velocity of a sprite.
int Sprite_setAccelerationX(CmdFX_Sprite *sprite, double acceleration)
Sets the X acceleration of a sprite.
double Sprite_getAccelerationX(CmdFX_Sprite *sprite)
Gets the X acceleration of a sprite.
void Engine_disableMotionDebug()
Disables motion debugging.
int Sprite_resetAllMotion(CmdFX_Sprite *sprite)
Resets all motion of a sprite.
int Engine_isMotionDebugEnabled()
Whether motion debugging is enabled.
A C++ wrapper around the CmdFX Physics Engine.
Definition engine.hpp:27
bool isMotionDebugEnabled()
Checks if motion debugging is enabled.
Definition motion.hpp:160
void disableMotionDebug()
Disables motion debugging.
Definition motion.hpp:177
void enableMotionDebug()
Enables motion debugging.
Definition motion.hpp:170
Primary namespace for CmdFX.
Definition cmdfx.hpp:26
struct CmdFX_Sprite CmdFX_Sprite
Represents a sprite that can be drawn to the terminal.
C++ Extensions for the CmdFX Sprites API.
Represents a sprite that can be drawn to the terminal.
Definition sprites.h:31