1 /*************************************************************************
3 Copyright (C), Crytek Studios, 2013.
4 *************************************************************************/
11 class LODChainGenerateThread
;
12 class CLODGeneratorLib
15 struct SLODSequenceGenerationInputParams
17 _smart_ptr
<IStatObj
> pInputMesh
;
19 float silhouetteWeight
;
20 float vertexWeldingDistance
;
21 int numViewElevations
;
27 struct SLODSequenceGenerationOutput
41 LODChainGenerateThread
*pThread
;
43 _smart_ptr
<IStatObj
> pStatObj
;
44 std::vector
<SLODSequenceGenerationOutput
*> m_pSubObjectOutput
;
47 struct SLODGenerationInputParams
49 SLODSequenceGenerationOutput
*pSequence
;
54 struct SLODGenerationOutput
59 static bool GenerateLODSequence(const SLODSequenceGenerationInputParams
*pInputParams
, SLODSequenceGenerationOutput
*pReturnValues
, bool bProcessAsync
);
60 static bool GetAsyncLODSequenceResults(SLODSequenceGenerationOutput
*pReturnValues
, float *pProgress
);
61 static bool FreeLODSequence(SLODSequenceGenerationOutput
*pReturnValues
);
62 static IStatObj
* BuildStatObj(SLODSequenceGenerationOutput
*pSequence
, const SLODGenerationInputParams
*pInputParams
);
63 static IStatObj
* GenerateUVs(Vec3
* pPositions
, vtx_idx
*pIndices
, int nNumFaces
);
64 static bool GenerateLOD(const SLODGenerationInputParams
*pInputParams
, SLODGenerationOutput
*pReturnValues
);
65 static void CancelLODGeneration(SLODSequenceGenerationOutput
*pReturnValues
);