Sleeping Wombat GUI  0.100
swGUI
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ResourceObject Class Referenceabstract

Klasa ułatwiająca zarządzanie odwołaniami do assetów.Obiekty assetów (np. MaterialObject, TextureObject, VertexShader, PixelShader itp.) wymagają jakiegoś systemu zapewniającego współdzielenie między innymi obiektami. More...

#include <ResourceObject.h>

Inheritance diagram for ResourceObject:
EngineObject BlendingState DepthStencilState IBuffer IRenderTarget IShader IShaderInputLayout MaterialObject RasterizerState SwapChain TextureObject

Public Member Functions

 ResourceObject (int id)
 
void SetID (unsigned int id)
 Ustawia identyfikator obiektu. More...
 
bool CanDelete (unsigned int &objectRef)
 sprawdza czy można zwolnić zmienną More...
 
bool CanDelete ()
 Funkcja informuje czy obiekt są obiektu, które odwołują się do assetu. More...
 
void AddAssetReference ()
 Dodaje odwołanie plikowe do assetu. More...
 
void AddObjectReference ()
 Dodaje odwołanie bezpośrednie obiektu do assetu. More...
 
void DeleteAssetReference ()
 Kasuje odwołanie plikowe do assetu. More...
 
void DeleteObjectReference ()
 Kasuje odwołanie bezpośrednie obiektu do assetu. More...
 
unsigned int GetID ()
 Zwraca identyfikator nadany assetowi. More...
 
virtual std::string GetResourceName () const =0
 Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna. More...
 
- Public Member Functions inherited from EngineObject
TypeID GetType () const
 
std::string GetTypeName () const
 
virtual void Serialize (ISerializer *ser) const
 Implements default serialization. Serializes only declared properties. More...
 
virtual void Deserialize (IDeserializer *deser)
 Implements default deserialization. More...
 
virtual Size MemorySize ()
 
template<typename TargetType >
TargetType * DynamicCast ()
 

Protected Member Functions

virtual ~ResourceObject ()=default
 Nie każdy może skasować obiekt. More...
 

Private Member Functions

 RTTR_ENABLE (EngineObject)
 

Private Attributes

unsigned int m_objectReferences
 Liczba assetów, które sie odwołują. More...
 
unsigned int m_uniqueId
 Unikalny identyfikator zasobu. More...
 

Detailed Description

Klasa ułatwiająca zarządzanie odwołaniami do assetów.

Obiekty assetów (np. MaterialObject, TextureObject, VertexShader, PixelShader itp.) wymagają jakiegoś systemu zapewniającego współdzielenie między innymi obiektami.

Do każdego pojedynczego obiektu mogą istnieć wilokrotne odwołania w klasie MeshAsset, a także w obiektach dziedziczących po StaticActor oraz w modułach silnika. Z tego względu istnieje zmienna m_objectReferences, która zlicza odwołania do obiektów.

Żaden obiekt nie powinien być kasowany, dopóki istnieją do niego odwołania.

Zmienna m_uniqueId jest na początku ustawiana na 0. Jej faktyczne ustawienie odbywa robi klasa ResourceContainer. Jest to wymagane do ułatwienia obsługi wielowątkowości. Inaczej mogłyby się pokrywać identyfikatory.

Todo:
Zliczanie referencji w ResourceObject nie nadaje się do wielowątkowości. Poprawić w odpowiednim momencie.

Constructor & Destructor Documentation

virtual ResourceObject::~ResourceObject ( )
protectedvirtualdefault

Nie każdy może skasować obiekt.

ResourceObject::ResourceObject ( int  id)
inline

Ustawia zerową liczbę odwołań.

Member Function Documentation

void ResourceObject::AddAssetReference ( )
inline

Dodaje odwołanie plikowe do assetu.

Funkcje służące do zarządzania odwołaniami. Należy pilnować, aby wszystkie funkcje, które modyfikują jakiekolwiek przypisania obiektów do tekstur, materiałów i meshy, modyfikowały również ilość odwołań. Użytkownik silnika powinien mieć udostępnioną wartstwę pośredniczacą, żeby nie musiał pamiętać o odwołaniach.

void ResourceObject::AddObjectReference ( )
inline

Dodaje odwołanie bezpośrednie obiektu do assetu.

bool ResourceObject::CanDelete ( unsigned int &  objectRef)
inline

sprawdza czy można zwolnić zmienną

Funkcja informuje czy obiekt są obiektu, które odwołują się do assetu.

Parameters
[out]file_refW zmiennej zostanie umieszczona liczba referencji plikowych.
[out]other_refW zmiennej zostanie umieszczona liczba referencji bezpośrednich od obiektów.
Returns
Zwraca wartość logiczną mówiącą czy asset nadaje się do usunięcia.
bool ResourceObject::CanDelete ( )
inline

Funkcja informuje czy obiekt są obiektu, które odwołują się do assetu.

Returns
Zwraca wartość logiczną mówiącą czy asset nadaje się do usunięcia.
void ResourceObject::DeleteAssetReference ( )
inline

Kasuje odwołanie plikowe do assetu.

void ResourceObject::DeleteObjectReference ( )
inline

Kasuje odwołanie bezpośrednie obiektu do assetu.

unsigned int ResourceObject::GetID ( )
inline

Zwraca identyfikator nadany assetowi.

virtual std::string ResourceObject::GetResourceName ( ) const
pure virtual
ResourceObject::RTTR_ENABLE ( EngineObject  )
private
void ResourceObject::SetID ( unsigned int  id)
inline

Ustawia identyfikator obiektu.

Member Data Documentation

unsigned int ResourceObject::m_objectReferences
private

Liczba assetów, które sie odwołują.

Todo:
To powinien być std::atomic_uint, ale wtedy nie kompiluje się z CLRem.
unsigned int ResourceObject::m_uniqueId
private

Unikalny identyfikator zasobu.


The documentation for this class was generated from the following file: