You.i Engine
YiAssetHardware.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ASSET_HARDWARE_H_
3 #define _YI_ASSET_HARDWARE_H_
4 
11 #include "asset/YiAsset.h"
12 #include "utility/YiRtti.h"
13 
21 class CYIAssetHardware : public CYIAsset
22 {
23  friend class CYIGPULoadBufferEvent;
24 
25 public:
43  {
48  RETAIN = 0,
49 
55  };
56 
58  virtual ~CYIAssetHardware();
59 
63  virtual bool RequestHardwareLoad();
64 
68  virtual bool RequestHardwareUnload();
69 
75  virtual bool RequestInvalidate();
76 
83  virtual bool RequestRestore();
84 
88  virtual bool Prepare() override;
89 
94  std::shared_ptr<IYIGPUObject> GetGPUObject() const;
95 
101  bool IsLoadedOnGPU() const;
102 
109 
115  void SetRetentionPolicy(RETENTION_POLICY ePolicy);
116 
117 protected:
124  virtual std::shared_ptr<IYIGPUObject> CreateGPUObject() const = 0;
125 
140  virtual void ApplyRetainmentPolicy(){};
141 
142  virtual void OnLoad() override;
143 
145 
146  std::shared_ptr<IYIGPUObject> m_pGPUObject;
147 
149 
150 private:
151 
153 };
154 
158 #endif // _YI_ASSET_HARDWARE_H_
virtual std::shared_ptr< IYIGPUObject > CreateGPUObject() const =0
void SetRetentionPolicy(RETENTION_POLICY ePolicy)
virtual bool RequestHardwareUnload()
virtual void ApplyRetainmentPolicy()
Definition: YiAssetHardware.h:140
bool m_bHardwareLoadRequested
Definition: YiAssetHardware.h:144
std::shared_ptr< IYIGPUObject > m_pGPUObject
Definition: YiAssetHardware.h:146
friend class CYIGPULoadBufferEvent
Definition: YiAssetHardware.h:23
Definition: YiAssetHardware.h:54
RETENTION_POLICY m_eRetentionPolicy
Definition: YiAssetHardware.h:148
virtual bool Prepare() override
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
virtual ~CYIAssetHardware()
RETENTION_POLICY GetRetentionPolicy() const
virtual bool RequestRestore()
virtual void OnLoad() override
Hardware-mirrored asset. These assets contain IYIGPUObject counterparts.
Definition: YiAssetHardware.h:21
bool IsLoadedOnGPU() const
virtual bool RequestHardwareLoad()
Base class for any asset. An asset provides functions for dynamically loading and unloading itself an...
Definition: YiAsset.h:33
Definition: YiAssetHardware.h:48
This file contains the classes and macros used to implement RTTI in You.i Engine. ...
std::shared_ptr< IYIGPUObject > GetGPUObject() const
RETENTION_POLICY
The YI_HW_ASSET_RETENTION_POLICY enum specifies the retention policy of static hardware assets from t...
Definition: YiAssetHardware.h:42
virtual bool RequestInvalidate()