Files
Client/Engine/Zalla3D Scene Class/ClothMgr.h
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

81 lines
1.8 KiB
C++

#pragma once
#include "d3dx8.h"
#include "CharacterCape.h"
#include "CharacterLightShadowManager.h"
#include <map>
#include <vector>
using namespace std;
class CQuadClothResource
{
struct ClothVertex
{
enum { FVF = D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1 };
D3DXVECTOR3 pos;
D3DXVECTOR3 n;
float u, v;
};
private:
LPDIRECT3DVERTEXBUFFER8 m_pVB;
LPDIRECT3DINDEXBUFFER8 m_pIB;
ClothVertex* m_pClothVertex;
WORD* m_pClothIndex;
int m_iNumVertex;
int m_iNumFace;
int m_iCol;
int m_iRow;
private:
void CalcNormal( int r, int c, int ar, int ac, int br, int bc );
inline int ROWCOL( int r, int c ) { return (r*(m_iCol+1)+c); }
public:
CQuadClothResource();
virtual ~CQuadClothResource();
void Init( int Row, int Col );
void Render();
void ShadowRender();
void UpdateLockedVertex();
void SetVertex( int index, D3DXVECTOR3& vPos );
void ComputeNormals();
void SetupCloth( CCharacterCape* pCape );
};
inline void CQuadClothResource::SetVertex( int index, D3DXVECTOR3& vPos )
{
m_pClothVertex[index].pos = vPos;
}
/*********************************************************/
class CClothMgr
{
public:
typedef map<CZ3DGeneralChrModel*, CCharacterCape*> CLOTHMAP;
friend class CCharacterCape;
public:
static CClothMgr* s_pInstance;
CLOTHMAP m_ClothMap;
CQuadClothResource m_CapeRenderer;
private:
CClothMgr(void);
public:
virtual ~CClothMgr(void);
static CClothMgr* _Instance();
static void _Destroy();
void ReleaseAllData();
void Update();
void Render();
void AddCharacterCape( CZ3DGeneralChrModel* pChrModel );
void DeleteCharacterCape( CZ3DGeneralChrModel* pChrModel );
CCharacterCape* GetCharacterCape( CZ3DGeneralChrModel* pChrModel );
void Reset();
};