Ejemplo n.º 1
0
 void GetOnPlayerSpline(int splineIndex)
 {
     _curPathType         = PathType.PlayerPath;
     SC_bezier.travelMode = BezierSolution.TravelMode.Loop;
     curSpline            = _attackSplineTab[splineIndex];
     SC_bezier.SetNewSpline(curSpline);
 }
Ejemplo n.º 2
0
    public void basicSpawn(GameObject EnemyPrefab)
    {
        GameObject newEnemy = Instantiate(EnemyPrefab, this.gameObject.transform.position, Quaternion.identity);

        BezierSolution.BezierSpline newEnemySpline = newEnemy.GetComponent <BezierSolution.EnemyWalker2D>().spline = SplineParent.GetComponent <BezierSolution.BezierSpline>();
        newEnemy.GetComponent <GameUnitObject>().speed = 5;
    }
Ejemplo n.º 3
0
    void GetOnAttackSpline(int splineIndex)
    {
        _curPathType = PathType.AttackPath;
        curSpline    = _attackSplineTab[splineIndex];

        SC_bezier.travelMode = BezierSolution.TravelMode.PingPong;
        SC_bezier.SetNewSpline(curSpline);
    }
Ejemplo n.º 4
0
    void GetOnLineSpline(int splineIndex)
    {
        _curPathType = PathType.Line;
        curSpline    = _lineSplineTab[splineIndex];

        SC_bezier.travelMode = BezierSolution.TravelMode.PingPong;
        SC_bezier.SetNewSpline(curSpline);

        curLineIndex = splineIndex;
    }
Ejemplo n.º 5
0
    /////////////////////////////////////////////////////////////////////////



    //---------------------------------------------------------------------//
    //--------------------------- CHANGE SPLINE ---------------------------//
    //---------------------------------------------------------------------//
    #region Change Spline

    /*Quand les conditions sont remplis, change la spline que suis le Main guide du Flock
     *      - Nouveau Path type défini
     *      - Enregistrement de la spline actuel
     *      - Changement du Type de comportement sur la spline
     *      - Transfert l'information de la nouvelle spline au BezierWalker (gère les déplacements sur la spline)
     *      - Actualise l'index du type de spline actuel
     */
    void GetOnCircleSpline(int splineIndex)
    {
        _curPathType = PathType.Circle;
        curSpline    = _circleSplineTab[splineIndex];

        SC_bezier.travelMode = BezierSolution.TravelMode.Loop;
        SC_bezier.SetNewSpline(curSpline);

        curCircleIndex = splineIndex;
    }
Ejemplo n.º 6
0
    // Start is called before the first frame update
    public BezierSolution.BezierSpline[] GetBezierSplines()
    {
        BezierSolution.BezierSpline[] spawnSplines = new BezierSolution.BezierSpline[gameObject.transform.childCount];

        for (int i = 0; i < gameObject.transform.childCount; i++)
        {
            spawnSplines[i] = gameObject.transform.GetChild(i).GetComponent <BezierSolution.BezierSpline>();
        }

        return(spawnSplines);
    }
Ejemplo n.º 7
0
    public void StartNewBehavior(int behaviorIndex)
    {
        transform.rotation = flockInitialRot;

        StopAllCoroutines();
        curSettingsIndex = 0;
        _curSpline       = _splineTab[behaviorIndex];
        bezierWalkerSpeed.SetNewSpline(_curSpline);

        StartCoroutine(SwitchSettings(_BoidSettings[behaviorIndex]));
    }
Ejemplo n.º 8
0
    /// <summary>
    /// Initialisation du Flock
    /// </summary>
    public void InitializeFlock(FlockSettings newFlockSettings, BezierSolution.BezierSpline spawnSpline, Vector3Int sensitivity)
    {
        flockSettings   = newFlockSettings;
        flockInitialRot = transform.rotation;

        inAttack   = false;
        isSpawning = true;
        _Player    = GameObject.FindGameObjectWithTag("Player");

        transform.position = spawnSpline.GetPoint(0);
        bezierWalkerTime.SetNewSpline(spawnSpline);
        bezierWalkerTime.NormalizedT = 0;
        bezierWalkerTime.travelTime  = flockSettings.spawnTimer;

        _mainGuide = gameObject.transform;              //Main guide prends la valeur de this (CF : Variable _mainGuide)

        _GuideList            = new List <Transform>(); //Instanciation de la guide list
        _curCurveDistanceList = new List <Vector3>();   // Instanciation de la list de distance sur les courbes pour chaque guide

        _BoidSettings = new BoidSettings[6][];

        spawnSettings       = flockSettings.spawnSettings;
        roamSettings        = flockSettings.roamSettings;
        attackSettings      = flockSettings.attackSettings;
        destructionSettings = flockSettings.destructionSettings;
        getAwaySettings     = flockSettings.getAwaySettings;
        hitReactionSettings = flockSettings.hitReactionSettings;

        _BoidSettings[0] = spawnSettings;
        _BoidSettings[1] = roamSettings;
        _BoidSettings[2] = attackSettings;
        _BoidSettings[3] = destructionSettings;
        _BoidSettings[4] = getAwaySettings;
        _BoidSettings[5] = hitReactionSettings;

        _KoaManager   = Instantiate(_KoaPrefab, transform);                                                             //Instantiate Koa
        _SCKoaManager = _KoaManager.GetComponent <SC_KoaManager>();                                                     //Récupère le Koa manager du koa instancié
        _SCKoaManager.Initialize(_mainGuide, flockSettings.boidSpawn, spawnSettings[0], newFlockSettings, sensitivity); //Initialise le Koa | paramètre : Guide a suivre <> Nombre de Boids a spawn <> Comportement des boids voulu
        flockWeaponManager.Initialize(flockSettings, KoaMainAnimator, KoaEmissiveAnimator);

        _splineTab = new BezierSolution.BezierSpline[flockSettings.splines.Length];

        for (int i = 0; i < flockSettings.splines.Length; i++)
        {
            if (flockSettings.splines[i] != null)
            {
                _splineTab[i] = Instantiate(flockSettings.splines[i]);
            }
        }

        Invoke("ActivateFlock", flockSettings.spawnTimer);
    }
Ejemplo n.º 9
0
    /// <summary>
    /// Initialisation du Flock
    /// </summary>
    public void InitializeFlock()
    {
        flockSettings = flockDisplay;

        flockInitialRot = transform.rotation;
        inAttack        = false;

        _mainGuide = gameObject.transform;              //Main guide prends la valeur de this (CF : Variable _mainGuide)

        _GuideList            = new List <Transform>(); //Instanciation de la guide list
        _curCurveDistanceList = new List <Vector3>();   // Instanciation de la list de distance sur les courbes pour chaque guide

        _BoidSettings = new BoidSettings[5][];

        spawnSettings       = flockSettings.spawnSettings;
        roamSettings        = flockSettings.roamSettings;
        attackSettings      = flockSettings.attackSettings;
        destructionSettings = flockSettings.destructionSettings;
        reactionSettings    = flockSettings.getAwaySettings;

        _BoidSettings[0] = spawnSettings;
        _BoidSettings[1] = roamSettings;
        _BoidSettings[2] = attackSettings;
        _BoidSettings[3] = destructionSettings;
        _BoidSettings[4] = reactionSettings;


        _KoaManager   = Instantiate(_KoaPrefab, transform);                                             //Instantiate Koa
        _SCKoaManager = _KoaManager.GetComponent <SC_KoaManagerDisplay>();                              //Récupère le Koa manager du koa instancié

        _SCKoaManager.Initialize(_mainGuide, flockSettings.boidSpawn, spawnSettings[0], flockSettings); //Initialise le Koa | paramètre : Guide a suivre <> Nombre de Boids a spawn <> Comportement des boids voulu


        _splineTab = new BezierSolution.BezierSpline[_BoidSettings.Length];
        for (int i = 0; i < flockSettings.splines.Length; i++)
        {
            if (flockSettings.splines[i] != null)
            {
                _splineTab[i] = Instantiate(flockSettings.splines[i]);
            }
        }
        _curSpline = splineLine;
        bezierWalkerSpeed.SetNewSpline(_curSpline);
        ActivateFlock();
        isActive = true;
    }
Ejemplo n.º 10
0
        public static void DrawSplineInspectorGUI(BezierSpline spline)
        {
            if (spline.Count < 2)
            {
                if (GUILayout.Button("Initialize Spline"))
                {
                    spline.Reset();
                }

                return;
            }

            Color c = GUI.color;

            EditorGUI.BeginChangeCheck();
            bool loop = EditorGUILayout.Toggle("Loop", spline.loop);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Loop");
                spline.loop = loop;

                SceneView.RepaintAll();
            }

            EditorGUI.BeginChangeCheck();
            bool drawGizmos = EditorGUILayout.Toggle("Draw Runtime Gizmos", spline.drawGizmos);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Draw Gizmos");
                spline.drawGizmos = drawGizmos;

                SceneView.RepaintAll();
            }

            EditorGUILayout.Space();

            GUI.color = AUTO_CONSTRUCT_SPLINE_BUTTON_COLOR;

            if (GUILayout.Button("Construct Linear Path"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Construct Linear Path");
                }

                spline.ConstructLinearPath();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline (method #2)"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline2();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Create Spline"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.createSpline();
                SceneView.RepaintAll();
            }

            //TrackBuilder trackBuilderScript = (TrackBuilder)target;
            if (GUILayout.Button("Generate Track"))
            {
                //trackBuilderScript.BuildTrack();
            }

            GUI.color = c;
        }
Ejemplo n.º 11
0
 public void SetNewSpline(BezierSpline newSpline)
 {
     //Actualisation de la spline a suivre
     curSpline   = newSpline;
     NormalizedT = 0;
 }
Ejemplo n.º 12
0
            public float GetNormalizedT(float localT)
            {
                BezierSpline spline = point1.GetComponentInParent <BezierSpline>();

                return((index1 + localT) / (spline.loop ? spline.Count : (spline.Count - 1)));
            }
Ejemplo n.º 13
0
        static Vector3 GetInfluencePos(float t, Vector3 pos, BezierSpline spline, float dir)
        {
            var normal = spline.GetNormal(t) * dir;

            return(pos + normal.normalized * spline.influenceWidth.Evaluate(t) * spline.baseWidth);
        }
Ejemplo n.º 14
0
        public static void DrawSplineInspectorGUI(BezierSpline spline)
        {
            EditorGUI.BeginChangeCheck();
            var curve = EditorGUILayout.CurveField("Influence Width", spline.influenceWidth);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Edit Spline");
                spline.influenceWidth = curve;
            }

            EditorGUI.BeginChangeCheck();
            var width = EditorGUILayout.FloatField("Base Width", spline.baseWidth);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Edit Spline");
                spline.baseWidth = width;
            }

            if (spline.Count < 2)
            {
                if (GUILayout.Button("Initialize Spline"))
                {
                    spline.Reset();
                }

                return;
            }

            Color c = GUI.color;

            EditorGUI.BeginChangeCheck();
            bool loop = EditorGUILayout.Toggle("Loop", spline.loop);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Loop");
                spline.loop = loop;

                SceneView.RepaintAll();
            }

            EditorGUI.BeginChangeCheck();
            bool drawGizmos = EditorGUILayout.Toggle("Draw Runtime Gizmos", spline.drawGizmos);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Draw Gizmos");
                spline.drawGizmos = drawGizmos;

                SceneView.RepaintAll();
            }

            EditorGUILayout.Space();

            GUI.color = AUTO_CONSTRUCT_SPLINE_BUTTON_COLOR;

            if (GUILayout.Button("Construct Linear Path"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Construct Linear Path");
                }

                spline.ConstructLinearPath();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline (method #2)"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline2();
                SceneView.RepaintAll();
            }

            GUI.color = c;
        }
Ejemplo n.º 15
0
 public void OnStopPath()
 {
     curSpline = null;
     SC_bezier.SetNewSpline(null);
 }
Ejemplo n.º 16
0
            public float GetNormalizedT(float localT)
            {
                BezierSpline spline = point1.spline;

                return((point1.index + localT) / (spline.m_loop ? spline.Count : (spline.Count - 1)));
            }
Ejemplo n.º 17
0
 public EvenlySpacedPointsHolder(BezierSpline spline, float splineLength, float[] uniformNormalizedTs)
 {
     this.spline              = spline;
     this.splineLength        = splineLength;
     this.uniformNormalizedTs = uniformNormalizedTs;
 }
Ejemplo n.º 18
0
        public static void DrawSplineInspectorGUI(BezierSpline spline)
        {
            spline.targetPlayerId = EditorGUILayout.IntField("Target Player ID", spline.targetPlayerId);

            if (spline.targetPlayerId < 0)
            {
                EditorGUILayout.HelpBox("Please set target player id", MessageType.Warning);
            }

            if (spline.Count < 2)
            {
                if (GUILayout.Button("Initialize Spline"))
                {
                    spline.Reset();
                }

                return;
            }

            Color c = GUI.color;

            EditorGUI.BeginChangeCheck();
            bool loop = EditorGUILayout.Toggle("Loop", spline.loop);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Loop");
                spline.loop = loop;

                SceneView.RepaintAll();
            }

            EditorGUI.BeginChangeCheck();
            bool drawGizmos = EditorGUILayout.Toggle("Draw Runtime Gizmos", spline.drawGizmos);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(spline, "Toggle Draw Gizmos");
                spline.drawGizmos = drawGizmos;

                SceneView.RepaintAll();
            }

            EditorGUILayout.Space();

            GUI.color = AUTO_CONSTRUCT_SPLINE_BUTTON_COLOR;

            if (GUILayout.Button("Construct Linear Path"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Construct Linear Path");
                }

                spline.ConstructLinearPath();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline();
                SceneView.RepaintAll();
            }

            if (GUILayout.Button("Auto Construct Spline (method #2)"))
            {
                for (int i = 0; i < spline.Count; i++)
                {
                    Undo.RecordObject(spline[i], "Auto Construct Spline");
                }

                spline.AutoConstructSpline2();
                SceneView.RepaintAll();
            }

            GUI.color = c;
        }