示例#1
0
        /// <summary>
        /// </summary>
        public override void RemotePostSetup()
        {
            if (this.normalised_overwrite_space_if_env_bounds)
            {
                switch (this._dim)
                {
                case Axis.X_:
                    if (this.ParentEnvironment)
                    {
                        this._observation_value_space =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.x);
                    }

                    break;

                case Axis.Y_:
                    if (this.ParentEnvironment)
                    {
                        this._observation_value_space =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.y);
                    }

                    break;

                case Axis.Z_:
                    if (this.ParentEnvironment)
                    {
                        this._observation_value_space =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.z);
                    }
                    break;
                }
            }
        }
        /// <summary>
        /// </summary>
        public override void RemotePostSetup()
        {
            if (this.normalised_overwrite_space_if_env_bounds)
            {
                var dec_gran = 4;
                if (this._single_value_space.Space != null && this.ParentEnvironment.PlayableArea)
                {
                    dec_gran = this._single_value_space.Space.DecimalGranularity;
                }

                if (this.ParentEnvironment)
                {
                    switch (this._axis_of_configuration)
                    {
                    case Axis.X_:
                        this.SingleSpace =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.x,
                                                    decimal_granularity: dec_gran);
                        break;

                    case Axis.Y_:
                        this.SingleSpace =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.y,
                                                    decimal_granularity: dec_gran);
                        break;

                    case Axis.Z_:
                        this.SingleSpace =
                            Space1.FromCenterExtent(this.ParentEnvironment.PlayableArea.Bounds.extents.z,
                                                    decimal_granularity: dec_gran);
                        break;
                    }
                }
            }
        }
示例#3
0
        public void TestClipDenormalise01RoundClip()
        {
            var space = new Space1 {
                Min = -1, Max = 1, Normalised = Normalisation.Zero_one_
            };

            Assert.That(Math.Abs(space.Reproject(0.5f) - 0.0f) <= float.Epsilon, Is.True);
        }
示例#4
0
        public void TestNormaliseMinus11()
        {
            var space = new Space1 {
                Min = -1, Max = 1, Normalised = Normalisation.Zero_one_
            };

            Assert.That(Math.Abs(space.Project(0.5f) - 0.75f) <= float.Epsilon, Is.True);
        }
示例#5
0
        public void TestNormalise010Throws(float v)
        {
            var space = new Space1 {
                Min = 0, Max = 10, Normalised = Normalisation.Zero_one_
            };

            Assert.That(() => space.Project(v), Throws.TypeOf <ArgumentException>());
        }
示例#6
0
        public float TestDenormalise010(float v, float min_value, float max_value)
        {
            var space = new Space1 {
                Min = min_value, Max = max_value, Normalised = Normalisation.Zero_one_, DecimalGranularity = 1
            };

            return(space.Reproject(v));
        }
示例#7
0
        public float TestNormalise010(float v, float min_value, float max_value)
        {
            var space = new Space1 {
                Min = min_value, Max = max_value, DecimalGranularity = 1, Normalised = Normalisation.Zero_one_
            };

            //Assert.AreEqual(expected, result, tolerance);
            return(space.Round(space.Project(v)));
        }
示例#8
0
        public void TestDenormaliseMinus11()
        {
            var space = new Space1 {
                Min = -1f, Max = 1f, Normalised = Normalisation.Zero_one_, DecimalGranularity = 1
            };

            var d = space.Reproject(0.75f);

            Assert.That(Math.Abs(d - 0.5f) <= float.Epsilon, Is.True);
        }
示例#9
0
 public static bool operator ==(Space Space1, Space Space2)
 {
     //return (Space1.Min == Space2.Min) && (Space1.Max == Space2.Max);
     if ((Space1 as Object) == null)
     {
         return((Space2 as Object) == null);
     }
     if ((Space2 as Object) == null)
     {
         return(false);
     }
     return(Space1.CompareTo(Space2) == 0);
 }
示例#10
0
 public SampleSpace1(string unused = null)
 {
     this._space = Space1.ZeroOne;
     this._distribution_sampler = new DistributionSampler();
 }
示例#11
0
        /// <summary>
        /// </summary>
        void OnGUI()
        {
            var serialised_object = new SerializedObject(this);

            this._simulation_manager = FindObjectOfType <NeodroidManager>();
            if (this._simulation_manager)
            {
                EditorGUILayout.BeginHorizontal();

                EditorGUILayout.BeginVertical();
                GUILayout.Label(this._neodroid_icon,
                                GUILayout.Width(_logo_image_size),
                                GUILayout.Height(_logo_image_size));

                if (NeodroidEditorUtilities.LinkLabel(new GUIContent(_neodroid_url_text)))
                {
                    Application.OpenURL(_neodroid_url);
                }

                EditorGUILayout.EndVertical();

                EditorGUILayout.BeginVertical();
                EditorGUILayout.ObjectField(this._simulation_manager, typeof(AbstractNeodroidManager), true);

                this._simulation_manager.Configuration =
                    (SimulatorConfiguration)
                    EditorGUILayout.ObjectField((SimulatorConfiguration)this._simulation_manager.Configuration,
                                                typeof(SimulatorConfiguration),
                                                true);

                this._simulation_manager.Configuration.FrameSkips =
                    EditorGUILayout.IntField("Frame Skips", this._simulation_manager.Configuration.FrameSkips);

                this._simulation_manager.Configuration.SimulationType =
                    (SimulationType)EditorGUILayout.EnumPopup("Simulation Type",
                                                              this._simulation_manager.Configuration.SimulationType);


                this._player_reactions = FindObjectOfType <PlayerReactions>();
                EditorGUILayout.ObjectField(this._player_reactions, typeof(PlayerReactions), true);

                this._show_detailed_descriptions =
                    EditorGUILayout.Toggle("Show Details", this._show_detailed_descriptions);

                EditorGUILayout.EndVertical();

                EditorGUILayout.EndHorizontal();

                this._environments =
                    NeodroidSceneUtilities.FindAllObjectsOfTypeInScene <PrototypingEnvironment>();
                if (this._show_environment_properties.Length != this._environments.Length)
                {
                    this.Setup();
                }

                this._scroll_position = EditorGUILayout.BeginScrollView(this._scroll_position);

                EditorGUILayout.BeginVertical("Box");
                var num_active_environments   = this._environments.Length;
                var num_inactive_environments = this._environments.Length - num_active_environments;

                //EditorGUILayout.BeginHorizontal();

                GUILayout.Label($"Environments - Active({num_active_environments}), Inactive({num_inactive_environments}), Total({this._environments.Length})");

                //EditorGUILayout.EndHorizontal();

                if (this._show_environment_properties != null)
                {
                    for (var i = 0; i < this._show_environment_properties.Length; i++)
                    {
                        if (this._environments[i].isActiveAndEnabled)
                        {
                            this._show_environment_properties[i] =
                                EditorGUILayout.Foldout(this._show_environment_properties[i],
                                                        $"{this._environments[i].Identifier}");
                            if (this._show_environment_properties[i])
                            {
                                var sensors       = this._environments[i].Sensors;
                                var configurables = this._environments[i].Configurables;
                                var listeners     = this._environments[i].Listeners;
                                var displayers    = this._environments[i].Displayers;

                                EditorGUILayout.BeginVertical("Box");
                                this._environments[i].enabled =
                                    EditorGUILayout.BeginToggleGroup(this._environments[i].Identifier,
                                                                     this._environments[i].enabled &&
                                                                     this._environments[i].gameObject.activeSelf);

                                EditorGUILayout.ObjectField(this._environments[i], typeof(PrototypingEnvironment), true);

                                if (this._show_detailed_descriptions)
                                {
                                    this._environments[i].CoordinateSpace =
                                        (CoordinateSpace)EditorGUILayout.EnumPopup("Coordinate system",
                                                                                   this._environments[i].CoordinateSpace);
                                    EditorGUI.BeginDisabledGroup(this._environments[i].CoordinateSpace
                                                                 != CoordinateSpace.Environment_);
                                    this._environments[i].CoordinateReferencePoint =
                                        (Transform)EditorGUILayout.ObjectField("Reference point",
                                                                               this._environments[i].CoordinateReferencePoint,
                                                                               typeof(Transform),
                                                                               true);
                                    EditorGUI.EndDisabledGroup();
                                    if (this._environments[i].ObjectiveFunction != null)
                                    {
                                        this._environments[i].ObjectiveFunction =
                                            (EpisodicObjective)EditorGUILayout.ObjectField("Objective function",
                                                                                           (EpisodicObjective)this
                                                                                           ._environments[i]
                                                                                           .ObjectiveFunction,
                                                                                           typeof(EpisodicObjective),
                                                                                           true);
                                        EditorGUILayout.LabelField("Signal: "
                                                                   + ((EpisodicObjective)this._environments[i].ObjectiveFunction).LastSignal);
                                        this._environments[i].ObjectiveFunction.SignalSpace
                                        .FromVector3(EditorGUILayout.Vector3Field(Space1.Vector3Description(),
                                                                                  this._environments[i].ObjectiveFunction
                                                                                  .SignalSpace.ToVector3()));
                                        this._environments[i].ObjectiveFunction.EpisodeLength =
                                            EditorGUILayout.IntField("Episode Length",
                                                                     this._environments[i].ObjectiveFunction.EpisodeLength);
                                    }
                                    //EditorGUILayout.BeginHorizontal("Box");
                  #if NEODROID_DEBUG
                                    this._environments[i].Debugging =
                                        EditorGUILayout.Toggle("Debugging", this._environments[i].Debugging);
                  #endif
                                    //EditorGUILayout.EndHorizontal();

                                    EditorGUI.BeginDisabledGroup(true);
                                    EditorGUILayout.LabelField("Info:");
                                    EditorGUILayout.Toggle("Terminated", this._environments[i].Terminated);
                                    EditorGUI.EndDisabledGroup();
                                }

                                var s = this._environments[i] as AbstractSpatialPrototypingEnvironment as ActorisedPrototypingEnvironment;
                                if (s)
                                {
                                    var actors = s.Actors;
                                    this.DrawActors(actors);
                                }
                                else
                                {
                                    var c = this._environments[i] as PrototypingEnvironment;
                                    if (c)
                                    {
                                        this.DrawActuators(c.Actuators);
                                    }
                                }

                                this.DrawSensors(sensors);

                                this.DrawConfigurables(configurables);

                                this.DrawDisplayers(displayers);

                                this.DrawListeners(listeners);

                                EditorGUILayout.EndToggleGroup();
                                EditorGUILayout.EndVertical();
                            }
                        }
                    }

                    EditorGUILayout.EndVertical();

                    EditorGUILayout.BeginVertical("Box");
                    GUILayout.Label("Disabled environments");
                    for (var i = 0; i < this._show_environment_properties.Length; i++)
                    {
                        if (!this._environments[i].isActiveAndEnabled)
                        {
                            EditorGUILayout.ObjectField(this._environments[i], typeof(NeodroidEnvironment), true);
                        }
                    }

                    EditorGUILayout.EndVertical();

                    EditorGUILayout.EndScrollView();
                    serialised_object.ApplyModifiedProperties();
                }
            }
        }
示例#12
0
        void DrawActuators(SortedDictionary <string, IActuator> actuators)
        {
            EditorGUILayout.BeginVertical("Box");
            GUILayout.Label("Actuators");
            foreach (var actuator in actuators)
            {
                var actuator_value = (Actuator)actuator.Value;
                if (actuator_value != null)
                {
                    EditorGUILayout.BeginVertical("Box");
                    actuator_value.enabled =
                        EditorGUILayout.BeginToggleGroup(actuator.Key,
                                                         actuator_value.enabled &&
                                                         actuator_value.gameObject.activeSelf);
                    EditorGUILayout.ObjectField(actuator_value, typeof(Actuator), true);

                    if (this._show_detailed_descriptions)
                    {
                        actuator_value.MotionSpace.FromVector3(EditorGUILayout.Vector3Field(Space1.Vector3Description(),
                                                                                            actuator_value
                                                                                            .MotionSpace
                                                                                            .ToVector3()));
                        //EditorGUILayout.BeginHorizontal("Box");
            #if NEODROID_DEBUG
                        actuator_value.Debugging = EditorGUILayout.Toggle("Debugging", actuator_value.Debugging);
            #endif
                        //EditorGUILayout.EndHorizontal();
                    }

                    EditorGUILayout.EndToggleGroup();

                    EditorGUILayout.EndVertical();
                }
            }

            EditorGUILayout.EndVertical();
        }