예제 #1
0
    public void PerformAction(GameObject socket)
    {
        if (m_attached)
        {
            return;
        }

        if (!topEdge.attached)
        {
            return;
        }

        var wireSocket = socket.GetComponent <WireSocket>();

        if (!wireSocket)
        {
            return;
        }

        if (wireSocket.position == WireSocket.Position.TOP)
        {
            return;
        }

        m_attached = true;

        GetComponent <Rigidbody>().isKinematic = true;
        transform.SetParent(topEdge.transform);

        m_transformInfo.Stop();
        m_transformInfo = Tweener.Start(new FloatTweenSettings
        {
            duration  = 0.5f,
            from      = 0,
            to        = 1,
            easing    = Interpolations.Sinusoidal.InOut,
            onChanged = (amt) =>
            {
                transform.position = Vector3.Lerp(transform.position, socket.transform.position, amt);
            }
        }, this);

        socketColor       = wireSocket.color;
        m_connectedSocket = wireSocket;

        if (topEdge.wireState == TopWireEdge.WireState.UNDAMAGED)
        {
            wireSocket.AddPair(this);
        }

        m_objectReleased.Raise();
    }
예제 #2
0
 public void DetachFromSocket()
 {
     if (null != currentSocket)
     {
         currentSocket.currentWire = null;
         switchBoard.UpdateSwitchboardLights();
         //plugout sound
         aSource.PlayOneShot(plugoutSounds [Random.Range(0, plugoutSounds.Count)], audioVol);
         //fx
         currentSocket.sparks.Play();
         currentSocket = null;
     }
 }
예제 #3
0
    private void AttachToSocket(WireSocket socket)
    {
        //don't plug into full slot
        if (null != socket.currentWire)
        {
            return;
        }

        thisRB.isKinematic         = true;
        currentSocket              = socket;
        currentSocket.currentWire  = this;
        transform.position         = socket.transform.position;
        transform.localEulerAngles = new Vector3(0, 0, -90f);
        switchBoard.UpdateSwitchboardLights();
        //plugin sound
        aSource.PlayOneShot(pluginSounds [Random.Range(0, pluginSounds.Count)], audioVol);
        //fx
        socket.sparks.Play();
    }