private void ProcessCollision(Collider2D col) { RexObject rexObject = col.GetComponent <RexObject>(); if (rexObject != null) { RexActor actor = col.GetComponent <RexActor>(); if (actor != null && actor.isDead) { return; } if (rexObject.willDespawnOnSceneExit || isBottomlessPit) { float buffer = 0.5f * GlobalValues.tileSize; float warningBuffer = 0.15f * GlobalValues.tileSize; if (edge == Edge.Right) { if (rexObject.transform.position.x > transform.position.x + buffer) { rexObject.Clear(); } else if (rexObject.transform.position.x > transform.position.x + warningBuffer) { rexObject.OnSceneBoundaryCollisionInsideBuffer(); } } else if (edge == Edge.Left) { if (rexObject.transform.position.x < transform.position.x - buffer) { rexObject.Clear(); } else if (rexObject.transform.position.x < transform.position.x - warningBuffer) { rexObject.OnSceneBoundaryCollisionInsideBuffer(); } } else if (edge == Edge.Top) { if (rexObject.transform.position.y > transform.position.y + buffer) { rexObject.Clear(); } else if (rexObject.transform.position.y > transform.position.y + warningBuffer) { rexObject.OnSceneBoundaryCollisionInsideBuffer(); } } else if (edge == Edge.Bottom) { if (rexObject.transform.position.y < transform.position.y - buffer) { rexObject.Clear(); } else if (rexObject.transform.position.y < transform.position.y - warningBuffer) { rexObject.OnSceneBoundaryCollisionInsideBuffer(); } } } } }