cmdfx 0.2.1
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" {
14 #include "cmdfx/physics/motion.h"
15}
16
18#include <vector>
19#include <memory>
20
21namespace CmdFX {
22
30 class SpriteMotion final {
31 private:
32 std::unique_ptr<Sprite> sprite;
33
34 public:
35 SpriteMotion(std::unique_ptr<Sprite> sprite) : sprite(std::move(sprite)) {}
36 SpriteMotion(CmdFX_Sprite* sprite) : sprite(std::make_unique<Sprite>(sprite)) {}
37 ~SpriteMotion() {
38 if (sprite) { Sprite_resetAllMotion(sprite->getSprite()); }
39 }
40
61 std::vector<double> getMotion() {
62 std::vector<double> motion;
63 motion.reserve(4);
64
65 double* arr = Sprite_getMotion(sprite->getSprite());
66 if (arr) {
67 for (int i = 0; i < 4; ++i) {
68 motion.push_back(arr[i]);
69 }
70 }
71
72 return motion;
73 }
74
75 double getVelocityX() {
76 return Sprite_getVelocityX(sprite->getSprite());
77 }
78
79 int setVelocityX(double velocity) {
80 return Sprite_setVelocityX(sprite->getSprite(), velocity);
81 }
82
83 double getVelocityY() {
84 return Sprite_getVelocityY(sprite->getSprite());
85 }
86
87 int setVelocityY(double velocity) {
88 return Sprite_setVelocityY(sprite->getSprite(), velocity);
89 }
90
91 double getAccelerationX() {
92 return Sprite_getAccelerationX(sprite->getSprite());
93 }
94
95 int setAccelerationX(double acceleration) {
96 return Sprite_setAccelerationX(sprite->getSprite(), acceleration);
97 }
98
99 double getAccelerationY() {
100 return Sprite_getAccelerationY(sprite->getSprite());
101 }
102
103 int setAccelerationY(double acceleration) {
104 return Sprite_setAccelerationY(sprite->getSprite(), acceleration);
105 }
106
107 bool isAboutToCollide(Sprite& sprite2) {
108 return Sprite_isAboutToCollide(sprite->getSprite(), sprite2.getSprite()) != 0;
109 }
110
111 bool isAboutToCollide(std::unique_ptr<Sprite> sprite2) {
112 return Sprite_isAboutToCollide(sprite->getSprite(), sprite2->getSprite()) != 0;
113 }
114
115 std::vector<std::unique_ptr<Sprite>> getAboutToCollideSprites() {
116 std::vector<std::unique_ptr<Sprite>> sprites;
117 CmdFX_Sprite** arr = Sprite_getAboutToCollideSprites(sprite->getSprite());
118 if (arr) {
119 for (int i = 0; arr[i] != nullptr; ++i) {
120 sprites.emplace_back(std::make_unique<Sprite>(arr[i]));
121 }
122 }
123 return sprites;
124 }
125
126 int resetAllMotion() {
127 return Sprite_resetAllMotion(sprite->getSprite());
128 }
129
130 };
131
135 namespace Engine {
136
145 bool isMotionDebugEnabled() {
146 return Engine_isMotionDebugEnabled() != 0;
147 }
148
158
165 }
166
167}
std::vector< double > getMotion()
Gets the motion array of a sprite as a vector.
Definition motion.hpp:61
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:25
bool isMotionDebugEnabled()
Checks if motion debugging is enabled.
Definition engine.hpp:54
void disableMotionDebug()
Disables motion debugging.
Definition motion.hpp:162
void enableMotionDebug()
Enables motion debugging.
Definition motion.hpp:155
Primary namespace for CmdFX.
Definition cmdfx.hpp:22
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:30