Example #1
0
    public virtual GameObject ActivateSegment(GameObject segment, SegmentManager sm)
    {
        segment.SetActive(true);
        Vector3 bounds;

        try
        {
            bounds = segment.transform.GetChild(0).transform.GetComponent <Renderer>().bounds.size;
        } catch
        {
            bounds = segment.GetComponent <BoxCollider>().bounds.size;
        }

        bounds = ProcessBounds(bounds);

        if (sm.GetLastSpawned() != null)
        {
            var travel = sm.GetLastSpawned().transform.localPosition.z;
            var t      = transform.transform.localPosition;
            t.z = travel + bounds.z * sm.SegmentIntersectionFactor;
            t.y = -10;
            segment.transform.localPosition = t;
        }
        else
        {
            segment.transform.localPosition = new Vector3(0, -10, ChangeStartDistance(-sm.removeDistance));
        }

        segment.transform.localPosition = TransformPosition(segment.transform.localPosition);

        Segment rs = segment.GetComponent <Segment>();

        if (sm.SpawnObjectsInMiddle)
        {
            rs.Clear();
            if (sm.roadObjectsManager)
            {
                sm.roadObjectsManager.AddDetailToSegment(segment, bounds);
            }
        }

        rs.SetSpeed(sm.gameSpeed * -1);

        var dist = bounds.z - 0.03f;

        sm.SetDistanceToNextSpawn(dist);

        segment.SetActive(true);

        sm.SetLastSpawned(segment);

        return(segment);
    }