source: nrEngine/src/Resource.cpp @ 32

Revision 32, 4.0 KB checked in by art, 12 years ago (diff)
Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13
14//----------------------------------------------------------------------------------
15// Includes
16//----------------------------------------------------------------------------------
17#include "Resource.h"
18#include "Exception.h"
19#include "Log.h"
20
21namespace nrEngine {
22
23        //----------------------------------------------------------------------------------
24        IResource::IResource(const std::string& resType)
25        {
26                // setup default data
27                mResIsLoaded = false;
28                mResHandle = 0;
29                mResIsEmpty = false;
30                mResDataSize = sizeof(*this);
31                //mResLoader = NULL;
32                setResourceType(resType);
33        }
34
35        //----------------------------------------------------------------------------------
36        IResource::~IResource()
37        {
38                // check for valid loader
39                /*if (mResLoader != NULL)
40                {
41                        // notify the parent loader, that the resource object will be removed now
42                        mResLoader->remove(this);
43                }*/
44               
45                // notify the manager, that this resource was
46        }
47
48        //----------------------------------------------------------------------------------
49        Result IResource::unloadRes()
50        {
51                //if (mResLoader) mResLoader->notifyUnloadResource(this);
52                return OK;
53        }
54       
55        //----------------------------------------------------------------------------------
56        Result IResource::reloadRes()
57        {
58                //if (mResLoader) mResLoader->notifyUnloadResource(this);
59                return OK;
60        }
61
62        //----------------------------------------------------------------------------------
63        Result IResource::unloadResThroughLoader()
64        {
65                // check for valid loader
66                if (mResLoader == NULL)
67                {
68                        char msg[128];
69                        sprintf(msg, "Resource %s does not get valid loader!", getResName().c_str());
70                        NR_EXCEPT(RES_LOADER_NOT_EXISTS, msg, "IResource::~IResource()");
71                }
72                return mResLoader->unload(getSharedPtrFromThis());
73        }
74
75        //----------------------------------------------------------------------------------
76        Result IResource::reloadResThroughLoader()
77        {
78                // check for valid loader
79                if (mResLoader == NULL)
80                {
81                        char msg[128];
82                        sprintf(msg, "Resource %s does not get valid loader!", getResName().c_str());
83                        NR_EXCEPT(RES_LOADER_NOT_EXISTS, msg, "IResource::~IResource()");
84                }
85                return mResLoader->reload(getSharedPtrFromThis());
86        }
87
88        //----------------------------------------------------------------------------------
89        Result IResource::removeResThroughLoader()
90        {
91                // check for valid loader
92                if (mResLoader == NULL)
93                {
94                        char msg[128];
95                        sprintf(msg, "Resource %s does not get valid loader!", getResName().c_str());
96                        NR_EXCEPT(RES_LOADER_NOT_EXISTS, msg, "IResource::~IResource()");
97                }
98                return mResLoader->remove(getSharedPtrFromThis());
99        }
100       
101        //----------------------------------------------------------------------------------
102        void IResource::addResourceFilename(const std::string& filename)
103        {
104                // first check if such a filename already exists
105                std::list<std::string>::iterator it = std::find(mResFileNames.begin(), mResFileNames.end(), filename);
106                if (it == mResFileNames.end())
107                        mResFileNames.push_back(filename);
108        }
109       
110        //----------------------------------------------------------------------------------
111        void IResource::addResourceFilename(const std::list<std::string>& flist)
112        {
113                std::list<std::string>::const_iterator it = flist.begin();
114                for (; it != flist.end(); it++)
115                        addResourceFilename(*it);
116        }
117
118};
119
Note: See TracBrowser for help on using the repository browser.