void IntegrityCheck(NoColDebrisController controller) { int count = Physics2D.OverlapCircleNonAlloc(transform.position, circleCollider.radius + 0.1f, results); integrity++; for (int i = 0; i < count; i++) { var debrit = results[i].GetComponent <NoColDebrisController>(); if (debrit == null) { continue; } debrit.CheckIntegryty(integrity); } // Iterate over each debrits foreach (var debrit in debrits) { if (debrit.integrity != integrity) { debrit.OnWillBeDestroyed(); Destroy(debrit.gameObject); } } needsIntegrityCheck = false; UpdatePlayerSizeSqr(); }
void AssignSquadron(NoColDebrisController debrit) { foreach (Squadronleader leader in general.squadList) { if ((debrit.transform.position - leader.transform.position).sqrMagnitude <= 50f) { leader.debritList.Add(debrit); } } }
public NoColDebrisController NewDebris(Vector3 pos) { base.GetGameObject(); NoColDebrisController debris = debrisPool.Dequeue(); if (debris) { debris.transform.position = pos; } Benchmark.instance.maxSimultaneousDebriss = allocatedObjectCount; return(debris); }
void OnDebritDestroyed(NoColDebrisController controller) { if (debritdistancelist.Count > 0 && debritdistancelist.Peek() == controller) { debritdistancelist.Dequeue(); while (debritdistancelist.Count > 0 && debritdistancelist.Peek() == null) { debritdistancelist.Dequeue(); } DistanceMaxOfAglo = (debritdistancelist.Count > 0) ? Vector2.Distance(transform.position, debritdistancelist.Peek().transform.position) : 0; resizeCamera(); } debrits.Remove(controller); }
public void AgglomerateDebrit(NoColDebrisController debrit) { float tmp; if ((tmp = Vector2.Distance(transform.position, debrit.transform.position)) > DistanceMaxOfAglo) { debritdistancelist.Enqueue(debrit); DistanceMaxOfAglo = tmp; resizeCamera(); } AssignSquadron(debrit); debrits.Add(debrit); debrit.Agglomerate(integrity); debrit.onDestroyed += OnDebritDestroyed; debrit.onLaserReceived += (a) => { needsIntegrityCheck = true; controller = a; }; debrit.transform.SetParent(transform, true); UpdatePlayerSizeSqr(); }
public void FreeDebris(NoColDebrisController o) { FreeGameObject(o.gameObject); debrisPool.Enqueue(o); }