Vigilante Game Framework  1.0.0.8
A 2D/3D C++ Game Framework using SFML.
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | List of all members
VObject Class Reference

Base object class that handles movement, rotation and collisions. More...

#include <VObject.h>

Inheritance diagram for VObject:
VBase V9Slice VBackdrop VGradient VParticle VShape VSprite VText VTile VTilemap

Public Types

enum  SidesTouching : unsigned char {
  TOUCHNONE = 0, TOUCHLEFT = 1 << 0, TOUCHRIGHT = 1 << 1, TOUCHTOP = 1 << 2,
  TOUCHBOTTOM = 1 << 3, TOUCHWALL = TOUCHLEFT | TOUCHRIGHT, TOUCHALL = TOUCHLEFT | TOUCHRIGHT | TOUCHTOP | TOUCHBOTTOM
}
 Flags for which sides are allowed to check if being overlapped for collision purposes.
 
typedef VBase VSUPERCLASS
 Used to call parent class functions when they are overrided in class.
 

Public Member Functions

 VObject (sf::Vector2f position, sf::Vector2f size=sf::Vector2f())
 
 VObject (float x=0, float y=0, float width=0, float height=0)
 
void SetPositionAtCentre (float x, float y)
 
void SetPositionAtCentre (sf::Vector2f newPos)
 
bool IsSolid ()
 
virtual void Reset (sf::Vector2f newPos)
 
virtual void Reset (float x, float y)
 
virtual void Hurt (float damage)
 
virtual void Update (float dt)
 
virtual void Draw (sf::RenderTarget &RenderTarget)
 
- Public Member Functions inherited from VBase
virtual void Destroy ()
 Destroys object and any data that must be destroyed.
 
virtual void Kill ()
 
virtual void Revive ()
 Revives the object by setting both alive and exists back to true.
 

Static Public Member Functions

static bool separate (VObject *a, VObject *b)
 
static bool separateCircle (VObject *a, VObject *b)
 
static bool touchFlag (VObject *a, VObject *b)
 
static float computeVelocity (float v, float a, float d, float max, float dt)
 
static bool TestInView (const sf::View &renderTargetView, sf::View *defaultView, VObject *o, const sf::FloatRect &renderBox=sf::FloatRect())
 
- Static Public Member Functions inherited from VBase
static const wchar_t * VString (const char *fmt,...)
 
static void VLog (const char *fmt,...)
 
static void VLogError (const char *fmt,...)
 
static void VClearLog ()
 

Public Attributes

sf::Vector2f Position
 Position of the object.
 
sf::Vector2f Size
 Size of the object.
 
sf::Vector2f Last
 Position of the object on the previous frame.
 
float Radius = 0
 Radius amount for Circle Collisions.
 
float Angle = 0
 Angle of object.
 
float AngleVelocity = 0
 Velocity of rotation.
 
float AngleAcceleration = 0
 Acceleration of rotation.
 
float AngleDrag = 0
 Drag of rotation.
 
float AngleMax = 10000
 Maximum Velocity of rotation.
 
bool Moves = true
 If true, updates the objects position and angle.
 
sf::Vector2f Velocity
 Velocity of movement.
 
sf::Vector2f Acceleration
 Acceleration of movement.
 
sf::Vector2f Drag
 Drag of movement.
 
sf::Vector2f MaxVelocity
 Maximum velocity of movement.
 
sf::Vector2f ScrollFactor
 The amount the object will appear to move when the camera scrolls (1.0f = Scrolls as fast as the camera, 0.5f = Scrolls half as fast as the camera). Good for parallax scrolling.
 
float RotateFactor = 1
 The amount the object will appear to rotate when the camera rotates (1.0f = Rotates as fast as the camera, 0.5f = Rotates half as fast as the camera). Good for parallax scrolling.
 
float ZoomFactor = 1
 The amount the object will appear to scale when the camera zooms (1.0f = Scales as fast as the camera, 0.5f = Scales half as fast as the camera). Good for parallax scrolling.
 
float Elasticity = 0
 Bounciness of the object (0 assumes no bounce)
 
float Mass = 1
 Mass of object in comparison to other objects in world.
 
float Health = 100
 Standard health value (object dies if health is <= 0 when modified in the Hurt function)
 
bool Immovable = false
 If true, the object will not change its velocity on collision.
 
unsigned char Touching = SidesTouching::TOUCHNONE
 Which sides are currently touching (is reset on each Update call!)
 
unsigned char WasTouching = SidesTouching::TOUCHNONE
 Which sides on previous frame were touching (is reset on each Update call!)
 
unsigned char AllowCollisions = SidesTouching::TOUCHALL
 Which sides are allowed to check collisions for.
 
bool CollisionXDrag = true
 Useful for moving platforms.
 
- Public Attributes inherited from VBase
bool active = true
 Base can be updated using Update if true.
 
bool visible = true
 Base can be rendered using Draw if true.
 
bool alive = true
 Helper member that is mainly used filter out behaviours to objects which aren't alive in the scene.
 
bool exists = true
 Base can be updated and rendered if true, else it would no longer be treated as being part of the scene.
 
VType type = NONE
 Base object type, typically set in the constructor of an inherited object to specify what type it is.
 
uint32_t RefCount = 0
 Counts the amount of times the object is referenced in groups, ensures an object is only destroyed when no longer part of a single group.
 

Static Public Attributes

static float SeparateBias
 Adds to the maximum overlap distance between objects.
 

Protected Member Functions

virtual void updateMotion (float dt)
 
virtual void updateTransform ()
 Update the tranform.
 

Detailed Description

Base object class that handles movement, rotation and collisions.

Constructor & Destructor Documentation

◆ VObject() [1/2]

VObject::VObject ( sf::Vector2f  position,
sf::Vector2f  size = sf::Vector2f() 
)
inline
Parameters
positionPosition of the sprite.
sizeSize of the sprite (also sets the size of the render area).

◆ VObject() [2/2]

VObject::VObject ( float  x = 0,
float  y = 0,
float  width = 0,
float  height = 0 
)
inline
Parameters
xX position of the sprite.
yY position of the sprite.
widthWidth of the sprite (also sets the width of the render area).
heightHeight of the sprite (also sets the height of the render area).

Member Function Documentation

◆ computeVelocity()

static float VObject::computeVelocity ( float  v,
float  a,
float  d,
float  max,
float  dt 
)
static

Base function for calculating velocity. If the acceleration parameter doesn't equal zero, then the function uses V = iV + A*dt. Otherwise it will apply drag to the velocity. The function will also cap the resulting velocity to whatever the max is, assuming max is greater than 0.

Parameters
vVelocity value.
aAcceleration value.
dDrag value.
maxMax Velocity value.
dtDelta Time between the previous and current frame.
Returns
The resulting velocity.

◆ Draw()

virtual void VObject::Draw ( sf::RenderTarget &  RenderTarget)
virtual

Draws object.

Parameters
RenderTargetThe game's sf::RenderTarget object to render data onto.

Reimplemented from VBase.

Reimplemented in VTilemap, VText, VGradient, VSprite, VShape, VTiledSprite, VBackdrop, and V9Slice.

◆ Hurt()

virtual void VObject::Hurt ( float  damage)
virtual

Reduces health and kills object if health is below 0.

Parameters
damageThe value to remove from health.

Reimplemented in VTilemap.

◆ IsSolid()

bool VObject::IsSolid ( )
Returns
True if collision is allowed on object on any side.

◆ Reset() [1/2]

virtual void VObject::Reset ( sf::Vector2f  newPos)
virtual

Resets object with new position.

Parameters
newPosNew position of the object.

Reimplemented in VTilemap.

◆ Reset() [2/2]

virtual void VObject::Reset ( float  x,
float  y 
)
virtual

Resets object with new position.

Parameters
xNew X position of the object.
yNew Y position of the object.

Reimplemented in VTilemap, and VParticle.

◆ separate()

static bool VObject::separate ( VObject a,
VObject b 
)
static

Separate objects that overlap based on rectangle collision.

Parameters
aLeft Object.
bRight Object.
Returns
True if there is an overlap and separation.

◆ separateCircle()

static bool VObject::separateCircle ( VObject a,
VObject b 
)
static

Separate objects that overlap based on circle collision.

Parameters
aLeft Object.
bRight Object.
Returns
True if there is an overlap and separation.

◆ SetPositionAtCentre() [1/2]

void VObject::SetPositionAtCentre ( float  x,
float  y 
)

Sets object position based on the centre of it's circular area.

Parameters
xNew X position of the object at it's centre.
yNew Y position of the object at it's centre.

◆ SetPositionAtCentre() [2/2]

void VObject::SetPositionAtCentre ( sf::Vector2f  newPos)

Sets object position based on the centre of it's circular area.

Parameters
newPosNew position of the object at it's centre.

◆ TestInView()

static bool VObject::TestInView ( const sf::View &  renderTargetView,
sf::View *  defaultView,
VObject o,
const sf::FloatRect &  renderBox = sf::FloatRect() 
)
static

Function used to for testing if VObject is in view of the camera, useful to test if a VObject should be rendered if in view of the a Camera.

Parameters
renderTargetViewThe sf::View to test the VObject with. You can get this from a VCamera or sf::RenderTarget in the Draw function.
defaultViewA modifiable sf::View that has the same size as the renderTargetView, but is transformed to factor in parallax (e.g. ScrollFactor, RotateFactor and ZoomFactor). This property is modified in the function, but the size and position should be default values.
oThe VObject to test with, must not be NULL.
renderBoxThe render area of the object. Default is the Position and Size of the VObject, but this parameter can use whatever custom one is provided.
Returns
If the VObject is within the rectangle of the view (factoring in ScrollFactor, RotateFactor and ZoomFactor), then returns true.

◆ touchFlag()

static bool VObject::touchFlag ( VObject a,
VObject b 
)
static

Process touch test.

Parameters
aLeft Object.
bRight Object.
Returns
True if there is an overlap.

◆ Update()

virtual void VObject::Update ( float  dt)
virtual

Updates object and any data it contains.

Parameters
dtDelta Time between the previous and current frame.

Reimplemented from VBase.

Reimplemented in VTilemap, VTypedText, VSprite, VBackdrop, VParticle, VTile, and VTextPath.

◆ updateMotion()

virtual void VObject::updateMotion ( float  dt)
protectedvirtual

Updates the position and rotation of object. By default all velocity values will be set using the computeVelocity function + velocity * delta time.

Parameters
dtDelta Time between the previous and current frame.

The documentation for this class was generated from the following file: