コード例 #1
0
        public static bool DetectChange(int id, Mesh mesh, Transform transform = null)
        {
            if (mesh == null)
                return false;

            if (detectChangeTable.ContainsKey(id))
            {
                MeshDataMirror mirror = detectChangeTable[id];

                bool change = false;
                if (transform != null) {
                    change =
                        mirror.position != transform.position ||
                        mirror.rotation != transform.rotation ||
                        mirror.scale != transform.GetScale();
                }

                if (!change) {
                    change =
                    mirror.meshInstanceID != mesh.GetInstanceID() ||
                    mirror.vertexCount != mesh.vertexCount ||
                    mirror.blendShapeCount != mesh.blendShapeCount ||
                    mirror.subMeshCount != mesh.subMeshCount ||
                        //mirror.triangleCount != mesh.triangles.Length ||
                        //mirror.tangentCount != mesh.tangents.Length ||
                        //mirror.uvCount != mesh.uv.Length ||
                    mirror.extents != mesh.bounds.extents;
                }

                return change;
            } else {
                MeshDataMirror mirror = new MeshDataMirror();
                mirror.meshInstanceID = mesh.GetInstanceID();
                mirror.vertexCount = mesh.vertexCount;
                mirror.blendShapeCount = mesh.blendShapeCount;
                mirror.subMeshCount = mesh.subMeshCount;
                //mirror.triangleCount = mesh.triangles.Length;
                //mirror.tangentCount = mesh.tangents.Length;
                //mirror.uvCount = mesh.uv.Length;
                mirror.extents = mesh.bounds.extents;

                if (transform != null) {
                    mirror.position = transform.position;
                    mirror.rotation = transform.rotation;
                    mirror.scale = transform.GetScale();
                }

                detectChangeTable.Add(id, mirror);
                return true;
            }
        }