コード例 #1
0
        void OnRecvSet(SetMessage mes)
        {
#if UNITY_EDITOR
            Undo.RecordObject(this, "MeshSyncServer");
#endif
            var scene = mes.scene;

            // sync materials
            try
            {
                int numMaterials = scene.numMaterials;
                if (numMaterials > 0)
                {
                    UpdateMaterials(scene);
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync transforms
            try
            {
                int numTransforms = scene.numTransforms;
                for (int i = 0; i < numTransforms; ++i)
                {
                    UpdateTransform(scene.GetTransform(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync cameras
            try
            {
                int numCameras = scene.numCameras;
                for (int i = 0; i < numCameras; ++i)
                {
                    UpdateCamera(scene.GetCamera(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync lights
            try
            {
                int numLights = scene.numLights;
                for (int i = 0; i < numLights; ++i)
                {
                    UpdateLight(scene.GetLight(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync meshes
            try
            {
                int numMeshes = scene.numMeshes;
                for (int i = 0; i < numMeshes; ++i)
                {
                    UpdateMesh(scene.GetMesh(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // update references
            {
                foreach (var pair in m_clientObjects)
                {
                    var dstrec = pair.Value;
                    if (dstrec.go == null)
                    {
                        continue;
                    }
                    else if (dstrec.reference == null)
                    {
                        continue;
                    }

                    Record srcrec = null;
                    if (m_clientObjects.TryGetValue(dstrec.reference, out srcrec))
                    {
                        if (srcrec.go == null)
                        {
                            continue;
                        }
                        var src = srcrec.go.GetComponent <SkinnedMeshRenderer>();
                        if (src == null)
                        {
                            continue;
                        }
                        var dst = dstrec.go.GetComponent <SkinnedMeshRenderer>();
                        if (dst == null)
                        {
                            dst = dstrec.go.AddComponent <SkinnedMeshRenderer>();
                        }
                        dst.sharedMesh      = src.sharedMesh;
                        dst.sharedMaterials = src.sharedMaterials;
                    }
                }
            }

            GC.Collect();
        }
コード例 #2
0
        void OnRecvSet(SetMessage mes)
        {
#if UNITY_EDITOR
            Undo.RecordObject(this, "MeshSyncServer");
#endif
            var scene = mes.scene;

            // sync materials
            try
            {
                int numMaterials = scene.numMaterials;
                if (numMaterials > 0)
                {
                    UpdateMaterials(scene);
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync transforms
            try
            {
                int numTransforms = scene.numTransforms;
                for (int i = 0; i < numTransforms; ++i)
                {
                    UpdateTransform(scene.GetTransform(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync cameras
            try
            {
                int numCameras = scene.numCameras;
                for (int i = 0; i < numCameras; ++i)
                {
                    UpdateCamera(scene.GetCamera(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync lights
            try
            {
                int numLights = scene.numLights;
                for (int i = 0; i < numLights; ++i)
                {
                    UpdateLight(scene.GetLight(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            // sync meshes
            try
            {
                int numMeshes = scene.numMeshes;
                for (int i = 0; i < numMeshes; ++i)
                {
                    UpdateMesh(scene.GetMesh(i));
                }
            }
            catch (Exception e) { Debug.Log(e); }

            GC.Collect();
        }
コード例 #3
0
ファイル: MeshSyncServer.cs プロジェクト: wang2zhuo2/SignXR
 void OnRecvSet(SetMessage mes)
 {
     UpdateScene(mes.scene);
 }