Initial commit
This commit is contained in:
74
Torque/SDK/engine/dgl/gChunkedTexManager.h
Normal file
74
Torque/SDK/engine/dgl/gChunkedTexManager.h
Normal file
@@ -0,0 +1,74 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _GCHUNKEDTEXMANAGER_H_
|
||||
#define _GCHUNKEDTEXMANAGER_H_
|
||||
|
||||
#ifndef _GTEXMANAGER_H_
|
||||
#include "dgl/gTexManager.h"
|
||||
#endif
|
||||
|
||||
class ChunkedTextureObject
|
||||
{
|
||||
public:
|
||||
ChunkedTextureObject *next;
|
||||
StringTableEntry texFileName;
|
||||
U32 texWidthCount;
|
||||
U32 texHeightCount;
|
||||
U32 width;
|
||||
U32 height;
|
||||
TextureHandle *textureHandles;
|
||||
S32 refCount;
|
||||
GBitmap *bitmap;
|
||||
};
|
||||
|
||||
class ChunkedTextureManager
|
||||
{
|
||||
friend class ChunkedTextureHandle;
|
||||
static ChunkedTextureObject* loadTexture(const char *textureName);
|
||||
static ChunkedTextureObject* registerTexture(const char *textureName, GBitmap *data, bool keep);
|
||||
static void freeTexture(ChunkedTextureObject *to);
|
||||
static void refresh(ChunkedTextureObject *to);
|
||||
public:
|
||||
static void makeZombie();
|
||||
static void resurrect();
|
||||
};
|
||||
|
||||
class ChunkedTextureHandle
|
||||
{
|
||||
ChunkedTextureObject *object;
|
||||
void lock();
|
||||
void unlock();
|
||||
public:
|
||||
ChunkedTextureHandle() { object = NULL; }
|
||||
ChunkedTextureHandle(const ChunkedTextureHandle &th) {
|
||||
object = th.object;
|
||||
lock();
|
||||
}
|
||||
ChunkedTextureHandle(const char *textureName)
|
||||
{
|
||||
object = ChunkedTextureManager::loadTexture(textureName);
|
||||
lock();
|
||||
}
|
||||
ChunkedTextureHandle(const char *textureName, GBitmap *bmp)
|
||||
{
|
||||
object = ChunkedTextureManager::registerTexture(textureName, bmp, true);
|
||||
lock();
|
||||
}
|
||||
~ChunkedTextureHandle() { unlock(); }
|
||||
|
||||
ChunkedTextureHandle& operator=(const ChunkedTextureHandle &t) { unlock(); object = t.object; lock(); return *this; }
|
||||
void refresh() { if(object) ChunkedTextureManager::refresh(object); }
|
||||
operator ChunkedTextureObject*() { return object; }
|
||||
const char* getName() const { return (object ? object->texFileName : NULL); }
|
||||
U32 getWidth() const { return (object ? object->width : 0UL); }
|
||||
U32 getHeight() const { return (object ? object->height : 0UL); }
|
||||
GBitmap* getBitmap() { return (object ? object->bitmap : NULL); }
|
||||
TextureHandle getSubTexture(U32 x, U32 y);
|
||||
U32 getTextureCountWidth() { return (object ? object->texWidthCount : 0UL); };
|
||||
U32 getTextureCountHeight(){ return (object ? object->texHeightCount : 0UL); };
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user