void OnMoveCollisionEnter(EntityHeroMoveController ctrl, Collision2D coll) { //check if it's a side collision //if(!ctrl.isSlopSlide && (ctrl.collisionFlags & CollisionFlags.Sides) != CollisionFlags.None) //ctrl.moveHorizontal *= -1.0f; //check for heat controller bool isFound = false; for (int i = 0; i < mHeatCollides.Count; i++) { if (mHeatCollides[i].coll == coll.collider) { isFound = true; break; } } if (!isFound) { var heatCtrl = coll.collider.GetComponent <HeatController>(); if (heatCtrl) { if (mHeatCollides.IsFull) { mHeatCollides.Expand(); } mHeatCollides.Add(new HeatController.Contact(coll.collider, heatCtrl)); } } }
void OnCollisionEnter2D(Collision2D collision) { var coll = collision.collider; //check if already contained for (int i = 0; i < mCollisionContacts.Count; i++) { if (mCollisionContacts[i].coll == coll) { return; } } //add HeatController heat = coll.GetComponent <HeatController>(); if (heat) { if (mCollisionContacts.IsFull) { mCollisionContacts.Expand(); } mCollisionContacts.Add(new Contact(coll, heat)); } }
public void Expand(string group, int num) { mCapacity += num; if (mCapacity > maxCapacity) { int diff = mCapacity - maxCapacity; maxCapacity = mCapacity; mActives.Expand(diff); mAvailable.Expand(diff); } for (int i = 0; i < num; i++) { var pdc = PoolDataController.Generate(name, template, group, mInactiveHolder); mAvailable.Add(pdc); } }
void OnTriggerEnter2D(Collider2D collision) { if (IsKillable(collision)) { if (mKillableCache.IsFull) { mKillableCache.Expand(); } mKillableCache.Add(new KillableCache(collision)); } else { if (mSurfaceCache.IsFull) { mSurfaceCache.Expand(); } var newSurfaceCache = new SurfaceCache(collision); mSurfaceCache.Add(newSurfaceCache); ComputeSurface(true); } }
void OnTriggerEnter2D(Collider2D collision) { //check if already contained for (int i = 0; i < mTriggerContacts.Count; i++) { if (mTriggerContacts[i].coll == collision) { return; } } //add HeatController heat = collision.GetComponent <HeatController>(); if (heat) { if (mTriggerContacts.IsFull) { mTriggerContacts.Expand(); } mTriggerContacts.Add(new Contact(collision, heat)); } }
void GenerateColls(Collision2D col, bool resetCount) { if (resetCount) { mColls.Clear(); } Vector2 up = dirHolder.up; int contactCount = col.GetContacts(mContactPoints); for (int i = 0; i < contactCount; i++) { ContactPoint2D contact = mContactPoints[i]; Collider2D whichColl = col.collider;// contact.thisCollider != collider ? contact.thisCollider : contact.otherCollider; Vector2 n = contact.normal; Vector2 p = contact.point; CollisionFlags cf = GenCollFlag(up, contact); //check if already exists int ind = -1; for (int j = 0; j < mColls.Count; j++) { CollideInfo inf = mColls[j]; if (inf.collider == whichColl) { //if(cf == CollisionFlags.None) //cf = GenCollFlag(up, contact); if (inf.flag == cf) { ind = j; break; } } } var newCollInf = new CollideInfo() { collider = whichColl, contactPoint = p, normal = n, flag = cf, }; if (ind == -1) //add new { if (mColls.Count == mColls.Capacity) { mColls.Expand(); } mColls.Add(newCollInf); } else //update info { mColls[ind] = newCollInf; } } }