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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef MAPTEXTURE_H
#define MAPTEXTURE_H
#include "System/type2.h"
struct MapTextureData {
MapTextureData(): id(0), type(0), num(0), size(0, 0) {}
unsigned int id; // OpenGL id
unsigned int type; // e.g. MAP_SSMF_*
unsigned int num; // for MAP_SSMF_SPLAT_NORMAL_TEX
int2 size;
};
struct MapTexture {
public:
enum {
RAW_TEX_IDX = 0,
LUA_TEX_IDX = 1,
};
MapTexture(): texIDs{0, 0} {}
~MapTexture();
bool HasLuaTex() const { return (texIDs[LUA_TEX_IDX] != 0); }
// only needed for glGenTextures(...)
unsigned int* GetIDPtr() { return &texIDs[RAW_TEX_IDX]; }
unsigned int GetID() const { return texIDs[HasLuaTex()]; }
int2 GetSize() const { return texDims[HasLuaTex()]; }
int2 GetRawSize() const { return texDims[RAW_TEX_IDX]; }
int2 GetLuaSize() const { return texDims[LUA_TEX_IDX]; }
void SetSize(const int2 size) { texDims[HasLuaTex()] = size; }
void SetRawSize(const int2 size) { texDims[RAW_TEX_IDX] = size; }
void SetLuaSize(const int2 size) { texDims[LUA_TEX_IDX] = size; }
void SetRawTexID(unsigned int rawTexID) { texIDs[RAW_TEX_IDX] = rawTexID; }
void SetLuaTexID(unsigned int luaTexID) { texIDs[LUA_TEX_IDX] = luaTexID; }
void SetLuaTexture(const MapTextureData& texData) {
texIDs[LUA_TEX_IDX] = texData.id;
texDims[LUA_TEX_IDX] = texData.size;
}
private:
// [RAW_TEX_IDX] := original, [LUA_TEX_IDX] := Lua-supplied
unsigned int texIDs[2];
int2 texDims[2];
};
#endif
|