void OnTriggerExit(Collider collider) { if (state != SnapBaseState.Closed || targetObj == null || (targetObj != null && targetObj.GetComponent <SnapTarget>().state == SnapTargetState.Locked)) { return; } if (collider.gameObject != targetObj) { return; } SnapTarget target = targetObj.GetComponent <SnapTarget> (); if (target == null || target.targetType != targetType) { return; } target.disconnect(); targetObj = null; state = SnapBaseState.Open; }
void OnTriggerStay(Collider collider) { // check type of collision object if (state != SnapBaseState.Open) { return; } SnapTarget target = collider.gameObject.GetComponent <SnapTarget> (); if (target == null || target.targetType != targetType) { return; } if (!target.isFree()) { return; } if (checkDependency()) { targetObj = collider.gameObject; target.snapTo(position); state = SnapBaseState.Closed; } }