tge/tools/map2difPlus/lmapPacker.h
2017-04-17 06:17:10 -06:00

76 lines
1.7 KiB
C++
Executable File

//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
#ifndef _ITRSHEETMANAGER_H_
#define _ITRSHEETMANAGER_H_
#ifndef _PLATFORM_H_
#include "platform/platform.h"
#endif
#ifndef _GBITMAP_H_
#include "dgl/gBitmap.h"
#endif
//
// Defines the interior light map border size.
//
// Light map borders prevent visual artifacts
// caused by colors bleeding from adjacent light maps
// or dead texture space.
//
#define SG_LIGHTMAP_BORDER_SIZE 2
class SheetManager
{
public:
struct LightMapEntry
{
U32 sheetId;
U16 x, y;
U16 width, height;
};
struct SheetEntry
{
GBitmap* pData;
};
public:
static const U32 csm_sheetSize;
public:
Vector<LightMapEntry> m_lightMaps;
Vector<SheetEntry> m_sheets;
S32 m_currSheet;
U32 m_currX;
U32 m_currY;
U32 m_lowestY;
void setupNewSheet();
void repackSection(const S32, const S32, const U32 in_sizeX, const U32 in_sizeY, const bool = false);
void repackBlock();
bool doesFit(const S32, const S32, const U32 sizeX, const U32 sizeY) const;
LightMapEntry& getLightmapNC(const S32 in_lightMapIndex);
public:
SheetManager();
~SheetManager();
U32 numPixels;
U32 numSheetPixels;
void begin();
void end();
U32 enterLightMap(const GBitmap* in_pData);
const LightMapEntry& getLightmap(const S32 in_lightMapIndex) const;
};
#endif // _ITRSHEETMANAGER_H_