PhotonView.SerializeComponent C# (CSharp) Method

SerializeComponent() protected method

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

        if (component is MonoBehaviour)
        {
            ExecuteComponentOnSerialize(component, stream, info);
        }
        else if (component is Transform)
        {
            Transform trans = (Transform) component;

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

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

            switch (this.onSerializeRigidBodyOption)
            {
                case OnSerializeRigidBody.All:
                    stream.SendNext(rigidB.velocity);
                    stream.SendNext(rigidB.angularVelocity);
                    break;
                case OnSerializeRigidBody.OnlyAngularVelocity:
                    stream.SendNext(rigidB.angularVelocity);
                    break;
                case OnSerializeRigidBody.OnlyVelocity:
                    stream.SendNext(rigidB.velocity);
                    break;
            }
        }
        else
        {
            Debug.LogError("Observed type is not serializable: " + component.GetType());
        }
    }