mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-30 12:32:36 +00:00
59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
|
#ifndef GAME_RENDER_ACTORANIMATION_H
|
||
|
#define GAME_RENDER_ACTORANIMATION_H
|
||
|
|
||
|
#include <map>
|
||
|
|
||
|
#include <osg/ref_ptr>
|
||
|
|
||
|
#include "../mwworld/containerstore.hpp"
|
||
|
|
||
|
#include "animation.hpp"
|
||
|
|
||
|
namespace osg
|
||
|
{
|
||
|
class Node;
|
||
|
}
|
||
|
|
||
|
namespace MWWorld
|
||
|
{
|
||
|
class ConstPtr;
|
||
|
}
|
||
|
|
||
|
namespace SceneUtil
|
||
|
{
|
||
|
class LightSource;
|
||
|
class LightListCallback;
|
||
|
}
|
||
|
|
||
|
namespace MWRender
|
||
|
{
|
||
|
|
||
|
class ActorAnimation : public Animation, public MWWorld::ContainerStoreListener
|
||
|
{
|
||
|
public:
|
||
|
ActorAnimation(const MWWorld::Ptr &ptr, osg::ref_ptr<osg::Group> parentNode, Resource::ResourceSystem* resourceSystem,
|
||
|
bool disableListener=false);
|
||
|
virtual ~ActorAnimation();
|
||
|
|
||
|
virtual void itemAdded(const MWWorld::ConstPtr& item, int count);
|
||
|
virtual void itemRemoved(const MWWorld::ConstPtr& item, int count);
|
||
|
|
||
|
protected:
|
||
|
virtual void objectRootReset();
|
||
|
|
||
|
private:
|
||
|
void addHiddenItemLight(const MWWorld::ConstPtr& item, const ESM::Light* esmLight);
|
||
|
void removeHiddenItemLight(const MWWorld::ConstPtr& item);
|
||
|
|
||
|
SceneUtil::LightListCallback* findLightListCallback();
|
||
|
|
||
|
typedef std::map<MWWorld::ConstPtr, osg::ref_ptr<SceneUtil::LightSource> > ItemLightMap;
|
||
|
ItemLightMap mItemLights;
|
||
|
|
||
|
bool mListenerDisabled;
|
||
|
};
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif
|