#pragma once #include // Pre-declare classes DV_CORE_BEGIN_NAMESPACE template class TVector2; template class TVector3; template class TVector4; template class TMatrix4; class DeviceBuffer; typedef std::shared_ptr DeviceBufferPtr; typedef std::shared_ptr DeviceBufferConstPtr; class DeviceBufferView; typedef std::shared_ptr DeviceBufferViewPtr; typedef std::shared_ptr DeviceBufferViewConstPtr; class DeviceBufferAccessor; typedef std::shared_ptr DeviceBufferAccessorPtr; typedef std::shared_ptr DeviceBufferAccessorConstPtr; class RenderTarget; class Mesh; typedef std::shared_ptr MeshPtr; typedef std::shared_ptr MeshConstPtr; class Image; typedef std::shared_ptr ImagePtr; typedef std::shared_ptr ImageConstPtr; class Texture; typedef std::shared_ptr TexturePtr; typedef std::shared_ptr TextureConstPtr; class Material; typedef std::shared_ptr MaterialPtr; typedef std::shared_ptr MaterialConstPtr; class Scene; class Device; class SceneNode; typedef std::shared_ptr SceneNodePtr; typedef std::shared_ptr SceneNodeConstPtr; typedef std::vector SceneNodeArray; class SceneComponent; typedef std::shared_ptr SceneComponentPtr; typedef std::shared_ptr SceneComponentConstPtr; typedef std::vector SceneComponentArray; class MeshComponent; typedef std::shared_ptr MeshComponentPtr; typedef std::shared_ptr MeshComponentConstPtr; class CameraComponent; typedef std::shared_ptr CameraComponentPtr; typedef std::shared_ptr CameraComponentConstPtr; class LightComponent; typedef std::shared_ptr LightComponentPtr; typedef std::shared_ptr LightComponentConstPtr; class RenderPipe; class Renderable; typedef std::shared_ptr RenderablePtr; typedef std::shared_ptr RenderableConstPtr; typedef std::vector RenderableArray; class VertexShaderInterface; class PixelShaderInterface; class UniformBuffer; DV_CORE_END_NAMESPACE