PhotonView.DeserializeComponent C# (CSharp) Method

DeserializeComponent() protected method

protected DeserializeComponent ( Component component, PhotonStream, stream, PhotonMessageInfo, info ) : void
component Component
stream PhotonStream,
info PhotonMessageInfo,
return void
    protected internal void DeserializeComponent(Component component, PhotonStream stream, PhotonMessageInfo info)
    {
        if (component == null)
        {
            return;
        }

        // Use incoming data according to observed type
        if (component is MonoBehaviour)
        {
            ExecuteComponentOnSerialize(component, stream, info);
        }
        else if (component is Transform)
        {
            Transform trans = (Transform) component;

            switch (this.onSerializeTransformOption)
            {
                case OnSerializeTransform.All:
                    trans.localPosition = (Vector3) stream.ReceiveNext();
                    trans.localRotation = (Quaternion) stream.ReceiveNext();
                    trans.localScale = (Vector3) stream.ReceiveNext();
                    break;
                case OnSerializeTransform.OnlyPosition:
                    trans.localPosition = (Vector3) stream.ReceiveNext();
                    break;
                case OnSerializeTransform.OnlyRotation:
                    trans.localRotation = (Quaternion) stream.ReceiveNext();
                    break;
                case OnSerializeTransform.OnlyScale:
                    trans.localScale = (Vector3) stream.ReceiveNext();
                    break;
                case OnSerializeTransform.PositionAndRotation:
                    trans.localPosition = (Vector3) stream.ReceiveNext();
                    trans.localRotation = (Quaternion) stream.ReceiveNext();
                    break;
            }
        }
        else if (component is Rigidbody)
        {
            Rigidbody rigidB = (Rigidbody) component;

            switch (this.onSerializeRigidBodyOption)
            {
                case OnSerializeRigidBody.All:
                    rigidB.velocity = (Vector3) stream.ReceiveNext();
                    rigidB.angularVelocity = (Vector3) stream.ReceiveNext();
                    break;
                case OnSerializeRigidBody.OnlyAngularVelocity:
                    rigidB.angularVelocity = (Vector3) stream.ReceiveNext();
                    break;
                case OnSerializeRigidBody.OnlyVelocity:
                    rigidB.velocity = (Vector3) stream.ReceiveNext();
                    break;
            }
        }
        else if (component is Rigidbody2D)
        {
            Rigidbody2D rigidB = (Rigidbody2D) component;

            switch (this.onSerializeRigidBodyOption)
            {
                case OnSerializeRigidBody.All:
                    rigidB.velocity = (Vector2) stream.ReceiveNext();
                    rigidB.angularVelocity = (float) stream.ReceiveNext();
                    break;
                case OnSerializeRigidBody.OnlyAngularVelocity:
                    rigidB.angularVelocity = (float) stream.ReceiveNext();
                    break;
                case OnSerializeRigidBody.OnlyVelocity:
                    rigidB.velocity = (Vector2) stream.ReceiveNext();
                    break;
            }
        }
        else
        {
            Debug.LogError("Type of observed is unknown when receiving.");
        }
    }