void OnEnable()
 {
     points         = serializedObject.FindProperty("points");
     step           = serializedObject.FindProperty("step");
     bezierCollider = (BezierCollider2D)target;
     edgeCollider   = bezierCollider.GetComponent <EdgeCollider2D> ();
 }
Exemplo n.º 2
0
    void CreateSlope(Vector2 p0, float density, bool Pitfall = false, float length = 0)
    {
        GameObject newSlope;

        if (Pitfall)
        {
            newSlope = Instantiate(pitfallPrefab, p0, Quaternion.identity);
        }
        else
        {
            newSlope = Instantiate(slopePrefab, p0, Quaternion.identity);
        }

        BezierCollider2D bezier         = newSlope.GetComponent <BezierCollider2D>();
        BezierCollider2D previousBezier = slopes[slopes.Count - 1].GetComponent <BezierCollider2D>();
        Vector2          d00            = previousBezier.getLastDerivative();
        float            decline        = slopeDeclineFactor * Random.Range(.5f, 2f);

        if (length == 0)
        {
            length  = slopeLengthFactor * Random.Range(.25f, 2);
            decline = slopeDeclineFactor * Random.Range(-.2f, 2f);
        }
        float turbulence  = slopeTurbulenceFactor * Random.Range(0, 2);
        float deviation1  = Random.Range(.2f, .7f);
        float deviation2  = Random.Range(deviation1, .8f);
        float regressive2 = Random.Range(-length * turbulence, length * turbulence);

        bezier.firstPoint         = new Vector2(0, 0);
        bezier.handlerFirstPoint  = deviation1 * length * d00.normalized;
        bezier.handlerSecondPoint = new Vector2(length * deviation2, length * decline * deviation2 + regressive2);
        bezier.secondPoint        = new Vector2(length, decline * length);
        bezier.pointsQuantity     = (int)(density * (length));

        Vector2[] points = newSlope.GetComponent <BezierCollider2D>().calculate2DPoints();
        newSlope.GetComponent <EdgeCollider2D>().points = points;
        slopes.Add(newSlope.transform);

        List <int> pointIndeces = new List <int>();

        for (int i = 0; i < bezier.pointsQuantity; i += 25)
        {
            pointIndeces.Add(i);
        }
        if (!Pitfall)
        {
            SpawnThings(newSlope.transform.position, pointIndeces, points);
        }
    }
Exemplo n.º 3
0
    public new void OnInspectorGUI()
    {
        bezierCollider = (BezierCollider2D)target;

        edgeCollider = bezierCollider.GetComponent <EdgeCollider2D>();

        if (edgeCollider.hideFlags != HideFlags.HideInInspector)
        {
            edgeCollider.hideFlags = HideFlags.HideInInspector;
        }

        if (edgeCollider != null)
        {
            //bezierCollider.PhysicsMaterial2D = EditorGUILayout.ObjectField("curve points", bezierCollider.PhysicsMaterial2D, PhysicsMaterial2D, GUILayout.MinWidth(100));
            GUILayout.BeginHorizontal();
            bezierCollider.PhysicsMaterial2D = (PhysicsMaterial2D)EditorGUILayout.ObjectField("PhysicsMaterial2D", bezierCollider.PhysicsMaterial2D, typeof(PhysicsMaterial2D));
            GUILayout.EndHorizontal();


            bezierCollider.pointsQuantity     = EditorGUILayout.IntField("curve points", bezierCollider.pointsQuantity, GUILayout.MinWidth(100));
            bezierCollider.firstPoint         = EditorGUILayout.Vector2Field("first point", bezierCollider.firstPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerFirstPoint  = EditorGUILayout.Vector2Field("handler first Point", bezierCollider.handlerFirstPoint, GUILayout.MinWidth(100));
            bezierCollider.secondPoint        = EditorGUILayout.Vector2Field("second point", bezierCollider.secondPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerSecondPoint = EditorGUILayout.Vector2Field("handler secondPoint", bezierCollider.handlerSecondPoint, GUILayout.MinWidth(100));

            EditorUtility.SetDirty(bezierCollider);

            if (bezierCollider.pointsQuantity > 0 && !bezierCollider.firstPoint.Equals(bezierCollider.secondPoint) &&
                (
                    lastPointsQuantity != bezierCollider.pointsQuantity ||
                    lastFirstPoint != bezierCollider.firstPoint ||
                    lastHandlerFirstPoint != bezierCollider.handlerFirstPoint ||
                    lastSecondPoint != bezierCollider.secondPoint ||
                    lastHandlerSecondPoint != bezierCollider.handlerSecondPoint
                ))
            {
                lastPointsQuantity          = bezierCollider.pointsQuantity;
                lastFirstPoint              = bezierCollider.firstPoint;
                lastHandlerFirstPoint       = bezierCollider.handlerFirstPoint;
                lastSecondPoint             = bezierCollider.secondPoint;
                lastHandlerSecondPoint      = bezierCollider.handlerSecondPoint;
                edgeCollider.points         = bezierCollider.calculate2DPoints();
                edgeCollider.sharedMaterial = bezierCollider.PhysicsMaterial2D;
            }
        }
    }
Exemplo n.º 4
0
    public override void OnInspectorGUI()
    {
        _bezierCollider = (BezierCollider2D)target;

        _edgeCollider = _bezierCollider.GetComponent <EdgeCollider2D>();

        if (_edgeCollider.hideFlags != HideFlags.HideInInspector)
        {
            _edgeCollider.hideFlags = HideFlags.HideInInspector;
        }

        if (_edgeCollider != null)
        {
            _bezierCollider.pointsQuantity = EditorGUILayout.IntField("curve points", _bezierCollider.pointsQuantity,
                                                                      GUILayout.MinWidth(100));
            _bezierCollider.firstPoint =
                EditorGUILayout.Vector2Field("first point", _bezierCollider.firstPoint, GUILayout.MinWidth(100));
            _bezierCollider.handlerFirstPoint = EditorGUILayout.Vector2Field("handler first Point",
                                                                             _bezierCollider.handlerFirstPoint, GUILayout.MinWidth(100));
            _bezierCollider.secondPoint =
                EditorGUILayout.Vector2Field("second point", _bezierCollider.secondPoint, GUILayout.MinWidth(100));
            _bezierCollider.handlerSecondPoint = EditorGUILayout.Vector2Field("handler secondPoint",
                                                                              _bezierCollider.handlerSecondPoint, GUILayout.MinWidth(100));

            EditorUtility.SetDirty(_bezierCollider);

            if (_bezierCollider.pointsQuantity > 0 && !_bezierCollider.firstPoint.Equals(_bezierCollider.secondPoint) &&
                (
                    _lastPointsQuantity != _bezierCollider.pointsQuantity ||
                    _lastFirstPoint != _bezierCollider.firstPoint ||
                    _lastHandlerFirstPoint != _bezierCollider.handlerFirstPoint ||
                    _lastSecondPoint != _bezierCollider.secondPoint ||
                    _lastHandlerSecondPoint != _bezierCollider.handlerSecondPoint
                ))
            {
                _lastPointsQuantity     = _bezierCollider.pointsQuantity;
                _lastFirstPoint         = _bezierCollider.firstPoint;
                _lastHandlerFirstPoint  = _bezierCollider.handlerFirstPoint;
                _lastSecondPoint        = _bezierCollider.secondPoint;
                _lastHandlerSecondPoint = _bezierCollider.handlerSecondPoint;
                _edgeCollider.points    = _bezierCollider.Calculate2DPoints();
            }
        }
    }
Exemplo n.º 5
0
    public override void OnInspectorGUI()
    {
        bezierCollider = (BezierCollider2D)target;

        edgeCollider = bezierCollider.GetComponent <EdgeCollider2D>();
        lineRenderer = bezierCollider.GetComponent <LineRenderer>();

        edgeCollider.hideFlags = HideFlags.None;

        if (edgeCollider != null)
        {
            bezierCollider.pointsQuantity     = EditorGUILayout.IntField("Curve Points", bezierCollider.pointsQuantity, GUILayout.MinWidth(100));
            bezierCollider.firstPoint         = EditorGUILayout.Vector2Field("First Point", bezierCollider.firstPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerFirstPoint  = EditorGUILayout.Vector2Field("Handler First Point", bezierCollider.handlerFirstPoint, GUILayout.MinWidth(100));
            bezierCollider.secondPoint        = EditorGUILayout.Vector2Field("Second Point", bezierCollider.secondPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerSecondPoint = EditorGUILayout.Vector2Field("Handler SecondPoint", bezierCollider.handlerSecondPoint, GUILayout.MinWidth(100));

            EditorUtility.SetDirty(bezierCollider);

            if (bezierCollider.pointsQuantity > 0 && !bezierCollider.firstPoint.Equals(bezierCollider.secondPoint) &&
                (
                    lastPointsQuantity != bezierCollider.pointsQuantity ||
                    lastFirstPoint != bezierCollider.firstPoint ||
                    lastHandlerFirstPoint != bezierCollider.handlerFirstPoint ||
                    lastSecondPoint != bezierCollider.secondPoint ||
                    lastHandlerSecondPoint != bezierCollider.handlerSecondPoint
                ))
            {
                lastPointsQuantity     = bezierCollider.pointsQuantity;
                lastFirstPoint         = bezierCollider.firstPoint;
                lastHandlerFirstPoint  = bezierCollider.handlerFirstPoint;
                lastSecondPoint        = bezierCollider.secondPoint;
                lastHandlerSecondPoint = bezierCollider.handlerSecondPoint;
                Vector2[] points = bezierCollider.calculate2DPoints();
                edgeCollider.points        = points;
                lineRenderer.positionCount = points.Count();
                lineRenderer.SetPositions(points.ToList().ConvertAll(v2 => (Vector3)v2).ToArray());
            }
        }
    }
Exemplo n.º 6
0
    public override void OnInspectorGUI()
    {
        bezierCollider = (BezierCollider2D)target;

        edgeCollider = bezierCollider.GetComponent <EdgeCollider2D>();

        if (edgeCollider.hideFlags != HideFlags.HideInInspector)
        {
            // edgeCollider.hideFlags = HideFlags.HideInInspector;
        }

        if (edgeCollider != null)
        {
            bezierCollider.pointsQuantity     = EditorGUILayout.IntField("curve points", bezierCollider.pointsQuantity, GUILayout.MinWidth(100));
            bezierCollider.firstPoint         = EditorGUILayout.Vector2Field("first point", bezierCollider.firstPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerFirstPoint  = EditorGUILayout.Vector2Field("handler first Point", bezierCollider.handlerFirstPoint, GUILayout.MinWidth(100));
            bezierCollider.secondPoint        = EditorGUILayout.Vector2Field("second point", bezierCollider.secondPoint, GUILayout.MinWidth(100));
            bezierCollider.handlerSecondPoint = EditorGUILayout.Vector2Field("handler secondPoint", bezierCollider.handlerSecondPoint, GUILayout.MinWidth(100));

            EditorUtility.SetDirty(bezierCollider);

            if (bezierCollider.pointsQuantity > 0 && !bezierCollider.firstPoint.Equals(bezierCollider.secondPoint) &&
                (
                    lastPointsQuantity != bezierCollider.pointsQuantity ||
                    lastFirstPoint != bezierCollider.firstPoint ||
                    lastHandlerFirstPoint != bezierCollider.handlerFirstPoint ||
                    lastSecondPoint != bezierCollider.secondPoint ||
                    lastHandlerSecondPoint != bezierCollider.handlerSecondPoint
                ))
            {
                lastPointsQuantity     = bezierCollider.pointsQuantity;
                lastFirstPoint         = bezierCollider.firstPoint;
                lastHandlerFirstPoint  = bezierCollider.handlerFirstPoint;
                lastSecondPoint        = bezierCollider.secondPoint;
                lastHandlerSecondPoint = bezierCollider.handlerSecondPoint;
                //the important line
                edgeCollider.points = bezierCollider.calculate2DPoints();
            }
        }
    }