Example #1
0
    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)
                );
        }
    }
Example #2
0
 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);
     }
 }
Example #3
0
    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();
    }