Esempio n. 1
0
        private static void ChangePosition(ControllerStick controller, float newPosition)
        {
            ControllerStickEditor pointsEditor = (ControllerStickEditor)UnityEditor.Editor.CreateEditor((ControllerStick)controller, typeof(ControllerStickEditor));

            pointsEditor.ChangePosition(newPosition);
            GameObject.DestroyImmediate(pointsEditor);
        }
Esempio n. 2
0
        private static void ApplyPosition(StickFromMouseSceneView stick, SceneView sceneView)
        {
            Ray mouseRay = CalculateMousePosition(sceneView);

            if (SplineLister.Instance != null && SplineLister.Instance.SplineCount > 0)
            {
                List <SplineBase> splines             = SplineLister.Instance.GetSplineBases();
                Vector3[]         closestSpline       = new Vector3[splines.Count];
                float[]           closestPathPosition = new float[splines.Count];

                for (int i = 0; i < splines.Count; i++)
                {
                    float closest = splines[i].FindClosestPointFromRay(mouseRay, 100, 1, stick.PositionUnits);
                    closestSpline[i]       = splines[i].EvaluatePositionAtUnit(closest, stick.PositionUnits);
                    closestPathPosition[i] = closest;
                }

                int closestIndex = GetClosestPointToRay(mouseRay, out float minDist, closestSpline);
                ControllerStickEditor pointsEditor = (ControllerStickEditor)UnityEditor.Editor.CreateEditor((ControllerStick)stick.ControllerStick, typeof(ControllerStickEditor));
                pointsEditor.ChangeSplineAndPosition(splines[closestIndex], closestPathPosition[closestIndex]);
                GameObject.DestroyImmediate(pointsEditor);
            }
            else
            {
                float closest = stick.Spline.FindClosestPointFromRay(mouseRay, 100, 1, stick.PositionUnits);
                ChangePosition(stick.ControllerStick, closest);
            }
        }