public void Serialize(OverloadLevelConvertSerializer serializer)
        {
            serializer.StartCmd(CommandId);

            int    width         = 0;
            int    height        = 0;
            string formatStr     = UnityEngine.TextureFormat.RGB24.ToString();
            string filterModeStr = UnityEngine.FilterMode.Bilinear.ToString();
            string name          = string.Empty;
            bool   mipmap        = false;

            if (serializer.IsWriting)
            {
                width         = texture.width;
                height        = texture.height;
                formatStr     = texture.format.ToString();
                filterModeStr = texture.filterMode.ToString();
                name          = texture.name;
#if OVERLOAD_LEVEL_EDITOR
                mipmap = texture.mipmap;
#endif
            }

            serializer.SerializeX(this, x => x.texture2DGuid);
            serializer.Serialize(ref width);
            serializer.Serialize(ref height);
            serializer.Serialize(ref formatStr);
            serializer.Serialize(ref mipmap);
            serializer.Serialize(ref filterModeStr);
            serializer.Serialize(ref name);

            UnityEngine.Color32[] pixelData = null;
            if (serializer.IsWriting)
            {
                serializer.SerializeOut_array(typeof(UnityEngine.Color32), texture.GetPixels32());
            }
            else
            {
                pixelData = (UnityEngine.Color32[])serializer.SerializeIn_array(typeof(UnityEngine.Color32));
            }

            if (!serializer.IsWriting)
            {
                UnityEngine.TextureFormat format = (UnityEngine.TextureFormat)Enum.Parse(typeof(UnityEngine.TextureFormat), formatStr);
                this.texture = new UnityEngine.Texture2D(width, height, format, mipmap);

                UnityEngine.FilterMode filterMode = (UnityEngine.FilterMode)Enum.Parse(typeof(UnityEngine.FilterMode), filterModeStr);
                this.texture.filterMode = filterMode;

                this.texture.name = name;

                this.texture.SetPixels32(pixelData);
                this.texture.Apply();
            }

            serializer.FinishCmd(CommandId);
        }
Exemple #2
0
        public static object Serialize_PortalPolygonData(object _obj, System.Type type, OverloadLevelConvertSerializer serializer)
        {
            PortalPolygonData obj = (PortalPolygonData)_obj;

            if (serializer.IsWriting)
            {
                serializer.SerializeOut_vector3(obj.Normal);
                serializer.SerializeOut_float(obj.PlaneEqD);
                serializer.SerializeOut_array(typeof(int), obj.VertIndices);
            }
            else
            {
                obj.Normal      = serializer.SerializeIn_vector3();
                obj.PlaneEqD    = serializer.SerializeIn_float();
                obj.VertIndices = (int[])serializer.SerializeIn_array(typeof(int));
            }
            return(obj);
        }
Exemple #3
0
        public static object Serialize_UnityMesh(object obj, System.Type type, OverloadLevelConvertSerializer serializer)
        {
            uint version = serializer.Version;

            UnityEngine.Mesh mesh = (UnityEngine.Mesh)obj;

            int flags;

            if (version <= 3)
            {
                // old version, we just had 'colors'
                flags = 1;
            }
            else
            {
                // new version, use a flags value to report what we have
                if (serializer.IsWriting)
                {
                    flags = 0;
                    if (mesh.colors != null && mesh.colors.Length > 0)
                    {
                        flags |= 1;
                    }
                    if (mesh.colors32 != null && mesh.colors32.Length > 0)
                    {
                        flags |= 2;
                    }
                    serializer.SerializeOut_int32(flags);
                }
                else
                {
                    flags = serializer.SerializeIn_int32();
                }
            }

            serializer.SerializeX(mesh, x => x.name);
            serializer.SerializeX(mesh, x => x.vertices);             // Note: vertices must come first since the other fields may check size invariants
            serializer.SerializeX(mesh, x => x.uv);
            serializer.SerializeX(mesh, x => x.uv2);
            serializer.SerializeX(mesh, x => x.uv3);
            serializer.SerializeX(mesh, x => x.normals);
            serializer.SerializeX(mesh, x => x.tangents);
            if ((flags & 1) != 0)
            {
                serializer.SerializeX(mesh, x => x.colors);
            }
            if ((flags & 2) != 0)
            {
                serializer.SerializeX(mesh, x => x.colors32);
            }
            if (version > 3)
            {
                serializer.SerializeX(mesh, x => x.boneWeights);
                serializer.SerializeX(mesh, x => x.bindposes);
            }

            if (serializer.IsWriting)
            {
                Int32 numSubmeshes = mesh.subMeshCount;
                serializer.SerializeOut_int32(numSubmeshes);

                for (Int32 i = 0; i < numSubmeshes; ++i)
                {
                    Int32[] tris = mesh.GetTriangles(i);
                    serializer.SerializeOut_array(typeof(Int32), tris);
                }
            }
            else
            {
                Int32 numSubmeshes = serializer.SerializeIn_int32();
                mesh.subMeshCount = numSubmeshes;

                for (Int32 i = 0; i < numSubmeshes; ++i)
                {
                    Int32[] tris = (Int32[])serializer.SerializeIn_array(typeof(Int32));
                    mesh.SetTriangles(tris, i);
                }
            }

            return(mesh);
        }