Sleeping Wombat Graphic API  1.010
swGraphicAPI
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:
BlendingState DepthStencilState IBuffer IRenderTarget IShader IShaderInputLayout MaterialObject RasterizerState SwapChain TextureObject

Public Member Functions

 ResourceObject (int id)
 
void SetID (unsigned int id)
 Ustawia identyfikator obiektu.
 
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.
 
void DeleteAssetReference ()
 Kasuje odwołanie plikowe do assetu.
 
void DeleteObjectReference ()
 Kasuje odwołanie bezpośrednie obiektu do assetu.
 
unsigned int GetID ()
 Zwraca identyfikator nadany assetowi.
 
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.
 

Protected Member Functions

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

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.
 

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

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.

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.

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.

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