private WorldStateItem CreateGoalPartItem(WorldStateDescription _goalpart) { WorldStateItem goalPartItem = new WorldStateItem(_goalpart); goalPartItem.OnMouseDown += _item => { if (m_SelectedWorkingMemoryUtilityItem != null) { UpdateSelectedUtilityItem(null); } PuppeteerEditorHelper.UpdateSelectedWorldStateItem(ref m_SelectedGoalPartItem, _item); }; goalPartItem.OnDelete += _item => { PuppeteerEditorHelper.DeleteWorldStateItem(this, m_SelectedListItem as GoalListItem, ref (m_SelectedListItem as GoalListItem).GetDescription().GoalParts, _item, SelectNeighbourGoalPartItemIfNeeded); }; goalPartItem.OnDuplicate += _item => AddNewGoalPartItem(new WorldStateDescription(_item.GetWorldStateDescription())); goalPartItem.OnValueChanged += _item => { m_SelectedListItem.MarkUnsavedChanges(true); AddUnsavedMarker(); }; m_GoalConfigurator.GoalPartsContainer.Add(goalPartItem); return(goalPartItem); }
private WorldStateItem CreateWorldStateItem(WorldStateDescription _worldStateDescription) { WorldStateItem worldStateItem = new WorldStateItem(_worldStateDescription); worldStateItem.OnMouseDown += _item => PuppeteerEditorHelper.UpdateSelectedWorldStateItem(ref m_SelectedWorldStateItem, _item); worldStateItem.OnDuplicate += _item => AddNewWorldStateItem(_item.parent, new WorldStateDescription(_item.GetWorldStateDescription())); worldStateItem.OnValueChanged += _item => { m_SelectedListItem.MarkUnsavedChanges(true); AddUnsavedMarker(); }; return(worldStateItem); }
private void AddNewGoalPartItem(WorldStateDescription _goalPart) { if (m_SelectedListItem is GoalListItem selectedGoalListItem) { GoalDescription selectedDescription = selectedGoalListItem.GetDescription(); int newIndex = PuppeteerEditorHelper.Append(ref selectedDescription.GoalParts, _goalPart); WorldStateItem goalPartItem = CreateGoalPartItem(selectedDescription.GoalParts[newIndex]); m_SelectedListItem.MarkUnsavedChanges(true); AddUnsavedMarker(); PuppeteerEditorHelper.UpdateSelectedWorldStateItem(ref m_SelectedGoalPartItem, goalPartItem); } }
protected override void UpdateConfigurator() { if (m_SelectedListItem is ActionListItem selectedActionListItem) { EnableRightPanelContent(); LazyInitConfigurator(); ActionDescription selectedDescription = selectedActionListItem.GetDescription(); m_ActionConfigurator.DisplayName.value = selectedDescription.DisplayName; m_ActionConfigurator.GUIDLabel.text = selectedDescription.GUID.ToString(); m_ActionConfigurator.BaseUtility.value = selectedDescription.BaseUtility; if (selectedDescription.ExecutableActionType != null) { m_ActionConfigurator.ActionField.SetValueWithoutNotify(selectedDescription.ExecutableActionType); } m_ActionConfigurator.PreconditionsContainer.Clear(); for (int i = 0; i < selectedDescription.Preconditions.Length; ++i) { WorldStateItem worldStateItem = CreateWorldStateItem(selectedDescription.Preconditions[i]); worldStateItem.OnDelete += _item => { PuppeteerEditorHelper.DeleteWorldStateItem(this, m_SelectedListItem as ActionListItem, ref (m_SelectedListItem as ActionListItem).GetDescription().Preconditions, _item, null); }; m_ActionConfigurator.PreconditionsContainer.Add(worldStateItem); } m_ActionConfigurator.EffectsContainer.Clear(); for (int i = 0; i < selectedDescription.Effects.Length; ++i) { WorldStateItem worldStateItem = CreateWorldStateItem(selectedDescription.Effects[i]); worldStateItem.OnDelete += _item => { PuppeteerEditorHelper.DeleteWorldStateItem(this, m_SelectedListItem as ActionListItem, ref (m_SelectedListItem as ActionListItem).GetDescription().Effects, _item, null); }; m_ActionConfigurator.EffectsContainer.Add(worldStateItem); } } }
private void SelectNeighbourGoalPartItemIfNeeded(WorldStateItem _goalPartItem) { if (_goalPartItem != m_SelectedGoalPartItem) { return; } bool neighbourSelected = SelectNeighbourGoalPartItem(MoveDirection.Up); if (!neighbourSelected) { neighbourSelected |= SelectNeighbourGoalPartItem(MoveDirection.Down); } if (!neighbourSelected) { m_SelectedGoalPartItem = null; } }