This repository has been archived on 2019-12-07. You can view files and clone it, but cannot push or open issues or pull requests.
dungeon-gunner/source/abstract/Body.cpp
2012-12-22 01:14:30 +01:00

156 lines
3.1 KiB
C++
Executable file

/*
* Body.cpp
*
* Created on: 11.08.2012
* Author: Felix
*/
#include "Body.h"
#include <math.h>
#include <Thor/Vectors.hpp>
const String Body::KEY_SIZE = "size";
const Vector2i Body::DEFAULT_SIZE = Vector2i(50, 50);
/**
* Initializes Box2D body.
*
* @param data Data needed for construction.
*/
Body::Body(const PhysicalData& data, const Yaml& config, const Vector2i& pSize) :
mDelete(false) {
}
/**
* Used to make this class pure virtual without any pure virtual function.
*/
Body::~Body() {
}
/**
* Initializes container.
*/
Body::PhysicalData::PhysicalData( const Vector2f& position, World& world, Category category,
unsigned short maskExclude, bool moving, bool bullet, bool circle) :
position(position),
world(world),
category(category),
maskExclude(maskExclude),
moving(moving),
bullet(bullet),
circle(circle) {
}
/**
* Returns the position of the sprite (center).
*/
Vector2f
Body::getPosition() const {
return Vector2f();
}
/**
* Returns the movement speed of the body.
*/
Vector2f
Body::getSpeed() const {
return Vector2f();
}
/**
* Returns the rotation of the body (converted to an SFML angle).
*/
float
Body::getAngle() const {
return 0;
}
/**
* Returns true if this object should be deleted.
*/
bool
Body::getDelete() const {
return mDelete;
}
/**
* Returns the Physical::Category of this object.
*/
Body::Category
Body::getCategory() const {
return CATEGORY_WORLD;
}
/**
* Returns the size of the body as a vector.
*/
Vector2f
Body::getSize() const {
return Vector2f();
}
/**
* Returns true if collisions are enabled for the body.
*/
bool
Body::isSolid() const {
return false;
}
/**
* Returns true if the body is able to move.
*/
bool
Body::isMovable() const {
return false;
}
/**
* This method filters collisions with other physicals. Implement it if you want to
* limit collisions to/with certain objects. Default implementation always returns true.
*
* @param other The Physical this object is about to collide with.
* @return True if the objects should collide.
*/
bool
Body::doesCollide(Body& other) {
return true;
}
/**
* Called when a collision with another body occured. Override this method
* to manage collision events.
*
* @param other Reference to the other Physical in the collision.
* @param category The Category of the other object (as passed in constructor).
*/
void
Body::onCollide(Body& other, Category type) {
}
/**
* Set to true to mark this object for deletion from the world.
*/
void
Body::setDelete(bool value) {
mDelete = value;
}
/**
* Sets movement speed and direction of the body. Set either value to zero to stop movement.
*
* @param direction The direction the body moves in, does not have to be normalized.
* @param speed The value of the movement speed to be used.
*/
void
Body::setSpeed(Vector2f direction, float speed) {
}
/**
* Sets the angle of the body based on the direction of a vector.
*/
void
Body::setAngle(float angle) {
}