コード例 #1
0
        internal void Attach(Project project, Consideration editConsideration)
        {
            if (EditingConsideration != null)
            {
                EditingConsideration.DialogRebuildNeeded -= Rebuild;
            }

            EditingConsideration = editConsideration;
            EditingProject       = project;

            EditingConsideration.DialogRebuildNeeded += Rebuild;

            NameEditWidget.Attach("Consideration", EditingConsideration, project);

            InputAxisDropdown.Items.Clear();
            foreach (InputAxis axis in project.Inputs)
            {
                InputAxisDropdown.Items.Add(axis);
            }

            InputAxisDropdown.SelectedItem = EditingConsideration.Input;
            ResponseCurveEditor.AttachCurve(EditingConsideration.Curve, EditingProject);

            WrapInputCheckBox.Checked = EditingConsideration.WrapInput;
        }
コード例 #2
0
        internal void Attach(Project editedProject)
        {
            if (EditingProject != null)
            {
                EditingProject.DialogRebuildNeeded -= Rebuild;
            }

            EditingProject = editedProject;
            NameEditWidget.Attach("Project", EditingProject, EditingProject);

            EditingProject.DialogRebuildNeeded += Rebuild;

            int considerationCount = 0;

            foreach (var behavior in EditingProject.Behaviors)
            {
                considerationCount += behavior.Considerations.Count;
            }

            KnowledgeBaseEntriesLabel.Text = $"Knowledge Base Entries: {EditingProject.KB.Records.Count}";
            InputAxesLabel.Text            = $"Input Axes: {EditingProject.Inputs.Count}";
            ConsiderationsLabel.Text       = $"Considerations: {considerationCount}";
            BehaviorsLabel.Text            = $"Behaviors: {EditingProject.Behaviors.Count}";
            BehaviorSetsLabel.Text         = $"Behavior Sets: {EditingProject.BehaviorSets.Count}";
            ArchetypesLabel.Text           = $"Archetypes: {EditingProject.Archetypes.Count}";
            ScenariosLabel.Text            = $"Scenarios: {EditingProject.Scenarios.Count}";
        }
コード例 #3
0
        internal void Attach(Archetype archetype, Project project)
        {
            EditArchetype = archetype;
            NameEditWidget.Attach("Archetype", EditArchetype);
            EditArchetype.DialogRebuildNeeded += Rebuild;
            EditProject = project;

            EnabledBehaviorSetsListBox.Items.Clear();
            foreach (var behaviorSet in project.BehaviorSets)
            {
                EnabledBehaviorSetsListBox.Items.Add(behaviorSet, EditArchetype.BehaviorSets.Contains(behaviorSet));
            }
        }
コード例 #4
0
        public void Attach(BehaviorSet set, Project project)
        {
            EditSet     = set;
            EditProject = project;

            EditSet.DialogRebuildNeeded += Rebuild;

            NameEditWidget.Attach("Behavior Set", set);

            EnabledBehaviorsListBox.Items.Clear();
            foreach (Behavior b in project.Behaviors)
            {
                EnabledBehaviorsListBox.Items.Add(b, EditSet.EnabledBehaviors.Contains(b));
            }

            RefreshInputControls();
        }
コード例 #5
0
        internal EditWidgetInputAxis(Project project, InputAxis axis)
        {
            InitializeComponent();
            EditedAxis    = axis;
            EditedProject = project;

            EditedAxis.DialogRebuildNeeded += Rebuild;

            NameEditWidget.Attach("Input Axis", axis);

            InputTypeComboBox.SelectedIndex = (int)axis.Origin;

            EditedAxis.ParametersChanged += (obj, args) =>
            {
                GenerateParameterControls();
            };
        }
コード例 #6
0
        internal void Attach(Project project, Consideration editConsideration)
        {
            EditConsideration = editConsideration;
            EditProject       = project;

            EditConsideration.DialogRebuildNeeded += Rebuild;

            NameEditWidget.Attach("Consideration", EditConsideration);

            InputAxisDropdown.Items.Clear();
            foreach (InputAxis axis in project.Inputs)
            {
                InputAxisDropdown.Items.Add(axis);
            }

            InputAxisDropdown.SelectedItem = EditConsideration.Input;
            ResponseCurveEditor.AttachCurve(EditConsideration.Curve);
        }
コード例 #7
0
        internal void Attach(Scenario scenario, Project project)
        {
            if (Simulation != null)
            {
                Simulation.DialogRebuildNeeded -= Rebuild;
                Simulation.SimulationAdvance   -= ScenarioAdvance;
            }

            Simulation     = scenario;
            EditingProject = project;

            Simulation.DialogRebuildNeeded += Rebuild;
            Simulation.SimulationAdvance   += ScenarioAdvance;

            NameEditWidget.Attach("Scenario", Simulation, EditingProject);

            RefreshAgentTab();
            RefreshLocationTab();

            AbsoluteTime = 0.0f;
        }
コード例 #8
0
        internal void Attach(Scenario scenario, Project project)
        {
            Simulation  = scenario;
            EditProject = project;

            Simulation.DialogRebuildNeeded += Rebuild;

            NameEditWidget.Attach("Scenario", Simulation);

            RefreshAgentTab();
            RefreshLocationTab();

            AbsoluteTime = 0.0f;

            Simulation.SimulationAdvance += (e, args) =>
            {
                RefreshAgentTab();
                CreateLogDetails(args);
                AbsoluteTime += args.DeltaTime;
            };
        }
コード例 #9
0
        internal void Attach(Behavior behavior)
        {
            foreach (Control ctl in ScoreLayoutPanel.Controls)
            {
                ctl.Dispose();
            }

            ScoreLayoutPanel.Controls.Clear();


            foreach (Control ctl in InputFlowPanel.Controls)
            {
                ctl.Dispose();
            }

            InputFlowPanel.Controls.Clear();


            EditBehavior = behavior;
            NameEditWidget.Attach("Behavior", EditBehavior);
            if (!string.IsNullOrEmpty(EditBehavior.Payload))
            {
                CustomPayload.Text = EditBehavior.Payload;
            }
            else
            {
                CustomPayload.Text = "";
            }

            EditBehavior.DialogRebuildNeeded += Rebuild;

            BehaviorWeightEditBox.Value = (decimal)EditBehavior.Weight;

            ActionComboBox.SelectedIndex    = (int)EditBehavior.Action;
            CanTargetSelfCheckBox.Checked   = EditBehavior.CanTargetSelf;
            CanTargetOthersCheckBox.Checked = EditBehavior.CanTargetOthers;

            var inputs = new Dictionary <InputAxis, List <InputAxis> >();

            foreach (var consideration in EditBehavior.Considerations)
            {
                if (consideration.Input != null)
                {
                    if (!inputs.ContainsKey(consideration.Input))
                    {
                        inputs.Add(consideration.Input, new List <InputAxis>());
                    }

                    var clamped = consideration.Input.Clamp(consideration.ParameterValues);
                    inputs[consideration.Input].Add(clamped);

                    ScoreLayoutPanel.Controls.Add(new EditWidgetConsiderationScore(consideration, this));
                }
            }

            foreach (var kvp in inputs)
            {
                InputAxis union = null;
                foreach (var input in kvp.Value)
                {
                    union = input.Union(union);
                }

                if (union == null)
                {
                    continue;
                }

                var widget = new EditWidgetConsiderationInput(union, this);
                widget.Tag = kvp.Key;
                InputFlowPanel.Controls.Add(widget);
            }

            RefreshInputs();
        }
コード例 #10
0
 internal void Rebuild()
 {
     NameEditWidget.Attach("Input Axis", EditingAxis, EditingProject);
     DialogRebuildNeeded?.Invoke();
 }
コード例 #11
0
 internal void Rebuild()
 {
     NameEditWidget.Attach("Input Axis", EditedAxis);
     DialogRebuildNeeded?.Invoke();
 }