private void OnPostControllerUpdated()
        {
            IArmModelVisualProvider armModelVisualProvider = armModel as IArmModelVisualProvider;

            if (armModelVisualProvider == null)
            {
                return;
            }

            // Shoulder Joint.
            shoulderJoint.localPosition = armModelVisualProvider.ShoulderPosition;
            shoulderJoint.localRotation = armModelVisualProvider.ShoulderRotation;

            // Elbow Joint.
            elbowJoint.localPosition = armModelVisualProvider.ElbowPosition;
            elbowJoint.localRotation = armModelVisualProvider.ElbowRotation;

            // Bicep Limb.
            Vector3 elbowShoulderDiff = elbowJoint.localPosition - shoulderJoint.localPosition;
            Vector3 bicepPosition     = shoulderJoint.localPosition + (elbowShoulderDiff * 0.5f);

            bicepLimb.localPosition = bicepPosition;
            bicepLimb.LookAt(shoulderJoint, elbowJoint.forward);

            bicepLimb.localScale = new Vector3(1.0f, 1.0f, elbowShoulderDiff.magnitude * BICEP_SCALE_FACTOR);

            // Wrist Joint.
            wristJoint.localPosition = armModelVisualProvider.WristPosition;
            wristJoint.localRotation = armModelVisualProvider.WristRotation;
            Vector3 wristDir = armModelVisualProvider.WristRotation * Vector3.forward;

            wristJoint.localPosition = wristJoint.localPosition + (wristDir * wristOffset);

            // Forearm Limb.
            Vector3 wristElbowDiff  = wristJoint.localPosition - elbowJoint.localPosition;
            Vector3 forearmPosition = elbowJoint.localPosition + (wristElbowDiff * 0.5f);

            forearmLimb.localPosition = forearmPosition;
            forearmLimb.LookAt(elbowJoint, wristJoint.up);
            forearmLimb.localScale = new Vector3(1.0f, 1.0f, wristElbowDiff.magnitude * FOREARM_SCALE_FACTOR);

            if (laser != null)
            {
                if (isLaserHighlighted)
                {
                    laser.startColor = laserHighlightColor;
                    laser.enabled    = true;
                }
                else
                {
                    laser.startColor = laserDefaultColor;
                }

                Color color = laser.startColor;
                color.a         *= armModel.PreferredAlpha;
                laser.startColor = color;
                laser.endColor   = Color.clear;
            }
        }
Exemple #2
0
 void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
 {
     if (stream.isWriting)
     {
         // We own this player: send the others our data
         IArmModelVisualProvider armModelVisual = armModel as IArmModelVisualProvider;
         stream.SendNext(armModelVisual.ShoulderPosition);
         stream.SendNext(armModelVisual.ElbowPosition);
         stream.SendNext(armModelVisual.WristPosition);
         stream.SendNext(armModelVisual.ShoulderRotation);
         stream.SendNext(armModelVisual.ElbowRotation);
         stream.SendNext(armModelVisual.WristRotation);
     }
     else
     {
         // Network player, receive data
         correctShoulderPos      = (Vector3)stream.ReceiveNext();
         correctElbowPos         = (Vector3)stream.ReceiveNext();
         correctWristPos         = (Vector3)stream.ReceiveNext();
         correctShoulderRotation = (Quaternion)stream.ReceiveNext();
         correctElbowRotation    = (Quaternion)stream.ReceiveNext();
         correctWristRotation    = (Quaternion)stream.ReceiveNext();
     }
 }