-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSPResource.h
67 lines (64 loc) · 3.79 KB
/
SPResource.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef _SPResource_H
#define _SPResource_H
#include "ExternalLibs.h"
namespace Pei
{
namespace Graphic
{
class SPTexture;
class SPRenderer;
class SPMesh;
}
class SPResourceManager;
/// یک ریسورس نوعی است که قرار است توسط ریسورس منیجر مدیریت شود
/// یک ریسورس معمولا از یک فایل بارگزاری می شود و ممکن است در حین اجرای برنامه لازم شود دوباره آن را بارگزاری کرد
/// و همچنین در جایی از برنامه آن را آزاد کرد
/// تمام این کار ها را ریسورس منیجر انجام می دهد
/// مش و تکسچر به عنوان نمونه از ریسور ارث می برند
class SPResource abstract
{
friend class SPResourceManager;
unsigned char resGroupID;
SPResource* next;
SPResource* prev;
public:
enum Types : unsigned char
{
Type_Resource = 0,
Type_Texture,
Type_Mesh,
Type_Renderer,
Type_Sound,
};
protected:
SPResource(Types type);
virtual void releaseRes() = 0;
virtual void reloadRes() = 0;
public:
Types type;
std::string name;
};
/// ایده ریسورس منیجر بارگزاری یک منبع و دسترسی به آن به طور نامحدود است.
/// همچنین مدیریت دیواس لاست در دایرکت تریدی
class SPResourceManager
{
friend class SPResource;
friend class Graphic::SPRenderer;
private:
static unsigned char resGroupID;
static void releaseAllResources();
static void reloadAllResources();
public:
static std::string basePath;
/// اگر مش قبلا لود شده باشد اشاره گر به منبع قبلی را بر می گرداند
/// و اگر قبلا لود نشده باشد آن را لود می کند
static Graphic::SPMesh* GetMesh(const char* name);
static Graphic::SPTexture* GetTexture(const char* name);
/// منابع با این متد می توانند گروه بندی شوند به این صورت که منابعی که بعد
/// از این متد بارگزاری می شند شناسه گروه آنها با شماره گروه جدید ذخیره می شود
static void SetNewResourcesGroupID(unsigned char value);
/// با این متد یک گروه از منابع آزاد می شوند
static void RemoveResources(unsigned char resGroupID);
};
}
#endif