mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: sheet definitions for particles and other sprite functions
|
||||
//
|
||||
//===========================================================================//
|
||||
|
||||
#ifndef PSHEET_H
|
||||
#define PSHEET_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "tier1/utlobjectreference.h"
|
||||
|
||||
class CUtlBuffer;
|
||||
|
||||
// classes for keeping a dictionary of sheet files in memory. A sheet is a bunch of frames packewd
|
||||
// within one texture. Each sheet has 1 or more frame sequences stored for it.
|
||||
|
||||
|
||||
// for fast lookups to retrieve sequence data, we store the sequence information discretized into
|
||||
// a fixed # of frames. If this discretenesss is a visual problem, you can lerp the blend values to get it
|
||||
// perfect.
|
||||
#define SEQUENCE_SAMPLE_COUNT 1024
|
||||
|
||||
#define MAX_SEQUENCES 64
|
||||
#define MAX_IMAGES_PER_FRAME_ON_DISK 4
|
||||
#define MAX_IMAGES_PER_FRAME_IN_MEMORY 2
|
||||
|
||||
struct SequenceSampleTextureCoords_t
|
||||
{
|
||||
float m_fLeft_U0;
|
||||
float m_fTop_V0;
|
||||
float m_fRight_U0;
|
||||
float m_fBottom_V0;
|
||||
|
||||
float m_fLeft_U1;
|
||||
float m_fTop_V1;
|
||||
float m_fRight_U1;
|
||||
float m_fBottom_V1;
|
||||
};
|
||||
|
||||
struct SheetSequenceSample_t
|
||||
{
|
||||
// coordinates of two rectangles (old and next frame coords)
|
||||
|
||||
SequenceSampleTextureCoords_t m_TextureCoordData[MAX_IMAGES_PER_FRAME_IN_MEMORY];
|
||||
|
||||
float m_fBlendFactor;
|
||||
|
||||
void CopyFirstFrameToOthers(void)
|
||||
{
|
||||
// for old format files only supporting one image per frame
|
||||
for(int i=1; i < MAX_IMAGES_PER_FRAME_IN_MEMORY; i++)
|
||||
{
|
||||
m_TextureCoordData[i] = m_TextureCoordData[0];
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class CSheet
|
||||
{
|
||||
public:
|
||||
// read form a .sht file. This is the usual thing to do
|
||||
CSheet( CUtlBuffer &buf );
|
||||
CSheet( void );
|
||||
~CSheet( void );
|
||||
|
||||
// references for smart ptrs
|
||||
CUtlReferenceList<CSheet> m_References;
|
||||
|
||||
SheetSequenceSample_t *m_pSamples[MAX_SEQUENCES];
|
||||
bool m_bClamp[MAX_SEQUENCES];
|
||||
bool m_bSequenceIsCopyOfAnotherSequence[MAX_SEQUENCES];
|
||||
int m_nNumFrames[MAX_SEQUENCES];
|
||||
float m_flFrameSpan[MAX_SEQUENCES];
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // PSHEET_H
|
||||
|
||||
Reference in New Issue
Block a user