fysxasteroids/engine/EntityBaseTypes.h

60 lines
1.5 KiB
C
Raw Permalink Normal View History

2010-04-05 23:38:59 +02:00
#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:
*
* <table>
* <tr>
* <td></td>
* <td>EntityBaseTypeParticle</td>
* <td>EntityBaseTypeBlock</td>
* <td>EntityBaseTypeActor</td>
* </tr>
* <tr>
* <td>EntityBaseTypeParticle</td>
* <td>-</td>
* <td>C</td>
* <td>C</td>
* </tr>
* <tr>
* <td>EntityBaseTypeBlock</td>
* <td>C</td>
* <td>C</td>
* <td>C</td>
* </tr>
* <tr>
* <td>EntityBaseTypeActor</td>
* <td>C</td>
* <td>C</td>
* <td>C</td>
* </tr>
* </table>
*
* 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