60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
|
#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
|