Example #1
0
    public void InitScene()
    {
        currentPatternIndex         = 0;
        currentPatternSpawnedAmount = 0;

        stairControllers.Clear();


        float stairSize = StairPrefab.transform.localScale.z * StairPrefab.GetComponent <BoxCollider>().size.z - 0.1f;

        stairWidth = stairSize;
        float pathLenght = splineComputer.CalculateLength();

        float P = 0;

        SplineResult stairResult = splineComputer.Evaluate(0);

        int i = 0;

        GameObject obj = Instantiate(StairPrefab);

        obj.transform.position         = stairResult.position;
        obj.transform.rotation         = stairResult.rotation;
        obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z);

        StairController stairController = obj.GetComponent <StairController>();

        stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i));

        stairControllers.Add(stairController);

        Vector3 currentPos = obj.transform.position;


        while (P < 1)
        {
            P += 0.001f;

            stairResult = splineComputer.Evaluate(P);

            float distance = Vector3.Distance(stairResult.position, currentPos);

            if (distance >= stairSize)
            {
                obj = Instantiate(StairPrefab);

                obj.transform.position = stairResult.position;
                obj.transform.rotation = stairResult.rotation;


                obj.transform.localEulerAngles = new Vector3(0, obj.transform.localEulerAngles.y, obj.transform.localEulerAngles.z);

                currentPos = obj.transform.position;


                stairController = obj.GetComponent <StairController>();
                i += 1;
                stairController.InitStair(i, GameManager.self.colorManager.GetStairColor(i));

                stairControllers.Add(stairController);
            }
        }

        int lastIndex = stairControllers.Count - 1;

        FinishContainer.position = stairControllers[lastIndex].transform.position;
        stairControllers[lastIndex].isLastStair = true;

        StairsAmount = stairControllers.Count;

        for (int j = 0; j < stairControllers.Count; j++)
        {
            stairControllers[j].SetParameters(StairPatterns(j));
            stairControllers[j].DoMovement();
        }
    }