51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#ifndef CHARACTER_MODULE_H_
|
|
#define CHARACTER_MODULE_H_
|
|
#include <flecs.h>
|
|
#include <Ogre.h>
|
|
#include "Components.h"
|
|
namespace ECS
|
|
{
|
|
struct Camera;
|
|
/* character */
|
|
struct Character {}; /* tag */
|
|
struct Player {}; /* tag */
|
|
struct CharacterGravity {};
|
|
struct CharacterBuoyancy {};
|
|
struct CharacterDisablePhysics {};
|
|
struct CharacterUpdatePhysicsState {};
|
|
struct Male {};
|
|
struct Female {};
|
|
|
|
struct CharacterBase {
|
|
Ogre::String type;
|
|
float mTimer;
|
|
Ogre::SceneNode *mBodyNode;
|
|
Ogre::Entity *mBodyEnt;
|
|
Ogre::Vector3 mBoneMotion;
|
|
Ogre::Vector3 mBonePrevMotion;
|
|
Ogre::Vector3 mGoalDirection; // actual intended direction in world-space
|
|
bool is_submerged;
|
|
};
|
|
struct CharacterLocation {
|
|
Ogre::Quaternion orientation;
|
|
Ogre::Vector3 position;
|
|
};
|
|
struct CharacterConf {
|
|
Ogre::String type;
|
|
};
|
|
struct CharacterInActuator {
|
|
Ogre::String animationState;
|
|
Vector3 prevMotion;
|
|
};
|
|
struct CharacterControlDisable {};
|
|
struct CharacterModule {
|
|
CharacterModule(flecs::world &ecs);
|
|
void updateCameraGoal(Camera &camera, Ogre::Real deltaYaw,
|
|
Ogre::Real deltaPitch, Ogre::Real deltaZoom);
|
|
void createCharacter(flecs::entity e, const Ogre::Vector3 &position,
|
|
const Ogre::Quaternion &rotation,
|
|
const Ogre::String model);
|
|
};
|
|
}
|
|
#endif
|