-/**
- * NativeImageResourceType describes a native image resource, which can be injected
- * through ResourceManager::AddNativeImage() or requested through ResourceLoader::LoadResource().
- * If the adaptor does not support NativeImages, it can fall back to Bitmap type.
- */
-struct NativeImageResourceType : public ResourceType
-{
- /**
- * Constructor.
- */
- NativeImageResourceType()
- : ResourceType(ResourceNativeImage) {}
-
- /**
- * Constructor.
- * @param[in] attribs parameters for image loading request
- */
- NativeImageResourceType(const ImageAttributes& attribs)
- : ResourceType(ResourceNativeImage),
- imageAttributes(attribs) {}
-
- /**
- * Destructor.
- */
- virtual ~NativeImageResourceType() {}
-
- /**
- * @copydoc ResourceType::Clone
- */
- virtual ResourceType* Clone() const
- {
- return new NativeImageResourceType(imageAttributes);
- }
-
- /**
- * Attributes are copied from the request (if supplied).
- */
- ImageAttributes imageAttributes;
-
-private:
-
- // Undefined copy constructor.
- NativeImageResourceType(const NativeImageResourceType& typePath);
-
- // Undefined assignment operator.
- NativeImageResourceType& operator=(const NativeImageResourceType& rhs);
-};
-
-/**
- * RenderTargetResourceType describes a bitmap resource, which can injected
- * through ResourceManager::AddTargetImage()
- */
-struct RenderTargetResourceType : public ResourceType
-{
- /**
- * Constructor.
- */
- RenderTargetResourceType()
- : ResourceType(ResourceTargetImage) {}
-
- /**
- * Constructor.
- * @param[in] attribs parameters for image loading request
- */
- RenderTargetResourceType(const ImageAttributes& attribs)
- : ResourceType(ResourceTargetImage),
- imageAttributes(attribs) {}
-
- /**
- * Destructor.
- */
- virtual ~RenderTargetResourceType() {}
-
- /**
- * @copydoc ResourceType::Clone
- */
- virtual ResourceType* Clone() const
- {
- return new RenderTargetResourceType(imageAttributes);
- }
-
- /**
- * Attributes are copied from the request.
- */
- ImageAttributes imageAttributes;
-
-private:
-
- // Undefined copy constructor.
- RenderTargetResourceType(const RenderTargetResourceType& typePath);
-
- // Undefined assignment operator.
- RenderTargetResourceType& operator=(const RenderTargetResourceType& rhs);
-};
-
-/**
- * ShaderResourceType describes a shader program resource, which can be requested
- * from PlatformAbstraction::LoadResource()
- */
-struct ShaderResourceType : public ResourceType
-{
- /**
- * Constructor.
- */
- ShaderResourceType(size_t shaderHash, const std::string& vertexSource, const std::string& fragmentSource)
- : ResourceType(ResourceShader),
- hash(shaderHash),
- vertexShader(vertexSource),
- fragmentShader(fragmentSource)
- {
- }
-
- /**
- * Destructor.
- */
- virtual ~ShaderResourceType()
- {
- }
-
- /**
- * @copydoc ResourceType::Clone
- */
- virtual ResourceType* Clone() const
- {
- return new ShaderResourceType(hash, vertexShader, fragmentShader);
- }
-
-public: // Attributes
- size_t hash; ///< Hash of the vertex/fragment sources
- const std::string vertexShader; ///< source code for vertex program
- const std::string fragmentShader; ///< source code for fragment program
-
-private:
-
- // Undefined copy constructor.
- ShaderResourceType(const ShaderResourceType& typePath);
-
- // Undefined assignment operator.
- ShaderResourceType& operator=(const ShaderResourceType& rhs);
-};
-
-/**
- * ModelResourceType describes a model resource, which can be requested
- * from PlatformAbstraction::LoadResource()
- */
-struct ModelResourceType : public ResourceType
-{
- /**
- * Constructor.
- */
- ModelResourceType()
- : ResourceType(ResourceModel)
- {
- }
-
- /**
- * Destructor.
- */
- virtual ~ModelResourceType()
- {
- }
-
- /**
- * @copydoc ResourceType::Clone
- */
- virtual ResourceType* Clone() const
- {
- return new ModelResourceType();
- }
-
-private:
-
- // Undefined copy constructor.
- ModelResourceType(const ModelResourceType& typePath);
-
- // Undefined assignment operator.
- ModelResourceType& operator=(const ModelResourceType& rhs);
-};
-
-
-/**
- * MeshResourceType describes a mesh program resource, which can be created
- * using ResourceManager::AllocateMesh.
- */
-struct MeshResourceType : public ResourceType
-{
- /**
- * Constructor.
- */
- MeshResourceType()
- : ResourceType(ResourceMesh) {}
-
- /**
- * Destructor.
- */
- virtual ~MeshResourceType() {}
-
- /**
- * @copydoc ResourceType::Clone
- */
- virtual ResourceType* Clone() const
- {
- return new MeshResourceType();
- }
-
-private:
-
- // Undefined copy constructor.
- MeshResourceType(const MeshResourceType& typePath);
-
- // Undefined assignment operator.
- MeshResourceType& operator=(const MeshResourceType& rhs);
-};
-