!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / LodGeneratorPlugin / Util / LODGenerator.h
blobd6800dcec765dff1f85c87d354d6cc5d0aa1e90d
1 /*************************************************************************
2 Crytek Source File.
3 Copyright (C), Crytek Studios, 2013.
4 *************************************************************************/
6 #pragma once
8 #include <smartptr.h>
10 struct IStatObj;
11 namespace LODGenerator
13 class LODChainGenerateThread;
14 class CLODGenerator
16 public:
17 struct SLODSequenceGenerationInputParams
19 _smart_ptr<IStatObj> pInputMesh;
20 float metersPerPixel;
21 float silhouetteWeight;
22 float vertexWeldingDistance;
23 int numViewElevations;
24 int numViewsAround;
25 bool bObjectHasBase;
26 bool bCheckTopology;
29 struct SLODSequenceGenerationOutput
31 struct SMove
33 int from;
34 int to;
35 float error;
37 Vec3* positions;
38 vtx_idx* indices;
39 SMove* moveList;
40 int numPositions;
41 int numIndices;
42 int numMoves;
43 LODChainGenerateThread *pThread;
45 _smart_ptr<IStatObj> pStatObj;
46 std::vector<SLODSequenceGenerationOutput*> m_pSubObjectOutput;
49 struct SLODGenerationInputParams
51 SLODSequenceGenerationOutput *pSequence;
52 float nPercentage;
53 bool bUnwrap;
56 struct SLODGenerationOutput
58 IStatObj *pStatObj;
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);