Files
2022-10-26 12:25:11 +08:00

87 lines
2.0 KiB
Objective-C

// wzshadowvolume.h
#ifndef _3DFILEACCESS_WZSHADOWVOLUME_H_
#define _3DFILEACCESS_WZSHADOWVOLUME_H_
#include "wzsilhouette.h"
#define SOP_ALLOW_FOR_ALPHAOBJECT (0x00000001)
//------------------------------------------------------------------------------
/**
@class CWzShadowVolume
*/
class CWzShadowVolume
{
public:
// 생성자/소멸자
CWzShadowVolume();
~CWzShadowVolume();
// 생성
BOOL Create( const WzVector& wvLightDir,
int iNumMeshGroup,
WzMeshGroup* pMeshGroups,
const WzVector* pwvTransformedVertices,
DWORD dwOption = 0 );
// 파괴
void Destroy();
// 실루엣 라인수 얻기
int GetNumSilouetteLine() const;
// 실루엣 라인 리스트 얻기
St_SilhouetteLine* GetSilhouetteLineList() const;
// 결과 버텍스수 얻기
int GetNumVertexShadowVolume() const;
// 결과 버퍼 얻기
WzVector* GetVertexShadowVolumeBuffer() const;
private:
// 결과 생성
void GenerateResult( const WzVector* pwvTransformedVertices );
private:
CWzSilhouette m_silhouette;
float m_fMaxZ;
int m_iNumResultVertex;
int m_iResultBufferSize;
WzVector* m_pwvResultBuffer;
};
//------------------------------------------------------------------------------
/**
*/
inline int CWzShadowVolume::GetNumSilouetteLine() const
{
return m_silhouette.m_iNumSilhouetteLine;
}
//------------------------------------------------------------------------------
/**
*/
inline St_SilhouetteLine* CWzShadowVolume::GetSilhouetteLineList() const
{
return m_silhouette.m_pSilhouetteLineList;
}
//------------------------------------------------------------------------------
/**
*/
inline int CWzShadowVolume::GetNumVertexShadowVolume() const
{
return m_iNumResultVertex;
}
//------------------------------------------------------------------------------
/**
*/
inline WzVector* CWzShadowVolume::GetVertexShadowVolumeBuffer() const
{
return m_pwvResultBuffer;
}
#endif // _3DFILEACCESS_WZSHADOWVOLUME_H_