void ReceiveEndInteraction(byte[] data, int objectId)
    {
        if (objectId < 0)
        {
            Debug.LogError("invalid object ID");
        }

        SerializableRigidbody rb = (SerializableRigidbody)SerializationToolkit.ByteArrayToObject(data);

        nvrPool[objectId].EndInteraction(nvrPool[objectId].AttachedHand);
        nvrPool[objectId].Rigidbody.velocity        = rb.velocity.Deserialize();
        nvrPool[objectId].Rigidbody.angularVelocity = rb.angularVelocity.Deserialize();
    }
    public void SendEndInterraction(NVRInteractable item)
    {
        SerializableRigidbody rb = new SerializableRigidbody(item.Rigidbody);

        photonView.RPC("ReceiveEndInteraction", PhotonTargets.Others, SerializationToolkit.ObjectToByteArray(rb), GetObjectID(item));
    }
示例#3
0
    Serializable Serialize(GameObject sObject)
    {
        Serializable output = new Serializable();
        CustomScript cs     = sObject.GetComponent <CustomScript>();

        for (int j = 0; j < cs.componentList.Length; j++)
        {
            /*Adds the Transform object for serialization*/
            if (cs.componentList[j].GetType().Name.Contains("Transform"))
            {
                Debug.Log("Added Transform");
                SerializableTransform sTransform = new SerializableTransform();
                sTransform.name     = "Transform";
                sTransform.position = cs.gameObject.transform.position;
                sTransform.rotation = cs.gameObject.transform.eulerAngles;
                sTransform.scale    = cs.gameObject.transform.localScale;
                output.components.Add(sTransform);
            }
            else if (cs.componentList[j].GetType().Name.Contains("Renderable"))
            {
                SerializableMesh sRenderable = new SerializableMesh();
                sRenderable.name = "Renderable";
                Renderable r = cs.gameObject.GetComponent <Renderable>();
                if (sRenderable != null)
                {
                    sRenderable.mesh      = r.data.mesh;
                    sRenderable.material  = r.data.material;
                    sRenderable.albedo    = r.data.albedo;
                    sRenderable.metal     = r.data.metal;
                    sRenderable.roughness = r.data.roughness;
                    sRenderable.normal    = r.data.normal;
                    sRenderable.height    = r.data.height;
                    sRenderable.ao        = r.data.ao;
                    sRenderable.emissive  = r.data.emissive;
                }
                output.components.Add(sRenderable);
            }
            else if (cs.componentList[j].GetType().Name.Contains("MeshFilter"))                /*Adds the MeshFilter object for serialization*/
            {
                Debug.Log("MeshRenderer Serialization is deprecated. It will probably be removed in a future update");
                //Debug.Log("Added MeshFilter");
                //SerializableMesh sMesh = new SerializableMesh();
                //sMesh.name = "MeshFilter";
                //MeshFilter mf = cs.gameObject.GetComponent<MeshFilter>();
                //MeshRenderer mr = cs.gameObject.GetComponent < MeshRenderer>();
                //sMesh.mesh = mf.sharedMesh.name;
                //sMesh.material = mr.sharedMaterial.name;
                //sMesh.castShadows = mr.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.On;
                //output.components.Add(sMesh);
            }
            else if (cs.componentList[j].GetType().Name.Contains("MeshRenderer"))                /*Adds the MeshRenderer object for serialization*/
            {
                Debug.Log("MeshRenderer Serialization is deprecated. It will probably be removed in a future update");
                //    Debug.Log("Added MeshRenderer");
                //    SerializableMeshRenderer sMeshRenderer = new SerializableMeshRenderer();
                //    sMeshRenderer.name = "MeshRenderer";
                //    MeshRenderer mr = cs.gameObject.GetComponent<MeshRenderer>();
                //    sMeshRenderer.material = mr.sharedMaterial.name;
                //    sMeshRenderer.castShadows = mr.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.On;

                //    output.components.Add(sMeshRenderer);
            }
            else if (cs.componentList[j].GetType().Name.Contains("Rigidbody"))                /*Adds the Rigidbody object for serialization */
            {
                Debug.Log("Added Rigidbody");
                SerializableRigidbody sRigidbody = new SerializableRigidbody();
                sRigidbody.name = "Rigidbody";
                Rigidbody rb = cs.gameObject.GetComponent <Rigidbody>();
                sRigidbody.mass        = rb.mass;
                sRigidbody.drag        = rb.drag;
                sRigidbody.angularDrag = rb.angularDrag;
                sRigidbody.useGravity  = rb.useGravity;
                sRigidbody.isKinematic = rb.isKinematic;
                sRigidbody.freezeXPos  = rb.constraints == RigidbodyConstraints.FreezePositionX;
                sRigidbody.freezeYPos  = rb.constraints == RigidbodyConstraints.FreezePositionY;
                sRigidbody.freezeZPos  = rb.constraints == RigidbodyConstraints.FreezePositionZ;
                sRigidbody.freezeXRot  = rb.constraints == RigidbodyConstraints.FreezeRotationX;
                sRigidbody.freezeYRot  = rb.constraints == RigidbodyConstraints.FreezeRotationY;
                sRigidbody.freezeZRot  = rb.constraints == RigidbodyConstraints.FreezeRotationZ;

                output.components.Add(sRigidbody);
            }
            else if (cs.componentList[j].GetType().Name.Contains("Collider"))                /*Adds the Collider object for serialization*/
            {
                Debug.Log("Added Collider");

                if (cs.gameObject.GetComponent <BoxCollider>())
                {
                    SerializableBoxCollider sBCollider = new SerializableBoxCollider();
                    sBCollider.name = "BoxCollider";
                    BoxCollider bc = cs.gameObject.GetComponent <BoxCollider>();
                    sBCollider.isTrigger = bc.isTrigger;
                    sBCollider.center    = bc.center;
                    sBCollider.size      = bc.size;
                    output.components.Add(sBCollider);
                }
                else if (cs.gameObject.GetComponent <SphereCollider>())
                {
                    SerializableSphereCollider sSCollider = new SerializableSphereCollider();
                    sSCollider.name = "SphereCollider";
                    SphereCollider sc = cs.gameObject.GetComponent <SphereCollider>();
                    sSCollider.isTrigger = sc.isTrigger;
                    sSCollider.center    = sc.center;
                    sSCollider.radius    = sc.radius;
                    output.components.Add(sSCollider);
                }
            }
            else
            {
                SerializableComponent Script = new SerializableComponent();
                string fName = cs.componentList[j].GetType().ToString();
                if (cs.componentList[j].GetType().ToString().Contains("UnityEngine."))
                {
                    Debug.Log(fName.Length);
                    Script.name = fName.Substring(12);
                }
                else
                {
                    Script.name = fName;
                }
                output.components.Add(Script);
            }
        }
        return(output);
    }