33#ifndef DVD_SCENE_NODE_H_
34#define DVD_SCENE_NODE_H_
53class SceneRenderState;
56class RenderingComponent;
57class NetworkingComponent;
60class SpotLightComponent;
61class PointLightComponent;
65struct RenderStagePass;
71 struct MemoryBarrierCommand;
79 class SceneNodePlayer;
80 class SceneNodeSceneGraph;
81 class SceneNodeLightComponent;
82 class SceneNodeBoundsSystem;
83 class SceneNodeNetworkComponent;
128 virtual void saveToXML(boost::property_tree::ptree& pt)
const;
129 virtual void loadFromXML(
const boost::property_tree::ptree& pt);
#define PROFILE_SCOPE_AUTO(CATEGORY)
#define DEFINE_NODE_TYPE(Name, Enum)
static void setBounds(SceneNode &node, const BoundingBox &aabb, const vec3< F32 > &worldOffset={})
static bool boundsChanged(const SceneNode &node) noexcept
static void setBoundsChanged(SceneNode &node) noexcept
static bool clearBoundsChanged(SceneNode &node) noexcept
friend class Divide::PointLightComponent
static void setBounds(SceneNode &node, const BoundingBox &aabb, const vec3< F32 > &worldOffset={})
friend class Divide::SpotLightComponent
static void onNetworkReceive(SceneGraphNode *sgn, const SceneNode &node, WorldPacket &dataIn)
static void onNetworkSend(SceneGraphNode *sgn, const SceneNode &node, WorldPacket &dataOut)
static void setBounds(SceneNode &node, const BoundingBox &aabb, const vec3< F32 > &worldOffset={})
static void postLoad(SceneNode *node, SceneGraphNode *sgn)
static void sceneUpdate(SceneNode *node, const U64 deltaTimeUS, SceneGraphNode *sgn, SceneState &sceneState)
A light object placed in the scene at a certain position.
const SceneNodeRenderState & renderState() const noexcept
void setBounds(const BoundingBox &aabb, const vec3< F32 > &worldOffset={})
SceneNodeRenderState _renderState
The various states needed for rendering.
const BoundingBox & getBounds() const noexcept
virtual ~SceneNode() override
PROPERTY_R(SceneNodeType, type, SceneNodeType::COUNT)
virtual void saveToXML(boost::property_tree::ptree &pt) const
virtual void sceneUpdate(U64 deltaTimeUS, SceneGraphNode *sgn, SceneState &sceneState)
Called from SceneGraph "sceneUpdate".
BoundingBox _boundingBox
The initial bounding box as it was at object's creation (i.e. no transforms applied)
Handle< Material > _materialTemplate
virtual void prepareRender(SceneGraphNode *sgn, RenderingComponent &rComp, RenderPackage &pkg, GFX::MemoryBarrierCommand &postDrawMemCmd, RenderStagePass renderStagePass, const CameraSnapshot &cameraSnapshot, bool refreshData)
PROPERTY_RW(bool, rebuildDrawCommands, false)
U32 requiredComponentMask() const noexcept
EditorComponent * editorComponent() const noexcept
Handle< Material > getMaterialTpl() const
std::unique_ptr< EditorComponent > _editorComponent
virtual void buildDrawCommands(SceneGraphNode *sgn, GenericDrawCommandContainer &cmdsOut)
virtual void onNetworkReceive(SceneGraphNode *sgn, WorldPacket &dataIn) const
virtual bool saveCache(ByteBuffer &outputBuffer) const
virtual bool loadCache(ByteBuffer &inputBuffer)
SceneNodeRenderState & renderState() noexcept
const vec3< F32 > & getWorldOffset() const noexcept
void registerEditorComponent(PlatformContext &context)
virtual void onNetworkSend(SceneGraphNode *sgn, WorldPacket &dataOut) const
virtual void setMaterialTpl(Handle< Material > material)
virtual void loadFromXML(const boost::property_tree::ptree &pt)
U32 _requiredComponentMask
constexpr Optick::Category::Type GameLogic
Handle console commands that start with a forward slash.
constexpr U32 to_U32(const T value)
SceneNodeType
ToDo: Move particle emitter to components (it will make them way more dynamic) - Ionut.
DirectionalLightComponent(SceneGraphNode *sgn, PlatformContext &context)
eastl::fixed_vector< GenericDrawCommand, 1, true > GenericDrawCommandContainer