!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / LodGeneratorPlugin / Util / LODGeneratorLib.h
blob2c1d95faf859c84c673b3ae49b5bd50c62d88873
1 /*************************************************************************
2 Crytek Source File.
3 Copyright (C), Crytek Studios, 2013.
4 *************************************************************************/
6 #pragma once
8 struct IStatObj;
9 namespace LODGenerator
11 class LODChainGenerateThread;
12 class CLODGeneratorLib
14 public:
15 struct SLODSequenceGenerationInputParams
17 _smart_ptr<IStatObj> pInputMesh;
18 float metersPerPixel;
19 float silhouetteWeight;
20 float vertexWeldingDistance;
21 int numViewElevations;
22 int numViewsAround;
23 bool bObjectHasBase;
24 bool bCheckTopology;
27 struct SLODSequenceGenerationOutput
29 struct SMove
31 int from;
32 int to;
33 float error;
35 Vec3* positions;
36 vtx_idx* indices;
37 SMove* moveList;
38 int numPositions;
39 int numIndices;
40 int numMoves;
41 LODChainGenerateThread *pThread;
43 _smart_ptr<IStatObj> pStatObj;
44 std::vector<SLODSequenceGenerationOutput*> m_pSubObjectOutput;
47 struct SLODGenerationInputParams
49 SLODSequenceGenerationOutput *pSequence;
50 float nPercentage;
51 bool bUnwrap;
54 struct SLODGenerationOutput
56 IStatObj *pStatObj;
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);