MeshLightmapUVGen.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #pragma once
  2. #include "ModelPacker.h"
  3. using namespace Atomic;
  4. namespace Thekla
  5. {
  6. struct Atlas_Output_Mesh;
  7. struct Atlas_Input_Mesh;
  8. }
  9. namespace AtomicGlow
  10. {
  11. class ModelPacker;
  12. class MeshLightmapUVGen : public Object
  13. {
  14. ATOMIC_OBJECT(MeshLightmapUVGen, Object)
  15. public:
  16. struct Settings
  17. {
  18. bool genChartID_;
  19. Settings()
  20. {
  21. genChartID_ = false;
  22. }
  23. };
  24. MeshLightmapUVGen(Context* context, Model* model, const Settings& settings);
  25. virtual ~MeshLightmapUVGen();
  26. bool Generate();
  27. private:
  28. inline void EmitVertex(PODVector<MPVertex>& vertices, unsigned& index, const MPVertex& vertex);
  29. void WriteLightmapUVCoords();
  30. struct LMVertex
  31. {
  32. MPGeometry* geometry_;
  33. unsigned geometryIdx_;
  34. unsigned originalVertex_;
  35. };
  36. SharedPtr<Model> model_;
  37. SharedPtr<ModelPacker> modelPacker_;
  38. SharedPtr<MPLODLevel> curLOD_;
  39. SharedArrayPtr<LMVertex> lmVertices_;
  40. Settings settings_;
  41. Thekla::Atlas_Output_Mesh* tOutputMesh_;
  42. Thekla::Atlas_Input_Mesh* tInputMesh_;
  43. };
  44. }