You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Driftology/Assets/Scripts/CarSelectionManager.cs

78 lines
2.5 KiB
C#

using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
public class CarSelectionManager : MonoBehaviour
{
[Header("Car Selection")]
public CarData[] allCarData; // Array of ScriptableObject car stats
public GameObject[] allCarPrefabs; // Array of car prefabs
public Transform spawnPoint; // Where to spawn the car
[Header("Camera")]
public CameraController cameraController;
// Cached reference to the PostProcessVolume
private PostProcessVolume cachedVolume;
private void Start()
{
// Cache the PostProcessVolume from the main camera
cachedVolume = Camera.main.GetComponent<PostProcessVolume>();
int selectedIndex = GameConstants.CarSelected;
// Safety check
if (selectedIndex < 0 || selectedIndex >= allCarPrefabs.Length || selectedIndex >= allCarData.Length)
{
Debug.LogError("Selected car index is out of bounds!");
return;
}
// Instantiate the selected car
GameObject carInstance = Instantiate(
allCarPrefabs[selectedIndex],
spawnPoint.position,
spawnPoint.rotation,
spawnPoint
);
// Reset local transform
carInstance.transform.localPosition = Vector3.zero;
carInstance.transform.localRotation = Quaternion.identity;
// Initialize VehicleController with CarData
VehicleController controller = carInstance.GetComponent<VehicleController>();
if (controller != null)
{
controller.InitializeWithData(allCarData[selectedIndex]);
// Setup camera
cameraController.target = controller.transform;
cameraController.InitializeTarget();
}
else
{
Debug.LogError("VehicleController not found on the instantiated car prefab.");
}
// Assign PostProcessVolume to NOSController
NOSController nos = carInstance.GetComponent<NOSController>();
if (nos != null)
{
if (cachedVolume != null)
{
nos.SetPostProcessVolume(cachedVolume);
Debug.Log("Assigned PostProcessVolume to NOSController.");
}
else
{
Debug.LogWarning("PostProcessVolume not found on the main camera.");
}
}
else
{
Debug.LogWarning("NOSController not found on the instantiated car.");
}
}
}