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)); } } }
protected override void Awake() { base.Awake(); //initialize data/variables mHeatCollides = new M8.CacheList <HeatController.Contact>(heatCollideCapacity); mMoveCtrl = GetComponentInChildren <EntityHeroMoveController>(); mMoveCtrl.collisionEnterCallback += OnMoveCollisionEnter; mMoveCtrl.collisionExitCallback += OnMoveCollisionExit; mMoveCtrl.triggerEnterCallback += OnMoveTriggerEnter; mMoveCtrl.triggerExitCallback += OnMoveTriggerExit; mStartPos = transform.position; if (spawnAnim) { spawnAnim.gameObject.SetActive(false); } if (deathAnim) { deathAnim.gameObject.SetActive(false); } }
void OnMoveCollisionExit(EntityHeroMoveController ctrl, Collision2D coll) { //check for heat controller var heatCtrl = coll.collider.GetComponent <HeatController>(); if (heatCtrl) { for (int i = 0; i < mHeatCollides.Count; i++) { if (mHeatCollides[i].heat == heatCtrl) { mHeatCollides.RemoveAt(i); break; } } } }
void OnMoveTriggerExit(EntityHeroMoveController ctrl, Collider2D coll) { }