DebugRendererPlayback.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #pragma once
  4. #ifndef JPH_DEBUG_RENDERER
  5. #error This file should only be included when JPH_DEBUG_RENDERER is defined
  6. #endif // !JPH_DEBUG_RENDERER
  7. #include <Jolt/Renderer/DebugRendererRecorder.h>
  8. #include <Jolt/Core/StreamIn.h>
  9. #include <Jolt/Core/UnorderedMap.h>
  10. JPH_NAMESPACE_BEGIN
  11. /// Class that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer
  12. class DebugRendererPlayback
  13. {
  14. public:
  15. /// Constructor
  16. DebugRendererPlayback(DebugRenderer &inRenderer) : mRenderer(inRenderer) { }
  17. /// Parse a stream of frames
  18. void Parse(StreamIn &inStream);
  19. /// Get the number of parsed frames
  20. uint GetNumFrames() const { return (uint)mFrames.size(); }
  21. /// Draw a frame
  22. void DrawFrame(uint inFrameNumber) const;
  23. private:
  24. /// The debug renderer we're using to do the actual rendering
  25. DebugRenderer & mRenderer;
  26. /// Mapping of ID to batch
  27. UnorderedMap<uint32, DebugRenderer::Batch> mBatches;
  28. /// Mapping of ID to geometry
  29. UnorderedMap<uint32, DebugRenderer::GeometryRef> mGeometries;
  30. /// The list of parsed frames
  31. using Frame = DebugRendererRecorder::Frame;
  32. Array<Frame> mFrames;
  33. };
  34. JPH_NAMESPACE_END