#pragma once #include "ICommandUser.h" #include "IRenderCommandNode.h" class CommandUserBase : public ICommandUser { public: CommandUserBase(); virtual ~CommandUserBase(); virtual const std::vector& GetCommands() const; virtual CommandExecuteResult::Enumeration ExecuteCommand(unsigned char argCommandType, ICommandBuffer& argCurrentBuffer, uint32 argCurrentPositon) = 0; virtual void AssignToRenderCommandNode(IRenderCommandNode& argNode); virtual void UnassignFromRenderCommandNode(IRenderCommandNode& argNode); virtual bool get_IsPreconditionForNextCommands() const { return false; } virtual string8 get_UserName() const = 0; protected: void UnassignFromSceneNodes(); void MarkCommandsAsDirty(); std::vector m_Commands; private: std::vector m_RenderCommandNodesIamAssignedTo; };