Exemplo n.º 1
0
    public void RepositionOverheadCamera()
    {
        if (carSpawner == null)
        {
            return;
        }

        if (GlobalState.overheadCamera)
        {
            GameObject     OHCamGo        = carSpawner.cameras[0];
            OverHeadCamera overheadCamera = OHCamGo.GetComponent <OverHeadCamera>();
            overheadCamera.Init();
        }
    }
Exemplo n.º 2
0
    public void AddSplitScreenCam(int index)
    {
        if (cameras.Count < GlobalState.maxSplitScreen && !GlobalState.raceCameras)
        {
            if (index == 0 && GlobalState.overheadCamera)
            {
                GameObject     splitScreenOHCamGo = Instantiate(splitScreenOHCamPrefab);
                OverHeadCamera OHCam = splitScreenOHCamGo.GetComponent <OverHeadCamera>();
                OHCam.pathManager = pathManager;
                OHCam.Init();

                cameras.Add(splitScreenOHCamGo);
            }
            else
            {
                GameObject splitScreenCamGo = Instantiate(splitScreenCamPrefab);
                cameras.Add(splitScreenCamGo);
            }
        }
    }
Exemplo n.º 3
0
    public void UpdateSplitScreenCams()
    {
        if (GlobalState.raceCameras)
        {
            if (mainCamera != null)
            {
                mainCamera.SetActive(false);
            }
            return;
        }

        int num_cameras = cars.Count;

        if (GlobalState.overheadCamera)
        {
            num_cameras += 1;
        }
        if (num_cameras > GlobalState.maxSplitScreen)
        {
            num_cameras = GlobalState.maxSplitScreen;
        }

        // check if the number of cameras match the number of cars
        if ((cameras.Count != num_cameras))
        {
            // remove all cameras in there
            foreach (GameObject splitScreenCamGo in cameras)
            {
                GameObject.Destroy(splitScreenCamGo);
            }
            cameras.Clear();

            // and recreate some new ones
            for (int i = 0; i < num_cameras; i++)
            {
                AddSplitScreenCam(i);
            }
        }

        // for each camera, update the rect
        for (int i = 0; i < num_cameras; i++)
        {
            if (i > 0 || !GlobalState.overheadCamera) // if the camera isn't overhead, assign a car to it
            {
                GameObject splitScreenCamGo = cameras[i];
                GameObject car;
                if (GlobalState.overheadCamera)
                {
                    car = cars[i - 1];
                }
                else
                {
                    car = cars[i];
                }

                // set target to the corresponding car
                Camera splitScreenCam = splitScreenCamGo.GetComponent <Camera>();

                DrawLidar dLidar = splitScreenCamGo.GetComponent <DrawLidar>();
                dLidar.car = car;

                CameraFollow cameraFollow = splitScreenCam.GetComponent <CameraFollow>();
                cameraFollow.target = getChildGameObject(car, "CameraFollowTm").transform;
            }

            int x_index       = i % SplitScreenWidth;
            int y_index       = i / SplitScreenWidth;
            int number_in_row = Math.Min((cameras.Count - y_index * SplitScreenWidth), SplitScreenWidth);
            int number_of_row = 1 + ((cameras.Count - 1) / SplitScreenWidth);

            float w = 1 / (float)(number_in_row);
            float h = 1 / (float)(number_of_row);

            float x = (x_index) / (float)number_in_row;
            float y = (y_index) / (float)number_of_row;

            GameObject go     = cameras[i];
            Camera     camera = go.GetComponent <Camera>();
            camera.rect = new Rect(x, y, w, h);

            if (GlobalState.overheadCamera && i == 0)
            {
                OverHeadCamera ohcam = go.GetComponent <OverHeadCamera>(); ohcam.Init();
            }
        }

        if (cameras.Count == 0 && mainCamera != null && !GlobalState.raceCameras)
        {
            mainCamera.SetActive(true);
        }
        else if (mainCamera != null)
        {
            mainCamera.SetActive(false); // make sure we are disabling main camera to avoid background rendering
        }
    }