Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
284
GameTools/Zallad3D SceneClass/Z3DMultipartSkin.h
Normal file
284
GameTools/Zallad3D SceneClass/Z3DMultipartSkin.h
Normal file
@@ -0,0 +1,284 @@
|
||||
// Z3DMultipartSkin.h: interface for the CZ3DMultipartSkin class.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(AFX_Z3DMULTIPARTSKIN_H__1B9AE6C5_16F6_11D5_A643_0000E8EB4C69__INCLUDED_)
|
||||
#define AFX_Z3DMULTIPARTSKIN_H__1B9AE6C5_16F6_11D5_A643_0000E8EB4C69__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
#pragma warning (disable:4786)
|
||||
|
||||
#include "misc.h"
|
||||
|
||||
#include "Z3DRenderable.h"
|
||||
#include "Z3DMultipartPortion.h"
|
||||
#include "Z3DSkeletonObject.h"
|
||||
#include "Texture.h"
|
||||
|
||||
|
||||
//#define Z3D_MULTIPART_PORTION_COUNT 3 // <20>⺻,<2C><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ġ<EFBFBD><C4A1> <20>̷<EFBFBD><CCB7><EFBFBD> <20><>..<2E><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>
|
||||
#define Z3D_MULTIPART_PORTION_COUNT 1 // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ķ<EFBFBD> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..
|
||||
|
||||
|
||||
class CZ3DMultipartSkin : public CZ3DRenderable
|
||||
{
|
||||
public:
|
||||
CZ3DMultipartSkin( Z3D_MULTIPART_PORTION_TYPE mpt )
|
||||
: CZ3DRenderable(true)
|
||||
{
|
||||
// set 0xFFFFFFFF to mean 'instance manages texture'
|
||||
m_pTexture = (IDirect3DTexture8*)0xFFFFFFFF;
|
||||
|
||||
m_rpSkeleton = NULL;
|
||||
m_rpSkeletonLocalizer = NULL;
|
||||
m_lSkelCount = 0;
|
||||
m_pMatrixPalette = NULL;
|
||||
|
||||
m_lAniLODFrame = 1; // 0<><30><EFBFBD><EFBFBD> <20>ϸ<EFBFBD> X<>ȴ<EFBFBD>-_-;
|
||||
m_lAniLODCounter = 0;
|
||||
m_lPrevLODLevel = 0;
|
||||
|
||||
m_bIsBatchMode = false;
|
||||
|
||||
for( int i = 0; i < Z3D_MULTIPART_PORTION_COUNT; ++i )
|
||||
{
|
||||
m_apPortion[i] = new Z3DMultipartPortion(mpt);
|
||||
}
|
||||
|
||||
m_MPT = mpt;
|
||||
|
||||
m_fScaleFactor = 1.0f;
|
||||
m_vPivotPos.Identity();
|
||||
m_pEnvMap = NULL;
|
||||
|
||||
|
||||
}
|
||||
|
||||
virtual ~CZ3DMultipartSkin()
|
||||
{
|
||||
SAFE_DELETEA( m_pMatrixPalette );
|
||||
|
||||
for( int i = 0; i < Z3D_MULTIPART_PORTION_COUNT; ++i )
|
||||
{
|
||||
SAFE_DELETE( m_apPortion[i] );
|
||||
}
|
||||
if(m_pEnvMap != NULL)
|
||||
{
|
||||
delete m_pEnvMap;
|
||||
m_pEnvMap = NULL;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void ApplySTMode();
|
||||
|
||||
void SetScale( float s )
|
||||
{
|
||||
m_fScaleFactor = s;
|
||||
}
|
||||
|
||||
float GetScale()
|
||||
{
|
||||
return m_fScaleFactor;
|
||||
}
|
||||
|
||||
void SetPivot( vector3& v )
|
||||
{
|
||||
m_vPivotPos = v;
|
||||
}
|
||||
|
||||
void SetPivot( float x, float y, float z )
|
||||
{
|
||||
m_vPivotPos.x = x;
|
||||
m_vPivotPos.y = y;
|
||||
m_vPivotPos.z = z;
|
||||
}
|
||||
|
||||
void GetPivot( vector3& v ) const
|
||||
{
|
||||
v = m_vPivotPos;
|
||||
}
|
||||
|
||||
bool SetSkeleton( CZ3DSkeletonObject* pSkel, long lSkelCount )
|
||||
{
|
||||
m_rpSkeleton = pSkel;
|
||||
m_lSkelCount = lSkelCount;
|
||||
|
||||
if( NULL == (m_pMatrixPalette = new matrix[m_lSkelCount]) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetSkeletonLocalizer( const matrix* pMat )
|
||||
{
|
||||
m_rpSkeletonLocalizer = pMat;
|
||||
}
|
||||
|
||||
bool SetMesh( const char* szMeshName );
|
||||
bool DeleteMesh( int nPartId );
|
||||
|
||||
bool SetTex( const char* szTexName, const char* szTex2Name = NULL );
|
||||
bool DeleteTex( int nPartId );
|
||||
|
||||
bool SetMeshTexture( const char* szMeshName, const char* szTextureName, const char* szTexture2Name = NULL, const char* szSpecTextureName = NULL );
|
||||
|
||||
bool BatchOpen();
|
||||
//bool BatchSet( int nPartId, Z3DHANDLE handleMesh, Z3DHANDLE handleTexpiece );
|
||||
//bool BatchSet( Z3DHANDLE handleMesh, Z3DHANDLE handleTexpiece );
|
||||
//bool BatchDelete( int nPartId );
|
||||
bool BatchClose();
|
||||
|
||||
void ApplyAnimation();
|
||||
|
||||
void Render();
|
||||
|
||||
void SecondRender()
|
||||
{
|
||||
// do nothing-_-;
|
||||
}
|
||||
|
||||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> blending<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
void SetAniLODFrame( long l )
|
||||
{
|
||||
_ASSERT( l > 0 );
|
||||
|
||||
m_lAniLODFrame = l;
|
||||
m_lAniLODCounter = 0; // reset counter
|
||||
}
|
||||
|
||||
void RenderShadow( DWORD vertexShader = 0xFFFFFFFF );
|
||||
void RenderSpecular( DWORD vertexShader = 0xFFFFFFFF );
|
||||
|
||||
bool CheckRecalcByAniLOD()
|
||||
{
|
||||
int nLODLevel = GetLODLevel();
|
||||
|
||||
if( nLODLevel != m_lPrevLODLevel )
|
||||
{
|
||||
SetAniLODFrame( ms_alAniLODFrameTable[nLODLevel] );
|
||||
m_lPrevLODLevel = nLODLevel;
|
||||
}
|
||||
|
||||
return (m_lAniLODCounter == 0);
|
||||
}
|
||||
|
||||
void GetBoundingBox( vector3& r_vmin, vector3& r_vmax );
|
||||
|
||||
void GetProcessedVertex( Z3DBlend2Vertex& v_in, vector3& v_out ) const;
|
||||
|
||||
long GetPolyCount( int nLODLevel = -1 ) const;
|
||||
|
||||
void SetTestMode( bool b )
|
||||
{
|
||||
m_bTestMode = b;
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
// ȯ<><C8AF> <20><>
|
||||
CTexture *m_pEnvMap;
|
||||
bool m_bTestMode;
|
||||
vector3 m_vPivotPos;
|
||||
float m_fScaleFactor;
|
||||
Z3D_MULTIPART_PORTION_TYPE m_MPT;
|
||||
const matrix* m_rpSkeletonLocalizer;
|
||||
Z3DMultipartPortion* m_apPortion[Z3D_MULTIPART_PORTION_COUNT];
|
||||
|
||||
CZ3DSkeletonObject* m_rpSkeleton;
|
||||
long m_lSkelCount;
|
||||
matrix* m_pMatrixPalette;
|
||||
|
||||
long m_lAniLODCounter;
|
||||
long m_lAniLODFrame; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> blending <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>ߵdz<DFB5>
|
||||
long m_lPrevLODLevel;
|
||||
|
||||
bool m_bIsBatchMode;
|
||||
|
||||
static long ms_alAniLODFrameTable[Z3D_LOD_LEVEL];
|
||||
|
||||
void IncreaseAniLODCounter()
|
||||
{
|
||||
++m_lAniLODCounter;
|
||||
m_lAniLODCounter %= m_lAniLODFrame;
|
||||
//m_lAniLODCounter = 0;
|
||||
}
|
||||
|
||||
static int GetPortionIndex( int nPartId )
|
||||
{
|
||||
if( nPartId > 300 )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return (nPartId / 100);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct Z3DPseudoClothDescriptor
|
||||
{
|
||||
Z3DPseudoClothDescriptor() {}
|
||||
~Z3DPseudoClothDescriptor() {}
|
||||
|
||||
|
||||
long lGridXCount;
|
||||
long lGridYCount;
|
||||
|
||||
bool Load( const char* szFileName );
|
||||
};
|
||||
|
||||
|
||||
class CZ3DPseudoCloth : public CZ3DRenderable, public CZ3DObject
|
||||
{
|
||||
public:
|
||||
CZ3DPseudoCloth()
|
||||
: CZ3DRenderable(false), CZ3DObject()
|
||||
{
|
||||
}
|
||||
|
||||
~CZ3DPseudoCloth()
|
||||
{
|
||||
Reset();
|
||||
|
||||
UnLink();
|
||||
}
|
||||
|
||||
void SecondRender() {}
|
||||
|
||||
void FrameMove();
|
||||
|
||||
void Render();
|
||||
|
||||
bool SetScriptTexture( const char* szScriptName, const char* szTextureName, const char* szTexture2Name = NULL );
|
||||
|
||||
void Reset();
|
||||
|
||||
bool BatchOpen();
|
||||
bool BatchClose();
|
||||
|
||||
bool BuildActualPseudoCloth( Z3DPseudoClothDescriptor* pDesc );
|
||||
|
||||
protected:
|
||||
std::vector<Z3DPseudoClothDescriptor*> m_vecpDescriptors;
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(AFX_Z3DMULTIPARTSKIN_H__1B9AE6C5_16F6_11D5_A643_0000E8EB4C69__INCLUDED_)
|
||||
Reference in New Issue
Block a user