EditorModeFeedbackFeatureProcessor.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <Draw/EditorStateMaskRenderer.h>
  10. #include <Pass/EditorStatePassSystem.h>
  11. #include <Atom/RPI.Public/FeatureProcessor.h>
  12. #include <Atom/RPI.Reflect/System/AnyAsset.h>
  13. #include <AzCore/Component/TickBus.h>
  14. #include <AzCore/std/smart_ptr/unique_ptr.h>
  15. namespace AZ
  16. {
  17. namespace Render
  18. {
  19. //! Feature processor for Editor Mode Feedback visual effect system.
  20. class EditorModeFeatureProcessor
  21. : public RPI::FeatureProcessor
  22. , private AZ::TickBus::Handler
  23. {
  24. public:
  25. AZ_CLASS_ALLOCATOR(EditorModeFeatureProcessor, SystemAllocator)
  26. AZ_RTTI(AZ::Render::EditorModeFeatureProcessor, "{78D40D57-F564-4ECD-B9F5-D8C9784B15D0}", AZ::RPI::FeatureProcessor);
  27. static void Reflect(AZ::ReflectContext* context);
  28. // FeatureProcessor overrides ...
  29. void Activate() override;
  30. void Deactivate() override;
  31. void AddRenderPasses(RPI::RenderPipeline* renderPipeline) override;
  32. void Render(const RenderPacket& packet) override;
  33. void Simulate(const SimulatePacket& packet) override;
  34. // RPI::SceneNotificationBus overrides ...
  35. void OnRenderPipelineChanged(AZ::RPI::RenderPipeline* pipeline, AZ::RPI::SceneNotification::RenderPipelineChangeType changeType) override;
  36. // AZ::TickBus overrides ...
  37. void OnTick(float deltaTime, AZ::ScriptTimePoint time) override;
  38. //! Enable or disable the rendering editor mode feedback.
  39. void SetEnableRender(bool enableRender);
  40. private:
  41. //! The pass system for the editor state feedback effects.
  42. AZStd::unique_ptr<EditorStatePassSystem> m_editorStatePassSystem;
  43. //! Map of all mask renderers for the draw tags used by the editor state feedback effects.
  44. AZStd::unordered_map<Name, EditorStateMaskRenderer> m_maskRenderers;
  45. //! Material for sending draw packets to the entity mask pass.
  46. Data::Instance<RPI::Material> m_maskMaterial = nullptr;
  47. };
  48. } // namespace Render
  49. } // namespace AZ