Ejemplo n.º 1
0
        public override void OnInspectorGUI()
        {
            var noiseGenerator =
                INoiseGeneratorEditor.Field("Noise generator", myTarget.noiseGenerator);

            if (noiseGenerator != myTarget.noiseGenerator)
            {
                if (!Application.isPlaying)
                {
                    EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
                }
                myTarget.noiseGenerator = noiseGenerator;
            }

            EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(myTarget.onGPSPosition)));
            EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(myTarget.onNMEA)));
            serializedObject.ApplyModifiedProperties();

            if (Application.isPlaying)
            {
                EditorGUI.BeginDisabledGroup(true);
                {
                    EditorGUILayout.PrefixLabel("GPS position");
                    EditorGUI.indentLevel++;
                    {
                        EditorGUILayout.FloatField("latitude", myTarget.gpsPosition.latitude);
                        EditorGUILayout.FloatField("longitude", myTarget.gpsPosition.longitude);
                        EditorGUILayout.FloatField("height", myTarget.gpsPosition.height);
                    }
                    EditorGUI.indentLevel--;

                    if (GUILayout.Button("Open in Maps"))
                    {
                        var url =
                            "http://www.google.com/maps/place/" +
                            $"{myTarget.gpsPosition.latitude.ToString(CultureInfo.InvariantCulture)}," +
                            $"{myTarget.gpsPosition.longitude.ToString(CultureInfo.InvariantCulture)}";
                        Application.OpenURL(url);
                    }

                    EditorGUILayout.FloatField("Speed in knots", myTarget.speedInKnots);
                    EditorGUILayout.FloatField("Speed in knots km/h", myTarget.speedInKph);
                    EditorGUILayout.FloatField("Speed in knots m/s", myTarget.speedInMps);
                    EditorGUILayout.TextField("GPRMC", myTarget.GPRMC);
                    EditorGUILayout.TextField("GPGGA", myTarget.GPGGA);
                    EditorGUI.EndDisabledGroup();
                }
            }


            Repaint();
        }
Ejemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            if (myTarget.linkedRigidBody == null)
            {
                EditorGUILayout.HelpBox("IMU requires a rigidbody attached to its gameobject or any of its parents", MessageType.Warning, true);
            }

            var accelerationNoiseGenerator = INoiseGeneratorEditor.Field("Acceleration noise generator",
                                                                         myTarget.accelerationNoiseGenerator);

            if (accelerationNoiseGenerator != myTarget.accelerationNoiseGenerator)
            {
                if (!Application.isPlaying)
                {
                    EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
                }
                myTarget.accelerationNoiseGenerator = accelerationNoiseGenerator;
            }

            var gyroNoiseGenerator =
                INoiseGeneratorEditor.Field("Gyro noise generator", myTarget.gyroNoiseGenerator);

            if (gyroNoiseGenerator != myTarget.gyroNoiseGenerator)
            {
                if (!Application.isPlaying)
                {
                    EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
                }
                myTarget.gyroNoiseGenerator = gyroNoiseGenerator;
            }

            EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(myTarget.onAcceleration)));
            EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(myTarget.onGyro)));
            serializedObject.ApplyModifiedProperties();

            if (Application.isPlaying)
            {
                var acceleration = myTarget.acceleration;
                acceleration = new Vector3(
                    (float)Math.Round(acceleration.x, 2),
                    (float)Math.Round(acceleration.y, 2),
                    (float)Math.Round(acceleration.z, 2));
                accelerationCurveX.AddKey(Time.time, acceleration.x);
                accelerationCurveY.AddKey(Time.time, acceleration.y);
                accelerationCurveZ.AddKey(Time.time, acceleration.z);

                var gyro = myTarget.gyro;
                gyro = new Vector3(
                    (float)Math.Round(gyro.x, 2),
                    (float)Math.Round(gyro.y, 2),
                    (float)Math.Round(gyro.z, 2));
                gyroCurveX.AddKey(Time.time, gyro.x);
                gyroCurveY.AddKey(Time.time, gyro.y);
                gyroCurveZ.AddKey(Time.time, gyro.z);

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    EditorGUI.BeginDisabledGroup(true);
                    {
                        EditorGUILayout.Vector3Field("Acceleration", acceleration);
                        EditorGUILayout.CurveField("", accelerationCurveX);
                        EditorGUILayout.CurveField("", accelerationCurveY);
                        EditorGUILayout.CurveField("", accelerationCurveZ);
                        EditorGUILayout.Vector3Field("Gyro", gyro);
                        EditorGUILayout.CurveField("", gyroCurveX);
                        EditorGUILayout.CurveField("", gyroCurveY);
                        EditorGUILayout.CurveField("", gyroCurveZ);
                    }
                    EditorGUI.EndDisabledGroup();
                }
                EditorGUILayout.EndVertical();

                while (accelerationCurveX.length > maxCurveLength)
                {
                    accelerationCurveX.RemoveKey(0);
                    accelerationCurveY.RemoveKey(0);
                    accelerationCurveZ.RemoveKey(0);

                    gyroCurveX.RemoveKey(0);
                    gyroCurveY.RemoveKey(0);
                    gyroCurveZ.RemoveKey(0);
                }

                Repaint();
            }
        }