ScummVM API documentation
MaterialManager.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22/*
23 * Copyright (C) 2006-2010 - Frictional Games
24 *
25 * This file is part of HPL1 Engine.
26 */
27
28#ifndef HPL_MATERIAL_MANAGER_H
29#define HPL_MATERIAL_MANAGER_H
30
31#include "hpl1/engine/graphics/Material.h"
32#include "hpl1/engine/graphics/Texture.h"
33#include "hpl1/engine/resources/ResourceManager.h"
34
35namespace hpl {
36
37class cGraphics;
38class cResources;
39class iMaterial;
40
42public:
43 cMaterialManager(cGraphics *apGraphics, cResources *apResources);
45
46 iResourceBase *Create(const tString &asName);
47 iMaterial *CreateMaterial(const tString &asName);
48
49 void Update(float afTimeStep);
50
51 void Destroy(iResourceBase *apResource);
52 void Unload(iResourceBase *apResource);
53
54 void SetTextureSizeLevel(unsigned int alLevel) { mlTextureSizeLevel = alLevel; }
55 int GetTextureSizeLevel() { return mlTextureSizeLevel; }
56
57 void SetTextureFilter(eTextureFilter aFilter);
58 eTextureFilter GetTextureFilter() { return mTextureFilter; }
59
60 void SetTextureAnisotropy(float afX);
61 float GetTextureAnisotropy() { return mfTextureAnisotropy; }
62
63 tString GetPhysicsMaterialName(const tString &asName);
64
65private:
66 iMaterial *LoadFromFile(const tString &asName, const tString &asPath);
67
68 eTextureTarget GetTarget(const tString &asType);
69 tString GetTextureString(eMaterialTexture aType);
70 eTextureWrap GetWrap(const tString &asType);
71 eTextureAnimMode GetAnimMode(const tString &asType);
72
73 unsigned int mlTextureSizeLevel;
74 eTextureFilter mTextureFilter;
75 float mfTextureAnisotropy;
76
77 tStringList mlstFileFormats;
78
79 tStringVec mvCubeSideSuffixes;
80
81 cGraphics *mpGraphics;
82 cResources *mpResources;
83
84 int mlIdCounter;
85};
86
87} // namespace hpl
88
89#endif // HPL_MATERIAL_MANAGER_H
Definition: str.h:59
Definition: Graphics.h:46
Definition: MaterialManager.h:41
Definition: Resources.h:160
Definition: Material.h:203
Definition: ResourceBase.h:36
Definition: ResourceManager.h:52