4 protected ref set<SCR_EditableEntityComponent> m_EntitiesToMove =
new set<SCR_EditableEntityComponent>();
7 protected bool m_bSelectionCanceled;
10 override bool CanBeShown(
SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition,
int flags)
19 if (!m_SelectionFilter)
22 if (!m_SelectionFilter)
27 if (!layerManager || !layerManager.IsEditingLayersEnabled())
30 bool hasValidEntities =
false;
38 parent = entity.GetParentEntity();
45 int count = selectedEntities.Count();
48 for (
int i = 0; i < count; i++)
50 interaction = selectedEntities[i].GetEntityInteraction();
51 if (interaction && interaction.CanCreateParentFor(
EEditableEntityType.GENERIC, newLayerFlags, parent, i == 0))
53 hasValidEntities =
true;
59 return hasValidEntities;
62 override bool CanBePerformed(
SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition,
int flags)
66 override void Perform(
SCR_EditableEntityComponent hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities, vector cursorWorldPosition,
int flags,
int param = -1)
69 if (!layerManager)
return;
73 if (selectedEntities.Contains(layerManager.GetCurrentLayer()))
75 selectedEntities.Clear();
76 selectedEntities.Insert(layerManager.GetCurrentLayer());
77 layerManager.SetCurrentLayer(layerManager.GetCurrentLayer().GetParentEntity());
83 m_EntitiesToMove.Clear();
84 int count = selectedEntities.Count();
87 for (
int i = 0; i < count; i++)
89 interaction = selectedEntities[i].GetEntityInteraction();
90 if (interaction && interaction.CanCreateParentFor(
EEditableEntityType.GENERIC, newLayerFlags, parent, i == 0))
92 m_EntitiesToMove.Insert(selectedEntities[i]);
96 m_Core.Event_OnParentEntityChanged.Insert(OnEditableParentChanged);
97 m_SelectionFilter.GetOnChanged().Insert(OnSelectionChanged);
99 layerManager.CreateNewLayerWithSelected(m_EntitiesToMove, cursorWorldPosition);
105 int index = m_EntitiesToMove.Find(entity);
108 m_EntitiesToMove.Remove(
index);
110 if (m_EntitiesToMove.IsEmpty())
113 m_Core.Event_OnParentEntityChanged.Remove(OnEditableParentChanged);
114 if (m_SelectionFilter)
115 m_SelectionFilter.GetOnChanged().Remove(OnSelectionChanged);
117 m_SelectionFilter.Add(newParent,
true);
123 protected void OnSelectionChanged(
EEditableEntityState state, set<SCR_EditableEntityComponent> entitiesSelected, set<SCR_EditableEntityComponent> entitiesDeselected)
126 m_Core.Event_OnParentEntityChanged.Remove(OnEditableParentChanged);
127 if (m_SelectionFilter)
128 m_SelectionFilter.GetOnChanged().Remove(OnSelectionChanged);