3
0

EditorStateBase.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. #include <Pass/State/EditorStateBase.h>
  9. namespace AZ::Render
  10. {
  11. // Name of the default mask for entities of interest
  12. static constexpr const char* const DefaultEntityMaskName = "editormodeinterestmask";
  13. EditorStateBase::EditorStateBase(
  14. EditorState editorState,
  15. const AZStd::string& stateName,
  16. const PassNameList& childPassNameList,
  17. const AZStd::string& maskDrawList)
  18. : m_state(editorState)
  19. , m_stateName(stateName)
  20. , m_childPassNameList(childPassNameList)
  21. , m_entityMaskDrawList(maskDrawList)
  22. {
  23. EditorStateRequestsBus::Handler::BusConnect(m_state);
  24. }
  25. EditorStateBase::EditorStateBase(
  26. EditorState editorState,
  27. const AZStd::string& stateName,
  28. const PassNameList& childPassNameList)
  29. : EditorStateBase(editorState, stateName, childPassNameList, DefaultEntityMaskName)
  30. {
  31. }
  32. EditorStateBase::~EditorStateBase()
  33. {
  34. EditorStateRequestsBus::Handler::BusDisconnect();
  35. }
  36. const AZStd::string& EditorStateBase::GetStateName() const
  37. {
  38. return m_stateName;
  39. }
  40. const Name& EditorStateBase::GetEntityMaskDrawList() const
  41. {
  42. return m_entityMaskDrawList;
  43. }
  44. const PassNameList& EditorStateBase::GetChildPassNameList() const
  45. {
  46. return m_childPassNameList;
  47. }
  48. Name EditorStateBase::GetPassTemplateName() const
  49. {
  50. return Name(GetStateName() + "Template");
  51. }
  52. Name EditorStateBase::GetPassName() const
  53. {
  54. return Name(GetStateName() + "Pass");
  55. }
  56. void EditorStateBase::AddParentPassForPipeline(const Name& pipelineName, RPI::Ptr<RPI::Pass> parentPass)
  57. {
  58. m_parentPasses[pipelineName] = parentPass;
  59. }
  60. void EditorStateBase::RemoveParentPassForPipeline(const Name& pipelineName)
  61. {
  62. m_parentPasses.erase(pipelineName);
  63. }
  64. void EditorStateBase::UpdatePassDataForPipelines()
  65. {
  66. for (auto& [pipelineName, parentPass] : m_parentPasses)
  67. {
  68. UpdatePassData(azdynamic_cast<RPI::ParentPass*>(parentPass.get()));
  69. }
  70. }
  71. void EditorStateBase::SetEnabled(bool enabled)
  72. {
  73. m_enabled = enabled;
  74. }
  75. Name EditorStateBase::GetGeneratedChildPassName(size_t index) const
  76. {
  77. if (index >= m_childPassNameList.size())
  78. {
  79. AZ_Error("EditorStateBase", false, "Couldn't retrieve child pass name for index %zu", index);
  80. return Name("");
  81. }
  82. return Name(
  83. AZStd::string::format("%sChildPass%zu_%s", GetPassTemplateName().GetCStr(), index, m_childPassNameList[index].GetCStr()));
  84. }
  85. } // namespace AZ::Render