1 /*************************************************************************
3 Copyright (C), Crytek Studios, 2013.
4 *************************************************************************/
11 namespace LODGenerator
13 class LODChainGenerateThread
;
17 struct SLODSequenceGenerationInputParams
19 _smart_ptr
<IStatObj
> pInputMesh
;
21 float silhouetteWeight
;
22 float vertexWeldingDistance
;
23 int numViewElevations
;
29 struct SLODSequenceGenerationOutput
43 LODChainGenerateThread
*pThread
;
45 _smart_ptr
<IStatObj
> pStatObj
;
46 std::vector
<SLODSequenceGenerationOutput
*> m_pSubObjectOutput
;
49 struct SLODGenerationInputParams
51 SLODSequenceGenerationOutput
*pSequence
;
56 struct SLODGenerationOutput
61 static bool GenerateLODSequence(const SLODSequenceGenerationInputParams
*pInputParams
, SLODSequenceGenerationOutput
*pReturnValues
, bool bProcessAsync
);
62 static bool GetAsyncLODSequenceResults(SLODSequenceGenerationOutput
*pReturnValues
, float *pProgress
);
63 static bool FreeLODSequence(SLODSequenceGenerationOutput
*pReturnValues
);
64 static IStatObj
* BuildStatObj(SLODSequenceGenerationOutput
*pSequence
, const CLODGenerator::SLODGenerationInputParams
*pInputParams
);
65 static IStatObj
* GenerateUVs(Vec3
* pPositions
, vtx_idx
*pIndices
, int nNumFaces
);
66 static bool GenerateLOD(const SLODGenerationInputParams
*pInputParams
, SLODGenerationOutput
*pReturnValues
);
67 static void CancelLODGeneration(SLODSequenceGenerationOutput
*pReturnValues
);