public static void Add(FadeAmount newFade) { if (instance != null) { bool bExists = false; for (int i = 0; i < instance.Fades.Count; i++) { if (instance.Fades[i].GetPosition() == newFade.GetPosition()) { bExists = true; instance.Fades[i].Distance = newFade.Distance; } } if (!bExists) { instance.Fades.Add(newFade); if (instance.Fades.Count >= 10) { while (instance.Fades.Count > 10) { instance.Fades.RemoveAt(0); } } } } else { GameObject GO = new GameObject("FadeSystem"); GO.hideFlags = HideFlags.HideAndDontSave; instance = GO.AddComponent <FadeQueue>(); Add(newFade); } }
// Update is called once per frame void Update() { float Distance = Vector3.Distance(Camera.main.transform.position, GetComponent <Renderer>().bounds.center); //Get a range that won''t overlap the target Distance = ((Distance / 10.0f) * 7.5f); Vector3 Direction = (Camera.main.transform.position - GetComponent <Renderer>().bounds.center).normalized; for (int i = 1; i <= NumSegments; i++) { float TmpDist = (Distance / NumSegments) * i; Vector3 Position = Camera.main.transform.position - Direction * TmpDist; Debug.DrawRay(Position, Vector3.up, Color.magenta); FadeQueue.Add(new FadeAmount(Position, FadeSize)); } }