public void AttachToJoint(GripController grip, GameObject point, bool force = false) { bool canceled = false; ExecuteEvents.Execute <IAttachable>( target: point, eventData: null, functor: (reciever, eventData) => reciever.CheckAttachable(this, ref canceled) ); if (force || !canceled) { GetComponents <AudioSource>()[0].Play(); DetachAll(); grip.Attach(point); //enablegrip = false; timer = 0; grip.EmitParticle(); prevJoint = currentJoint; currentJoint = point; ExecuteEvents.Execute <IAttachable>( target: point, eventData: null, functor: (reciever, eventData) => reciever.OnAttached(this) ); } }
public void SetCurrentJoint(GripController grip, GameObject point) { if (((enablegrip && timer > 0.3f) || currentJoint == null) && currentJoint != point) { GetComponent <AudioSource>().Play(); DetachAll(); grip.Attach(point); //enablegrip = false; timer = 0; grip.EmitParticle(); currentJoint = point; point.SendMessage("OnAttached", SendMessageOptions.DontRequireReceiver); } }
public void DetachFromJoint(GripController grip) { var hinge = grip.GetComponent <HingeJoint2D>(); if (hinge != null) { if (hinge.connectedBody != null) { ExecuteEvents.Execute <IDetachable>( target: hinge.connectedBody.gameObject, eventData: null, functor: (reciever, eventData) => reciever.OnDetached(this) ); } } grip.Detatch(); }