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); }
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); }
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); }