#ifndef CHARACTER_MODULE_H_ #define CHARACTER_MODULE_H_ #include #include #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