1
This commit is contained in:
69
materialsystem/imagepacker.h
Normal file
69
materialsystem/imagepacker.h
Normal file
@ -0,0 +1,69 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $Workfile: $
|
||||
// $Date: $
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef IMAGEPACKER_H
|
||||
#define IMAGEPACKER_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "utlvector.h"
|
||||
#include "utlrbtree.h"
|
||||
|
||||
#define MAX_MAX_LIGHTMAP_WIDTH 2048
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// This packs a single lightmap
|
||||
//-----------------------------------------------------------------------------
|
||||
class CImagePacker
|
||||
{
|
||||
public:
|
||||
bool Reset( int nSortId, int maxLightmapWidth, int maxLightmapHeight );
|
||||
bool AddBlock( int width, int height,
|
||||
int *returnX, int *returnY );
|
||||
void GetMinimumDimensions( int *returnWidth, int *returnHeight );
|
||||
float GetEfficiency( void );
|
||||
int GetSortId() const;
|
||||
void IncrementSortId();
|
||||
|
||||
protected:
|
||||
int GetMaxYIndex( int firstX, int width );
|
||||
|
||||
int m_MaxLightmapWidth;
|
||||
int m_MaxLightmapHeight;
|
||||
int m_pLightmapWavefront[MAX_MAX_LIGHTMAP_WIDTH];
|
||||
int m_AreaUsed;
|
||||
int m_MinimumHeight;
|
||||
|
||||
// For optimization purposes:
|
||||
// These store the width + height of the first image
|
||||
// that was unable to be stored in this image
|
||||
int m_MaxBlockWidth;
|
||||
int m_MaxBlockHeight;
|
||||
int m_nSortID;
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Inline methods
|
||||
//-----------------------------------------------------------------------------
|
||||
inline int CImagePacker::GetSortId() const
|
||||
{
|
||||
return m_nSortID;
|
||||
}
|
||||
|
||||
inline void CImagePacker::IncrementSortId()
|
||||
{
|
||||
++m_nSortID;
|
||||
}
|
||||
|
||||
|
||||
#endif // IMAGEPACKER_H
|
Reference in New Issue
Block a user