DebugRendererPlayback.h 1.3 KB

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