CubemapGenerator.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. #pragma once
  8. #include <Atomic/Graphics/GraphicsDefs.h>
  9. #include "EditorComponent.h"
  10. namespace Atomic
  11. {
  12. class Node;
  13. class Zone;
  14. class Camera;
  15. class Viewport;
  16. class Texture2D;
  17. class RenderSurface;
  18. class RenderPath;
  19. class Image;
  20. }
  21. using namespace Atomic;
  22. namespace AtomicEditor
  23. {
  24. class CubemapGenerator : public EditorComponent
  25. {
  26. OBJECT(CubemapGenerator);
  27. public:
  28. /// Construct.
  29. CubemapGenerator(Context* context);
  30. /// Destruct.
  31. virtual ~CubemapGenerator();
  32. /// Register object factory.
  33. static void RegisterObject(Context* context);
  34. bool Render();
  35. int GetImageSize() const { return imageSize_; }
  36. void SetImageSize(int size) { imageSize_ = size; }
  37. protected:
  38. private:
  39. void HandleBeginFrame(StringHash eventType, VariantMap& eventData);
  40. void HandleEndFrame(StringHash eventType, VariantMap& eventData);
  41. bool InitRender();
  42. bool InitPaths();
  43. void EndRender();
  44. void SaveCubemapXML();
  45. SharedPtr<Image> GetImage(Texture2D* tex2d);
  46. CubeMapFace GetFaceForCycle(int cycle);
  47. String GetFaceName(CubeMapFace face);
  48. Quaternion RotationOf(CubeMapFace face);
  49. SharedPtr<Node> cameraNode_;
  50. SharedPtr<Camera> camera_;
  51. SharedPtr<Viewport> viewport_;
  52. SharedPtr<Texture2D> renderImage_;
  53. SharedPtr<RenderSurface> renderSurface_;
  54. int updateCycle_;
  55. int imageSize_;
  56. String namePrefix_;
  57. String outputPathAbsolute_;
  58. String resourcePath_;
  59. WeakPtr<SceneEditor3D> sceneEditor_;
  60. };
  61. }