#ifndef _ENTITYBASETYPES_H
#define _ENTITYBASETYPES_H
namespace Engine {
struct EntityBase;
struct EntityPhysicState;
struct EntityControllerState;
/** \brief Represents the different types of an entity from the Engines' perspective
*
* The different EntityBaseTypes define their basic behaviour when it comes to
* events such as collisions between two Entities.
*
* Here is an overview how collisions are handled:
*
*
*
* |
* EntityBaseTypeParticle |
* EntityBaseTypeBlock |
* EntityBaseTypeActor |
*
*
* EntityBaseTypeParticle |
* - |
* C |
* C |
*
*
* EntityBaseTypeBlock |
* C |
* C |
* C |
*
*
* EntityBaseTypeActor |
* C |
* C |
* C |
*
*
*
* A 'C' means that Engine::Physics::CheckPossibleCollisionPair() will return
* true (this results that the two types cannot penetrate each other).
*/
enum EntityBaseType {
EntityBaseTypeNone = 0, /**< is the default type and does not collide with anything */
EntityBaseTypeBlock, /**< represents walls etc. that block Particles, Actors and other Blocks */
EntityBaseTypeParticle, /**< is used for projectiles or Entities that just move
but are "dumb" apart from that */
EntityBaseTypeActor, /**< is the type for objects that interact with each other */
EntityBaseTypeLast /**< marks the maximum number of EntityBaseType */
};
}
#endif // _ENTITYBASETYPES_H