#ifndef OPENMW_MWRENDER_AGENTSPATHS_H #define OPENMW_MWRENDER_AGENTSPATHS_H #include "apps/openmw/mwworld/ptr.hpp" #include #include #include namespace osg { class Group; class StateSet; } namespace DetourNavigator { struct Settings; struct AgentBounds; } namespace MWRender { class ActorsPaths { public: ActorsPaths(const osg::ref_ptr& root, bool enabled); ~ActorsPaths(); bool toggle(); void update(const MWWorld::ConstPtr& actor, const std::deque& path, const DetourNavigator::AgentBounds& agentBounds, const osg::Vec3f& start, const osg::Vec3f& end, const DetourNavigator::Settings& settings); void remove(const MWWorld::ConstPtr& actor); void removeCell(const MWWorld::CellStore* const store); void updatePtr(const MWWorld::ConstPtr& old, const MWWorld::ConstPtr& updated); void enable(); void disable(); private: struct Group { const MWWorld::CellStore* mCell; osg::ref_ptr mNode; }; using Groups = std::map; osg::ref_ptr mRootNode; Groups mGroups; bool mEnabled; osg::ref_ptr mGroupStateSet; osg::ref_ptr mDebugDrawStateSet; }; } #endif