//---------------------------------------------- // Realistic Car Controller // // Copyright © 2014 - 2023 BoneCracker Games // https://www.bonecrackergames.com // Buğra Özdoğanlar // //---------------------------------------------- using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// Skidmarks manager all all kind of skidmarks. /// [AddComponentMenu("BoneCracker Games/Realistic Car Controller/Misc/RCC Skidmarks Manager")] public class RCC_SkidmarksManager : RCC_Singleton { private RCC_Skidmarks[] skidmarks; // All skidmarks. private int[] skidmarksIndexes; // Index of the skidmarks. private int _lastGroundIndex = 0; // Last index of the ground. private void Awake() { // Creating new skidmarks and initializing them with given ground materials in RCC Ground Materials. skidmarks = new RCC_Skidmarks[RCC_GroundMaterials.Instance.frictions.Length]; skidmarksIndexes = new int[skidmarks.Length]; for (int i = 0; i < skidmarks.Length; i++) { skidmarks[i] = Instantiate(RCC_GroundMaterials.Instance.frictions[i].skidmark, Vector3.zero, Quaternion.identity); skidmarks[i].transform.name = skidmarks[i].transform.name + "_" + RCC_GroundMaterials.Instance.frictions[i].groundMaterial.name; skidmarks[i].transform.SetParent(transform, true); } } // Function called by the wheels that is skidding. Gathers all the information needed to // create the mesh later. Sets the intensity of the skidmark section b setting the alpha // of the vertex color. public int AddSkidMark(Vector3 pos, Vector3 normal, float intensity, float width, int lastIndex, int groundIndex) { if (_lastGroundIndex != groundIndex) { _lastGroundIndex = groundIndex; return -1; } skidmarksIndexes[groundIndex] = skidmarks[groundIndex].AddSkidMark(pos, normal, intensity, width, lastIndex); return skidmarksIndexes[groundIndex]; } /// /// Cleans all skidmarks. /// public void CleanSkidmarks() { for (int i = 0; i < skidmarks.Length; i++) skidmarks[i].Clean(); } /// /// Cleans target skidmarks. /// /// public void CleanSkidmarks(int index) { skidmarks[index].Clean(); } }