cmdfx 0.3.2
Lightweight game engine for your terminal
Loading...
Searching...
No Matches
force.hpp
Go to the documentation of this file.
1
11#pragma once
12
13extern "C" {
14#include "cmdfx/physics/force.h"
15}
16
19#include <vector>
20
21namespace CmdFX
22{
23
27namespace SpriteForces
28{
29
36std::vector<Vector> getAllForces(Sprite& sprite) {
37 CmdFX_Vector** forces = Sprite_getAllForces(sprite.getSprite());
38 int count = Sprite_getAllForcesCount(sprite.getSprite());
39
40 std::vector<Vector> result;
41 result.reserve(count);
42
43 for (int i = 0; i < count; i++) {
44 result.emplace_back(forces[i]);
45 }
46
47 return result;
48}
49
50Vector getNetForce(Sprite& sprite) {
51 CmdFX_Vector* netForce = Sprite_getNetForce(sprite.getSprite());
52 return Vector(netForce);
53}
54
55int addForce(Sprite& sprite, Vector& force) {
56 return Sprite_addForce(sprite.getSprite(), force.getVector());
57}
58
59int addForceFor(Sprite& sprite, Vector& force, int duration) {
60 return Sprite_addForceFor(sprite.getSprite(), force.getVector(), duration);
61}
62
63int removeForce(Sprite& sprite, Vector& force) {
64 return Sprite_removeForce(sprite.getSprite(), force.getVector());
65}
66
67int removeAllForces(Sprite& sprite) {
68 return Sprite_removeAllForces(sprite.getSprite());
69}
70
71static int clearAllForces() {
72 return Sprite_clearAllForces();
73}
74
75double getFrictionCoefficient(Sprite& sprite) {
76 return Sprite_getFrictionCoefficient(sprite.getSprite());
77}
78
79int setFrictionCoefficient(Sprite& sprite, double coefficient) {
80 return Sprite_setFrictionCoefficient(sprite.getSprite(), coefficient);
81}
82
83int resetFrictionCoefficient(Sprite& sprite) {
84 return Sprite_resetFrictionCoefficient(sprite.getSprite());
85}
86
87}; // namespace SpriteForces
88
89} // namespace CmdFX
A C++ wrapper around a CmdFX_Sprite struct.
Definition sprites.hpp:33
CmdFX_Sprite * getSprite()
Get the Sprite object associated with this class.
Definition sprites.hpp:60
A C++ wrapper around a CmdFX_Vector struct.
Definition util.hpp:30
Force-related physics declarations.
int Sprite_setFrictionCoefficient(CmdFX_Sprite *sprite, double coefficient)
Sets the friction coefficient of a sprite.
CmdFX_Vector ** Sprite_getAllForces(CmdFX_Sprite *sprite)
Gets all of the forces acting on a sprite.
int Sprite_removeAllForces(CmdFX_Sprite *sprite)
Removes all forces from a sprite.
int Sprite_getAllForcesCount(CmdFX_Sprite *sprite)
Gets the number of forces acting on a sprite.
int Sprite_clearAllForces()
Removes all forces for every sprite and frees the array.
int Sprite_resetFrictionCoefficient(CmdFX_Sprite *sprite)
Resets the friction coefficient of a sprite.
double Sprite_getFrictionCoefficient(CmdFX_Sprite *sprite)
Gets the friction coefficient of a sprite.
int Sprite_removeForce(CmdFX_Sprite *sprite, CmdFX_Vector *force)
Removes a force from a sprite.
int Sprite_addForceFor(CmdFX_Sprite *sprite, CmdFX_Vector *force, int duration)
Adds a temporary force to a sprite.
CmdFX_Vector * Sprite_getNetForce(CmdFX_Sprite *sprite)
Gets the net force acting on a sprite.
int Sprite_addForce(CmdFX_Sprite *sprite, CmdFX_Vector *force)
Adds a force to a sprite.
A C++ wrapper around Sprite forces.
Definition force.hpp:28
std::vector< Vector > getAllForces(Sprite &sprite)
Gets all the forces acting on a sprite.
Definition force.hpp:36
Primary namespace for CmdFX.
Definition cmdfx.hpp:26
C++ extensions for the CmdFX Physics Utilities API.
C++ Extensions for the CmdFX Sprites API.
A 2D Vector.
Definition util.h:22