From f86fcfaf341ac6fd842929fcef694a23a2a0bbfc Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Wed, 8 Feb 2023 18:47:35 -0800 Subject: [PATCH 01/38] Simple File Cache --- Assets/Editor/Tests/TestFileCache.cs | 142 +++++++++++++++++ Assets/Editor/Tests/TestFileCache.cs.meta | 11 ++ Assets/Scripts/Sharing/FileCache.cs | 178 ++++++++++++++++++++++ Assets/Scripts/Sharing/FileCache.cs.meta | 11 ++ 4 files changed, 342 insertions(+) create mode 100644 Assets/Editor/Tests/TestFileCache.cs create mode 100644 Assets/Editor/Tests/TestFileCache.cs.meta create mode 100644 Assets/Scripts/Sharing/FileCache.cs create mode 100644 Assets/Scripts/Sharing/FileCache.cs.meta diff --git a/Assets/Editor/Tests/TestFileCache.cs b/Assets/Editor/Tests/TestFileCache.cs new file mode 100644 index 0000000000..ba10bd1e58 --- /dev/null +++ b/Assets/Editor/Tests/TestFileCache.cs @@ -0,0 +1,142 @@ +using System.IO; +using System.Linq; +using NUnit.Framework; + +namespace TiltBrush +{ + [TestFixture] + internal class TestFileCache + { + private FileCache m_Cache; + private string m_Path; + [SetUp] + public void Setup() + { + m_Path = Path.Combine(Path.GetTempPath(), "FileCacheTest"); + if (File.Exists(m_Path)) + { + File.Delete(m_Path); + } + if (Directory.Exists(m_Path)) + { + Directory.Delete(m_Path, recursive: true); + } + m_Cache = new FileCache(m_Path, 1); + } + + [TearDown] + public void Teardown() + { + if (Directory.Exists(m_Path)) + { + Directory.Delete(m_Path, recursive: true); + } + } + + [Test] + public void IsDirectoryCreated() + { + Assert.IsTrue(Directory.Exists(m_Path)); + } + + [Test] + public void IsCacheSizeUpdated() + { + Assert.That(m_Cache.CacheSize == 0); + byte[] bytes = new byte[1000]; + m_Cache.Write("test", "onethousand", bytes); + Assert.That(m_Cache.CacheSize == 1000); + } + + [Test] + public void IsCacheLimitRespected() + { + byte[] bytes = new byte[100000]; + for (int i = 0; i < 11; i++) + { + m_Cache.Write($"test_{i}", "100kbytes", bytes); + } + Assert.That(m_Cache.CacheSize == 1000000); + var rootDir = new DirectoryInfo(m_Path); + Assert.That(rootDir.EnumerateFiles("*", SearchOption.AllDirectories) + .Sum(x => x.Length) == 1000000); + } + + [Test] + public void IsLastCreatedExpunged() + { + byte[] bytes = new byte[100000]; + for (int i = 0; i < 11; i++) + { + m_Cache.Write($"test_{i}", "100kbytes", bytes); + } + Assert.IsFalse(m_Cache.FilesetExists("test_0")); + } + + [Test] + public void CanWriteMultipleFilesSetAndFiles() + { + byte[] bytes = new byte[1000]; + for (int i = 0; i < 5; i++) + { + for (int j = 0; j < 5; ++j) + { + m_Cache.Write($"test_{i}", $"100kbytes_{j}", bytes); + } + } + + for (int i = 0; i < 5; i++) + { + Assert.That(m_Cache.FilesetExists($"test_{i}")); + for (int j = 0; j < 5; ++j) + { + Assert.That(m_Cache.FileExists($"test_{i}", $"100kbytes_{j}")); + } + } + } + + [Test] + public void ThingsThatDontExistDontExist() + { + byte[] bytes = new byte[1000]; + m_Cache.Write("Real", "onethousand", bytes); + + Assert.IsFalse(m_Cache.FilesetExists("Imaginary")); + Assert.IsFalse(m_Cache.FileExists("Imaginary", "onethousand")); + Assert.IsFalse(m_Cache.FileExists("Real", "twothousand")); + } + + [Test] + public void FilesCanBeDeleted() + { + byte[] bytes = new byte[1000]; + m_Cache.Write("Real", "onethousand", bytes); + Assert.That(m_Cache.FileExists("Real", "onethousand")); + m_Cache.DeleteFile("Real", "onethousand"); + Assert.That(!m_Cache.FileExists("Real", "onethousand")); + } + + [Test] + public void FileHasTheRightContents() + { + byte[] bytes = Enumerable.Range(0, 127).Select(x => (byte)x).ToArray(); + m_Cache.Write("test", "data", bytes); + byte[] read = m_Cache.Read("test", "data"); + Assert.That(bytes.SequenceEqual(read)); + } + + [Test] + public void TestStreamRead() + { + byte[] bytes = Enumerable.Range(0, 127).Select(x => (byte)x).ToArray(); + m_Cache.Write("test", "data", bytes); + using (var stream = m_Cache.ReadStream("test", "data")) + { + for (int i = 0; i < 127; ++i) + { + Assert.That(stream.ReadByte() == i); + } + } + } + } +} diff --git a/Assets/Editor/Tests/TestFileCache.cs.meta b/Assets/Editor/Tests/TestFileCache.cs.meta new file mode 100644 index 0000000000..77e6065cda --- /dev/null +++ b/Assets/Editor/Tests/TestFileCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 064578b627c24b20bf936bf824721a81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Sharing/FileCache.cs b/Assets/Scripts/Sharing/FileCache.cs new file mode 100644 index 0000000000..47e6cf1cbf --- /dev/null +++ b/Assets/Scripts/Sharing/FileCache.cs @@ -0,0 +1,178 @@ +using System; +using System.IO; +using System.Linq; +namespace TiltBrush +{ + /// + /// The FileCache is a simple cache that can store files in multiple 'filesets'. + /// The idea is that a fileset is effectively a uniquely named folder that can store files. + /// + public class FileCache + { + /// + /// Constructor + /// + /// The root path of the cache + /// The maximum size of the cache in megabytes + public FileCache(string path, long maxMegabytes) + { + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + } + + m_Root = new DirectoryInfo(path); + if (!m_Root.Exists) + { + m_Root.Create(); + } + + m_MaxBytes = maxMegabytes * 1024 * 1024; + ReadCacheSize(); + TrimCacheSize(); + } + + /// + /// Trims folders within the cache directory if the maximum cache size is breached. + /// Works on a last-accessed basis. + /// + public void TrimCacheSize() + { + foreach (var subdir in m_Root.EnumerateDirectories().OrderBy(x => x.LastWriteTimeUtc)) + { + if (m_CurrentBytes < m_MaxBytes) + { + m_Root.Refresh(); + return; + } + long subdirSize = subdir.EnumerateFiles("*", SearchOption.AllDirectories).Sum(x => x.Length); + subdir.Delete(recursive: true); + m_CurrentBytes -= subdirSize; + } + } + + /// + /// Determines if a given fileset exists within the cache + /// + /// The name of the fileset + /// Whether it exists + public bool FilesetExists(string fileset) + { + return Directory.Exists(Path.Combine(m_Root.FullName, fileset)); + } + + /// + /// Checks whether a given file exists within a fileset. + /// + /// + /// + /// + public bool FileExists(string fileset, string filename) + { + string folder = Path.Combine(m_Root.FullName, fileset); + string path = Path.Combine(folder, filename); + return File.Exists(path); + } + + /// + /// Writes a file to a fileset + /// + /// The name of the fileset + /// The file within the fileset + /// File bytes + public void Write(string fileset, string filename, byte[] data) + { + string folder = Path.Combine(m_Root.FullName, fileset); + string path = Path.Combine(folder, filename); + DirectoryInfo subdir = new DirectoryInfo(folder); + bool createDir = !subdir.Exists; + if (createDir) + { + Directory.CreateDirectory(folder); + } + else + { + subdir.LastWriteTimeUtc = DateTime.UtcNow; + } + File.WriteAllBytes(path, data); + m_CurrentBytes += data.LongLength; + if (createDir) + { + m_Root.Refresh(); + } + TrimCacheSize(); + } + + /// + /// Read all the bytes from a file in a fileset + /// + /// The fileset + /// The file + /// All the bytes from the file + public byte[] Read(string fileset, string filename) + { + string folder = Path.Combine(m_Root.FullName, fileset); + string path = Path.Combine(folder, filename); + return File.ReadAllBytes(path); + } + + /// + /// Read the bytes from a file in a fileset as a stream + /// + /// fileset + /// filename + /// A stream of the bytes in the file + public Stream ReadStream(string fileset, string filename) + { + string folder = Path.Combine(m_Root.FullName, fileset); + string path = Path.Combine(folder, filename); + return File.OpenRead(path); + } + + /// + /// Delete a file in a fileset + /// + /// Fileset + /// File + public void DeleteFile(string fileset, string filename) + { + string folder = Path.Combine(m_Root.FullName, fileset); + string path = Path.Combine(folder, filename); + FileInfo file = new FileInfo(path); + m_CurrentBytes -= file.Length; + file.Delete(); + } + + /// + /// Delete a fileset + /// + /// Fileset + public void DeleteFileset(string fileset) + { + string folder = Path.Combine(m_Root.FullName, fileset); + DirectoryInfo subdir = new DirectoryInfo(folder); + m_CurrentBytes -= subdir.EnumerateFiles("*", SearchOption.AllDirectories).Sum(x => x.Length); + Directory.Delete(fileset, recursive: true); + m_Root.Refresh(); + } + + /// + /// Deletes the entire cache. + /// + public void Clear() + { + m_Root.Delete(recursive: true); + } + + public long CacheSize => m_CurrentBytes; + + private DirectoryInfo m_Root; + private long m_MaxBytes; + private long m_CurrentBytes; + + private void ReadCacheSize() + { + m_CurrentBytes = m_Root.EnumerateFiles("*", SearchOption.AllDirectories).Sum(x => x.Length); + } + } +} diff --git a/Assets/Scripts/Sharing/FileCache.cs.meta b/Assets/Scripts/Sharing/FileCache.cs.meta new file mode 100644 index 0000000000..d77ca352f7 --- /dev/null +++ b/Assets/Scripts/Sharing/FileCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddd12e6ee0b04c72ad52fe1829c5d225 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 8c3abcd9fc9263eeb6850f32d4539db87732ef3b Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Wed, 8 Feb 2023 18:51:53 -0800 Subject: [PATCH 02/38] WIP Downloading cache that will either fetch or load local or remote files. --- Assets/Editor/Tests/TestDownloadingCache.cs | 76 +++++++++++++++++++ .../Editor/Tests/TestDownloadingCache.cs.meta | 3 + Assets/Scripts/App.cs | 3 + Assets/Scripts/Sharing/DownloadingCache.cs | 56 ++++++++++++++ .../Scripts/Sharing/DownloadingCache.cs.meta | 3 + 5 files changed, 141 insertions(+) create mode 100644 Assets/Editor/Tests/TestDownloadingCache.cs create mode 100644 Assets/Editor/Tests/TestDownloadingCache.cs.meta create mode 100644 Assets/Scripts/Sharing/DownloadingCache.cs create mode 100644 Assets/Scripts/Sharing/DownloadingCache.cs.meta diff --git a/Assets/Editor/Tests/TestDownloadingCache.cs b/Assets/Editor/Tests/TestDownloadingCache.cs new file mode 100644 index 0000000000..196ccf4f91 --- /dev/null +++ b/Assets/Editor/Tests/TestDownloadingCache.cs @@ -0,0 +1,76 @@ +using System.IO; +using System.Linq; +using Assets.Oculus.VR.Editor; +using NUnit.Framework; +namespace TiltBrush +{ + [TestFixture] + public class TestDownloadingCache + { + private DownloadingCache m_dlCache; + private FileCache m_Cache; + private string m_Path; + + private const string kLocalFile = "file://TestData/main_1.png"; + private const string kRemoteFile = "http://openbrush.app/assets/icon.png"; + + [SetUp] + public void Setup() + { + m_Path = Path.Combine(Path.GetTempPath(), "FileCacheTest"); + if (File.Exists(m_Path)) + { + File.Delete(m_Path); + } + if (Directory.Exists(m_Path)) + { + Directory.Delete(m_Path, recursive: true); + } + m_Cache = new FileCache(m_Path, 1); + m_dlCache = new DownloadingCache(m_Cache); + } + + [TearDown] + public void Teardown() + { + if (Directory.Exists(m_Path)) + { + Directory.Delete(m_Path, recursive: true); + } + } + + [Test] + public async void LocalFileLoads() + { + var bytes = await m_dlCache.Read("test", "logo1", kLocalFile); + Assert.That(bytes != null); + Assert.That(bytes.Length == 32983); + } + + [Test] + public async void RemoteFileLoads() + { + var bytes = await m_dlCache.Read("test", "logo1", kRemoteFile); + Assert.That(bytes != null); + Assert.That(bytes.Length == 32983); + } + + [Test] + public async void RemoteFileIsStoredInCache() + { + var bytes = await m_dlCache.Read("test", "logo1", kRemoteFile); + Assert.That(m_Cache.CacheSize == 32983); + } + + [Test] + public async void RemoteFileCanBeLoadedFromCache() + { + var bytes = await m_dlCache.Read("test", "logo1", kRemoteFile); + var bytes2 = m_Cache.Read("test", "logo1"); + Assert.That(Enumerable.SequenceEqual(bytes, bytes2)); + var bytes3 = await m_dlCache.Read("test", "logo1", kRemoteFile); + Assert.That(Enumerable.SequenceEqual(bytes, bytes3)); + } + + } +} diff --git a/Assets/Editor/Tests/TestDownloadingCache.cs.meta b/Assets/Editor/Tests/TestDownloadingCache.cs.meta new file mode 100644 index 0000000000..63b74e0f24 --- /dev/null +++ b/Assets/Editor/Tests/TestDownloadingCache.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a804d95b31bd499e9e08354bc616fc98 +timeCreated: 1675906363 \ No newline at end of file diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index b7eab2a4cf..f2cfe7ba64 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -18,6 +18,7 @@ using System.IO; using System.Linq; using System.Net; +using System.Net.Http; using System.Reflection; using System.Runtime.CompilerServices; using UnityEngine; @@ -75,6 +76,8 @@ public partial class App : MonoBehaviour "All your " + kAppDisplayName + " files have been moved to\n" + "/sdcard/" + kAppFolderName + ".\n"; + public static HttpClient HttpClient = new HttpClient(); + public enum AppState { Error, diff --git a/Assets/Scripts/Sharing/DownloadingCache.cs b/Assets/Scripts/Sharing/DownloadingCache.cs new file mode 100644 index 0000000000..be00365a41 --- /dev/null +++ b/Assets/Scripts/Sharing/DownloadingCache.cs @@ -0,0 +1,56 @@ +using System.IO; +using System.Linq; +using System.Threading.Tasks; + +namespace TiltBrush +{ + /// + /// Cache where remote or local files can be requested, and remote files will be cached. + /// Local files will just be read directly. + /// + public class DownloadingCache + { + /// + /// Constructor + /// + /// File cache + public DownloadingCache(FileCache cache) + { + m_Cache = cache; + } + + // TODO: I think this needs to store metadata about where the file came from. + // and do something about files that have changed etc + + /// + /// Read a file from a location. If the file does not exist, it will be cached + /// at the given fileset and filename. + /// + /// Fileset to store/retrieve + /// Filename + /// Location to load - should be http(s):// or file:// + /// Task that returns the bytes for a file. + public async Task Read(string fileset, string filename, string url) + { + const string fileStart = "file://"; + const string httpStart = "http"; + if (m_Cache.FileExists(fileset, filename)) + { + return m_Cache.Read(fileset, filename); + } + if (url.StartsWith(fileStart)) + { + return File.ReadAllBytes(url.Skip(fileStart.Length).ToString()); + } + else if (url.StartsWith(httpStart)) + { + byte[] bytes = await App.HttpClient.GetByteArrayAsync(url); + m_Cache.Write(fileset, filename, bytes); + return bytes; + } + return null; + } + + private FileCache m_Cache; + } +} diff --git a/Assets/Scripts/Sharing/DownloadingCache.cs.meta b/Assets/Scripts/Sharing/DownloadingCache.cs.meta new file mode 100644 index 0000000000..65d7ea987e --- /dev/null +++ b/Assets/Scripts/Sharing/DownloadingCache.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e57a79bd52ee446cbfa9d68ed33124d1 +timeCreated: 1675749698 \ No newline at end of file From ba42ce3a71b5138593be77625a374c19a276667e Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Tue, 21 Feb 2023 21:01:19 -0800 Subject: [PATCH 03/38] WIP AsyncSketchSet --- Assets/Editor/Tests/TestBrush.cs | 2 +- Assets/Scripts/Save/DiskSceneFileInfo.cs | 3 +- Assets/Scripts/Save/FileSketchSet.cs | 2 +- Assets/Scripts/Save/SaveLoadScript.cs | 6 +- Assets/Scripts/Save/SceneFileInfo.cs | 5 +- Assets/Scripts/Save/SketchCatalog.cs | 5 +- Assets/Scripts/Save/TiltFile.cs | 145 +++++++------ .../Scripts/Sharing/AsyncWrapperSketchSet.cs | 195 ++++++++++++++++++ .../Sharing/AsyncWrapperSketchSet.cs.meta | 3 + Assets/Scripts/Sharing/DriveSync.cs | 2 +- .../Scripts/Sharing/GoogleDriveSketchSet.cs | 4 +- Assets/Scripts/Sharing/ISketchSetAsync.cs | 23 +++ .../Scripts/Sharing/ISketchSetAsync.cs.meta | 3 + Assets/Scripts/Sharing/PolySketchSet.cs | 6 +- Assets/Scripts/Sharing/RemoteFileInfo.cs | 50 +++++ Assets/Scripts/Sharing/RemoteFileInfo.cs.meta | 3 + Assets/Scripts/Sharing/RssSketchSetAsync.cs | 45 ++++ .../Scripts/Sharing/RssSketchSetAsync.cs.meta | 3 + Assets/csc.rsp | 3 +- 19 files changed, 433 insertions(+), 75 deletions(-) create mode 100644 Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs create mode 100644 Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta create mode 100644 Assets/Scripts/Sharing/ISketchSetAsync.cs create mode 100644 Assets/Scripts/Sharing/ISketchSetAsync.cs.meta create mode 100644 Assets/Scripts/Sharing/RemoteFileInfo.cs create mode 100644 Assets/Scripts/Sharing/RemoteFileInfo.cs.meta create mode 100644 Assets/Scripts/Sharing/RssSketchSetAsync.cs create mode 100644 Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta diff --git a/Assets/Editor/Tests/TestBrush.cs b/Assets/Editor/Tests/TestBrush.cs index 6217c643d3..92a3e3eeb5 100644 --- a/Assets/Editor/Tests/TestBrush.cs +++ b/Assets/Editor/Tests/TestBrush.cs @@ -121,7 +121,7 @@ public static List GetStrokesFromTilt(string path) metadata = serializer.Deserialize(jsonReader); } - using (var stream = file.GetReadStream(TiltFile.FN_SKETCH)) + using (var stream = file.GetReadStreamAsync(TiltFile.FN_SKETCH).Result) { var bufferedStream = new BufferedStream(stream, 4096); return SketchWriter.GetStrokes( diff --git a/Assets/Scripts/Save/DiskSceneFileInfo.cs b/Assets/Scripts/Save/DiskSceneFileInfo.cs index 8d9703e05a..36d1c1071d 100644 --- a/Assets/Scripts/Save/DiskSceneFileInfo.cs +++ b/Assets/Scripts/Save/DiskSceneFileInfo.cs @@ -14,6 +14,7 @@ using System; using System.IO; +using System.Threading.Tasks; using UnityEngine; using Newtonsoft.Json; #if USE_DOTNETZIP @@ -238,7 +239,7 @@ public void Delete() /// Returns a readable stream to a pre-existing subfile, /// or null if the subfile does not exist, /// or null if the file format is invalid. - public Stream GetReadStream(string subfileName) + public async Task GetReadStreamAsync(string subfileName) { if (!Valid) { diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 4c74882ece..40c1588da9 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -30,7 +30,7 @@ public class FileSketchSet : SketchSet /// Synchronously read thumbnail. Returns null on error. public static byte[] ReadThumbnail(SceneFileInfo fileinfo) { - using (Stream s = fileinfo.GetReadStream(TiltFile.FN_THUMBNAIL)) + using (Stream s = fileinfo.GetReadStreamAsync(TiltFile.FN_THUMBNAIL).Result) { if (s == null) { return null; } byte[] buffer = new byte[32 * 1024]; diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 151ac8c7cd..e3c3592ff5 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -517,14 +517,14 @@ private void NotifySaveFinished(SceneFileInfo info, string error, bool newFile) static public Stream GetMetadataReadStream(SceneFileInfo fileInfo) { - var stream = fileInfo.GetReadStream(TiltFile.FN_METADATA); + var stream = fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA).Result; if (stream != null) { return stream; } else { - return fileInfo.GetReadStream(TiltFile.FN_METADATA_LEGACY); + return fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA_LEGACY).Result; } } @@ -695,7 +695,7 @@ public bool Load(SceneFileInfo fileInfo, bool bAdditive = false) var oldGroupToNewGroup = new Dictionary(); // Load sketch - using (var stream = fileInfo.GetReadStream(TiltFile.FN_SKETCH)) + using (var stream = fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH).Result) { Guid[] brushGuids = jsonData.BrushIndex.Select(GetForceSupersededBy).ToArray(); bool legacySketch; diff --git a/Assets/Scripts/Save/SceneFileInfo.cs b/Assets/Scripts/Save/SceneFileInfo.cs index 6f28ae3710..ddf4b803d8 100644 --- a/Assets/Scripts/Save/SceneFileInfo.cs +++ b/Assets/Scripts/Save/SceneFileInfo.cs @@ -13,6 +13,7 @@ // limitations under the License. using System.IO; +using System.Threading.Tasks; namespace TiltBrush { @@ -23,7 +24,7 @@ public enum FileInfoType None } - /// SceneFileInfo is a reference to a tilt file stored somewhere, and accessed via GetReadStream. + /// SceneFileInfo is a reference to a tilt file stored somewhere, and accessed via GetReadStreamAsync. public interface SceneFileInfo { FileInfoType InfoType { get; } @@ -63,7 +64,7 @@ public interface SceneFileInfo bool IsHeaderValid(); /// Get a stream for a specific part of the file. Subfilenames are defined in TiltFile. - Stream GetReadStream(string subfileName); + Task GetReadStreamAsync(string subfileName); } } // namespace TiltBrush diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index e813aeed74..d4cab10d9e 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System; using System.IO; using UnityEngine; @@ -24,6 +25,7 @@ public enum SketchSetType Curated, Liked, Drive, + Async, } // SketchCatalog.Awake must come after App.Awake @@ -63,7 +65,8 @@ void Awake() m_Sets = new SketchSet[] { new FileSketchSet(), - new FileSketchSet(App.FeaturedSketchesPath()), + //new FileSketchSet(App.FeaturedSketchesPath()), + new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), new PolySketchSet(this, SketchSetType.Liked, maxTriangles, needsLogin: true), new GoogleDriveSketchSet(), }; diff --git a/Assets/Scripts/Save/TiltFile.cs b/Assets/Scripts/Save/TiltFile.cs index 26bad41c85..11ebb9e957 100644 --- a/Assets/Scripts/Save/TiltFile.cs +++ b/Assets/Scripts/Save/TiltFile.cs @@ -14,7 +14,9 @@ using System; using System.IO; +using System.IO.Compression; using System.Runtime.InteropServices; +using System.Threading.Tasks; using UnityEngine; #if USE_DOTNETZIP using ZipSubfileReader = ZipSubfileReader_DotNetZip; @@ -258,11 +260,19 @@ private static void RecursiveUnsetReadOnly(string directory) } } - private string m_Fullpath; + private readonly string m_Fullpath; + private readonly Uri m_Uri; public TiltFile(string fullpath) { - m_Fullpath = fullpath; + m_Fullpath = fullpath ?? throw new InvalidDataException("TiltFile path cannot be null."); + m_Uri = null; + } + + public TiltFile(Uri uri) + { + m_Uri = uri ?? throw new InvalidDataException("TiltFile URI cannot be null."); + m_Fullpath = null; } private static TiltZipHeader ReadTiltZipHeader(Stream s) @@ -281,93 +291,108 @@ private static TiltZipHeader ReadTiltZipHeader(Stream s) /// Returns a readable stream to a pre-existing subfile, /// or null if the subfile does not exist, /// or null if the file format is invalid. - public Stream GetReadStream(string subfileName) + public async Task GetReadStreamAsync(string subfileName) { - if (File.Exists(m_Fullpath)) + Stream stream; + if (m_Fullpath != null) { - // It takes a long time to figure out a file isn't a .zip, so it's worth the - // price of a quick check up-front - if (!IsHeaderValid()) - { - return null; - } - try - { - return new ZipSubfileReader(m_Fullpath, subfileName); - } - catch (ZipLibrary.ZipException e) + // If we have been initialized with a filename, it could point to a .tilt file + // or a directory - if it's a directory we just hand a stream to the subfile back. + if (Directory.Exists(m_Fullpath) && IsDirectoryHeaderValid(m_Fullpath)) { - Debug.LogFormat("{0}", e); - return null; + string fullPath = Path.Combine(m_Fullpath, subfileName); + try + { + return new FileStream(fullPath, FileMode.Open, FileAccess.Read); + } + catch (FileNotFoundException) + { + return null; + } } - catch (FileNotFoundException) + else { - return null; + stream = File.OpenRead(m_Fullpath); } } + else + { + stream = await App.HttpClient.GetStreamAsync(m_Uri); + } - string fullPath = Path.Combine(m_Fullpath, subfileName); - try + if (stream != null) { - return new FileStream(fullPath, FileMode.Open, FileAccess.Read); + ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: true); + var zipEntry = archive.GetEntry(subfileName); + return zipEntry?.Open(); } - catch (FileNotFoundException) + return null; + } + + public bool IsDirectoryHeaderValid(string path) + { + if (Directory.Exists(path)) { - return null; + // Directories don't have a header but we can do some roughly-equivalent + // sanity-checking + return (File.Exists(Path.Combine(m_Fullpath, FN_METADATA)) && + File.Exists(Path.Combine(m_Fullpath, FN_SKETCH)) && + File.Exists(Path.Combine(m_Fullpath, FN_THUMBNAIL))); } + return false; } public bool IsHeaderValid() { - if (File.Exists(m_Fullpath)) + if (m_Fullpath != null) { - try + if (File.Exists(m_Fullpath)) { - using (var stream = new FileStream(m_Fullpath, FileMode.Open, FileAccess.Read)) - { - var header = ReadTiltZipHeader(stream); - if (header.sentinel != TILT_SENTINEL || header.headerVersion != HEADER_VERSION) - { - Debug.LogFormat("Bad .tilt sentinel or header: {0}", m_Fullpath); - return false; - } - if (header.headerSize < HEADER_SIZE) - { - Debug.LogFormat("Unexpected header length: {0}", m_Fullpath); - return false; - } - stream.Seek(header.headerSize - HEADER_SIZE, SeekOrigin.Current); - if ((new BinaryReader(stream)).ReadUInt32() != PKZIP_SENTINEL) - { - Debug.LogFormat("Zip sentinel not found: {0}", m_Fullpath); - return false; - } - return true; - } + return IsHeaderValid(File.OpenRead(m_Fullpath)); } - catch (UnauthorizedAccessException) + return IsDirectoryHeaderValid(m_Fullpath); + } + else + { + // TODO: Fix this! + return true; + } + } + + public bool IsHeaderValid(Stream stream) + { + try + { + var header = ReadTiltZipHeader(stream); + if (header.sentinel != TILT_SENTINEL || header.headerVersion != HEADER_VERSION) { - Debug.LogFormat("File does not have read permissions: {0}", m_Fullpath); + Debug.LogFormat("Bad .tilt sentinel or header: {0}", m_Fullpath); return false; } - catch (IOException) + if (header.headerSize < HEADER_SIZE) { - // Might be a temporary thing (eg sharing violation); being conservative for now + Debug.LogFormat("Unexpected header length: {0}", m_Fullpath); return false; } + stream.Seek(header.headerSize - HEADER_SIZE, SeekOrigin.Current); + if ((new BinaryReader(stream)).ReadUInt32() != PKZIP_SENTINEL) + { + Debug.LogFormat("Zip sentinel not found: {0}", m_Fullpath); + return false; + } + return true; } - - if (Directory.Exists(m_Fullpath)) + catch (UnauthorizedAccessException) { - // Directories don't have a header but we can do some roughly-equivalent - // sanity-checking - return (File.Exists(Path.Combine(m_Fullpath, FN_METADATA)) && - File.Exists(Path.Combine(m_Fullpath, FN_SKETCH)) && - File.Exists(Path.Combine(m_Fullpath, FN_THUMBNAIL))); + Debug.LogFormat("File does not have read permissions: {0}", m_Fullpath); + return false; + } + catch (IOException) + { + // Might be a temporary thing (eg sharing violation); being conservative for now + return false; } - return false; } - } } // namespace TiltBrush diff --git a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs new file mode 100644 index 0000000000..e2016e8af3 --- /dev/null +++ b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs @@ -0,0 +1,195 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using FluxJpeg.Core; +using UnityEngine; +namespace TiltBrush +{ + public class AsyncWrapperSketchSet : SketchSet + { + private ISketchSetAsync m_Async; + private Task m_Init; + private Task m_LoadingIcons; + private Task m_Refreshing; + private List m_SketchPages; + private Dictionary m_CachedIcons; + private int m_LookAhead = 40; + private bool m_FeedExhausted; + private ConcurrentQueue m_IconsToLoad; + + public AsyncWrapperSketchSet(ISketchSetAsync async) + { + m_SketchPages = new List(); + m_IconsToLoad = new ConcurrentQueue(); + m_Async = async; + } + public SketchSetType Type => SketchSetType.Async; + + public bool IsReadyForAccess => m_Init is { IsCompleted: true }; + + public bool IsActivelyRefreshingSketches => m_Refreshing is { IsCompleted: false }; + + public bool RequestedIconsAreLoaded => m_LoadingIcons is { IsCompleted: true }; + + public int NumSketches => m_SketchPages.Sum(x => x.Length); + + public void Init() + { + m_Init = m_Async.InitAsync(); + InitAsync(); + } + + private async Task InitAsync() + { + await m_Init; + m_Refreshing = FetchSketchesToAtLeastAsync(0); + await m_Refreshing; + } + + public bool IsSketchIndexValid(int index) + { + return index < NumSketches; + } + + public void RequestOnlyLoadedMetadata(List requests) + { + foreach (var item in requests) + { + m_IconsToLoad.Enqueue(item); + } + if (m_LoadingIcons == null || m_LoadingIcons.IsCompleted) + { + m_LoadingIcons = LoadIcons(); + } + } + + private async Task LoadIcons() + { + var loadingTasks = new List(); + while (m_IconsToLoad.TryDequeue(out int index)) + { + var sketch = GetSketchAtIndex(index); + if (sketch.Icon == null) + { + loadingTasks.Add(LoadSketchIcon(sketch)); + } + } + foreach (var task in loadingTasks) + { + await task; + } + } + + private async Task LoadSketchIcon(RemoteSketch remoteSketch) + { + var url = remoteSketch.SceneFileInfo.FullPath; + var tilt = new TiltFile(url); + using (var thumbStream = await tilt.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) + { + Texture2D icon = new Texture2D(2, 2); + var memStream = new MemoryStream(); + await thumbStream.CopyToAsync(memStream); + icon.LoadImage(memStream.ToArray()); + remoteSketch.Icon = icon; + } + } + + private void FetchSketchesToAtLeast(int index) + { + if (m_Refreshing?.IsCompleted == false) + { + return; + } + m_Refreshing = FetchSketchesToAtLeastAsync(index); + } + + private async Task FetchSketchesToAtLeastAsync(int index) + { + int totalIndex = index + m_LookAhead; + while (!m_FeedExhausted && totalIndex > NumSketches) + { + var newPage = await m_Async.FetchSketchPageAsync(m_SketchPages.Count); + if (newPage.Length == 0) + { + m_FeedExhausted = true; + return; + } + m_SketchPages.Add(newPage); + } + } + + public bool GetSketchIcon(int index, out Texture2D icon, out string[] authors, out string description) + { + FetchSketchesToAtLeast(index); + var sketch = GetSketchAtIndex(index); + icon = sketch.Icon; + authors = sketch.Authors; + description = "DESCRIPTION NOT IMPLEMENTED"; + return true; + } + + private RemoteSketch GetSketchAtIndex(int index) + { + for (int page = 0; page < m_SketchPages.Count; page++) + { + int pageLength = m_SketchPages[page].Length; + if (index < pageLength) + { + return m_SketchPages[page][index]; + } + index -= pageLength; + } + return null; + } + + public SceneFileInfo GetSketchSceneFileInfo(int index) + { + return GetSketchAtIndex(index).SceneFileInfo; + } + + public string GetSketchName(int index) + { + return GetSketchAtIndex(index).SceneFileInfo.HumanName; + } + + public void DeleteSketch(int index) + { + // do nothing + } + + public void PrecacheSketchModels(int index) + { + // TODO: Later, my friend - later. + // I would like to make sketches contain all their models rather + // than support all that guff. + } + + public void NotifySketchCreated(string fullpath) + { + // Do nothing? + } + + public void NotifySketchChanged(string fullpath) + { + // Do nothing? + } + + public void RequestRefresh() + { + // Not sure we have to do anything here + } + + public void Update() + { + // Not sure we have to do anything here + } + + public event Action OnChanged; + + public event Action OnSketchRefreshingChanged; + + } +} diff --git a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta new file mode 100644 index 0000000000..3a693b91b3 --- /dev/null +++ b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2586b6c1311c4511a574a98bd633cb21 +timeCreated: 1675922406 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/DriveSync.cs b/Assets/Scripts/Sharing/DriveSync.cs index ad8c68ed2e..592d62cfbf 100644 --- a/Assets/Scripts/Sharing/DriveSync.cs +++ b/Assets/Scripts/Sharing/DriveSync.cs @@ -986,7 +986,7 @@ private async Task UploadItemAsync(Transfer transfer, CancellationToken token) { var hints = new DriveData.File.ContentHintsData(); var fileInfo = new DiskSceneFileInfo(path); - using (var thumbStream = fileInfo.GetReadStream(TiltFile.FN_THUMBNAIL)) + using (var thumbStream = await fileInfo.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) { var thumbBytes = new byte[thumbStream.Length]; int read = await thumbStream.ReadAsync(thumbBytes, 0, thumbBytes.Length); diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index 023eb8aa79..d40759da25 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -119,9 +119,9 @@ public bool IsHeaderValid() return true; // TODO } - public Stream GetReadStream(string subfileName) + public Task GetReadStreamAsync(string subfileName) { - return m_TiltFile.GetReadStream(subfileName); + return m_TiltFile.GetReadStreamAsync(subfileName); } public IEnumerator LoadThumbnail() diff --git a/Assets/Scripts/Sharing/ISketchSetAsync.cs b/Assets/Scripts/Sharing/ISketchSetAsync.cs new file mode 100644 index 0000000000..79dd39b237 --- /dev/null +++ b/Assets/Scripts/Sharing/ISketchSetAsync.cs @@ -0,0 +1,23 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public class RemoteSketch : Sketch + { + public SceneFileInfo SceneFileInfo { get; set; } + public string[] Authors { get; set; } + public Texture2D Icon { get; set; } + public bool IconAndMetadataValid => Authors != null && Icon != null; + } + + public interface ISketchSetAsync + { + public string Name { get; } + + public Task InitAsync(); + + public Task FetchSketchPageAsync(int page); + } +} diff --git a/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta b/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta new file mode 100644 index 0000000000..871213e9f1 --- /dev/null +++ b/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: de4fff3cd7174ab9bb15c3fa98e48417 +timeCreated: 1675912821 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index 243ad6281d..6de2358527 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -19,6 +19,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using Newtonsoft.Json.Linq; namespace TiltBrush @@ -902,9 +903,10 @@ public bool TiltDownloaded // Not part of the interface public int? TriangleCount => m_GltfTriangleCount; - public Stream GetReadStream(string subfileName) + public Task GetReadStreamAsync(string subfileName) { - return m_DownloadedFile.GetReadStream(subfileName); + return m_DownloadedFile.GetReadStreamAsync(subfileName); + } // Not part of the interface diff --git a/Assets/Scripts/Sharing/RemoteFileInfo.cs b/Assets/Scripts/Sharing/RemoteFileInfo.cs new file mode 100644 index 0000000000..d70d517d4b --- /dev/null +++ b/Assets/Scripts/Sharing/RemoteFileInfo.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public class RemoteFileInfo : SceneFileInfo + { + private string m_humanName; + private Uri m_Uri; + private TiltFile m_TiltFile; + + public RemoteFileInfo(string url) + { + m_Uri = new Uri(url); + HumanName = m_Uri.Segments.LastOrDefault(); + + } + + public RemoteFileInfo(Uri uri) + { + m_Uri = uri; + HumanName = m_Uri.Segments.LastOrDefault(); + + } + public FileInfoType InfoType => FileInfoType.Cloud; + public string HumanName { get; set; } + public bool Valid => true; + public bool Available => m_TiltFile != null; + public string FullPath => m_Uri.ToString(); + public bool Exists => true; + public bool ReadOnly => true; + public string AssetId => null; + public string SourceId => ""; + public int? TriangleCount => null; + public void Delete() + { + throw new System.NotImplementedException(); + } + public bool IsHeaderValid() + { + return true; + } + public Task GetReadStreamAsync(string subfileName) + { + return App.HttpClient.GetStreamAsync(m_Uri); + } + } +} diff --git a/Assets/Scripts/Sharing/RemoteFileInfo.cs.meta b/Assets/Scripts/Sharing/RemoteFileInfo.cs.meta new file mode 100644 index 0000000000..52a12481e8 --- /dev/null +++ b/Assets/Scripts/Sharing/RemoteFileInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3164928a15404f76896593dcceb4ed81 +timeCreated: 1676183002 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/RssSketchSetAsync.cs b/Assets/Scripts/Sharing/RssSketchSetAsync.cs new file mode 100644 index 0000000000..dbfd6bba74 --- /dev/null +++ b/Assets/Scripts/Sharing/RssSketchSetAsync.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Xml; +using System.ServiceModel.Syndication; +using UnityEngine; + +namespace TiltBrush +{ + public class RssSketchSetAsync : ISketchSetAsync + { + private Uri m_Uri; + public RssSketchSetAsync(Uri uri) + { + m_Uri = uri; + } + + public string Name => "RSS Feed"; + public async Task InitAsync() + { + // might as well do all the work when getting the page + return; + } + public async Task FetchSketchPageAsync(int page) + { + Debug.Log($"Fetching rss stream {m_Uri.AbsoluteUri}"); + await using var stream = await App.HttpClient.GetStreamAsync(m_Uri).ConfigureAwait(false); + Debug.Log("Got stream"); + using var xmlReader = XmlReader.Create(stream); + Debug.Log("Loading feed"); + var feed = SyndicationFeed.Load(xmlReader); + var sketches = new List(); + foreach (var item in feed.Items) + { + var sketch = new RemoteSketch(); + var tiltUri = item.Links[0].Uri; + sketch.SceneFileInfo = new RemoteFileInfo(tiltUri); + sketch.Authors = item.Authors.Select(x => x.Name).ToArray(); + sketches.Add(sketch); + } + return sketches.ToArray(); + } + } +} diff --git a/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta b/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta new file mode 100644 index 0000000000..e6cab2e80f --- /dev/null +++ b/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 70dd25a5f5464d57a719261e662266b0 +timeCreated: 1676514670 \ No newline at end of file diff --git a/Assets/csc.rsp b/Assets/csc.rsp index ac56334b55..5176d39193 100644 --- a/Assets/csc.rsp +++ b/Assets/csc.rsp @@ -1,3 +1,4 @@ -nowarn:0649,618 -r:System.IO.Compression.dll --r:System.IO.Compression.FileSystem.dll \ No newline at end of file +-r:System.IO.Compression.FileSystem.dll +-r:System.ServiceModel.dll \ No newline at end of file From 80324be2a722a085921618adfdf8e6f7f6839a8a Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Tue, 21 Feb 2023 21:41:15 -0800 Subject: [PATCH 04/38] Pull in Resource System --- Assets/Scripts/ResourceSystem.meta | 8 + Assets/Scripts/ResourceSystem/Author.cs | 9 + Assets/Scripts/ResourceSystem/Author.cs.meta | 3 + Assets/Scripts/ResourceSystem/DotTiltFile.cs | 85 ++++++++++ .../ResourceSystem/DotTiltFile.cs.meta | 11 ++ Assets/Scripts/ResourceSystem/Editor.meta | 3 + .../ResourceSystem/Editor/BrowserWindow.cs | 43 +++++ .../Editor/BrowserWindow.cs.meta | 3 + .../Editor/FilesystemSketchTests.cs | 55 +++++++ .../Editor/FilesystemSketchTests.cs.meta | 3 + .../Editor/IcosaCollectionTest.cs | 36 ++++ .../Editor/IcosaCollectionTest.cs.meta | 3 + .../ResourceSystem/Editor/TestFiles.meta | 8 + .../Editor/TestFiles/SketchSet.meta | 8 + .../Editor/TestFiles/SketchSet/Sketch 1.tilt | Bin 0 -> 88873 bytes .../TestFiles/SketchSet/Sketch 1.tilt.meta | 7 + .../Editor/TestFiles/SketchSet/Sketch 2.tilt | Bin 0 -> 88873 bytes .../TestFiles/SketchSet/Sketch 2.tilt.meta | 7 + .../Editor/TestFiles/SketchSet/Sketch 3.tilt | Bin 0 -> 88873 bytes .../TestFiles/SketchSet/Sketch 3.tilt.meta | 7 + .../Editor/TestFiles/SketchSet/Sketch 4.tilt | Bin 0 -> 88873 bytes .../TestFiles/SketchSet/Sketch 4.tilt.meta | 7 + .../Editor/TestFiles/SketchSet/Sketch 5.tilt | Bin 0 -> 88873 bytes .../TestFiles/SketchSet/Sketch 5.tilt.meta | 7 + .../TestFiles/SketchSet/SubSketchSet.meta | 8 + .../SketchSet/SubSketchSet/Sketch 1.tilt | Bin 0 -> 88873 bytes .../SketchSet/SubSketchSet/Sketch 1.tilt.meta | 7 + .../SketchSet/SubSketchSet/Sketch 2.tilt | Bin 0 -> 88873 bytes .../SketchSet/SubSketchSet/Sketch 2.tilt.meta | 7 + .../SketchSet/SubSketchSet/Sketch 3.tilt | Bin 0 -> 88873 bytes .../SketchSet/SubSketchSet/Sketch 3.tilt.meta | 7 + .../SketchSet/SubSketchSet/Sketch 4.tilt | Bin 0 -> 88873 bytes .../SketchSet/SubSketchSet/Sketch 4.tilt.meta | 7 + .../SketchSet/SubSketchSet/Sketch 5.tilt | Bin 0 -> 88873 bytes .../SketchSet/SubSketchSet/Sketch 5.tilt.meta | 7 + .../Editor/TestFiles/TiltFileTest.cs | 22 +++ .../Editor/TestFiles/TiltFileTest.cs.meta | 3 + .../ResourceSystem/FilesystemSketch.cs | 47 ++++++ .../ResourceSystem/FilesystemSketch.cs.meta | 3 + .../FilesystemSketchCollection.cs | 72 ++++++++ .../FilesystemSketchCollection.cs.meta | 3 + Assets/Scripts/ResourceSystem/IResource.cs | 22 +++ .../Scripts/ResourceSystem/IResource.cs.meta | 11 ++ .../ResourceSystem/IResourceCollection.cs | 9 + .../IResourceCollection.cs.meta | 3 + .../ResourceSystem/IcosaSketchCollection.cs | 154 ++++++++++++++++++ .../IcosaSketchCollection.cs.meta | 3 + Assets/Scripts/ResourceSystem/RemoteSketch.cs | 40 +++++ .../ResourceSystem/RemoteSketch.cs.meta | 3 + .../Scripts/ResourceSystem/ResourceLicense.cs | 107 ++++++++++++ .../ResourceSystem/ResourceLicense.cs.meta | 3 + Assets/Scripts/ResourceSystem/SubStream.cs | 91 +++++++++++ .../Scripts/ResourceSystem/SubStream.cs.meta | 3 + Assets/Scripts/Sharing/RssSketchSetAsync.cs | 2 +- 54 files changed, 956 insertions(+), 1 deletion(-) create mode 100644 Assets/Scripts/ResourceSystem.meta create mode 100644 Assets/Scripts/ResourceSystem/Author.cs create mode 100644 Assets/Scripts/ResourceSystem/Author.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/DotTiltFile.cs create mode 100644 Assets/Scripts/ResourceSystem/DotTiltFile.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs create mode 100644 Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs create mode 100644 Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs create mode 100644 Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt.meta create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs create mode 100644 Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/FilesystemSketch.cs create mode 100644 Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs create mode 100644 Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/IResource.cs create mode 100644 Assets/Scripts/ResourceSystem/IResource.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/IResourceCollection.cs create mode 100644 Assets/Scripts/ResourceSystem/IResourceCollection.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs create mode 100644 Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/RemoteSketch.cs create mode 100644 Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/ResourceLicense.cs create mode 100644 Assets/Scripts/ResourceSystem/ResourceLicense.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/SubStream.cs create mode 100644 Assets/Scripts/ResourceSystem/SubStream.cs.meta diff --git a/Assets/Scripts/ResourceSystem.meta b/Assets/Scripts/ResourceSystem.meta new file mode 100644 index 0000000000..04fc79bcff --- /dev/null +++ b/Assets/Scripts/ResourceSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: db094910b10a5c74380dc693c6120d1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Author.cs b/Assets/Scripts/ResourceSystem/Author.cs new file mode 100644 index 0000000000..5035b52d47 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Author.cs @@ -0,0 +1,9 @@ +namespace TiltBrush +{ + public class Author + { + public string Name; + public string Email; + public string Url; + } +} diff --git a/Assets/Scripts/ResourceSystem/Author.cs.meta b/Assets/Scripts/ResourceSystem/Author.cs.meta new file mode 100644 index 0000000000..dbb4d3e009 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Author.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3268aa379cf1446aa74e8c90490675b1 +timeCreated: 1676596646 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs new file mode 100644 index 0000000000..d7f420307e --- /dev/null +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -0,0 +1,85 @@ + +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using UnityEngine; + +namespace TiltBrush +{ + public class DotTiltFile + { + [StructLayout(LayoutKind.Sequential, Pack = 2)] + private struct TiltZipHeader + { + public uint sentinel; + public ushort headerSize; + public ushort headerVersion; + public uint unused1; + public uint unused2; + } + public const uint TILT_SENTINEL = 0x546c6974; // 'tilT' + public static ushort HEADER_VERSION = 1; + public static ushort HEADER_SIZE = (ushort)Marshal.SizeOf(); + + private IResource m_Resource; + + public DotTiltFile(IResource resource) + { + m_Resource = resource; + } + + public bool ReadAndVerifyTiltHeader(Stream stream) + { + var reader = new BinaryReader(stream); + var headerBytes = reader.ReadBytes(HEADER_SIZE); + if (headerBytes.Length != 16) + { + Debug.Log($"Could not read Tilt file header - expected {HEADER_SIZE} bytes - got {headerBytes.Length}."); + return false; + } + + GCHandle gcHandle = GCHandle.Alloc(headerBytes, GCHandleType.Pinned); + var header = Marshal.PtrToStructure(gcHandle.AddrOfPinnedObject()); + if (header.sentinel != TILT_SENTINEL) + { + Debug.Log($"Tilt File sentinel incorrect - expected 0x{TILT_SENTINEL:X}, got 0x{header.sentinel:X}."); + return false; + } + if (header.headerVersion != HEADER_VERSION) + { + Debug.Log($"Unsupported Tilt File header version - expected {HEADER_VERSION}, got {header.headerVersion}."); + return false; + } + if (header.headerSize < HEADER_SIZE) + { + Debug.Log($"Tilt File header error - header size too small - expected {HEADER_SIZE}, got {header.headerSize}."); + return false; + } + if (header.headerSize > HEADER_SIZE) + { + stream.Seek(header.headerSize - HEADER_SIZE, SeekOrigin.Current); + } + gcHandle.Free(); + return true; + } + + public async Task GetSubFileAsync(string filename) + { + var stream = await m_Resource.GetStreamAsync(); + if (!ReadAndVerifyTiltHeader(stream)) + { + return null; + } + var subStream = new SubStream(stream); + var archive = new ZipArchive(subStream, ZipArchiveMode.Read); + var entry = archive.GetEntry(filename); + if (entry == null) + { + return null; + } + + return entry.Open(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs.meta b/Assets/Scripts/ResourceSystem/DotTiltFile.cs.meta new file mode 100644 index 0000000000..6a83f0125d --- /dev/null +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: de0b0c34724253c4bb4c855038c82c4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor.meta b/Assets/Scripts/ResourceSystem/Editor.meta new file mode 100644 index 0000000000..8e28564e11 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2bab5f915fbb4888b79bbc3c1abac2bf +timeCreated: 1676603917 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs b/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs new file mode 100644 index 0000000000..939457bd45 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; +using UnityEngine.UIElements; + +namespace TiltBrush +{ + public class BrowserWindow : EditorWindow + { + private ScrollView m_Feeds; + private ScrollView m_Items; + + [MenuItem("Tools/Resources Browser")] + public static void ShowMyEditor() + { + // This method is called when the user selects the menu item in the Editor + EditorWindow wnd = GetWindow(); + wnd.titleContent = new GUIContent("Resources Browser"); + } + + public void CreateGUI() + { + rootVisualElement.Add(new Label("Testing")); + var top = new VisualElement(); + top.style.flexDirection = FlexDirection.Row; + rootVisualElement.Add(top); + var main = new VisualElement(); + main.style.flexDirection = FlexDirection.Row; + rootVisualElement.Add(main); + m_Feeds = new ScrollView(ScrollViewMode.Vertical); + main.Add(m_Feeds); + m_Items = new ScrollView(ScrollViewMode.Horizontal); + main.Add(m_Items); + } + + public void Refresh() + { + + } + + } +} diff --git a/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs.meta b/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs.meta new file mode 100644 index 0000000000..c9fad89b71 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/BrowserWindow.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a743eadcd1ed4e689a3b9c5469b3018d +timeCreated: 1676850038 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs new file mode 100644 index 0000000000..5213624ac0 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityEditor.VersionControl; +using UnityEngine; +using Task = System.Threading.Tasks.Task; +namespace TiltBrush +{ + [TestFixture] + public class FilesystemSketchTests + { + + [Test] + public void CreateFilesystemSketchFromTilt() + { + var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + } + + [Test] + public void FilesystemSketchUriIsCorrect() + { + var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + Assert.AreEqual(fileSketch.Uri, new Uri($"file://{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt")); + } + + [Test] + public async Task FilesystemSketchCollectionEnumAsync() + { + var collection = new FilesystemSketchCollection($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet", "Test"); + await collection.InitAsync(); + Assert.AreEqual(collection.Uri, new Uri($"file://{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet")); + Assert.AreEqual(collection.Name, "Test"); + var contents = new List(); + await foreach (var resource in collection.Contents()) + { + contents.Add(resource); + } + Assert.AreEqual(contents.Count, 6); + Assert.AreEqual(contents.Count(x => x is IResourceCollection), 1); + + var subdir = contents.FirstOrDefault(x => x is IResourceCollection) as FilesystemSketchCollection; + await subdir.InitAsync(); + + contents = new List(); + await foreach (var resource in subdir.Contents()) + { + contents.Add(resource); + } + Assert.AreEqual(contents.Count, 5); + } + } +} diff --git a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs.meta b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs.meta new file mode 100644 index 0000000000..36c5a7317b --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8f85c38182d6447bba8437377762698e +timeCreated: 1676603947 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs new file mode 100644 index 0000000000..d61ce3e1ad --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs @@ -0,0 +1,36 @@ +using System.Net.Http; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityEngine; +namespace TiltBrush +{ + [TestFixture] + public class IcosaCollectionTest + { + private HttpClient m_HttpClient; + [OneTimeSetUp] + public void OneTimeSetUp() + { + m_HttpClient = new HttpClient(); + } + + [OneTimeTearDown] + public void OneTimeTearDown() + { + // m_HttpClient.Dispose(); + } + + [Test] + public async Task TestIcosaCollection() + { + var collection = new IcosaSketchCollection(m_HttpClient); + await collection.InitAsync(); + var enumerator = collection.Contents().GetAsyncEnumerator(); + for (int i = 0; i < 10; ++i) + { + Assert.IsTrue(await enumerator.MoveNextAsync()); + Assert.IsNotNull(enumerator.Current.Name); + } + } + } +} diff --git a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs.meta b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs.meta new file mode 100644 index 0000000000..875d07e05a --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1234b0fa76c24057b94038ac9e3c1e43 +timeCreated: 1676704868 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles.meta new file mode 100644 index 0000000000..f03978d140 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90472c928d31e5e4994368682d9ae0b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet.meta new file mode 100644 index 0000000000..0a05775e89 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8cd0aed31a556c24d85e0e19951dad81 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt.meta new file mode 100644 index 0000000000..6d675298ee --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 1.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eeebae9311d5951489757bc6e712ee8f +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt.meta new file mode 100644 index 0000000000..f330859f42 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 2.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bdd351afba5f73c4db711cc11987c7d4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt.meta new file mode 100644 index 0000000000..b5dc9f9d31 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 3.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 78a899a4dce23da46bb1b382d9340700 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt.meta new file mode 100644 index 0000000000..b527e29a36 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 4.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f346163cac32cb64ea9b6522d6751155 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 zcmbT92UL{HvbIMA%!)ZHii#3dFoA%r7%(6L0un@FW*7z|A|MDT7*G@tQOqJrFahQS zQwEHfa{#lL6JkPzzsh|$_uM_T@Adw!wb$C=+5Pob{Z{qc^|ct}Kgn4~QcY6z%V9)y z&Dy{J!SCSoG2JfdAB(Lck&o!W1ykPNG7=r1!imUSz=cBWI!Il3P{)|k0_Z%XsgK}YgN)=(L3 zAGT%bl$Kk!XPb|WHTb?^@q@hY0bB2VwYc@V_uU}x4QqF_uA%SpHDLeRUh5n0a!W7p zGgXZ{IeFGHGe`T2*@ZLhCw~v|uIP}yXTaT0xgKpgjXhuJ9rgX*M9Zz8Q;*(=>8x*} zxae!)SU+*fYWw%wY#oOiyEZSB70uXoy>R}am|b4)(w7FCrG%vSsyte7O7&JgDn&0P ze*Dj`4{Xv0rDs2{J^ApPUHi_5m+WfS=GT=Whub~%4Kka!eO$|gMxncFUH%#v(a!07 zkXUx}dvL=m89M`25T4Devrt zXWAM$PIWQ}F--q@zkG4H;aiisNm0MbzZS~^+v|NuZmjElCT&l*>mxQE`L<~6#bIJ> zn!(Ob5i>vD`84&g+v{yB#@_F+&#_N{y?^-Tteq}b_qp5cZMtTi$&n!a&sGnvP29X? zhhy5k^W)NWO|Jz<{dl&~=DE^C>(KEHL+7907oMY<{CbeqhPLh>%|CaHe7vcC{) ztOnaxG(Vf2b$;%<6-Qt7e158NiSxu2Dc{ovL4eYv_-gPiTlxY-tEbM;Zht7g--(<@n25-yr?@6Yni)YgYFO+}!Q!qi`q3`pt~D*j|{L&|>woRR8tb zj$s@3T$2~S`*h&e!qa7sdL2mU=$AQQ*0$U|FKYGtv^+JisB~UdRCBYCJ*J~tFN?oX zS<(3Y;x7l*6~9k3`!wE5x!y#y8oe>_rp3U3rPlHvGuvN}C>k1<-qm=9f$4^bcJJqv zY@RvY`*~o>_bWFBjb7+8bW`P+{E1CpjcdREhus&0Wp^&jnLY1%VbQhhBVHDxq7S@W zKG%J#v*F2IZ=UShe#Lov=hpjt%*Ic!)qURk@Gs@F-EG(Qx~iw2G9JEVY+qN~$;BhR zncb36saBVKUwTBPoBp!1GP?C+Z}Hay9?!>~k2x?k@>TYWQR_1z!Qy_}yz_`3&UfjZHcYj~q zi1ka~6t8V~c}$e$y8svCSB*QD7tXY~TeM2|NJ7VuHW~@Fmu9{!{gpM|#%#FP)Whx1 zcD*-yi205}FX?Fm_qQkVyfeG34Ql_(>*l)6m0!LDAM#X1RYtBVU;gHX?d9cdDsyA3 z&1;;y?_c*q-;S%>)q5xVa`KnOitLz!8EJhp1BPr1sSJj$X%Mm1^7)Gf8ApyBY0%y} zFZ}B}>pNKo?#8y5IdsJHS0l3;Xm&2S`Q0mjiqZSmBc3kQzIA%G!PIM$fBg{N!?Pbp z+%D<;>GIT07ma4g8>hawIc@5$*U1XAfbv0>jla|lbKP-k$Z(%0+uE;g99I$ArE!A* zy}ZPYX};k;6QATI1npU0S61J)?-2R8cW=t_&*ttq&YCq_ zbw;zRU#j-I`;8k7ir2Szd$d95eY4`%zs7HW**yMPrAFJq7ABY8MjW}2qbfHT8kKB& z`PPs8#SbDX%kR17+zTFFKE88n&5RB@4O+GSnqrd|zv-lT><{x(iYDQjT|U>$^;`F` z+~4ozmlf85kH0+GSaEQVYNW>UMxhlyzZbr*Z1mM)+n3`HG6J+};lEUDjtZYpa&-Tq zb&Klk6_r;F=Pug#_DX~In=;>@esxgCX62UPi(^wS&iyrd;l-Ju<)h|Es%dD})X^QF z_BY+b=cd@~sB|rQ(?f#)eS)>d=SnfjrvBbat0~sHLo6)kzU}8Q@PXzkudXeoHPk8B zUpnvg?0c1K?e*WzIb~z=P&|AxWKcjs<;;Zk&P&F1-#d47an7%qiK8bMR%o^}bWpu% z2$`*I49aguBsf-{mERu|mb0u@&4Psdlan>7_bcoW`eoM2%u$)O{yn#K!yX=Sjj|q7 zxTf>JXZyif!@8!WYWB}=+qZ8wZ2zu}_ZLm$i_e~4sd24dXxld@_8q$$+$QJfft<)C z7wfHR@T6_hhK9_${(HQ?{mn(Uhb1K?OTu$r4{fyS{nu)bEe(hEyng<=mZwo>;G{n|NA6H>pgVsP=6*IITDw% z+%%4gq|Mb7kZCtacsAyg4*insEEk3%(?@~t3CQtq;h<+U&=6`?i&3yfr_nJSt zm+s2E*8XF}j@wzUO`FAy`8xXfe+FQ{oTJmKy?giIR!BmG+siWrY<=^jxoKu#m!&bkV{qP8*Si1WO!Gazgnm@FVAUq?A(0Ug zZB6}Mw%_RALH^5U%7)CMERSkaWA?Y2G4k|2n+;kguO2x(qyMi{Be~`Irx)u!qMCQz zji>y-&R;e6`ScQ-x;-2&O!>DE{y+Za=pcas=~s;m%c4J{L`HO8n;V_ho6eOtvmH?U4_8|j7rZ38Qr%%kk-8vxqNfqGyYmW z8lK+Xr<=sq(iytA+qAn+MrC~-RB3v7-hxS8HE(L%dcEa(zd8jm13W99G)t*;+wjRj zO}KsMA1(Jvy?5_ksNNlqGno!IOB7l+H&*|4^SxqpQv83dENbxRbj_RZHQHw8AKJg$ z%_whS?_0~K7X4TB?Dcfo-`JS(XxxFr6`ewF)_vYR6#x0exT{0|qv)M7&V90cLVIQW zkK~ta`FCHp_UMHR7Y@xF7gcNIzzL^oOkCa~MXdAGRcW+xefM+u8^50cZz^lNS~`B) zGvBN*bl4KR!S=S<11CiPcgtSb=ta=TVbvt`7rJ(dbYjp%lNkZBAYa9W^x%_P^nd>A zmvhzMNaol`{^PF;=g(Ww|62WD|NYF6W7f6a-F{__|9mmF8Z2rd6}Myh5BPAtKPHdZ}uX-OuMUs9NJZXuYnEwuTT9aS zx+W|#l8UQyY*=O}GSL&XACAb^c{9A zGYOeDW{p4@Di!mu3}=~GWRmS0!GJlqrrIM}X7j%o?}buft2>HifSxs=5o9fu3Zs_x zEOQT;E)N^RiRDr;to~@0`HDssI$0a`XQJjk9a$z3nX7lTq55{5a|O>FMy9Tr2Dt5%iZ)SB>^M)6 zad`hrrO1|wktcXYa!*SVyQWMv37K;*c%~aN(DJn^e}`1$7xIh~GDdcfRJu54lifTM zfsC!uZB?HvsnGM~nM`Dc*1V$Hj4|AIj(_(n$e1iCR28q6iihQVoXe3p*ZquY_DZQ3 z@|0h%PDNUhnAIm$@$pjeV-K$ldt~yqA6Mz24%e^dH5Q6Yy%R@OSE8iiN+hq`tf_IZ4Ih)qHJPhs+_Tld9&Uq+;VTzDAuwCT8+! zRUfQ}+Npf4dymYBk7rbx19877ZGYuqM zsW(*qJ*A?X2|u6x$TYSoR^|1U3g^Q-^A?$wBc7@b^u^lpmS>tj(vmzheWM!JPb!9% z@QgraL8s5Egg#PnGK^=G$b36luBweOjF<4t0%Wegs#Lx0fy^}i-P4fy&|d=vnn=a- z^Lz|d$Xwp93I1I%Pp|O%`wJSUObf>7Nk#B4-X}DCtR+dhtqD)sN(GqkOad}jH&p}C zS}NK;9ou`9eqyP-WJx8 zn%WXm*-uqwU8(rA&O(hLpVLB1TQa-nXVt`-QemgVGoz8I%zUGosx1|JpY~(NS%{2| z%yknu6*pLG|R(JQa3KGeWi&EXkMZEZInp?7yfM!!YAYD_(;Xt|qb5|9~SaX|I7fmHM{{cG+1GtM+l>l)gU zgNb`oyPHUb*-xI)sHH7w)FW3F*b?=2@-LnIeVnz(Y*?^I<=+fzqm4Q<-{-AW<2u@Z ztdm;33K}&=y5XP`s{W{fHQws)_)xd0b!0Ad}=M zfivHHMS+x$;UZ*$bu?gcg|9HN9XK4zajrB;*LXiMhRlfXKh|9+v)(A-9}#h8zmKpoV7kPjb+!^pTykU&S&|Md_) zo~6j#H?CA&MExsb_;u;qPFoV*t3q}7ldrH|$*=EJWS&@lQ`JMAygSe9Ee#W+^Jth0qcU35AZuYpI%ct%vHA{tADWFoKO@g~|5t-Ie;5m=w~-|>v8 zskY>jWtl3ul~lN<@q0m=?%I-lXWpsw+DXMzTlG3mF`SCb+=!Q|VI8Ex`Xk|Gs!))CF6TMQ#EZa6;4j-^KqI~!`iavpX;jCuf%F zJQnNB9dB^BBNf}s#^<z7Bj7&k%0O|Z)gq}dkK^N$ip)0A2j1Sm^Y{lo&bN`de#0ExP^;d?JfkyCTk^%g9NM7fgWUKv z?T3uJjyY%@M{f|wYr_|rr#9x`ktY>hlU&*LT8fOKk2%=v!#s`VwOWA8&u}v^%f=eD zjL(ao$ZWV|23c8B@j9E&udeRsA&bob(r}+T$LHy2WUPCe!{BvNF{Xge_gToS>DdeX zupXM_@pWS}GW~1xhS|%cBH}(@e=Z;sd$c#KT7ta@?1gf5>?<-$-1@+3?1@z~J)*e9d%2M*DDYXb~nAI|N^Q6On0FitjZ;DjdD}I)56Oio?C&>m;c- zHjUpeDv@cY>IM3KQqg}IzwZq8L=R)x8*1Qws(Xmvzm6kgGNKQx@sf&q&-i^X#0&HN zZZDYPA{BM(@JtCZBOjZ=#L?Iju;ce!i}ARB9WsMtJM7y}SKr@hPq~K7z=P(HF+wWV zVvp|c>lJi#iq*IYf9@-WEt%y;x3?tsdxO0U_xexjaoA<3ZygY%Eh!&s0iyz>qPqhh z&+0R^C7pg*!Gg(BvAqe;xFS>EUqAx(JnMAjna9YS>ogdAgQTKqHJ%w0tS#A*Fbra6 zVqYs=ea;lCW60cHHUa{XS!KvG)*;%G$4l&C3^GS@`L)YKrgz{NXpGEubDrrJihk*h z6D&d9TCU>PcRw<7E{=r*=(`p_QeQiobLUw&j;R~mn<5n*`}53=Fsx}OU7;Mu>9$^- zNsaDhZ8Q7NHLzjwy88`K0#{u|z!KDOulcrWx*C&nyuVvAdP~VLD07gCT|Lwpnt!Vm z+LFk(gJ1^gb5!LZwQ-2?MrQU!8@P}C;VUipaZ-@Uy)E-t1T(X?hZz-Qc<>&&qv8F)M|+- z_>Gl{)amMsX`MK$(A|HQYp3bn#lQN@x%cbBm~S%S*=WIlUrj9F;-&Qb?T@zRU$-;1 zp+0l5s3~b;Sr7EfWMb&*`DzU1+I?iKFV}_Z?_~no^UMQed~EB1-D{bUubsz^^AMS7 zH|m4g3z?W{$up0TF{#-Ibe_pX+Lah~oX5ymTxtqmAIpSCG|xOirsLR_u=AlzJTu{$ zr^rb9wE_JHGV!P^ntj$YWC|+VLmo0?OL?XQnR(87kp4&}I<(-Q^&FYQ{`z3{R3>VT z){7H15Jxb7V! z{F=T&W^t@BNWRO&r%0Z8i_G=<#<1h3OgwqXGw+Zo7+?%t%4NcIlR86v=J&|__3MBB z)<)W{`qtL}rvcdhl8MkJ>e{AnZKUm10o`CM&i}}E_2*V;+x=o^5MN~Cj*MqW+jV0* zKmo?;xC76Sw&VAnty3yN?p zmOkbg(sr1%I<&4P7g<9Wvbjdu)~>4sbt`4ULQ|cgZ*8RQKh;Uq_lN;rU11B(-!fl4 zR`flBbaHo)A-u;p9Enh8s&vvj!4Mkax*V&=Go+KWI79gS0dr~KGSh0dW=$M=zGNP8u&Y)|9jq5 zeUFH3+!d0rMvaJ7ACtaEP&|jNGlY(gRr-hCQ1mgPc9Ko+0#q*-A5p4V+6Qgr@hT>TsZUCDqa9!&0 zI;VK<-l-3161gxP%QKXB?|eFgUv;^7o5M4dcMdx{LZOyiJgcUj3lu}jyWVwl;YAI( z=r@9ADDONq+kuy+Ts(NsKa2A2;=Q(T4CkD-NS&eY5&xIGtGe^4eZdGOV!j)0R3DS> ze3DLnzA^?EZMkTn&(EK{$M9Pw;9o~BBKGhM>Ewk$cbM2fE*iIsWorxRWQ(c?G;Ast z(t|uhIw}3!6Z~4r#W~|e>^P(o$BE{!yRBS!ZsHlz$;}_Vpi@V=uxzoI9fx$%b4DL{ z)Pgau-aBG?w#ft@*WwbR#0cST-^4FXU8G$ zG3~n*NJh&=`Foxr?{V>?6^wV1i<6TQ*m1~vyjf`l>s{qy&vTw3@8Nv6Kiu|^iyqQM zcAO8$3_D~A7T&0_b3F4AnZ>33AjC&5)|xJ3$0?<85_^N4OfK3jfB%gcTaVI)AxnJCtX>AoH_B7YIk@kUP(OMdtB@4q%AS zl8oY+Z^(QLX#>yXa#2t4%y(o~J#P;AQp}51JX4O$n=wsb=0v%ec9DPgAIRK|ZwTYO z5(xnX|YRL!$wEBXfTLpDv-&mRSyD2$;GjKynZT?Nv>ZP zMh%k-gRVRy8Hif#SqDr8$%XzJUeDE#*$=fr*BbM^4$o*Hlbc%`B>m(fWEP)a)scxD zQU|u0$;I7bK9@C-No`*jJWNnyf@idl(b2C5OS{QM#csZ~Xd_eBxjr=SEEn@kc%}w2 zn#K*FRtLH0y^pVTHIX^@vH?uPx_V$Z&(uO@N~R7tV}16x!q?u~$OJWP2$fCbLOAhE z9c0R;>p+2yTr4T(_ky~}M0eBy|GGGi56{#?ChL16aKL@%V+POEM@FYdGdR~sE}nkp znFh$btKJG;;NBEr!_Qd<8I!oSAZsoc_HI1W5E*$y2l$LkFK3=n_6Y04ykE*Q|uA)nK8jSCnbmWhYD>J0TW$>;oOu2p@9a_%1pqfg1iyAkTKqVG_Y zYpY&OfoqsYC(8Jk)0raejuIMS9<@~Q4CR{pAvw4nl8M#Vc!qMV(E%SgxlbnAz2zCo zHQVpwVG-q8ZS^_R`cke980G&$OyyqNNOO$Kzn)cwoS0>DAt26W+igN8wwN!OqPU$%V63)xSq3-JM zNcZJPOKsi-LE|ejkt*Tek+d{VHw4b!z&_g^o*^v-eF=p}cV*(#YCaC6rM>OK!2N+t zgbVd|q*#%b_NIix%O^51B%5bQOKx9ggB$ja8n>Fu#*?&^YZwLE?_}ajGS85fbiC() zQz_>7XPzM~rP|DecSSztJI!XGlxo5Cc8Yw{-0=pB;zl z_Ebd-bVC1QwvlJ3ZhtI`hMDN2hBa8gjze{O#k^>Ei=M4!49`&A{@x)PrnSOnedZae z+c&c2LJ<1ryO9goXHnf=+h#6Aw#W17Yo4LH?Vy+gL(!{uagSxkp}O7VNhCbN{zlm~ zo}u%pwrVy+>&Zo+*&=ovI-gETo&{HM9J_@)L+4ZLOEV!v7oW9{XXt!tzhyeK#&>^m zk!R?9TJmW!XuCr<{0>rF zk7ww7YWsB@T*Cf#;u>BXbUxMW=?+)1CcNmzGju*})W;o4v9=^_;7yTI2UI-hDb#`U@*6YD4P44qF;?el`TTll@{GhYwse0nO| z3+`OQZ$LA7hR&yVO}(J>5}rGL@%5R`r{*&};d>#TJK}hT&Zm-Lp5S{1zgaZl89JX1 zbMXW#JimO}%-?`rb|Z1)Wdr7r4V1^bFFDJVWQxMll|6AN|Sn5$X)xm!tFPpZbcb z`*KYpy`VqFN;XzK4s>6Re8rTH6QJU(OzfMl&d~hHSFBtsg+lZvTm5;4d_}yr0%l!C zA3Kw0$X8ew1i%*5lD{v{kgv!!n+nI#!wmU{wIg3qZW##GQMd2D@M}lDqN~+R7;sxA zRz~s+`HJkWq2Pl#QmV-_zt4l)!XOP9UnQ>r@)a*u%!XI^tY>@G*N$RHzM^(zB$Og! z(~xJ#SL{!Wgg5vst3Y*z?#q#{_)`s3ef#LTV+a&w%f-dGEdxG#N%KFCO$Izf+zxX*6p8DC@~4V+=n zGr5>)u#Fu@icH#ovGDmN&L@LsWXQCt=>o6b$wjcyc6J;&GL5FX!0A)<0f^1?-g=!RM}WZ%TId<{R*;sMVD zATvpGEa=wt6WSix>^PH<*?k4?uQtGOj`GZ8WIVr*fg6qd1pb6ZcAP25xGb=T^rn6y zDu!pKB2&6-I21JZ6RWTC%rs<-9uJ0YE&W7+PA>bb>BuCf4Fo`Da1WjdMCRLPE0~Q; zrr?x z{Y0~^JQIS<{`hVXhU*n$!!x18lnuDj+Qe!XTPGyZTFkXG{(H(T;d7&6kaok8=b zTqMTv`UywoOJFBB@V^f}UEy0b~mL z@=QE3fifG|ReI{ARSc%M^`kbmec&VRkA$c3_^_81{*I`5SITq-1=A+M{J9y-CZU+s5$PBq? zvr?U@@;T8@ZNO@?TpS<8Gvsr+rdh)3O>(in7tfH-sd=Ff^g!mT70-~**>Kqm+>mMQ z!ZYM^N)k-rCo-}Ko*|#}ZiXQ|NW;B;8_)dqIcfTEAKz=v9iAbdb30!Tx}?j+PMyEj zZIx(@}%2cAZrWua9*g#f$kxbP9EFogI}s#bepEmROw_` zSr_=URxW(Mq^aqR7}7~#ls?#}$b~$RXGkaQI&^~`$#Rk0m}f{QE#yYfU>V+Z*|CXz z7U?9Oq$%Sz_&yY^K z%);MWu}&@)$@w^wAHIv{puL!D)86t7`QeMJhr%G#e~(GLHpmapsW%j=qyEp_}yd3_VXGq(vF7$&g`>_6-@b!(fZGW>5%-kgxR#*9PNZTu+51ha`zYkDn=sx8C zr3O~rLzYMf!a3C5qYU*}(LH3+N$A+Y&>nRz_g81CbmF{sF#e=!T$k_s`jSoto*WGC zQ76sk@eJw2rOsgRLA{yO;u+FO*A2FyxdQJ;CGnaho%GHYa2D&yCPSVfos^xm`OTD@ zt21;DnRN1}c~^DsqF&rWIQKvf2Ln8mCqW3-}f#ko)c|jp>;9t zo5AW#RXi`WiiOMQ^Ouxms*OVo#dF_?g-~_{zvIm38H(ql&I_Ox_C{uR;TekO^(*sW zK6=!Z$1>PwQ9K8E#XuBbou9@t6i?aXxuA=_u^7GO-`}0)O!2(=B?_)!E?9Qv8Opm( zUbA64`o_!uFb?HiaI;z9i}?~K=f|PEyWTb!`XF;9muD#N45rV38u+Zmb@}*E-rbCw z4qGtCixfOVdH2qI8tg_tEQ)xB_LQ)8Qy~-2FCIhqb*DWgHhT)(#&b}!qdY@<%HiZG zPz%pfqWe}h&a|iOK0Xy%VBhTZ3Z9`oMZ+)<@=zPUUh)j}Sk7Dugml!{>T%oHXHk#E zvEEGRfm;2L!!y)l$sHO5yRo-+cAYvy_b#Z%@~630b?>6ikA=|uKHjt4n>An^=Gy6h z<(d?8jqY7gu3d6m0L|{mh4vzKrYhG?44(&O*Rba~nP({17Fk3?_sdv&LwJUA&92`Z z*o5&^%;Oo#wK;odgW@dSJxk&l%C*B9v*7h9Ja_Nm8OpVXOJ_n1=4`*0JVUvrxEBb| zkcqa~sumx5cgi)NBhx?wb@C~JXDHWd>r91OIOk6vc!qLq$h;{~hVR~4zKwkr<(l*U zDKH$hwEQa1{Py{8C&Q}icwg6gJ39{LTCKc*e|J!SM_N15lGTPKV2!=jQ+Yf?T53CTDIBcnCl+_z!N!xc)LIq~sn|zVZsr-% zlBRJ26k(q*q54jC9MaP3I*DM{+E3_3@(gLI!QMou-oa1Q`N%V*r6}iRFtUrEnC_m< zK8v(ucYYao82X9SQ#?ajni84>${v1Vn#f_tAuXA#O@fZS{e=F0o*^woL?=O<1@ag=eTYUi0T%P~dv)+`}`}8_#Mv z2WHv$iT&X`L%s2!-Vt!7pP%U7i)UsbvmrPPB<6miV+kK;>Wy184}}}Xe&T5~&x9jW zG%E!3y7`F<&3R@vGG``-!2VA74PpzgjR<5GY!88Lx_+XQInP8Q(|2zO%*UGWeLJt` zC}djH41vD*onm=Uo|%J8ZDk0I#P2ws$N2o3i%j5x5U5k%Ph7R2BY_=z5O`1&&+nc*2>P=w#h22SRg1<1S@5e~{9 zcy6l3GYgS%9u^LZ@LNW~T)t*fZ#?yU7)0Q{Q>!-5P;b0;<1mZMS%+Tc->Ww@6oP|Gk3(v*5{JulI@iq&?;1iyMylr`gdgJmf;ZP6HK|Aj9`ylnk zXX8&B3qo(XViM0#Z+yqtP$)!Skz1Q*s5hQu5ekVH@b`LbP~YEaKc(Kds`o5#yM%sn zw>m@jE~q#Dr@o@<-bJS_;c($Ge#4!p9tXO2LB68dsz}g#f&Mc|ovHGu(>u(C)35OR zQ83StuQ+fs8g}5fV7F+VAzz`|HxJIBPF_vp8S)j?rYwNuPxyPv2J;O0if5$@VIqE0 zUR;Z3$XD0|EdssIa(3ea)S!+;LpvOt zZzzP(3U!9&UxrMpm~gmVq!8|U57fpX<})&pb7#Z-#|qJV8P9w{X2_ZdP`p-%ex?uE zalRs>9TW+#KPp66CeM6BMk6K)rhHR~rR^TE<9tV^E8f@bUa1g4t9hmznO)E4fQPof zXxH{JJI)VeGA7LhRXu+pN#~iL$dnb%h0Lb@qE){q>^Q%W`D7FgdL84L3S`zS zi-t3L{=#g)Q+Aw6WJaBjhGz!;;`Aw=k?7Qsz}0A2($ilwaeu~+Qw^D48PTA$@E1;H zJfne3!x_;KC;UbDoDz1N>d1IoN5hq&{zClZ8BJs=AI^o_qx^-*%;)SlTFCf1&V}Pn z{$ln!p3z2T`x;y?H-FK|;RQQR4P-`kh=R4A{vtGoXKEtzEjS#WdHah8S})mgY9SLe z7QKp(zt9`OGqsTkjR}PAzW(BT1kcn#Cbj2O@Igkll4t57ql!{OTYT2iwLDV~nc0_Q z&=KeC9K|#Bk?H?s0(8T7S4erL0WuvIdqQ=L;eAt{(LrXK`8b&A=r6Y1;bYhk8KYA! z@M46&=&$6NM#vb<9SaR@{l&Js{F*jK#v;=h3M~D_R2!aYf=t&nPVm9ZU#!mNHP#dv z^9D}fYUD5Kwda{;$Xwm*2&X#vi{J!a^UaZYoazXEZT-bD3D2}ZW~HVRXf*Q|o>Tc8 zY>7;AV`m7)AKD15093m)?ISr?fl>pda! zi9&3a@=OP0T6uUvK(RtRd&}<^9g*2K$rGB~Qix@NJfnwO7Cd8sjB0cUd?>*=m-Fv#h>Z4?S?~ncA|;1sjF5S_ zWj5@+k9%%Eo-sz|plKw0xT6poukk*?1eu!?BB1AWg_z^dGp5KC3=e}{mldK;KXr!g zU35q0kA2R+ey-P&pYHJVphEm;Q><3c>3cf)obd-d@J@(Ayi6}rW2$`4$Q>TAb%#P! z81fAHoWzBm&@V$FYHqv7jzd1@;>7XLElnZTkLDTjIpd#91n&(B;rrn(I}Z7ry-#G& zcb!6v*vT{Gb7p7w!=cp*F<8bkodmsCp7En<+W78%|1f9rIi&@&z#&s1R%!9^A)hl`BOK1|REU*fJVQRG)zsNg zYp+6hzv3D4IgT!~;pbt6XgHl;Q}Q|5AHu=wm_j^%$1~(}+Uen0_!Q=mtGdQWKjd@H zEDeXx#}z_LN1dVX>Ev_%RNGZ|ipoBQLg&*8F)v(wOuAD<+AhIfM?0MVvHI#vm9`f< z1;L#o3Nc2-zawdTfZjAXjCnM09nX-q+l`zAQx7PF^ID!EZFjO&K=FQsxVx2SNZXg+ z`9c{og{OFiv>kic8x;7gZ!dX%W;p0hXz3XGbpgHO!B$Q`JCxQ6; z5e)Y!M0RzaA)Peq9|r5Q72?1`J~v4xubPK}PnJSh>hKKd-p{5!WTdg^xMK^Ua3Y&;!?ZSw7EDJojUN%&kBn z%37&wkMv3L)C>s)>od4F&EOe|=bWIKF#DWB%-zK^ly`~G0-+T94+}Nzf1I^7@0e*PQ&xXK&^Qv^Mzt=Zug}pvD$>v_c`IuD8^f zs`~8xa|>+7z5c|0o*|vQJ(vzUTNGlK$!&HV(#g7Z8IX&bEKBDZ(n&~826*pMh$+qP zu;Y+U)|+L*1FXGk=JO2cWObV?=zw|~p?#MfhjdaGvcL!T&G|~6A)R>EzT8wyeZlSmr50)S31v-_h>VA8-#sT2z%Z8>^S5-X71k# zRzDQt@e-aP?-A8)A-CRBgsmGGrBN<+!KU{3hGt^^Qmy!%y@vJcx_f{@G)MK$8y#mZ~(PLZj z4E0z}zgz)9c*cBug|AW6V_7(JCFG(nx~||EU1XMhSP5rwFUYIpYbNzry0%XN-Hi$n zHHT-Y$MU*<3iQEqUu6xRp&rY@;+0^#9M3+<{9ZskmgZkq!nvgi(X1`cP>-dqK?=N& zRfzjL`MrsHEN@d%pm-jhp=^1EdMw9Bt%9_<=*{l)dnNT)UY|+ai?|O@Ud{aV>Jy8Tx)lJ(fT5pX4j5zTait zOMxaBt6{$CaiH&ask> zU7|CHW$I>F7oiX*`|=EFz~g5cYzkHg*OS-TaYzG|KQ_S}%mup%JVP4zekm2w{S=~Q z*)?_?(mb`Da{5qcJR%l*w( zz}{I3(KVH4$Xn(fNrs0Z*y~uV&d{A+@|J&^YgKo8>-XIZ<+$%yd{vJX-RY%V+mp5l z3L_Pw^q4wRRc}9JZiMln3K6%4XDHXUu3Qg`Fb*eH@eJkKyya`*-4xWxYM!B7JGg5# z6ew}+*6|GGTCYnf5QO=t+Ql=JYX>z}LVyglRLnD!Yw1gpVJR}sUHJ8-T)XVG99E)E zv}W=QC?_$fq1PIPiiZ>b6#qdlE zcwpm^zj^!8{0Rkr{k)5Ac6B68cO}5ay-IQAwK_xdH$WywD-muUQi@|eHPyx;#t@l% zD-xltN-28!^NbNPxfaVnuRtks5AcjJGDe4&!ND_15%7s;OpwuWP6GD}N-@<$i=B@t zGP^aGLyxOUAp&@&J2I;_EeG3MO0i-G&-6eh(J~prij+d@1JCqC=E|;QkUUn3ll`>W z`IsS7uD=3wpDV@b2%a%V#yoWeym+k?>3KZU3z@U;SHSfTN^!oDXL=*kq25ZU{Y5E~ z>}s&{>4S{)`wDRVp%jf$c&0Bh_V-pmTS)-^JYJsZhfK+#6);*eKwN2ElYN#2GRmnd zz_w<9D0br+OJvS{N`_{21BByBp6O5Hj7Wx$^#erbGdyF3OrXPZ2y7T2OuzGtH8SlN zEdxp80CA*CEq2Z}$fU$1z)@trkKmaB$W+5SR|&{CDR@R8Q-F7Rn;?@D%rgU#N$;`< zTyf6bX7kJ-V$LmqY549hr}2y}GM?`9Ai7R~@RRe*U}QG6iH18h0>pWHo*9BnzH|=$ z43hwn-kE2HBGaZ{BrL5^3di?+oQEN^|MYD5{!J+ivUtW0ncex}VDd>Rp1bqRaAYpV zghA$8rTE#1XGS37e0~;4UnqrdA+Obu$oQDg0;4BNu_uOSMj_KkYZi3AuN3C}dBz@@ zAj?@`c1J1NeByI(G%~7IVKC^rQhZP683$y>TZO~SOG@$4jc3LnQ#W=tm=-F<{6;+E zh)nO35nz2=`JdqOGpuHYGGWOU1-Ao8eE^qa^tW047&IS0<=;ktL` z85d;4nK^LmAnq3>d<}O+CM9_e%*K63xt(X+km<2_4jAPsMe<~x8HdcCr*q-+9;Jv% z;u&{j?gYd@0M6%$if25KIWlNIbQw#CL*&5J%AGT<)&dg%4Bfks zBlD*|r|R4E^zeB2uuUndP55if;(z%ZZ}d6zZJKf_M2 zY4SOLs*|dpcailf5(;qsO$VuuN%wO|C$@8<;BksleAQNGs&wKoItr4PE5*yR{Q8nk zen{|+XaeSVEYFZmZakO+AD1Y_)p0ySItjqLxHaRH;*&nlkWLORmmROgjd+-ctd*CDd zeU6yF2jY2#v>kUh5q!2Nh4DF_A#Hy!ON7Z7&(sQ@`CSA1BtY?2^lT>Tv7$MXwh#1= z2i+Y?G0c-^NZT_`E`eq{m11B7&yco_1Kk^J|`^d$G;DYmsJ;pPn?fk0?;VQoSxOjDj?g{)~YGBp<9CNW0Vln15d#aB~ z_j5=mCy&R&Q`{@7H&th^4Nn*d|5hG(Yn4C!R!)p$6I`Flyq zGo+L6JL6%&N~O^5#xtao(}Qt;$9ke$#@7?lNtELfs7OQ){8gQy`#GeOKh3+U-uT?p zyJ3DAp0$5!i62WWAb8m3eEr25s=BodfB(D-iszNYJut6SDRfS&Gga~Y5Vi+=@r;u< zpJynZ8u`1y`ngh=j^Y`LXPt~)aOok|`8GU5@q9Qj7k1+LCGv%)+MH=V6i>VIY7o=r+t@eJjir*Rf+ zK(9M)7tc`MrDtS-5Bl@G>pVkwXE7)pOpvKjjgJrIo#CJ@ppDOJfc+)z-6`)5EZ7W_ zk1NGzInU6Za`AN1 z&gn4Vkx~SnRcEL-PCb@C&9$oD_;l+%&=Y$FTc2r(Uzls5m}^}z*Xm)eQE!}bZO8gu zcn?7-iZ7@$Rk?O&O%A*&!F@cRXDHV?E#3*mIRE&gJVUwGD0Vy4E=HeUz%!I<_cOP` zW{kP~EYDD`wJOYn_t+~4Kn?u;y{d9;O05hShxr(ZeMpX>T-&*23#d>7OPg!64CR`4 z>}Jr!aWn+aP_8ZAk_Il~AMp(3n(d=a z@DO9@+N=gUXUer_XHsDn)~hm!Izzp2%C$e$Qq_IAiy3<$`G-y z@U0dgdMB$hRa)w-*avg5pJsHNXGlv&Z1zJ#?A=}X$up#-priZY4E724_ECRFdKPKv zpz;80ZW$m-rtl1Dsanm0;MhJu#HaHN?Smic9fHg*0b;;Yo*^xjpE?AlMggKv)0*tM zkd{6t9fp#g0V2YQXGlw--HyPyzS#d<$}^;;1BZ@)unrK-Pw)(Bsa!V?dtghwFHkd{`Y=7F7KfXK?`8LHdudgZ~Ju>qpX zTb`l19hY+ij=KejMV)H1^P##OV{`-xJOV_47tc`L4m@xeipB?sVJmrt>b6eT!?4sR zK*;a%4ApIq#fLy!79j9j5<4HN+tPxA(7`W2j2^->RJW}UAAs+Q0P$)r&romt(5n5g z+&@4J%HJdgB%K_JA(VS??{+P;Wf*b1p2N5Fo05W$wH+77E70>s>6o}u3OqqSRMJ?d~Q@C^0F?{v)q zJ=C-78lJI3CjLeSZ0{c+ET{7f^~MACrNg&gn9J5YGXk0FA?YxpM}Y9I$ulF786BMt z&5Z-Zxr@AhMj=yccRILt3lO{iL5KFp6rD?l@J<0@t0O!?xxDqTUvsaYUxDdj^DIT|Mf=j>s#v;?=XeLaqjT+m>GcL%y>X-#m+%L{V@r)}n6V0>WghqfUvf&x( zjc>1+1($!J*R9So)EhU?&xGUOuvc@Auk+L!A8;fSEb;sj9?vt>8$WbC6Nce8#|17t zL%neegDhx;zU!7Q&rokX{7e=ce}(?-4ZjakZ@f%D3%)#6itBrMhI-?6A`@QRSBkUI zJVU+lrnZ?-bXO_njN}>WjbBpXIOuiVUDX-7FGs!cKlK$=_vOlhvY-XVs(N?zIM97L z@)d_VZv$WaK5IQ(ovHE_P8HjsU%67uwdNV}6{Wd5p>w5D*bm_u@)c{A<-iR5mUqU6 zXUJD98NCY>+5zIBA@D9)6?j ze2ZtuSG?+R0EXeW;C8!thJ3}1UI!r_$B``H8S)j)Lk_`3WHQF{4Ec&SeGkD8eAbF! zb%yTCk+1j@4gBZNyO?=yE9kwOBnGb372by}Kw{r7zui_@ery+$-+#`C^8~DcUAIB& zPm@I4J#~gOFcz5u0oy?T+az(WV+XZyh;cz?@4Iba^K+6oHjZapky$!tJJisaEbe9T zj2kj5K5mEU+LJ~7XFM|w8Iy<|@UZq|u}QZhJ0Evsnz!Ex;SDB>Hsg850~x~|JHfrl zWKk`ZXFQR)-YXm2TTT|5PkF`*8JjiPkkf9m=x(CN&SyL_Un{d=lip;pK9Fa;k@=~} zfqq>li}$;DW&$#P!|o{=LnZg@8QKho|4 zEQ(}n7;qaA6&O^+h=>6bEIFu5PoZMYm;;hQ2N@YKXMzf1z<^@TqL^J3fjOfnf{KY~ zCJ2HFvts;DjhFA+{W$yl-e>ndch~SzRa1Sc`t<3Up8UQ6>`EkUe9_d}cmz@h1hCgh zwDChTaCHJq8H~sD1#SG%v`RSyRzm|=hG9o?%u~^%9z6&y!va|S9<-T;W<}rquo#VG z6m8^aDtGLK!Dw!}(KN|~Q9RgT* z1Z{%R?CKK>p4I{Essn98&={QG2nOZ>tp95|4rih{5V#S3;M#FJNSj$`1lx`964&6= zDYTi5W|KL-XQ@p9yW5O5bI`~qY=kZ?0$9mSdJWD+vxk31z#xFxhSFvpngvT@Aw&|u zF4)m#KAH>mo1ja>0QUVgz5gsgqgA>Itm*|Y|Kqe-h-S+A&9I|(01FJE%_204W^v$K z0}Z3iVl?9JI5_!T&a~>%W(gXj+FRgcrJP;6Lhs>A(WF0$gQyR3)^8g=YS^gZSPj zIkR0&o0VuHV&ma5zOK>!w24MD>H8tripT4M8EsafafZXN<)fU<`$FdltI>3JJq%~w z%GspLv{{2jc_khUUdx&CNOi;Ccd-`DZ|6DxdEP}_(>Pf5P|m)XRBw~tPv?0~abO($ zc~{Q5J#9no`8?0*;1dT+bL6byA=>afr{B#u7=ByMQvGPd^BkANEpX$8oSFBa4bO8f z%-jb1uFKhv`n2JBPHgZF*mh0Ma?6a!G4niU{>WW0`l_6XmuSQDoUQr0VRwd{DGt+y z=Q)Mv_dK_7kJYFV)X~Xjz+slU_0gro~aN6)ZXD*)W`xVJqOge3No|CZZ5X>u;vqY`x z@x$|5p6BFsJp{SsayF_bZFrt@YVsji{8Y|7n^iabemc){emAzO-cz)=Nj&6Zzi~sV zx5?jA#ADkr=pZDP$e9DtZ&ePTs@e}Fg>p9JH9ZeJwuAQV1;58~rhZHt9^3a5cSF}l zxG(*K;j!&;W+!;zaar>ZYmLWt%F69f7tOYhbYDESZ!5Rrbupet>Q#U3{B`lzj#v~2 zpV72xMH?R5n-*Et!x9_D3G%~i|BTEZ0o*W z4>OC=9HR}7?S}Y%<`;M@eAZMq{5?fHwtqKHs_v&RE;#@x7{ftrs<+ASr}H?e2#AM= z7$;@5s++1fS&$SDF1TJ+U8j!=kCO|<@!*Mb^?EIBc$^G87!TiZ{pO6M4Udy1F&Nvp z-@Y=W4UdzHb_bz1-%kqZ{e;KKpUwv$>z162cv9W)`{_JRes?~r-p3M;pAA2Vd(@sf z)yKx)$HM2co9qyb&y%xLt*V=<`E1|mFm%2zXB7i!!{_sO!eMBL>n>#xZTNidi9HN@ z7*`#WXv61I{^SsJ#u#|}iZ*;cbsxmTpJlj*8__Yq=kro7){dUb+1>%P;qw_k25WII z@O(OzHhkSRYP=stVf~@)dfM=H=eKn)lvm(BpGX_N?p9mv0TJ`S*LP{d*InVT-Qe~T z_ndgz@O9V2eK)+oy>#l#>W06M<#*TJU!QlOef1_x!gKxnFRj>-U5+rcL1@b8l1C}7 zgUmF~yWnwhO@0gXv*c`!MeAy&Do&EUZi8t)?qgGE!{a2N!yTA|`}M zJpYgLwBd15?_Cbqew8z*qz#Xg2SK^;4D;ban>OT_d7KP?l?(mx8pnDXZFroFmgT`1 zyjGgIn>IX7lo#?~kWK*GR7e{hCuK=_kcQW8mU!OzzsH>)Q=WUI&B=qSjj;|hmNq>1 zu>P0}qncu!0c&(rJ3RLoG$9wdHw$2K*J;CZ58I15!0?*1W}UWVJ3RN8XrBXL!3zf z+uzQF95b)6j8C`)%h7ZjMjKvZIr#Mkl;e1U@!FP}LtbOKQ$G_{wZ{6uGTQJOOUsI@ zV2riC;%M6N8q4*j8IXxJ!xk%P!)q*SXIz2d7#li^X~SzQQ|4TTjab86IgK{F#f1-~CudzJ(3{Zk~;6|ymnTcld zO@Q8b?RFKf*{OM+h33O+fY!JV_Zdl>*=XGC)ZqOLuO(a3W)7NV{%T0WJ!*3v9rJV1 zY;jVhJ@ zud!sur9!Y;&W=B#&rQ6>qFd(@*s0_!GM+ZP#xmvXB~T^H*|?ds;Wd`6-7Z11b8;5y zL>pdX2^*IRMyK%lu|92hjb+4)RA_P>Ya?0J&+mMn=QS4f(^SYiA!lxns~dj*j@MXz zC;$BG^DYYeUxEUhE33rnW8?SlcwS-r`Z9Roap{;_-Bjfj53gT=4tRVgWzvS{70u>n zz#fc~r~i;M@Vug6@-OUX_(LVNu>?XD~>1KfFfKYssC_%d0vq< z^cH-=YX_Y*bUQq+n11&*lw)396ha%GS9sWD!3(@Ld^3VJJg?~3KO63%nc0apJg=Ct zIR|#&{$Ny#HaxE|8=eDRcujP$MRmjP-|@WScVnRHJ-vPPZ^8hq+l<~=J+AokE;KPv zaTD65%UNTO>ZU3N*1Ww5(o1-)ZA=>;11AUEg#I9Bk4syUdpnPT9G4sLDiQaA)3o6+ zATi8@ueheX7Se{tKu7g85Rc-q8%`S@1M4PUg?9(#Y^^zMcnmnqPlwNYK zdih#|%1kiCa~ybAH&tsb?)x?HOu=)(2-@(q#$Moli|3}I;k4mv&8Yke=;Lc#^AGLt zwdSXl2F1tZY>6w~4qt2AI$Q!VLC%)D(T1r(yr@_FWKEn$EP2IC$w^B=C4 z`C5y;kODn1-oCG=+u>_1@kBBN;QVASsBZXsdih$bp$VqHKktH%gGX7d|3uoQ>4DPH zrzOs9@b?bdb3989=RT|U0wT{rQc)YkBO-_1_?CXyapdEHP<@2+ARi`>h8k5jQN7!UE zK|F`1-=iGa)y*#8wxyP8?7kY{+5S(B5lwUiiR}b2kGJzaN47@G0oI3hRju|nfE9g@ zXw04VI>O=(6U1+5W;V!`nawbTi;=@sXCh7EWY`{!@ix^Fj=vr+nvC4ctlH+vOzRkc znM;W3U5-82e~Q(Z&z*Gy^``OSAT)ZmXg&#WuTzvNrnL(!hDeQx>ZT*4w;eAk(Kxu| z${zj5RrTu>rwVl(0j$n!jWPN|N4T|SoVXdy(~-Hdsi)&rqh=jYWob=>`&nZ&=7gn= zAbT-ZOhOYmDOdKXWr*t7>yxSIfEDqea1WGfSJC zD~pVBaZ=i3s9fhvg%z74H0FB`9U;H#Xi*DI#i(4FkF<$2a`1IkqZ7U`r_H^dyqz^t zG#f{WbxbEfLsWDj_5Fg%%?b_~bUVwCt5$1}zxze=b~OI*r8RwQ!W!1kK_DIkM22BgIQT z%T!+u+*Sz-*J(`BC_L_Zqs7-4tC{#Lpe}}!#94*`Dy`LfRU7v0(3l}(F%D0S7BkV9 zugQ^}0xwaK-cMyXe45Hr=a9w}j>j1D8Y3P@(=aMWwzt$@?CxTs(tBNB)nn61jR~Hl zBTQ*AR@{VUS7eTC`2x9kx$<2~REPE{oy-$8Mr(?WPTB0RgTOU&BgOOQywvI zr{l>f8WZP%YdLtFxD-u#Y>rG`;xE<>GE525ZYh=6t2M^V8|UZm`-YgFwX4S|y?N3> z8-E$Kua0If+O*e38eL>7y?$?;lpn`Fdpk-0x)&|TjTYN2QQhQwQEu8KG5>@=TRQQ% zthkepsz$uIIAp7-c=(<|^Rpp4b%oEn28$Ice|Gc2bJ?hoaVn{ysrb~mt$6C^MvZB- zOIJA5#Ywz($)Alo|6Jx#2&$~(t;O|)&BT?@PHD_>G@Y88iDOdznZo6{OdM6LYO|)1 z81z9`Onq=eV+QZm6{KyA#ChlaS;uM5WU3A|VRUvKam?&mVtV9Ljd_N~>zPE{eaN3R zu_~8kS?hzlbA_~~!At4nW8XDq`5s+iYQ4JRlJ)+q@ZeL~-a|%E%juSM%+6acJO7f%vELs z^Up>}Gc4CiqlOx4%#?k)!Y83ZYG?1yCX^J)_L<-_jVlIAcVtbHK9aT4nD1z6-Fz!O z+Ss4%dGuK3@`1r(vzpR*IZdT+=C#q7xc$1qS=aB; zbn=t2#yA|%6+Cpc#Af&`(8Yf|khQhw3p?7SC5KmT=<(s$FO!32rEMdz0Y0y|-|>60 z6DwRGChU63iKG=NEA|;_+6g+SE7b))nG>ri%md8I?5;+?9!Un?l`(1fX0h`k@+^FrGf z$l9yoRmY9HL1{N**z;hb#%wyOE9?)A6j%T7V;S9wWP{p1VhM>{Pwd%n&IT|qWtu6RDo zpWSyamu376bE^5%9#pmdfOjV!Y0M!syPwEK)9q+hJ(I2IU?43XW&@j8H}Gg=sp4y= z?@8Ui?HgsCe5AN<0PY)b^qxXvO3>8A{pJ7eMRnhJ{cSHg`eB%ux+)~B4cc^n7qQ@r z4=Z|7C^I~}DtYKkKT+px*OUo=&=F^vr{ zp^fe%J;B1dpV-}hI{T?EAp4r|SWh@~t)DoiSiw%a(dJ-*p3vT_zc_P}lKKC5Ot$l( zP*2$Ut-rWFFNC$;MjPj1J)y~l0pf|_v)P>iZ+d&>j`D1LqzM?P^R<#0ojh*3q8S0Jw)u49mX!k&?e!fp73bwP;t0^1e<9| zo61*u!ss_cMYkc#Sl3(k$-er&))Q{57$ycrEoTMOX|w)~p3u)^xVR{N1zWE}o5Htx z!o~B$#ppUwtbf8ivM=-ZdV<5q5#ko-mF&j=+RXc)C!BmfLX2M&%}$ixCELmPs3&v@ z8!4VoUd6nZ)28WXJz;MvS24YEHEUr?8_!BT!T3*CG1qP_yKy<6?Cba!Jz?YEQDUhw zhJ||3=KEJYLAP|2`0@BUW?zdo1HbDD5er9)wO_4gFLvdTeQo-oCkTdP#Kv7WvRyLT zl>F2aW*-|Pw)2Z+qaNpy?O4^22(SB&6)pE|V%iI7v#6$o+>7Q-9QC)o=&k(}@tpDa zc)k~fonJ0~YZ%K8eaw-icY5H|VS-!?+jUOm7_wcnC(mgh5zds%7nyD>GsJwAGCLbe z1h3J4;xfHh7CwhI={gcYa%H5LDT!qty3^*hu0%+-7e)O>vCREjHrbb>`eB z9LsK}&_>jk2u+(e6}LBuWzt2o@o6Lx)GKO;#Rjn~K}MTZjU~dv_jje83}ac#nzT97 zL?YPa9+w6-i)G7Gv&b<&G>`}@&n}amY97lzh0&&tp+v~Abdr8)5zD+>Xk*q)B77;! zagw!)Wp}h_~uj@*e;g&uAz;y zu|ya)@tLY)hgg;~oHkS2N`(0-+92;3%X&4Y%~}(QaAS}WoHUJPC$n#n<4J5M5lkLf z!N*Rq%y=Vh3ffDAnbZ10&n~fS)fn2;>nIVff0+QGU1Qm|X0)*|l?bgO6_DO7mQB5P zlN`^OPB_mimx7LYEX&_Qn?;=^f_wH#aQ!2e^_fJQ{aqwNgI2My$s(4WHlodqt`gz2 z=Pr0;8Oz!h+#tvEv71DgeE2Z5w~l42chRP``S0&V`{%Ye!S^Dcr;$)|>LykhaYOcg z;nx(^W-l?WRZ_~n#C%O&^us|SWW9<6qk)@P&>GrAI!XlD$4GGMwu!yiOdG@Q65+`A zNSLIviTUiI%^oz(>qNnVSF!AI0&OgMNQ7k#qhQO;ST_C)ZBo#@YmCodIv&fifj0en z;<0NP1^H`Z+29P?>CBE^Ea~2HE)u~)I=r`#tn^v zV~HEt?gq3uiss7bD9DW4$XXlFrU#SY^8upZ#k`Fy7Gs-=pL8_4yrZDOq>W6{i8ijz z5*3c5%)vPetX6r!0E90mQ_Y-F{1&?calL@1pX1-`;YHorG*zMvTy8U+!B8`$T; zv{}|0&r^|6u;=0i7Bq%7jr&LhvzREjxMu@ab)~+b1 z;j@7iC~1?3Ciq|!wCTHnjaxt)m%b9A@K_W`J8fWD5wy93X7Jf4n54ad4PHYVw|)}g zyebOjKU>ezHq+(>8q>5Wh`Y9)iF;@>yFa}b@oT)l){7b!KawU~8oq?@MI++J!+{p- z*lOb}+11F6(iVprie|_9f>VyKCNKJa0M8?R$G{%lb!_|6+p@_zZc?r94aIG22xN`x zqN!m<9+3#$j*f<;n(J7nyqmJ+>vW|{E;SG%*N%YkeYR_^Lz|wG2rY`oLdd5WcF*F5 z%-%G}sj`-~SPR4HY z^vHohus8ak#`MdO2z%Sj#m@-DF!xRwva@kvs(no!OJipBffe;GYfR1!iST?cN3YSi|Zvy>>>S>Hti9|SQz75REVwnH-4B6&+O`*f-QPMHNwV?IArW&*UnM4>q zWjD-u6T{{oxhlI^za30`*IL?SNs;PqN-K>qevRvT?SAO=Er!kedQFyi%M6Sv(w!`~ zC#l|*8*9vw4|slA7Y`S-*0Gy&GG#``?BKyNQz!i+F{;E7?KH;mt3>$O>o8nyypE|2 zZ^~LlJ3(Q;70Hd*FqPk%UnWh^7w)V%3<+)U`Xcp~Y~~ne(5ts8r4-(z^toiBX=g-T zePR5}L-4N4Iu`DKN0uz~fmH3fDxG6O%9a~#H0E&weW5})2+eKRF}u%MvY;h>AUsy8 zS`g{!bf#HLjhUveFEkmn7ZRM-vHO#9WLEjTAW=6&HD|cK^v1C!8uPiSzR-Kg4j9^d z9m|i*l^xKQ!GLM&Ri`@nNgwTNs4-!!^aX?5&G2Wxb?nECJlO){?(p_#f@*sA?b0Cq zS{kEoqAz@3u?~(6SjQZ+^JTrvtU%OFRmJa3lV-MftvT-7P4xx;;+4=5O=T2N&smqK!jp<^hFJyF!ztTttvSqCxze~BwsaHL5-n3+mIcudaO!Zg< zDQq2cQRm4f>+37y&UufMUWDly02p&zvjx?)E8h>R83efnu@g+ zFV?hk%Sm78qUR59E!MGu7df(d_K#Ji{#p><$VR*!CexUSz4V0#2~(g~$91e|d$#Ow zS(56&_4;t=g;bn$|Ep##m-o~E+rE(=xlx7t2H?ISn&tRvOvn&@&Al?VZ=u+FL5O(s zi-pMJytu2E(_iBC=mMD;O({sq})TgEOS<7O6Eg zv6%LzLiZH|VcQ5__SG*5NoQa2=a0{o?sivtPM(Fct1xo&(DU`mzrrF3Yxd zj+D;RodUx~9+9s6@~e*5w4|`p;lV(9>nlIaV_qq&1PD&@vcZ4`!nY6(FS6$kuv#D@>O%c4U?Z*c6 zzb)JJ_^fnyU>8^#*jVcA+Dq5dlS0~AqUK-=s)l}Fp?<3e3`my`>3S~Z}Nz$dq zN>q2}ZtZbm>oAS!*v(Xs&wdBvy85%-SZ}v$lPHB+Nvix5vlN?A6Evm_&FqBd;G^(o zqs?E+GKQU&1`k}Nda(9PO5}b|jfpoi6|$#4hEYfSS$FfdvTe(cNDb@BRFh5WtESBH z*BH6EsSw%kCM~r03vYzIvq&4l5omSiqSNYDHrZFciOoe_e zR)e1jK8LOKcUjLFi=`d!^pxJcyh&A~(nn*ImZn0-Zh^3&`Be7x%QxAZSPyAo(n{%J zypNRr%1vYJtV{(P9|q1f@Y&b9zsd@4GwF-aL}}RUMAcjc-Z#Yf`Gh8+s3|PD=g$mH zDrMF$jHCy9J&|_3pQbvyX@JHgTAK>mUyD>f_v3e|Z~P#OT>IW>4XZ2aNbac4F7K%^ z^KDFpxD)$Swfz0r;f`-)XSN=6N-b+9rhU4ndgj|rW1MVF1t0SnDzP1YCtd9qvWjiC zPLkrz;)pqgs+FF<>i>eBsZi9fhw5CuAN%27Dtm6K?(tY~6z482QFT08SJTb~GNN` zI;E>Vd=T2Q27{g-KsmZPaK%<-gZhuW82 zWVd9C-!)cUFLD#N%zdEx@YGCWGSDo)^Hw!ul`q@>^O~&BG<((DBc5VUootoQ;ft56~`H57!;gUsWXnVDd zhSyPRSbF1IvKD5#(g?u^S{ofwS?>O|myVTo6=oSngYS;jENS&ES#(iB&*GE8&_*Z1 zY5n)LDjoygXcF2)!=sa{*pUXeNfV5w&?p+lq(!sc%l@4)z;?^!kG#Ge9Fl*l&vajDYiH6azG9;X} zFQ(f`#J(z;MnjzyVXTE)F4@=bns(UEf~}!U`##;y73^!AK{UKSwv>Gzok#ZdyC%9x zG)zlf!Yc02?c`uz>c-JfoV%D649O?^`d#y>Q8b*%Uc|Dm((M#uU)|8``?`RoyWA!F z`d#Cu9}OE!=Cj0$bUSabuMLuD2U%zYWU^|V*2e84r>2^9}Up?waLyaZ)95bUwWM98)rfWyT+XMd0 z8o#fTIv3bsU%zt>>W1f_%Wns6;O8JM>rfbZWetlSdrM~drkS*ZuN9Jf$+5;9==xxbQ~h>>G-fKAE6$&|GlI5-Xccza=D0HxkVoilCvaj{n zSBI&gu&rMt8#m+MnL0tCU@&0?iz}kr*^Pab%n60)faUA~ezzTUEPmHqS`rF%7cXN* z_+5llJIArFeJes?K}-ajVwdx;OxW5`__#Nm?ZWq8QGKbfFR#s^F#T*8D{hwiuS~C9 zp-_?$%G%>~H`Uj5?8_uR6ec}b%6#w|_TQKqCqg0b)e?39zyFkK=N|S|crFx%)>y*I zAO1UYK^+QdjTf^nL-WbL%CN6p>7lT2&_X6x|2wnzRw&44%x6a}?~;9e#J=3}Lt)~^ zx$O1se`iGe9+1IFvzbMcdt_g=26h$Nl!by*!Auq${_o7sict8YP6+$+Bi&9T?CbHT zP%!SIWFLI*ljHeaqxu;NdP8S0`@3{IZLqKHT4C^08OUZ2ctG~`yJmr27`)yTz|JSp z?U-R-6Ai=QamqCIrQ1WYuirIJZNlJIkw24er`zd?eNpG2=jEAyyAC?{?zB`Gvc-#^ zgX~q|u&2ga7Fu~zcJk!tluc{K!>6+~VCL`#nmW&Obyp$cLO9s!tzkEUZ^@h*DpY#j z(?DEzD|v6NU7B-HC7QfT;c%tZYS#QUZL}_Q6*{Gd!-OuYn9sD^WIMlWW?u`3m-hG` zj8eKC1MKU{jc{1hXC?dUeuwPqca7nlaA-6#iuHL&x6=;$^34f{eN!UYnz31AU%zY4 z=7)p*^cC!W7Tt~|_NDzG9Inn=&N>avCj0tbGxl*fOj@ywDX-G)h}hS`qHw6#7{OBd z=SU%zV{--Scwy(P@qo%L_#l>3>jBx< z@0zhqBB0S_1#7#AZs#cWbnireKST3>?+ZlKza;%@EzYP*8*yrI*QssLD#AxX#{JXJ9~zK^ZU)x2SHyo=a&M(K{%5;8rrmpVNS`JvNZKEC)Y0%VQ0}sX?)L2 zjcHxeL8vQCg1DwJETq+S+0~JEo$8nPz_rdX(pza;HD-J*2VrcoHJ8WUUFLHH7{fWZy$KIW1P*$!nRX_>APzI_dqCe(bWIVWbq(r8qGJObXjVyrF87(VEEE# zigbtSqNcVvq@IIdma-CdU|&r?Uy(gME|ne~I|GVF_LHXf?I-2!L}@$Vebsd^O%lWG zEYoEc!TqI%%4zW2!(7^X(MF9)ukRo@9FKz`hA}MnO1f-D%@NYpl^&3@ypc4_=8DGD zY3Lx#%HIi}a1P!6%#a=GHC7r~b1X!fK67f2^g&~sbsU5rP4|OVml!sy;;L+5$BELW zM+d;JgaoH<>A&t}EYful>RTQH9orZ-+3&h+?v6>)u5EijcHDTUq*fg?b>?I}2O<4) z0<4n7ux)xbWLk$ON}j*xUSldH4uZkZqo6$~hMl@|Q+9CRIBBa!O`-EP zljLpf`)Q0_BM0Go`=ju4bPRj3?Y8Vz9hc;%irlBA3cMAhX{U>!gYaj}4!9f~!#2j|$>vY! zDE*REOEt1xdsQdhSsLTh%t4qe+YFLfF|2P0-ZyO5RC+1*dGdv9sp|d4*&4H_xr5+1 zE(Si##CytL@?~XxYD=HE$2e6?AER32^Q)bL77juvz6WLo_BFokU0Lhrg-%QL{*V?W z1gJVJR%+U5-O54ORXYs!2I9IX%a>)|I_I=x$qH$+gNs#nUj4eaGQPEg@NN2BNcD?h zTZiY%njVjK+FF??eIi+*dUxs9eVkY$2O-!9@2BG&>U-tMKGkw|YV21gWtFQ{JzI^{ z^p)MlK?vIA3H9+iBIi^E>F>~++m7Bq@`yKji9R$~a2~c}r3^P2DEelCB z>S4CdNR0WpNp&vIQPa*469=K-;V4)t#;_c1yw={dFIm>xQtV!Pi|X1MQ;msg=OFa9 z90^)BF)YR9w(Qat^OQEVokhdZTU2Gr#u}5}-r;Zi#!XpR3hoY8LNjD?^TyI{ z8|J~b<8Dq@*4)vo{Y68ag&i%I!t(6utS>A9VUrsx-kMIfbA7n8km0ig z43>Ma1)XX0c7(Gqso@gnGTWOqKXZj_r@5=M@b1K7kl}ZZpLV8=Y?QOGe9U4Ph2I%5 zTsC^uC9<7P6P<;ILGvN+^L+NY1#N~- zau)3HyMSMnEn+JVq>}A~Om-F~*P91RT4Q;l%ISY{^=R(wzrR;+GBH7NxDbB*_ z?Q+wis{Jbe8E#;LxnCv( zbX2g6_jc^{2Pe=D4@(&;SERJ)*hTZa_p^t33Aghyp_aLVO?R}fW_bQ^4$W4x8<1_Q zV9gfOCJ{}F>IUTWP_WTwXmcLTE3ccdptpiW)^;HKNP#4o*I%pG)8+=6ty8Xnd%A+%I!>FLXo8Y6;Aw_}nE-8W zq3P;%1*TtBu((UKxsB$c)@3lpcKi})a|cbs*o#ndMZw-5rA-!^(___OkFRTHEN!yU zeAuCay=n!UHJvs&Xi`R}z`pYeHqL=Ixo9%CCc}-B3Ksl^KBjqS<}^))p%@$U_tGXG zP5;?R;I&)9vM18!E}Bs-lOQ5a!4?_N<{p|3H_pS}7zJx|gO2(8XomcG9-V#BZ z2i)8|50{oISS=}S9->KdN`hf?70mPvz1|<8$<9oIf*A_ty_YtR(KHE4hOSc;tmkCf z6ree%mjYUz3MOk!n?f||qbU$NQNivP(tBMI8jlVtxHMY9)*PWtF`9cA8#coftY`*p zo}k(PMg`;hD_E2@ZA#F5OIAU)vx3P#)8~s)G;2<%pngwWU*~D_6irq`HFT6I*oMcn zDMNFA{RJ@WqhQw>(BmoReFdb#WE}HLOWHg`bEV5=Xou&fP)3{QXlk~<0$ymE_oB@U zH1noqz?*&wR-+qjUZQ#R_$oZXF+b3w%_}tF_SeA<=g{C4{n{(gBu>kO&rS-~=?ZOL zqiK2Z28^^=@^Cs-GRIvS{Y4aA%=kGV*epdzSY(krNXzXx2V>>HYVT0<1 zKkxlLn%~WHs-B5mx#Kzz23Cpd5&%8H28|3-b{3lNSdc63t;Cari*@@uMNx>G@ z{1qpEHT;>_JkR;vIMM#k_X50*O#%N_3N~?V^|A5q1>kXVwJ-&;@wm(!Rozs@$)NNU zFw#@7UCn62<7Az&3SMX_m_weeCRh3E_<1`#PA>dV!GoHZ6CR`ukCW5K)G*_FAd}9b z4Udy8doRMu%0T8ak~Ta}Ud_1#J|6;^U`87rC#ybRhIMZP+4V-W;c=q6e+7!s{A@xS z9w%w|{J?S8*Mly!;c>Ee?ln01IgrWw(T2y#h~3vA2w!^(C2e?|G{<$@N}vso zlM}6Ozzb~!J6uc~o)3F;yaD6%aUFG}k15ZGA8FlyA-LAGeQ3k;;T6o47%SNDL$u+sz5m%&2yL%m-LBDw$M&b=8Q_TL zCfkp+;j#U?S2}o`VZPd``o6@+%wv0ZQ5v+sb7iEIHaxahzrU;gJ?JdZc3ZmQaY z&=B)jZGYPE`Fs)m3d%5N9&bw_(j>oa@O z@cDd|Sq|(E1rv*C!`Gen&!=#r43(q`&~=n5}JBHX~Wmu87;9OcCiIy3 zx{I4y3`V#%cMPEoUw1`Qi{OwAUcbzv4PSRHj}?MecLj4fO&fkr$!}5!O+^J;T1Fdw zPT6^_0Cr%WU(lY84Sr6!b+iCp;WfqKiL~M8l(F`OaBT!$zpSPWKc_5nD}vNv;7ggpN_L zJZ;+WwH9^mIk>svwP!=x@U^z}&vFPEu3-5R+VHiuH~T4+3{kLW2DIU8&E-=Gcn?;v z+86`>_jOgRH7DCAFaeFR6K(ifi@a3?tB0cTq77ebA*Tyr0meyaG;R1=YjnE+!m$oe zmP{MI);7*9fYUh7??2LpuQi9T0+3)`qM=!L@^$gG<|QeBIes{158Cjx*5T75=!|>p z(?Qh@efnGUF8W`g_^yII!a6Fo)_5!hJ^cb(3KZ<^2iov`yJY?s==c<`?`)jNcKE*C=yN3; ze}Q%8X|&<{_N|agnD-Xz`Fm-@_w7|RD#7Kmf@MCSjixrP{0!ZH;lCRK)*T&zKyobh(X0Y!cXv1sc zBYMAskBw)r`>jQC%)B;!Wc(YjKvQHz8(te<$toaAf~F^Jcx^ny?%8iM`AHNEmW|&!)S94&EeEy7;<01;+xXu zKAOdEi@`WY!7e|daWnLSACI}vp6Z5wPY17!|88Ead6ijz5ZFpXB@XAZL7OG(Wk+k7? zgfIc6RMeOJ|2w;iiwSw6JkF|g=*ef7Y}O7?0iZFme+eyFb= z>7`^pvS`C&z|g*d+JBmo6*U@3j)&)#Nj44C17;}MfWfrkxus5%2I|V0O4e}&ZFp|E z?M{95{P{|jkwzPyTLy;LSDP$RGVAZO;kl)mV}13va3z~#>q?H9=axF}wbi+iO4c%f zHaxf7fXDRM8YSy+oHjhSjCavi*Vv$Bd!EpS=aw_?)>C)btYjOTk0Qszb4%0y_0(S5 zl+14=ZFp|E^O%;}VyBWlT0|S3TiWK;Rj=BGF~5&CJhxo_sE&F&wqtabHaxc+c&oO0 z$aW=DrO<}wmZ`&21ZFp|^$D<#RK?S=x#e)<8tPOlB{Tj;@4Y;?JZw-yy`~%Py+9kDTWgK=6 zE&uu*aN)`t>e#CEnof-dd ze0g56Yqpl!6V0EgbUQq+h;pi@uIQj-E8=Ox^NI$~>#0Y#SF-I9wBdQhm=JCChPHTa zok$y=SIlT#Uwx{Ll9k%ghUXQtDz(*zu^rDL)y;pKTUOm~nwnQvy{n;;e?B|E*bx~a-7J^N~@Yu8k=;8C>E#K7CSYL~A;tfD1tcntU|>Z&ik55n(t z9a3#PRk>wxULEz`mqF~+DcbND$m?21?ff)|9bQHo9s{9sYO9kAgV;(h+VB`CTwY84 z;$aZ$G>$er25Rl9sa|+Lh^-n=8y*9VuhdZYMKf7J8y*Aiz6ol#2SIGmTH5d!$Z;0b zs~-ii5lOV+x#jxcpD-O?S3)Umcy5`z`v(-^^Hq8q(Z_=4mL1=Jht|)6Sj=$R@Z56n zy6>>3B8Y`W(}w4k+oyboN<5~WFVlwSmWA2hq4Y}-8&*jho?Bjd{sVsEJ~_E#_4wzp z!E?+0&3?lBx=NNjnKnGPT-i`iYw0N2iIueBxn zwc)Imx(Mey{U6%l`)%`KHPr#1gIMkgx*fjOo=&czF8CP4-ma$&Uu(8=1odV#>@aQk zTD!LJCpcqY+P7%K*IL?$9}tUUKJtTfBlRukjjF7)$oW_wA79FJa3kCHv|`8@_Klt$PW> ze&DswT-xw``>OU!FsKvEdY+{X-?tq`zksdvgPCm^ZTPn&Ch$zV1m3j@W)~LIhSvnH#Gr&%a%cuk;yJ%G!taSmtFhSvlZYTtv9mceYFYV=fc7ZN_M3U zZ3@tA-;@VK&MR5qV|pJeL{r}-AChseOV~@BA~gLn^5OjvtOY4(!)pQ^N8E*R2bAov zEp2#BK9I9l||j54X+7YF@FSEc;1=wg*Ln<@bl?o7{3dTMFaY^^P0exf z!_Av%!|ykR9x8|KE0wJKWZLl0Vr-xG4CY2)J+>=t_-8S8{Va#H#Y*P*v3kD2a|!-g zj9EctuzaDCc|EFb{+rKYX!4x@yvP2LDj(`#J#d(7^){>CV{dDC7Xkt>mYP*JRe8>= zhIiqzkCNTFKY~1W@H}Tt@LgErhA|LF8=mLfopcX;#$#*;(1zzZyIVYfORiWCaiR^+ zbA)D(AZ{4uW-V#M^BkX#kHLNr)`dO}C&$e59P@dF(5=6cb$vt|p66_xR1CIgdKS@! z=Q(XFpTM+%N_Mo8HaySSQc(&)LzK*}IXz~c=Ui=A2Es_pJ^Ijw=Q#_Gmw`AA^PEMr z;d#!(=7v8^?@7%Kd+cBD@m9@`V#3&Cxwl6n7w;jvvd=`kF}zB)Ch+u^b8 zXY&xQ;+&gyq79Gj6D{w9RDpSZciQmS-eGzdt_3OClEJj$vHis~4>E8L)4gcJV|(nj z9B4g9$r>!C4Ug?XG1-uSd)NNswBfNmBrXe#!<1}p0d06}-wDfx2;3*fUZ`&Vo6i~X zIH`J%eaNa(s6PYGgTtz~S@joOfbrag~I9XC!0(ofi znpQXe&3o+md{%w7#o>>qP>%OvYC2SJv+A=g7A0k%KT64d4ykUc=Ccyti(U)oL9&oG zd_Fx#K7(l7$Bvz#4WG{;;xo|0eXQ^WZTNhat}KVgxbEf|)5n+3Cq4uPdSaaT4y6sB z&%KMEf-BxH&YMRYzV5!(D20}Dm5gnn4PSS4R8QbDt{2_QwBhTnxNk9x#QMXta@z29 z7y76W9Pr-a=K6H*!Pi~QZw1hCDb```(e3bcx2!=Sti^lW(+^ZPRiAAcHn3Lh`kFUi z_@0|Fe71L`ZH>Bu!2hp~20)8904jePd&jKGSFV2L(Vs!o$Ya%F)c-)7HYw#>d;y%)`OU%FNE%*51z6-O|Rv(b}XN|8ZBpkN}VA z?*8&#?g8FG?yf=Z)0IAfK>_`zj|dD57^!gg^u`7!;QuVlZ7pmaE$ywk8CzPI+gmzX zSX)`+ug$IOt?X^^*T$2&X_$qrwVl0%qm7+yH)Aska|=sr3wvu@Yio!9{MO3O-p0z# z7XQ}5+|kj&+R@6M|EQ(81^$PRiG>9F1qLa3zxZ4J2XgP(#{Ip60!{Guzl?KGh|;hB zbT9AO|I2*5d~i&5?q;4AUY7h-dzpDyT3DJndU;s*_}F<_*jxH&UNtu9Tm<7H!G z=Huz(VP<1#Z*S&k=izN;Z)@%DX<=h!>EZrshS1tOTH83_%$eb<^fI%tx3M#G@W#ot z@V2t`w6wJHwsv=~YS-Pt$J^c3+TP5|-QLp-d+;!Gu(bCvv$FBAu(z?dvh}j_s z<6vg#LC3(R@le_O}l+V{Jp&Yek^|V!26h^-~nXPE5yV5 zKd%Mf%|CXUShI2D|2R0{k6D=iw_X?c#KZC@VKNJT!9gpv?$m9ElovodP6>dECnuB8LU}0ltWrMqc zg}J4jtphGC95mlitnpWtwtOGaw2f``3Y2RCmbc<)Yi;Y`h;866tu1g1)BKc!rImw& zwT(6Yxn={={G{d;;g1gq{QnORW8weJ#MImzm~Kpg5p1Am1WZ{LMi$0kj-io}Au!v5 z!q`C10+{m*43T0R#d*diM!=K-cAl|?sUa}A7(tSqk%bYk^h0qTJkTABfdw`=Jt!r{ z8wD0Qm4_CjLCOcEFkq(22PZ*DdVmzr0f{9U5J9e5t^jXFCSwLfZJ~Ky{a^?1kTwto z)fT9r1Xk4R738I(YdtOWqQu98kpYB3$GjoHW*`?_XMmZJ&+EGVg!-^@zo_b literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt.meta new file mode 100644 index 0000000000..b3e828aa92 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/Sketch 5.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 509ee418ff2bbfc4faee4e430d8f6e05 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet.meta new file mode 100644 index 0000000000..5e95093ce9 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3bd14fbfc5444743861dfcc6e65d714 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt.meta new file mode 100644 index 0000000000..bcdb55f37f --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 1.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 31d7cd97adb66004c898f743f298efcc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt.meta new file mode 100644 index 0000000000..c461b0738d --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 2.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 71bb4f75533d9004f87c692dc84a8b3d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt.meta new file mode 100644 index 0000000000..18a7d74cd2 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 3.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f16c6d69818ce1441bb197150b479d99 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt.meta new file mode 100644 index 0000000000..c7916d029e --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 4.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9a45521a120f7fa4fb0648dc955594d5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt new file mode 100644 index 0000000000000000000000000000000000000000..55699563542a346dfe19e91cbc306e9f243b381d GIT binary patch literal 88873 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 literal 0 HcmV?d00001 diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt.meta new file mode 100644 index 0000000000..62a11825f3 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/SketchSet/SubSketchSet/Sketch 5.tilt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 90339f3c8ed3e054ebd2545f6ff19cf8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs new file mode 100644 index 0000000000..216a426a89 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs @@ -0,0 +1,22 @@ +using System.IO; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityEngine; +using Application = UnityEngine.Device.Application; +namespace TiltBrush.TestFiles +{ + [TestFixture] + public class TiltFileTest + { + [Test] + public async Task CanExtractMetaFromTiltFile() + { + var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + var tiltFile = new DotTiltFile(fileSketch); + var metaStream = await tiltFile.GetSubFileAsync("metadata.json"); + Assert.IsNotNull(metaStream); + var text = new StreamReader(metaStream); + Debug.Log(await text.ReadToEndAsync()); + } + } +} diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs.meta b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs.meta new file mode 100644 index 0000000000..69f7e90538 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dd35c2cad425419da83270ca92912c6b +timeCreated: 1676823258 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs new file mode 100644 index 0000000000..35e198dff6 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs @@ -0,0 +1,47 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Assertions; +namespace TiltBrush +{ + public class FilesystemSketch : IResource + { + private string m_Path; + public FilesystemSketch(string path) + { + m_Path = path; + Name = Path.GetFileNameWithoutExtension(path); + Uri = new Uri("file://" + m_Path); + Assert.IsTrue(File.Exists(m_Path)); + } + + public string Name { get; } + + public Uri Uri { get; } + + public Texture2D PreviewImage { get; } + + public string Description { get; } + + public Author[] Authors { get; } + + public ResourceLicense License { get; } + +#pragma warning disable 1998 + public async Task InitAsync() + { + return; + } + + public async Task LoadPreviewAsync() + { + return false; + } + public async Task GetStreamAsync() + { + return new FileStream(m_Path, FileMode.Open); + } +#pragma warning restore 1998 + } +} diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta new file mode 100644 index 0000000000..93fbc5b6b6 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ddd2f6f8615a488c8b6536d58bf635ce +timeCreated: 1676601252 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs new file mode 100644 index 0000000000..5d55c8d6eb --- /dev/null +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public class FilesystemSketchCollection : IResource, IResourceCollection + { + private string m_Path; + private DirectoryInfo m_Dir; + + public FilesystemSketchCollection(string path, string name) + { + m_Path = path; + Name = name; + } + + public string Name { get; private set; } + + public Uri Uri { get; private set; } + + public Texture2D PreviewImage { get; } + + public string Description { get; } + + public Author[] Authors { get; set; } + + public ResourceLicense License { get; } + +#pragma warning disable 1998 + public async Task LoadPreviewAsync() + { + // TODO: Perhaps to something clever with having a thumbnail in a .meta subdir? + return false; // false means no preview created. + } + + public async Task InitAsync() + { + m_Dir = new DirectoryInfo(m_Path); + if (Name == null) + { + Name = m_Dir.Name; + } + Uri = new Uri($"file://{m_Dir.FullName}"); + } + + public async IAsyncEnumerable Contents() + { + foreach (var dirInfo in m_Dir.EnumerateDirectories()) + { + if (dirInfo.Name.StartsWith(".")) + { + continue; + } + yield return new FilesystemSketchCollection(dirInfo.FullName, dirInfo.Name); + } + + foreach (var fileInfo in m_Dir.EnumerateFiles("*.tilt")) + { + yield return new FilesystemSketch(fileInfo.FullName); + } + } + + public async Task GetStreamAsync() + { + throw new NotImplementedException(); + } +#pragma warning restore 1998 + + } +} diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta new file mode 100644 index 0000000000..1ceda1eda6 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9d471abc55694a57a26c8ea58bd2cd08 +timeCreated: 1676599380 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/IResource.cs b/Assets/Scripts/ResourceSystem/IResource.cs new file mode 100644 index 0000000000..4eaf15adc8 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IResource.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public interface IResource + { + string Name { get; } + Uri Uri { get; } + Texture2D PreviewImage { get; } + string Description { get; } + Author[] Authors { get; } + ResourceLicense License { get; } + // Todo: tags? key value pairs? + + Task InitAsync(); + Task LoadPreviewAsync(); + Task GetStreamAsync(); + } +} diff --git a/Assets/Scripts/ResourceSystem/IResource.cs.meta b/Assets/Scripts/ResourceSystem/IResource.cs.meta new file mode 100644 index 0000000000..516cdc788a --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IResource.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 11175dba26b0f4a4295be7b9fa8ebcb7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs new file mode 100644 index 0000000000..2ff3aa1487 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +namespace TiltBrush +{ + public interface IResourceCollection : IResource + { + IAsyncEnumerable Contents(); + } +} diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs.meta b/Assets/Scripts/ResourceSystem/IResourceCollection.cs.meta new file mode 100644 index 0000000000..0f59dc41bb --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5a017e6ca6c441559f4cafb7a5265cb1 +timeCreated: 1676598594 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs new file mode 100644 index 0000000000..b035b4a65f --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using Newtonsoft.Json; +using UnityEditor.PackageManager; +using UnityEngine; +using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; +namespace TiltBrush +{ + [Serializable] + public class IcosaSketch + { + [Serializable] + public class Format + { + public string id; + public string url; + public string format; + } + + public string id; + public string url; + public Format[] formats; + public string name; + public string description; + public string thumbnail; + public string ownername; + public string ownerurl; + } + + public class IcosaSketchCollection : IResource, IResourceCollection + { + private string m_User; + private HttpClient m_httpClient; + + public IcosaSketchCollection(HttpClient httpClient, string user = null) + { + m_User = user; + Name = "Icosa"; + if (m_User != null) + { + Name += $" for {m_User}"; + Uri = new Uri($"https://api.icosa.gallery/users/{m_User}/assets"); + } + else + { + Uri = new Uri($"https://api.icosa.gallery/assets"); + } + m_httpClient = httpClient; + } + + public string Name { get; private set; } + public Uri Uri { get; } + public Texture2D PreviewImage { get; } + public string Description { get; } + public Author[] Authors { get; } + public ResourceLicense License { get; } + public string Error { get; private set; } +#pragma warning disable 1998 + public async Task InitAsync() + { + return; + } + public async Task LoadPreviewAsync() + { + return false; + } + + private async IAsyncEnumerable ReadPage(Stream stream) + { + using var streamReader = new StreamReader(stream); + using var jsonReader = new JsonTextReader(streamReader); + var settings = new JsonSerializerSettings + { + Error = delegate (object sender, ErrorEventArgs args) + { + Debug.LogWarning(args.ErrorContext.Error.Message); + args.ErrorContext.Handled = true; + } + }; + var json = JsonSerializer.CreateDefault(settings); + + // TODO: can we deserialize these one at a time? + + var sketches = json.Deserialize(jsonReader); + foreach (var sketch in sketches) + { + var tiltFormat = sketch.formats.FirstOrDefault(x => x.format == "TILT"); + var authors = new Author[] { new Author { Name = sketch.name, Url = sketch.ownerurl } }; + if (tiltFormat != null) + { + var remoteSketch = new RemoteSketchResource( + name: sketch.name, + uri: new Uri(tiltFormat.url), + description: sketch.description, + authors: authors + ); + yield return remoteSketch; + } + } + } + + public async Task GetStreamAsync() + { + throw new NotImplementedException(); + } +#pragma warning restore 1998 + + + public async IAsyncEnumerable Contents() + { + if (m_User == null) + { + m_httpClient.BaseAddress = new Uri("https://api.icosa.gallery/"); + m_httpClient.DefaultRequestHeaders.Accept.Clear(); + m_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); + + for (int page = 0; true; page++) + { + var response = await m_httpClient.GetAsync($"assets?page={page}"); + if (response.StatusCode != HttpStatusCode.OK) + { + Error = $"IcosaSketchCatalog returned error code of {response.StatusCode} : {response.ReasonPhrase}"; + Debug.LogWarning(Error); + yield break; + } + + using var stream = await response.Content.ReadAsStreamAsync(); + await foreach (var resource in ReadPage(stream)) + { + yield return resource; + } + stream.Close(); + } + } + else + { + for (int page = 0; true; page++) + { + var url = $"https://api.icosa.gallery/assets&page={page}"; + await foreach (var resource in ReadPage(await m_httpClient.GetStreamAsync(url))) + { + yield return resource; + } + } + } + } + } +} diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta new file mode 100644 index 0000000000..d680063fcc --- /dev/null +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b0bb2e4292a84736a61a785ac4d1e60d +timeCreated: 1676697466 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/RemoteSketch.cs b/Assets/Scripts/ResourceSystem/RemoteSketch.cs new file mode 100644 index 0000000000..bab4b8289a --- /dev/null +++ b/Assets/Scripts/ResourceSystem/RemoteSketch.cs @@ -0,0 +1,40 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public class RemoteSketchResource : IResource + { + public RemoteSketchResource(string name, Uri uri, Texture2D previewImage = null, string description = null, Author[] authors = null, ResourceLicense license = null) + { + Name = name; + Uri = uri; + PreviewImage = previewImage; + Description = description; + Authors = authors; + License = license; + } + + public string Name { get; } + public Uri Uri { get; } + public Texture2D PreviewImage { get; } + public string Description { get; } + public Author[] Authors { get; } + public ResourceLicense License { get; } +#pragma warning disable 1998 + public async Task InitAsync() + { + throw new NotImplementedException(); + } + public async Task LoadPreviewAsync() + { + throw new NotImplementedException(); + } + public async Task GetStreamAsync() + { + throw new NotImplementedException(); + } +#pragma warning restore 1998 + } +} diff --git a/Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta b/Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta new file mode 100644 index 0000000000..c74c30f6b3 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 3fd5690e25be4af289e94cc736c1e860 +timeCreated: 1676768257 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/ResourceLicense.cs b/Assets/Scripts/ResourceSystem/ResourceLicense.cs new file mode 100644 index 0000000000..dd858390d6 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceLicense.cs @@ -0,0 +1,107 @@ +using System; +namespace TiltBrush +{ + public class ResourceLicense + { + public enum DerivativePermission + { + NoDerivatives, + SameLicense, + NoAdditionalRestrictions, + NoRestrictions, + } + + public string ShortName { get; private set; } + public string LongName { get; private set; } + public string Url { get; private set; } + public DerivativePermission Derivatives { get; private set; } + public bool Shareable { get; private set; } + public bool Attribution { get; private set; } + public bool Commercial { get; private set; } + public bool AllRightsReserved { get; private set; } + + public ResourceLicense CC_BY = new ResourceLicense + { + ShortName = "CC BY 4.0", + LongName = "Creative Commons Attribution 4.0 International", + Url = "https://creativecommons.org/licenses/by/4.0/", + Shareable = true, + Derivatives = DerivativePermission.NoAdditionalRestrictions, + Attribution = true, + Commercial = true, + AllRightsReserved = false, + }; + + public ResourceLicense CC_BY_SA = new ResourceLicense + { + ShortName = "CC BY-SA 4.0", + LongName = "Creative Commons Attribution-ShareAlike 4.0 International", + Url = "https://creativecommons.org/licenses/by-sa/4.0/", + Shareable = true, + Derivatives = DerivativePermission.SameLicense, + Attribution = true, + Commercial = true, + AllRightsReserved = false, + }; + + public ResourceLicense CC_BY_ND = new ResourceLicense + { + ShortName = "CC BY-ND 4.0", + LongName = "Creative Commons Attribution-NoDerivatives 4.0 International", + Url = "https://creativecommons.org/licenses/by-nd/4.0/", + Shareable = true, + Derivatives = DerivativePermission.NoDerivatives, + Attribution = true, + Commercial = true, + AllRightsReserved = false, + }; + + public ResourceLicense CC_BY_NC = new ResourceLicense + { + ShortName = "CC BY-NC 4.0", + LongName = "Creative Commons Attribution-NonCommercial 4.0 International", + Url = "https://creativecommons.org/licenses/by-nc/4.0/", + Shareable = true, + Derivatives = DerivativePermission.NoAdditionalRestrictions, + Attribution = true, + Commercial = false, + AllRightsReserved = false, + }; + + public ResourceLicense CC_BY_NC_SA = new ResourceLicense + { + ShortName = "CC BY-NC-SA 4.0", + LongName = "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International", + Url = "https://creativecommons.org/licenses/by-nc-sa/4.0/", + Shareable = true, + Derivatives = DerivativePermission.SameLicense, + Attribution = true, + Commercial = false, + AllRightsReserved = false, + }; + + public ResourceLicense CC_BY_NC_ND = new ResourceLicense + { + ShortName = "CC BY-NC-ND 4.0", + LongName = "Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International", + Url = "https://creativecommons.org/licenses/by-nc-nd/4.0/", + Shareable = true, + Derivatives = DerivativePermission.NoDerivatives, + Attribution = true, + Commercial = false, + AllRightsReserved = false, + }; + + public ResourceLicense ALL_RIGHTS_RESERVED = new ResourceLicense + { + ShortName = "ALL RIGHTS RESERVED", + LongName = "All Rights Reserved", + Url = "", + Shareable = false, + Derivatives = DerivativePermission.NoDerivatives, + Attribution = true, + Commercial = false, + AllRightsReserved = true, + }; + } +} diff --git a/Assets/Scripts/ResourceSystem/ResourceLicense.cs.meta b/Assets/Scripts/ResourceSystem/ResourceLicense.cs.meta new file mode 100644 index 0000000000..64211937ef --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceLicense.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4ff976c29a75434cb26a9ca01cc0ec7d +timeCreated: 1676596753 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/SubStream.cs b/Assets/Scripts/ResourceSystem/SubStream.cs new file mode 100644 index 0000000000..a8c0a2d671 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/SubStream.cs @@ -0,0 +1,91 @@ +using System; +using System.IO; +namespace TiltBrush +{ + /// + /// A Stream to wrap another stream, starting at the current position. + /// + public class SubStream : Stream + { + private Stream m_Stream; + private long m_Offset; + private long m_Position; + + public SubStream(Stream original) + { + m_Stream = original; + m_Offset = m_Stream.Position; + m_Position = m_Stream.Position; + } + + public override int Read(byte[] buffer, int offset, int count) + { + CheckDisposed(); + if (m_Stream.Position != m_Position) + { + m_Stream.Seek(m_Position, SeekOrigin.Begin); + } + int read = m_Stream.Read(buffer, offset, count); + m_Position += read; + return read; + } + + private void CheckDisposed() + { + if (m_Stream == null) throw new ObjectDisposedException(GetType().Name); + } + + public override long Seek(long offset, SeekOrigin origin) + { + switch (origin) + { + case SeekOrigin.Begin: + m_Position = m_Stream.Seek(offset + m_Offset, SeekOrigin.Begin); + break; + case SeekOrigin.Current: + m_Position = m_Stream.Seek(m_Position + offset, SeekOrigin.Begin); + break; + case SeekOrigin.End: + m_Position = m_Stream.Seek(offset, SeekOrigin.End); + break; + } + return m_Position - m_Offset; + } + + public override bool CanRead => m_Stream.CanRead; + + public override bool CanSeek => m_Stream.CanSeek; + + public override bool CanWrite => false; + + public override long Length => m_Stream.Length - m_Offset; + + public override long Position + { + get + { + return m_Position - m_Offset; + } + set + { + this.Seek(value + m_Offset, SeekOrigin.Begin); + m_Position = value + m_Offset; + } + } + + public override void Flush() + { + throw new NotImplementedException(); + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotImplementedException(); + } + } +} diff --git a/Assets/Scripts/ResourceSystem/SubStream.cs.meta b/Assets/Scripts/ResourceSystem/SubStream.cs.meta new file mode 100644 index 0000000000..78ed596d2a --- /dev/null +++ b/Assets/Scripts/ResourceSystem/SubStream.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: b946a7967a7b47b080c1c9a8e0de2457 +timeCreated: 1676828757 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/RssSketchSetAsync.cs b/Assets/Scripts/Sharing/RssSketchSetAsync.cs index dbfd6bba74..d2675f1263 100644 --- a/Assets/Scripts/Sharing/RssSketchSetAsync.cs +++ b/Assets/Scripts/Sharing/RssSketchSetAsync.cs @@ -25,7 +25,7 @@ public async Task InitAsync() public async Task FetchSketchPageAsync(int page) { Debug.Log($"Fetching rss stream {m_Uri.AbsoluteUri}"); - await using var stream = await App.HttpClient.GetStreamAsync(m_Uri).ConfigureAwait(false); + var stream = await App.HttpClient.GetStreamAsync(m_Uri).ConfigureAwait(false); Debug.Log("Got stream"); using var xmlReader = XmlReader.Create(stream); Debug.Log("Loading feed"); From a5a892dd7e1b08106ebc7656495cd2454f7a6c37 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 12:59:21 -0800 Subject: [PATCH 05/38] Handle async load requests --- Assets/Editor/Tests/TestBrush.cs | 11 +-- Assets/Scripts/App.cs | 93 +++++++++++++----------- Assets/Scripts/Poly/PolyAssetCatalog.cs | 22 +++--- Assets/Scripts/Save/DiskSceneFileInfo.cs | 4 +- Assets/Scripts/Save/FileSketchSet.cs | 12 +-- Assets/Scripts/Save/SaveLoadScript.cs | 29 +++----- Assets/Scripts/Sharing/VrAssetService.cs | 2 +- Assets/Scripts/SketchControlsScript.cs | 50 +++++++++---- 8 files changed, 125 insertions(+), 98 deletions(-) diff --git a/Assets/Editor/Tests/TestBrush.cs b/Assets/Editor/Tests/TestBrush.cs index 92a3e3eeb5..e8a4fb60ce 100644 --- a/Assets/Editor/Tests/TestBrush.cs +++ b/Assets/Editor/Tests/TestBrush.cs @@ -16,6 +16,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using Newtonsoft.Json; using NUnit.Framework; using UnityEditor; @@ -64,13 +65,13 @@ void IDisposable.Dispose() } [OneTimeSetUp] - public void RunBeforeAnyTests() + public async Task RunBeforeAnyTests() { m_container = new GameObject("Singletons for TestBrush"); Coords.AsLocal[m_container.transform] = TrTransform.identity; var path = Path.Combine(Application.dataPath, "../Support/Sketches/PerfTest/Simple.tilt"); - m_testStrokes = GetStrokesFromTilt(path); + m_testStrokes = await GetStrokesFromTiltAsync(path); if (DevOptions.I == null) { @@ -103,13 +104,13 @@ public void RunAfterAllTests() } /// Returns strokes read from the passed .tilt file - public static List GetStrokesFromTilt(string path) + public static async Task> GetStrokesFromTiltAsync(string path) { var file = new DiskSceneFileInfo(path, readOnly: true); SketchMetadata metadata; using (var jsonReader = new JsonTextReader( new StreamReader( - SaveLoadScript.GetMetadataReadStream(file)))) + await SaveLoadScript.GetMetadataReadStreamAsync(file)))) { // TODO: should cache this? var serializer = new JsonSerializer(); @@ -121,7 +122,7 @@ public static List GetStrokesFromTilt(string path) metadata = serializer.Deserialize(jsonReader); } - using (var stream = file.GetReadStreamAsync(TiltFile.FN_SKETCH).Result) + using (var stream = await file.GetReadStreamAsync(TiltFile.FN_SKETCH)) { var bufferedStream = new BufferedStream(stream, 4096); return SketchWriter.GetStrokes( diff --git a/Assets/Scripts/App.cs b/Assets/Scripts/App.cs index f2cfe7ba64..3ac0f20ac7 100644 --- a/Assets/Scripts/App.cs +++ b/Assets/Scripts/App.cs @@ -21,6 +21,7 @@ using System.Net.Http; using System.Reflection; using System.Runtime.CompilerServices; +using System.Threading.Tasks; using UnityEngine; using Newtonsoft.Json; #if USD_SUPPORTED @@ -283,6 +284,8 @@ private AppState m_DesiredAppState private DriveSync m_DriveSync; private GoogleUserSettings m_GoogleUserSettings; + private Task<(bool success, TrTransform head, TrTransform scene)> m_OdsTransformTask; + // ------------------------------------------------------------ // Properties // ------------------------------------------------------------ @@ -824,12 +827,11 @@ void Update() && ((m_CurrentAppState == AppState.Loading && !Config.m_QuickLoad) || m_CurrentAppState == AppState.Standard)) { - try - { - OdsDriver driver = m_OdsPivot.GetComponent(); + bool needsSecondary = Config.m_SketchFiles.Length > 1; - // Load the secondary transform, if a second sketch was specified. - if (Config.m_SketchFiles.Length > 1) + if (needsSecondary && (m_OdsTransformTask == null || !m_OdsTransformTask.IsCompleted)) + { + if (m_OdsTransformTask == null) { string sketch = Config.m_SketchFiles[1]; // Assume relative paths are relative to the sketches directory. @@ -837,54 +839,59 @@ void Update() { sketch = System.IO.Path.Combine(App.UserSketchPath(), sketch); } - var head = TrTransform.identity; - var scene = TrTransform.identity; - if (SaveLoadScript.m_Instance.LoadTransformsForOds(new DiskSceneFileInfo(sketch), - ref head, - ref scene)) - { - OdsHeadSecondary = head; - OdsSceneSecondary = scene; - } - else - { - Debug.LogErrorFormat("Failed to load secondary sketch for ODS: {0}", sketch); - } + m_OdsTransformTask = SaveLoadScript.m_Instance.LoadTransformsForOds(new DiskSceneFileInfo(sketch)); } - - if (driver.OutputBasename == null || driver.OutputBasename == "") + } + else + { + if (m_OdsTransformTask.IsCompletedSuccessfully && m_OdsTransformTask.Result.success) + { + OdsHeadSecondary = m_OdsTransformTask.Result.head; + OdsSceneSecondary = m_OdsTransformTask.Result.scene; + m_OdsTransformTask = null; + } + else { - driver.OutputBasename = - FileUtils.SanitizeFilename(SaveLoadScript.m_Instance.SceneFile.HumanName); + Debug.LogErrorFormat("Failed to load secondary sketch for ODS: {0}", Config.m_SketchFiles[1]); + } + try + { + OdsDriver driver = m_OdsPivot.GetComponent(); + if (driver.OutputBasename == null || driver.OutputBasename == "") { - if (Config.m_SketchFiles.Length > 0) + driver.OutputBasename = + FileUtils.SanitizeFilename(SaveLoadScript.m_Instance.SceneFile.HumanName); + if (driver.OutputBasename == null || driver.OutputBasename == "") { - driver.OutputBasename = System.IO.Path.GetFileNameWithoutExtension( - Config.m_SketchFiles[0]); - } - else - { - driver.OutputBasename = "Untitled"; + if (Config.m_SketchFiles.Length > 0) + { + driver.OutputBasename = System.IO.Path.GetFileNameWithoutExtension( + Config.m_SketchFiles[0]); + } + else + { + driver.OutputBasename = "Untitled"; + } } } - } - if (driver.OutputFolder == null || driver.OutputFolder == "") - { - driver.OutputFolder = App.VrVideosPath(); - FileUtils.InitializeDirectoryWithUserError(driver.OutputFolder); - } + if (driver.OutputFolder == null || driver.OutputFolder == "") + { + driver.OutputFolder = App.VrVideosPath(); + FileUtils.InitializeDirectoryWithUserError(driver.OutputFolder); + } - InputManager.m_Instance.EnablePoseTracking(false); + InputManager.m_Instance.EnablePoseTracking(false); - driver.BeginRender(); - } - catch (System.Exception ex) - { - Debug.LogException(ex); - Application.Quit(); - Debug.Break(); + driver.BeginRender(); + } + catch (System.Exception ex) + { + Debug.LogException(ex); + Application.Quit(); + Debug.Break(); + } } } diff --git a/Assets/Scripts/Poly/PolyAssetCatalog.cs b/Assets/Scripts/Poly/PolyAssetCatalog.cs index 0bd1cda443..5688df6938 100644 --- a/Assets/Scripts/Poly/PolyAssetCatalog.cs +++ b/Assets/Scripts/Poly/PolyAssetCatalog.cs @@ -19,6 +19,7 @@ using System.Collections.Generic; using System.IO; using System.Text.RegularExpressions; +using System.Threading.Tasks; using Newtonsoft.Json.Linq; using Newtonsoft.Json; @@ -642,20 +643,21 @@ public void PrecacheModels(SceneFileInfo sceneFileInfo, string reason) /// coroutine for each found asset. private IEnumerator PrecacheModelsCoroutine(SceneFileInfo sceneFileInfo, string reason) { - var getIdsFuture = new Future>(() => GetModelIds(sceneFileInfo)); - List ids; + var getIdsTask = GetModelIds(sceneFileInfo); + while (true) { - try - { - if (getIdsFuture.TryGetResult(out ids)) { break; } - } - catch (FutureFailed e) + if (getIdsTask.IsCompleted) { - throw new Exception($"While reading {sceneFileInfo}", e); + if (!getIdsTask.IsCompletedSuccessfully) + { + throw new Exception($"While reading {sceneFileInfo}", getIdsTask.Exception); + } + break; } yield return null; } + var ids = getIdsTask.Result; if (ids == null) { yield break; } List> precacheCoroutines = new List>(); @@ -686,12 +688,12 @@ private IEnumerator PrecacheModelsCoroutine(SceneFileInfo sceneFileInfo, s /// Returns all non-null asset ids from the passed sketch's metadata. /// null return value means "empty list". /// Raises exception on error. - private static List GetModelIds(SceneFileInfo sceneFileInfo) + private static async Task> GetModelIds(SceneFileInfo sceneFileInfo) { // Json deserializing is in a separate method that doesn't access Unity objects so that it // can be called on a thread. The json deserializing can be pretty slow and can cause // frame drops if performed on the main thread. - Stream metadata = SaveLoadScript.GetMetadataReadStream(sceneFileInfo); + Stream metadata = await SaveLoadScript.GetMetadataReadStreamAsync(sceneFileInfo); if (metadata == null) { if (sceneFileInfo.Exists) diff --git a/Assets/Scripts/Save/DiskSceneFileInfo.cs b/Assets/Scripts/Save/DiskSceneFileInfo.cs index 36d1c1071d..5cf5056bfb 100644 --- a/Assets/Scripts/Save/DiskSceneFileInfo.cs +++ b/Assets/Scripts/Save/DiskSceneFileInfo.cs @@ -305,10 +305,10 @@ public bool IsHeaderValid() return m_TiltFile.IsHeaderValid(); } - public SketchMetadata ReadMetadata() + public async Task ReadMetadataAsync() { SketchMetadata metadata = null; - var stream = SaveLoadScript.GetMetadataReadStream(this); + var stream = await SaveLoadScript.GetMetadataReadStreamAsync(this); if (stream != null) { using (var jsonReader = new JsonTextReader(new StreamReader(stream))) diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 40c1588da9..8ef39e2d65 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -28,7 +28,7 @@ public class FileSketchSet : SketchSet static int ICON_LOAD_PER_FRAME = 3; /// Synchronously read thumbnail. Returns null on error. - public static byte[] ReadThumbnail(SceneFileInfo fileinfo) + public static byte[] ReadThumbnailAsync(SceneFileInfo fileinfo) { using (Stream s = fileinfo.GetReadStreamAsync(TiltFile.FN_THUMBNAIL).Result) { @@ -93,7 +93,7 @@ public bool IconAndMetadataValid private IEnumerable RequestLoadIconAndMetadataCoroutineThreaded() { - var thumbFuture = new Future(() => ReadThumbnail(m_FileInfo)); + var thumbFuture = new Future(() => ReadThumbnailAsync(m_FileInfo)); byte[] data; while (!thumbFuture.TryGetResult(out data)) { yield return null; } @@ -114,15 +114,15 @@ private IEnumerable RequestLoadIconAndMetadataCoroutineThreaded() } if (m_Authors == null) { - var metadataFuture = new Future(() => m_FileInfo.ReadMetadata()); + var metadataTask = m_FileInfo.ReadMetadataAsync(); SketchMetadata metadata; - while (!metadataFuture.TryGetResult(out metadata)) + while (!metadataTask.IsCompleted) { yield return null; } - if (metadata != null) + if (metadataTask.IsCompletedSuccessfully) { - m_Authors = metadata.Authors; + m_Authors = metadataTask.Result.Authors; } else { diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index e3c3592ff5..61c26bb3a8 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -515,37 +515,35 @@ private void NotifySaveFinished(SceneFileInfo info, string error, bool newFile) } } - static public Stream GetMetadataReadStream(SceneFileInfo fileInfo) + static public async Task GetMetadataReadStreamAsync(SceneFileInfo fileInfo) { - var stream = fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA).Result; + var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA); if (stream != null) { return stream; } else { - return fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA_LEGACY).Result; + return await fileInfo.GetReadStreamAsync(TiltFile.FN_METADATA_LEGACY); } } // Loads the head and scene trandsforms into the secondary ODS - public bool LoadTransformsForOds(SceneFileInfo fileInfo, - ref TrTransform head, - ref TrTransform scene) + public async Task<(bool success, TrTransform head, TrTransform scene)> LoadTransformsForOds(SceneFileInfo fileInfo) { if (!fileInfo.IsHeaderValid()) { OutputWindowScript.m_Instance.AddNewLine( "Could not load transform: {0}", fileInfo.HumanName); - return false; + return (false, TrTransform.identity, TrTransform.identity); } m_LastSceneIsLegacy = false; - Stream metadata = GetMetadataReadStream(fileInfo); + Stream metadata = await GetMetadataReadStreamAsync(fileInfo); if (metadata == null) { OutputWindowScript.m_Instance.AddNewLine("Could not load: {0}", fileInfo.HumanName); - return false; + return (false, TrTransform.identity, TrTransform.identity); } using (var jsonReader = new JsonTextReader(new StreamReader(metadata))) { @@ -562,15 +560,12 @@ public bool LoadTransformsForOds(SceneFileInfo fileInfo, OutputWindowScript.m_Instance.AddNewLine( $"Lacking a capability to load {fileInfo.HumanName}. " + $"Upgrade {App.kAppDisplayName}?"); - return false; + return (false, TrTransform.identity, TrTransform.identity); } } - scene = jsonData.SceneTransformInRoomSpace; - head = jsonData.ThumbnailCameraTransformInRoomSpace; + return (true, jsonData.ThumbnailCameraTransformInRoomSpace, jsonData.SceneTransformInRoomSpace); } - - return true; } /// Follows the "force-superseded by" chain until the end is reached, then returns that brush @@ -592,7 +587,7 @@ static Guid GetForceSupersededBy(Guid original) /// We never noticed before because the duplicate geometry draws on top of itself. /// It begins to be noticeable now that loading goes into the active canvas, /// which may not be the canvas of the original strokes. - public bool Load(SceneFileInfo fileInfo, bool bAdditive = false) + public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false) { m_LastThumbnailBytes = null; if (!fileInfo.IsHeaderValid()) @@ -603,7 +598,7 @@ public bool Load(SceneFileInfo fileInfo, bool bAdditive = false) } m_LastSceneIsLegacy = false; - Stream metadata = GetMetadataReadStream(fileInfo); + Stream metadata = await GetMetadataReadStreamAsync(fileInfo); if (metadata == null) { OutputWindowScript.m_Instance.AddNewLine("Could not load: {0}", fileInfo.HumanName); @@ -695,7 +690,7 @@ public bool Load(SceneFileInfo fileInfo, bool bAdditive = false) var oldGroupToNewGroup = new Dictionary(); // Load sketch - using (var stream = fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH).Result) + using (var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH)) { Guid[] brushGuids = jsonData.BrushIndex.Select(GetForceSupersededBy).ToArray(); bool legacySketch; diff --git a/Assets/Scripts/Sharing/VrAssetService.cs b/Assets/Scripts/Sharing/VrAssetService.cs index 63e1e518c1..006640c0c6 100644 --- a/Assets/Scripts/Sharing/VrAssetService.cs +++ b/Assets/Scripts/Sharing/VrAssetService.cs @@ -739,7 +739,7 @@ private async Task CreateTiltForUploadAsync(DiskSceneFileInfo fileInfo) byte[] thumbnail = SaveLoadScript.m_Instance.GetLastThumbnailBytes(); if (thumbnail == null) { - thumbnail = FileSketchSet.ReadThumbnail(fileInfo) ?? new byte[0]; + thumbnail = FileSketchSet.ReadThumbnailAsync(fileInfo) ?? new byte[0]; } return thumbnail; diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index f1b6115e74..3ba556f9c5 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -17,6 +17,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using UnityEngine; using UnityEngine.InputSystem; using SymmetryMode = TiltBrush.PointerManager.SymmetryMode; @@ -4078,11 +4079,16 @@ public void GenerateBoundingBoxSaveIcon() m_SaveIconTool.ProgrammaticCaptureSaveIcon(vNewCamPos, Quaternion.identity); } - private void MergeBrushStrokes(SceneFileInfo fileInfo) + private IEnumerator MergeBrushStrokes(SceneFileInfo fileInfo) { m_PanelManager.ToggleSketchbookPanels(isLoadingSketch: true); PointerManager.m_Instance.EnablePointerStrokeGeneration(true); - if (SaveLoadScript.m_Instance.Load(fileInfo, true)) + var loadTask = SaveLoadScript.m_Instance.LoadAsync(fileInfo, true); + while (!loadTask.IsCompleted) + { + yield return null; + } + if (loadTask.Result) { SketchMemoryScript.m_Instance.SetPlaybackMode(m_SketchPlaybackMode, m_DefaultSketchLoadSpeed); SketchMemoryScript.m_Instance.BeginDrawingFromMemory(bDrawFromStart: true, false, false); @@ -4096,16 +4102,16 @@ private void MergeBrushStrokes(SceneFileInfo fileInfo) } } - private void LoadSketch(SceneFileInfo fileInfo, bool quickload = false, bool additive = false) + private IEnumerator LoadSketchCoroutine(SceneFileInfo fileInfo, bool quickload, bool additive) { - LightsControlScript.m_Instance.DiscoMode = false; - m_WidgetManager.FollowingPath = false; - m_WidgetManager.CameraPathsVisible = false; - m_WidgetManager.DestroyAllWidgets(); - m_PanelManager.ToggleSketchbookPanels(isLoadingSketch: true); - ResetGrabbedPose(everything: true); - PointerManager.m_Instance.EnablePointerStrokeGeneration(true); - if (SaveLoadScript.m_Instance.Load(fileInfo, additive)) + var previousState = App.CurrentState; + App.Instance.SetDesiredState(quickload ? App.AppState.QuickLoad : App.AppState.Loading); + var loadTask = SaveLoadScript.m_Instance.LoadAsync(fileInfo, additive); + while (!loadTask.IsCompleted) + { + yield return null; + } + if (loadTask.IsCompletedSuccessfully && loadTask.Result) { SketchMemoryScript.m_Instance.SetPlaybackMode(m_SketchPlaybackMode, m_DefaultSketchLoadSpeed); SketchMemoryScript.m_Instance.BeginDrawingFromMemory(bDrawFromStart: true); @@ -4115,12 +4121,28 @@ private void LoadSketch(SceneFileInfo fileInfo, bool quickload = false, bool add // when the app is in the standard mode. That was there to prevent the controller color // from flickering while in the intro mode. App.Instance.ExitIntroSketch(); - App.Instance.SetDesiredState(quickload ? App.AppState.QuickLoad : App.AppState.Loading); + } + else + { + App.Instance.SetDesiredState(previousState); } QualityControls.m_Instance.ResetAutoQuality(); m_WidgetManager.ValidateCurrentCameraPath(); } + private void LoadSketch(SceneFileInfo fileInfo, bool quickload = false, bool additive = false) + { + LightsControlScript.m_Instance.DiscoMode = false; + m_WidgetManager.FollowingPath = false; + m_WidgetManager.CameraPathsVisible = false; + m_WidgetManager.DestroyAllWidgets(); + m_PanelManager.ToggleSketchbookPanels(isLoadingSketch: true); + ResetGrabbedPose(everything: true); + PointerManager.m_Instance.EnablePointerStrokeGeneration(true); + + StartCoroutine(LoadSketchCoroutine(fileInfo, quickload, additive)); + } + public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, int iParam2 = -1, string sParam = null) { @@ -4224,7 +4246,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { - MergeBrushStrokes(rInfo); + StartCoroutine(MergeBrushStrokes(rInfo)); if (m_ControlsType != ControlsType.ViewingOnly) { EatGazeObjectInput(); @@ -4908,7 +4930,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, private void LoadNamed(string path, bool quickload, bool additive) { var fileInfo = new DiskSceneFileInfo(path); - fileInfo.ReadMetadata(); + fileInfo.ReadMetadataAsync(); if (SaveLoadScript.m_Instance.LastMetadataError != null) { ControllerConsoleScript.m_Instance.AddNewLine( From 515aff52fb3d7f62d5c1fe19cd544fbf8b3734eb Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 16:19:16 -0800 Subject: [PATCH 06/38] Loading from icosa first grody working version --- Assets/Scripts/ResourceSystem/DotTiltFile.cs | 19 ++ ...emoteSketch.cs => RemoteSketchResource.cs} | 7 +- ...h.cs.meta => RemoteSketchResource.cs.meta} | 0 .../ResourceCollectionSketchSet.cs | 197 ++++++++++++++++++ .../ResourceCollectionSketchSet.cs.meta | 3 + .../ResourceSystem/ResourceFileInfo.cs | 39 ++++ .../ResourceSystem/ResourceFileInfo.cs.meta | 3 + Assets/Scripts/Save/SketchCatalog.cs | 5 +- Assets/Scripts/Save/TiltFile.cs | 30 ++- .../Scripts/Sharing/AsyncWrapperSketchSet.cs | 2 +- Assets/Scripts/SketchControlsScript.cs | 1 + 11 files changed, 299 insertions(+), 7 deletions(-) rename Assets/Scripts/ResourceSystem/{RemoteSketch.cs => RemoteSketchResource.cs} (84%) rename Assets/Scripts/ResourceSystem/{RemoteSketch.cs.meta => RemoteSketchResource.cs.meta} (100%) create mode 100644 Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs create mode 100644 Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/ResourceFileInfo.cs create mode 100644 Assets/Scripts/ResourceSystem/ResourceFileInfo.cs.meta diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs index d7f420307e..60fde1107d 100644 --- a/Assets/Scripts/ResourceSystem/DotTiltFile.cs +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -3,6 +3,7 @@ using System.IO.Compression; using System.Runtime.InteropServices; using System.Threading.Tasks; +using TMPro; using UnityEngine; namespace TiltBrush @@ -24,6 +25,8 @@ private struct TiltZipHeader private IResource m_Resource; + public IResource Resource => m_Resource; + public DotTiltFile(IResource resource) { m_Resource = resource; @@ -67,10 +70,26 @@ public bool ReadAndVerifyTiltHeader(Stream stream) public async Task GetSubFileAsync(string filename) { var stream = await m_Resource.GetStreamAsync(); + string tempFilename; + if (!stream.CanSeek) + { + // Cache to a file + tempFilename = Path.GetTempFileName(); + using (var fileStream = File.Create(tempFilename)) + { + await stream.CopyToAsync(fileStream); + fileStream.Close(); + } + //Debug.Log($"Copied {m_Resource.Uri} to {tempFilename}."); + stream.Close(); + stream = File.Open(tempFilename, FileMode.Open); + } + if (!ReadAndVerifyTiltHeader(stream)) { return null; } + var subStream = new SubStream(stream); var archive = new ZipArchive(subStream, ZipArchiveMode.Read); var entry = archive.GetEntry(filename); diff --git a/Assets/Scripts/ResourceSystem/RemoteSketch.cs b/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs similarity index 84% rename from Assets/Scripts/ResourceSystem/RemoteSketch.cs rename to Assets/Scripts/ResourceSystem/RemoteSketchResource.cs index bab4b8289a..c0f2121756 100644 --- a/Assets/Scripts/ResourceSystem/RemoteSketch.cs +++ b/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs @@ -25,14 +25,17 @@ public RemoteSketchResource(string name, Uri uri, Texture2D previewImage = null, #pragma warning disable 1998 public async Task InitAsync() { - throw new NotImplementedException(); + //throw new NotImplementedException(); + return; } public async Task LoadPreviewAsync() { - throw new NotImplementedException(); + // throw new NotImplementedException(); + return false; } public async Task GetStreamAsync() { + return await App.HttpClient.GetStreamAsync(Uri); throw new NotImplementedException(); } #pragma warning restore 1998 diff --git a/Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta b/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs.meta similarity index 100% rename from Assets/Scripts/ResourceSystem/RemoteSketch.cs.meta rename to Assets/Scripts/ResourceSystem/RemoteSketchResource.cs.meta diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs new file mode 100644 index 0000000000..4cc8632a40 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using FluxJpeg.Core; +using UnityEngine; +namespace TiltBrush +{ + public class ResourceCollectionSketchSet : SketchSet + { + private IResourceCollection m_Collection; + private Task m_Init; + private Task m_LoadingIcons; + private Task m_Refreshing; + private List m_Sketches; + private Dictionary m_CachedIcons; + private int m_LookAhead = 40; + private bool m_FeedExhausted; + private ConcurrentQueue m_IconsToLoad; + private IAsyncEnumerator m_ResourceEnumerator; + + public ResourceCollectionSketchSet(IResourceCollection collection) + { + m_Sketches = new List(); + m_IconsToLoad = new ConcurrentQueue(); + m_Collection = collection; + m_ResourceEnumerator = m_Collection.Contents().GetAsyncEnumerator(); + } + public SketchSetType Type => SketchSetType.Curated; + + public bool IsReadyForAccess => m_Init is { IsCompleted: true }; + + public bool IsActivelyRefreshingSketches => m_Refreshing is { IsCompleted: false }; + + public bool RequestedIconsAreLoaded => m_LoadingIcons is { IsCompleted: true }; + + public int NumSketches => m_Sketches.Count; + + public void Init() + { + m_Init = m_Collection.InitAsync(); + InitAsync(); + } + + private async Task InitAsync() + { + await m_Init; + m_Refreshing = FetchSketchesToAtLeastAsync(0); + await m_Refreshing; + } + + public bool IsSketchIndexValid(int index) + { + return index < NumSketches; + } + + public void RequestOnlyLoadedMetadata(List requests) + { + foreach (var item in requests) + { + m_IconsToLoad.Enqueue(item); + } + if (m_LoadingIcons == null || m_LoadingIcons.IsCompleted) + { + m_LoadingIcons = LoadIcons(); + } + } + + private async Task LoadIcons() + { + var loadingTasks = new List(); + while (m_IconsToLoad.TryDequeue(out int index)) + { + var sketch = m_Sketches[index]; + if (sketch.Icon == null) + { + loadingTasks.Add(LoadSketchIcon(sketch)); + } + } + foreach (var task in loadingTasks) + { + await task; + } + } + + private async Task LoadSketchIcon(RemoteSketch remoteSketch) + { + var url = remoteSketch.SceneFileInfo.FullPath; + var tilt = new TiltFile(new Uri(url)); + using (var thumbStream = await tilt.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) + { + if (thumbStream == null) + { + Debug.LogError($"Could not open {TiltFile.FN_THUMBNAIL} stream from {url}."); + return; + } + try + { + Texture2D icon = new Texture2D(2, 2); + var memStream = new MemoryStream(); + await thumbStream.CopyToAsync(memStream); + icon.LoadImage(memStream.ToArray()); + remoteSketch.Icon = icon; + } + catch (Exception e) + { + Debug.LogException(e); + } + } + } + + private void FetchSketchesToAtLeast(int index) + { + if (m_Refreshing?.IsCompleted == false) + { + return; + } + m_Refreshing = FetchSketchesToAtLeastAsync(index); + } + + private async Task FetchSketchesToAtLeastAsync(int index) + { + int totalIndex = index + m_LookAhead; + while (await m_ResourceEnumerator.MoveNextAsync() && totalIndex > NumSketches) + { + var resource = m_ResourceEnumerator.Current; + var fileInfo = new ResourceFileInfo(resource); + var sketch = new RemoteSketch + { + SceneFileInfo = fileInfo, + Authors = resource.Authors.Select(x => x.Name).ToArray(), + }; + m_Sketches.Add(sketch); + + } + } + + public bool GetSketchIcon(int index, out Texture2D icon, out string[] authors, out string description) + { + FetchSketchesToAtLeast(index); + var sketch = m_Sketches[index]; + icon = sketch.Icon; + authors = sketch.Authors; + description = "DESCRIPTION NOT IMPLEMENTED"; + return icon != null; + } + + public SceneFileInfo GetSketchSceneFileInfo(int index) + { + return m_Sketches[index].SceneFileInfo; + } + + public string GetSketchName(int index) + { + return m_Sketches[index].SceneFileInfo.HumanName; + } + + public void DeleteSketch(int index) + { + // do nothing + } + + public void PrecacheSketchModels(int index) + { + // TODO: Later, my friend - later. + // I would like to make sketches contain all their models rather + // than support all that guff. + } + + public void NotifySketchCreated(string fullpath) + { + // Do nothing? + } + + public void NotifySketchChanged(string fullpath) + { + // Do nothing? + } + + public void RequestRefresh() + { + // Not sure we have to do anything here + } + + public void Update() + { + // Not sure we have to do anything here + } + + public event Action OnChanged; + + public event Action OnSketchRefreshingChanged; + + } +} diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs.meta b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs.meta new file mode 100644 index 0000000000..31a97b2c26 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 97f71631285848d3a290428fb5f3307c +timeCreated: 1677048096 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs new file mode 100644 index 0000000000..4aa5875c6b --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs @@ -0,0 +1,39 @@ +using System.IO; +using System.Threading.Tasks; +using USD.NET; +namespace TiltBrush +{ + public class ResourceFileInfo : SceneFileInfo + { + private IResource m_Resource; + private DotTiltFile m_TiltFile; + + public ResourceFileInfo(IResource resource) + { + m_Resource = resource; + m_TiltFile = new DotTiltFile(m_Resource); + } + public FileInfoType InfoType => FileInfoType.Cloud; // TODO: this should probably do something sensible here + public string HumanName => m_Resource.Name; + public bool Valid => true; // TODO: Not sure if this should always be true + public bool Available => true; // Maybe? + public string FullPath => m_Resource.Uri.AbsoluteUri; // Unsure if this is correct + public bool Exists => true; // ? + public bool ReadOnly => true; // TODO: For now only read-only + public string AssetId => ""; + public string SourceId => ""; + public int? TriangleCount => null; + public void Delete() + { + throw new System.NotImplementedException(); + } + public bool IsHeaderValid() + { + return true; // TODO : FAAAEEEEKE + } + public async Task GetReadStreamAsync(string subfileName) + { + return await m_TiltFile.GetSubFileAsync(subfileName); + } + } +} diff --git a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs.meta b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs.meta new file mode 100644 index 0000000000..cff1209d31 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 804db625f43b4bf68c7e5fb4f1202013 +timeCreated: 1677047424 \ No newline at end of file diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index d4cab10d9e..04bd20a668 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -62,11 +62,14 @@ void Awake() InitFeaturedSketchesPath(); + var icosaCollection = new IcosaSketchCollection(App.HttpClient); + m_Sets = new SketchSet[] { new FileSketchSet(), //new FileSketchSet(App.FeaturedSketchesPath()), - new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), + //new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), + new ResourceCollectionSketchSet(icosaCollection), new PolySketchSet(this, SketchSetType.Liked, maxTriangles, needsLogin: true), new GoogleDriveSketchSet(), }; diff --git a/Assets/Scripts/Save/TiltFile.cs b/Assets/Scripts/Save/TiltFile.cs index 11ebb9e957..46b7197ee8 100644 --- a/Assets/Scripts/Save/TiltFile.cs +++ b/Assets/Scripts/Save/TiltFile.cs @@ -318,13 +318,37 @@ public async Task GetReadStreamAsync(string subfileName) else { stream = await App.HttpClient.GetStreamAsync(m_Uri); + + ReadTiltZipHeader(stream); + + string tempFilename; + if (!stream.CanSeek) + { + // Cache to a file + tempFilename = Path.GetTempFileName(); + using (var fileStream = File.Create(tempFilename)) + { + await stream.CopyToAsync(fileStream); + fileStream.Close(); + } + //Debug.Log($"Copied {m_Uri} to {tempFilename}."); + stream.Close(); + stream = File.Open(tempFilename, FileMode.Open); + } } if (stream != null) { - ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: true); - var zipEntry = archive.GetEntry(subfileName); - return zipEntry?.Open(); + try + { + ZipArchive archive = new ZipArchive(stream, ZipArchiveMode.Read, leaveOpen: true); + var zipEntry = archive.GetEntry(subfileName); + return zipEntry?.Open(); + } + catch (Exception e) + { + Debug.LogException(e); + } } return null; } diff --git a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs index e2016e8af3..d359026ef4 100644 --- a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs +++ b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs @@ -128,7 +128,7 @@ public bool GetSketchIcon(int index, out Texture2D icon, out string[] authors, o icon = sketch.Icon; authors = sketch.Authors; description = "DESCRIPTION NOT IMPLEMENTED"; - return true; + return icon != null; } private RemoteSketch GetSketchAtIndex(int index) diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 3ba556f9c5..905f32a91a 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -4124,6 +4124,7 @@ private IEnumerator LoadSketchCoroutine(SceneFileInfo fileInfo, bool quickload, } else { + Debug.LogException((loadTask.Exception)); App.Instance.SetDesiredState(previousState); } QualityControls.m_Instance.ResetAutoQuality(); From c77325ce7d232ed0a6ba2d993fde4f037c1ddc77 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 16:55:19 -0800 Subject: [PATCH 07/38] Get rid of those old bit I no longer want --- .../Scripts/Sharing/AsyncWrapperSketchSet.cs | 195 ------------------ .../Sharing/AsyncWrapperSketchSet.cs.meta | 3 - Assets/Scripts/Sharing/ISketchSetAsync.cs | 23 --- .../Scripts/Sharing/ISketchSetAsync.cs.meta | 3 - Assets/Scripts/Sharing/RssSketchSetAsync.cs | 45 ---- .../Scripts/Sharing/RssSketchSetAsync.cs.meta | 3 - 6 files changed, 272 deletions(-) delete mode 100644 Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs delete mode 100644 Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta delete mode 100644 Assets/Scripts/Sharing/ISketchSetAsync.cs delete mode 100644 Assets/Scripts/Sharing/ISketchSetAsync.cs.meta delete mode 100644 Assets/Scripts/Sharing/RssSketchSetAsync.cs delete mode 100644 Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta diff --git a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs deleted file mode 100644 index d359026ef4..0000000000 --- a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs +++ /dev/null @@ -1,195 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using FluxJpeg.Core; -using UnityEngine; -namespace TiltBrush -{ - public class AsyncWrapperSketchSet : SketchSet - { - private ISketchSetAsync m_Async; - private Task m_Init; - private Task m_LoadingIcons; - private Task m_Refreshing; - private List m_SketchPages; - private Dictionary m_CachedIcons; - private int m_LookAhead = 40; - private bool m_FeedExhausted; - private ConcurrentQueue m_IconsToLoad; - - public AsyncWrapperSketchSet(ISketchSetAsync async) - { - m_SketchPages = new List(); - m_IconsToLoad = new ConcurrentQueue(); - m_Async = async; - } - public SketchSetType Type => SketchSetType.Async; - - public bool IsReadyForAccess => m_Init is { IsCompleted: true }; - - public bool IsActivelyRefreshingSketches => m_Refreshing is { IsCompleted: false }; - - public bool RequestedIconsAreLoaded => m_LoadingIcons is { IsCompleted: true }; - - public int NumSketches => m_SketchPages.Sum(x => x.Length); - - public void Init() - { - m_Init = m_Async.InitAsync(); - InitAsync(); - } - - private async Task InitAsync() - { - await m_Init; - m_Refreshing = FetchSketchesToAtLeastAsync(0); - await m_Refreshing; - } - - public bool IsSketchIndexValid(int index) - { - return index < NumSketches; - } - - public void RequestOnlyLoadedMetadata(List requests) - { - foreach (var item in requests) - { - m_IconsToLoad.Enqueue(item); - } - if (m_LoadingIcons == null || m_LoadingIcons.IsCompleted) - { - m_LoadingIcons = LoadIcons(); - } - } - - private async Task LoadIcons() - { - var loadingTasks = new List(); - while (m_IconsToLoad.TryDequeue(out int index)) - { - var sketch = GetSketchAtIndex(index); - if (sketch.Icon == null) - { - loadingTasks.Add(LoadSketchIcon(sketch)); - } - } - foreach (var task in loadingTasks) - { - await task; - } - } - - private async Task LoadSketchIcon(RemoteSketch remoteSketch) - { - var url = remoteSketch.SceneFileInfo.FullPath; - var tilt = new TiltFile(url); - using (var thumbStream = await tilt.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) - { - Texture2D icon = new Texture2D(2, 2); - var memStream = new MemoryStream(); - await thumbStream.CopyToAsync(memStream); - icon.LoadImage(memStream.ToArray()); - remoteSketch.Icon = icon; - } - } - - private void FetchSketchesToAtLeast(int index) - { - if (m_Refreshing?.IsCompleted == false) - { - return; - } - m_Refreshing = FetchSketchesToAtLeastAsync(index); - } - - private async Task FetchSketchesToAtLeastAsync(int index) - { - int totalIndex = index + m_LookAhead; - while (!m_FeedExhausted && totalIndex > NumSketches) - { - var newPage = await m_Async.FetchSketchPageAsync(m_SketchPages.Count); - if (newPage.Length == 0) - { - m_FeedExhausted = true; - return; - } - m_SketchPages.Add(newPage); - } - } - - public bool GetSketchIcon(int index, out Texture2D icon, out string[] authors, out string description) - { - FetchSketchesToAtLeast(index); - var sketch = GetSketchAtIndex(index); - icon = sketch.Icon; - authors = sketch.Authors; - description = "DESCRIPTION NOT IMPLEMENTED"; - return icon != null; - } - - private RemoteSketch GetSketchAtIndex(int index) - { - for (int page = 0; page < m_SketchPages.Count; page++) - { - int pageLength = m_SketchPages[page].Length; - if (index < pageLength) - { - return m_SketchPages[page][index]; - } - index -= pageLength; - } - return null; - } - - public SceneFileInfo GetSketchSceneFileInfo(int index) - { - return GetSketchAtIndex(index).SceneFileInfo; - } - - public string GetSketchName(int index) - { - return GetSketchAtIndex(index).SceneFileInfo.HumanName; - } - - public void DeleteSketch(int index) - { - // do nothing - } - - public void PrecacheSketchModels(int index) - { - // TODO: Later, my friend - later. - // I would like to make sketches contain all their models rather - // than support all that guff. - } - - public void NotifySketchCreated(string fullpath) - { - // Do nothing? - } - - public void NotifySketchChanged(string fullpath) - { - // Do nothing? - } - - public void RequestRefresh() - { - // Not sure we have to do anything here - } - - public void Update() - { - // Not sure we have to do anything here - } - - public event Action OnChanged; - - public event Action OnSketchRefreshingChanged; - - } -} diff --git a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta b/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta deleted file mode 100644 index 3a693b91b3..0000000000 --- a/Assets/Scripts/Sharing/AsyncWrapperSketchSet.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2586b6c1311c4511a574a98bd633cb21 -timeCreated: 1675922406 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/ISketchSetAsync.cs b/Assets/Scripts/Sharing/ISketchSetAsync.cs deleted file mode 100644 index 79dd39b237..0000000000 --- a/Assets/Scripts/Sharing/ISketchSetAsync.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.IO; -using System.Threading.Tasks; -using UnityEngine; -namespace TiltBrush -{ - public class RemoteSketch : Sketch - { - public SceneFileInfo SceneFileInfo { get; set; } - public string[] Authors { get; set; } - public Texture2D Icon { get; set; } - public bool IconAndMetadataValid => Authors != null && Icon != null; - } - - public interface ISketchSetAsync - { - public string Name { get; } - - public Task InitAsync(); - - public Task FetchSketchPageAsync(int page); - } -} diff --git a/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta b/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta deleted file mode 100644 index 871213e9f1..0000000000 --- a/Assets/Scripts/Sharing/ISketchSetAsync.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: de4fff3cd7174ab9bb15c3fa98e48417 -timeCreated: 1675912821 \ No newline at end of file diff --git a/Assets/Scripts/Sharing/RssSketchSetAsync.cs b/Assets/Scripts/Sharing/RssSketchSetAsync.cs deleted file mode 100644 index d2675f1263..0000000000 --- a/Assets/Scripts/Sharing/RssSketchSetAsync.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Xml; -using System.ServiceModel.Syndication; -using UnityEngine; - -namespace TiltBrush -{ - public class RssSketchSetAsync : ISketchSetAsync - { - private Uri m_Uri; - public RssSketchSetAsync(Uri uri) - { - m_Uri = uri; - } - - public string Name => "RSS Feed"; - public async Task InitAsync() - { - // might as well do all the work when getting the page - return; - } - public async Task FetchSketchPageAsync(int page) - { - Debug.Log($"Fetching rss stream {m_Uri.AbsoluteUri}"); - var stream = await App.HttpClient.GetStreamAsync(m_Uri).ConfigureAwait(false); - Debug.Log("Got stream"); - using var xmlReader = XmlReader.Create(stream); - Debug.Log("Loading feed"); - var feed = SyndicationFeed.Load(xmlReader); - var sketches = new List(); - foreach (var item in feed.Items) - { - var sketch = new RemoteSketch(); - var tiltUri = item.Links[0].Uri; - sketch.SceneFileInfo = new RemoteFileInfo(tiltUri); - sketch.Authors = item.Authors.Select(x => x.Name).ToArray(); - sketches.Add(sketch); - } - return sketches.ToArray(); - } - } -} diff --git a/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta b/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta deleted file mode 100644 index e6cab2e80f..0000000000 --- a/Assets/Scripts/Sharing/RssSketchSetAsync.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 70dd25a5f5464d57a719261e662266b0 -timeCreated: 1676514670 \ No newline at end of file From 7f2343b33ddacd02e11d5755e32f4bb21218c7c2 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 16:58:48 -0800 Subject: [PATCH 08/38] Update to use ResourceFileInfo --- .../ResourceCollectionSketchSet.cs | 21 ++++------ .../ResourceSystem/ResourceFileInfo.cs | 1 + .../Scripts/ResourceSystem/ResourceSketch.cs | 39 +++++++++++++++++++ .../ResourceSystem/ResourceSketch.cs.meta | 11 ++++++ 4 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 Assets/Scripts/ResourceSystem/ResourceSketch.cs create mode 100644 Assets/Scripts/ResourceSystem/ResourceSketch.cs.meta diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 4cc8632a40..6e09762ea9 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -14,7 +14,7 @@ public class ResourceCollectionSketchSet : SketchSet private Task m_Init; private Task m_LoadingIcons; private Task m_Refreshing; - private List m_Sketches; + private List m_Sketches; private Dictionary m_CachedIcons; private int m_LookAhead = 40; private bool m_FeedExhausted; @@ -23,7 +23,7 @@ public class ResourceCollectionSketchSet : SketchSet public ResourceCollectionSketchSet(IResourceCollection collection) { - m_Sketches = new List(); + m_Sketches = new List(); m_IconsToLoad = new ConcurrentQueue(); m_Collection = collection; m_ResourceEnumerator = m_Collection.Contents().GetAsyncEnumerator(); @@ -85,11 +85,11 @@ private async Task LoadIcons() } } - private async Task LoadSketchIcon(RemoteSketch remoteSketch) + private async Task LoadSketchIcon(ResourceSketch resourceSketch) { - var url = remoteSketch.SceneFileInfo.FullPath; - var tilt = new TiltFile(new Uri(url)); - using (var thumbStream = await tilt.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) + var url = resourceSketch.SceneFileInfo.FullPath; + var tilt = new DotTiltFile(resourceSketch.ResourceFileInfo.Resource); + using (var thumbStream = await tilt.GetSubFileAsync(TiltFile.FN_THUMBNAIL)) { if (thumbStream == null) { @@ -102,7 +102,7 @@ private async Task LoadSketchIcon(RemoteSketch remoteSketch) var memStream = new MemoryStream(); await thumbStream.CopyToAsync(memStream); icon.LoadImage(memStream.ToArray()); - remoteSketch.Icon = icon; + resourceSketch.Icon = icon; } catch (Exception e) { @@ -127,13 +127,8 @@ private async Task FetchSketchesToAtLeastAsync(int index) { var resource = m_ResourceEnumerator.Current; var fileInfo = new ResourceFileInfo(resource); - var sketch = new RemoteSketch - { - SceneFileInfo = fileInfo, - Authors = resource.Authors.Select(x => x.Name).ToArray(), - }; + var sketch = new ResourceSketch(fileInfo); m_Sketches.Add(sketch); - } } diff --git a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs index 4aa5875c6b..6563129ff6 100644 --- a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs +++ b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs @@ -13,6 +13,7 @@ public ResourceFileInfo(IResource resource) m_Resource = resource; m_TiltFile = new DotTiltFile(m_Resource); } + public IResource Resource => m_Resource; public FileInfoType InfoType => FileInfoType.Cloud; // TODO: this should probably do something sensible here public string HumanName => m_Resource.Name; public bool Valid => true; // TODO: Not sure if this should always be true diff --git a/Assets/Scripts/ResourceSystem/ResourceSketch.cs b/Assets/Scripts/ResourceSystem/ResourceSketch.cs new file mode 100644 index 0000000000..f22cbda930 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceSketch.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Assertions; + +namespace TiltBrush +{ + public class ResourceSketch : Sketch + { + private ResourceFileInfo m_FileInfo; + public ResourceSketch(ResourceFileInfo fileInfo) + { + m_FileInfo = fileInfo; + } + + public ResourceFileInfo ResourceFileInfo => m_FileInfo; + public SceneFileInfo SceneFileInfo + { + get => m_FileInfo; + set + { + Assert.IsTrue(value is ResourceFileInfo); + } + } + + public string[] Authors + { + get => m_FileInfo.Resource.Authors.Select(x => x.Name).ToArray(); + set + { + throw new NotSupportedException("ResourceSketch does not support setting authors."); + } + } + public Texture2D Icon { get; set; } + public bool IconAndMetadataValid => Authors != null && Icon != null; + } +} diff --git a/Assets/Scripts/ResourceSystem/ResourceSketch.cs.meta b/Assets/Scripts/ResourceSystem/ResourceSketch.cs.meta new file mode 100644 index 0000000000..34107c5257 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceSketch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3ae8ddc001dc734289d2ffbf6f469cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 01071f39e7839af835f1c1d2e345949b3a5cc1f5 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 18:53:36 -0800 Subject: [PATCH 09/38] Load Icosa thumbails from web if available --- .../ResourceSystem/FilesystemSketch.cs | 7 +++-- .../FilesystemSketchCollection.cs | 7 +++-- Assets/Scripts/ResourceSystem/IResource.cs | 4 +-- .../ResourceSystem/IcosaSketchCollection.cs | 8 +++-- .../ResourceSystem/RemoteSketchResource.cs | 30 ++++++++++++++----- .../ResourceCollectionSketchSet.cs | 13 ++++++-- 6 files changed, 47 insertions(+), 22 deletions(-) diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs index 35e198dff6..0b49b3731d 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs @@ -20,7 +20,7 @@ public FilesystemSketch(string path) public Uri Uri { get; } - public Texture2D PreviewImage { get; } + public Uri PreviewUri { get; } public string Description { get; } @@ -34,9 +34,10 @@ public async Task InitAsync() return; } - public async Task LoadPreviewAsync() + public async Task LoadPreviewAsync() { - return false; + throw new NotImplementedException(); + return null; } public async Task GetStreamAsync() { diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index 5d55c8d6eb..e14ab2dc24 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -20,7 +20,7 @@ public FilesystemSketchCollection(string path, string name) public Uri Uri { get; private set; } - public Texture2D PreviewImage { get; } + public Uri PreviewUri { get; } public string Description { get; } @@ -29,10 +29,11 @@ public FilesystemSketchCollection(string path, string name) public ResourceLicense License { get; } #pragma warning disable 1998 - public async Task LoadPreviewAsync() + public async Task LoadPreviewAsync() { // TODO: Perhaps to something clever with having a thumbnail in a .meta subdir? - return false; // false means no preview created. + throw new NotImplementedException(); + return null; } public async Task InitAsync() diff --git a/Assets/Scripts/ResourceSystem/IResource.cs b/Assets/Scripts/ResourceSystem/IResource.cs index 4eaf15adc8..d88b568315 100644 --- a/Assets/Scripts/ResourceSystem/IResource.cs +++ b/Assets/Scripts/ResourceSystem/IResource.cs @@ -9,14 +9,14 @@ public interface IResource { string Name { get; } Uri Uri { get; } - Texture2D PreviewImage { get; } + Uri PreviewUri { get; } string Description { get; } Author[] Authors { get; } ResourceLicense License { get; } // Todo: tags? key value pairs? Task InitAsync(); - Task LoadPreviewAsync(); + Task LoadPreviewAsync(); Task GetStreamAsync(); } } diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs index b035b4a65f..440d011d30 100644 --- a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs @@ -56,7 +56,7 @@ public IcosaSketchCollection(HttpClient httpClient, string user = null) public string Name { get; private set; } public Uri Uri { get; } - public Texture2D PreviewImage { get; } + public Uri PreviewUri { get; } public string Description { get; } public Author[] Authors { get; } public ResourceLicense License { get; } @@ -66,9 +66,10 @@ public async Task InitAsync() { return; } - public async Task LoadPreviewAsync() + public async Task LoadPreviewAsync() { - return false; + throw new NotImplementedException(); + return null; } private async IAsyncEnumerable ReadPage(Stream stream) @@ -97,6 +98,7 @@ private async IAsyncEnumerable ReadPage(Stream stream) var remoteSketch = new RemoteSketchResource( name: sketch.name, uri: new Uri(tiltFormat.url), + previewUri: sketch.thumbnail == null ? null : new Uri(sketch.thumbnail), description: sketch.description, authors: authors ); diff --git a/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs b/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs index c0f2121756..287984892a 100644 --- a/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs +++ b/Assets/Scripts/ResourceSystem/RemoteSketchResource.cs @@ -6,11 +6,12 @@ namespace TiltBrush { public class RemoteSketchResource : IResource { - public RemoteSketchResource(string name, Uri uri, Texture2D previewImage = null, string description = null, Author[] authors = null, ResourceLicense license = null) + + public RemoteSketchResource(string name, Uri uri, Uri previewUri = null, string description = null, Author[] authors = null, ResourceLicense license = null) { Name = name; Uri = uri; - PreviewImage = previewImage; + PreviewUri = previewUri; Description = description; Authors = authors; License = license; @@ -18,7 +19,7 @@ public RemoteSketchResource(string name, Uri uri, Texture2D previewImage = null, public string Name { get; } public Uri Uri { get; } - public Texture2D PreviewImage { get; } + public Uri PreviewUri { get; } public string Description { get; } public Author[] Authors { get; } public ResourceLicense License { get; } @@ -28,16 +29,29 @@ public async Task InitAsync() //throw new NotImplementedException(); return; } - public async Task LoadPreviewAsync() +#pragma warning restore 1998 + + public async Task LoadPreviewAsync() { - // throw new NotImplementedException(); - return false; + if (PreviewUri == null) + { + return null; + } + var httpStream = await App.HttpClient.GetStreamAsync(PreviewUri); + var memoryStream = new MemoryStream(); + await httpStream.CopyToAsync(memoryStream); + httpStream.Close(); + var texture = new Texture2D(2, 2); + if (!texture.LoadImage(memoryStream.ToArray())) + { + return null; + } + return texture; } + public async Task GetStreamAsync() { return await App.HttpClient.GetStreamAsync(Uri); - throw new NotImplementedException(); } -#pragma warning restore 1998 } } diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 6e09762ea9..0318a97208 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -87,6 +87,13 @@ private async Task LoadIcons() private async Task LoadSketchIcon(ResourceSketch resourceSketch) { + var thumbnail = await resourceSketch.ResourceFileInfo.Resource.LoadPreviewAsync(); + if (thumbnail != null) + { + resourceSketch.Icon = thumbnail; + return; + } + var url = resourceSketch.SceneFileInfo.FullPath; var tilt = new DotTiltFile(resourceSketch.ResourceFileInfo.Resource); using (var thumbStream = await tilt.GetSubFileAsync(TiltFile.FN_THUMBNAIL)) @@ -98,11 +105,11 @@ private async Task LoadSketchIcon(ResourceSketch resourceSketch) } try { - Texture2D icon = new Texture2D(2, 2); + thumbnail = new Texture2D(2, 2); var memStream = new MemoryStream(); await thumbStream.CopyToAsync(memStream); - icon.LoadImage(memStream.ToArray()); - resourceSketch.Icon = icon; + thumbnail.LoadImage(memStream.ToArray()); + resourceSketch.Icon = thumbnail; } catch (Exception e) { From 14f52b2f9c470f68e7973448e99f91a03f7ea06b Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 22:38:23 -0800 Subject: [PATCH 10/38] Rename Contents to ContentsAsync --- Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs | 4 ++-- Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs | 2 +- Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs | 2 +- Assets/Scripts/ResourceSystem/IResourceCollection.cs | 2 +- Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs | 4 ++-- Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs index 5213624ac0..4f3abbc671 100644 --- a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs +++ b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs @@ -34,7 +34,7 @@ public async Task FilesystemSketchCollectionEnumAsync() Assert.AreEqual(collection.Uri, new Uri($"file://{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet")); Assert.AreEqual(collection.Name, "Test"); var contents = new List(); - await foreach (var resource in collection.Contents()) + await foreach (var resource in collection.ContentsAsync()) { contents.Add(resource); } @@ -45,7 +45,7 @@ public async Task FilesystemSketchCollectionEnumAsync() await subdir.InitAsync(); contents = new List(); - await foreach (var resource in subdir.Contents()) + await foreach (var resource in subdir.ContentsAsync()) { contents.Add(resource); } diff --git a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs index d61ce3e1ad..6a152d6788 100644 --- a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs +++ b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs @@ -25,7 +25,7 @@ public async Task TestIcosaCollection() { var collection = new IcosaSketchCollection(m_HttpClient); await collection.InitAsync(); - var enumerator = collection.Contents().GetAsyncEnumerator(); + var enumerator = collection.ContentsAsync().GetAsyncEnumerator(); for (int i = 0; i < 10; ++i) { Assert.IsTrue(await enumerator.MoveNextAsync()); diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index e14ab2dc24..e4d9962ef8 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -46,7 +46,7 @@ public async Task InitAsync() Uri = new Uri($"file://{m_Dir.FullName}"); } - public async IAsyncEnumerable Contents() + public async IAsyncEnumerable ContentsAsync() { foreach (var dirInfo in m_Dir.EnumerateDirectories()) { diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs index 2ff3aa1487..6e58e363c6 100644 --- a/Assets/Scripts/ResourceSystem/IResourceCollection.cs +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -4,6 +4,6 @@ namespace TiltBrush { public interface IResourceCollection : IResource { - IAsyncEnumerable Contents(); + IAsyncEnumerable ContentsAsync(); } } diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs index 440d011d30..257af623f0 100644 --- a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs @@ -33,7 +33,7 @@ public class Format public string ownerurl; } - public class IcosaSketchCollection : IResource, IResourceCollection + public class IcosaSketchCollection : IResourceCollection { private string m_User; private HttpClient m_httpClient; @@ -114,7 +114,7 @@ public async Task GetStreamAsync() #pragma warning restore 1998 - public async IAsyncEnumerable Contents() + public async IAsyncEnumerable ContentsAsync() { if (m_User == null) { diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 0318a97208..5ed41da0e1 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -26,7 +26,7 @@ public ResourceCollectionSketchSet(IResourceCollection collection) m_Sketches = new List(); m_IconsToLoad = new ConcurrentQueue(); m_Collection = collection; - m_ResourceEnumerator = m_Collection.Contents().GetAsyncEnumerator(); + m_ResourceEnumerator = m_Collection.ContentsAsync().GetAsyncEnumerator(); } public SketchSetType Type => SketchSetType.Curated; From 2421b5b967c3ad8f81aa9c483a96939aa18b39af Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 26 Feb 2023 22:38:48 -0800 Subject: [PATCH 11/38] Rss sketchset --- .../ResourceCollectionSketchSet.cs | 2 +- .../ResourceSystem/RssSketchCollection.cs | 73 +++++++++++++++++++ .../RssSketchCollection.cs.meta | 11 +++ Assets/Scripts/Save/SketchCatalog.cs | 6 +- 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 Assets/Scripts/ResourceSystem/RssSketchCollection.cs create mode 100644 Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 5ed41da0e1..d1a16b8907 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -53,7 +53,7 @@ private async Task InitAsync() public bool IsSketchIndexValid(int index) { - return index < NumSketches; + return index < NumSketches && index >= 0; } public void RequestOnlyLoadedMetadata(List requests) diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs new file mode 100644 index 0000000000..4e978fdfda --- /dev/null +++ b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Threading.Tasks; +using System.Xml; +using System.ServiceModel.Syndication; +using UnityEngine; + +namespace TiltBrush +{ + public class RssSketchCollection : IResourceCollection + { + private Uri m_Uri; + private HttpClient m_HttpClient; + + public RssSketchCollection(HttpClient httpClient, Uri uri) + { + m_Uri = uri; + m_HttpClient = httpClient; + } + + public string Name => "RSS Feed"; + public Uri Uri { get; } + public Uri PreviewUri { get; } + public string Description { get; } + public Author[] Authors { get; } + public ResourceLicense License { get; } + public async Task InitAsync() + { + // might as well do all the work when getting the page + return; + } + public async Task LoadPreviewAsync() + { + throw new NotImplementedException(); + } + public async Task GetStreamAsync() + { + throw new NotImplementedException(); + } + public async IAsyncEnumerable ContentsAsync() + { + SyndicationFeed feed; + try + { + Debug.Log($"Fetching rss stream {m_Uri.AbsoluteUri}"); + var stream = await m_HttpClient.GetStreamAsync(m_Uri); + Debug.Log("Got stream"); + using var xmlReader = XmlReader.Create(stream); + Debug.Log("Loading feed"); + feed = SyndicationFeed.Load(xmlReader); + } + catch (Exception e) + { + Debug.LogException(e); + yield break; + } + foreach (var item in feed.Items) + { + var remoteSketch = new RemoteSketchResource( + name: item.Title.Text, + uri: item.Links[0].Uri, + previewUri: null, + description: item.Summary.Text, + authors: item.Authors.Select(x => new TiltBrush.Author { Name = x.Name, Url = x.Uri, Email = x.Email }).ToArray() + ); + yield return remoteSketch; + } + } + } +} diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta new file mode 100644 index 0000000000..797f05c730 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9e40a8a9d9ec80644a66760d2dafa6d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index 04bd20a668..68f054cb15 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -62,14 +62,16 @@ void Awake() InitFeaturedSketchesPath(); - var icosaCollection = new IcosaSketchCollection(App.HttpClient); + //var icosaCollection = new IcosaSketchCollection(App.HttpClient); + var rssCollection = new RssSketchCollection(App.HttpClient, new Uri("https://timaidley.github.io/open-brush-feed/sketches.rss")); m_Sets = new SketchSet[] { new FileSketchSet(), //new FileSketchSet(App.FeaturedSketchesPath()), //new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), - new ResourceCollectionSketchSet(icosaCollection), + //new ResourceCollectionSketchSet(icosaCollection), + new ResourceCollectionSketchSet(rssCollection), new PolySketchSet(this, SketchSetType.Liked, maxTriangles, needsLogin: true), new GoogleDriveSketchSet(), }; From 877ecd93d218e39b40b94ed2a939822b3cac8440 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Mon, 27 Feb 2023 20:26:06 -0800 Subject: [PATCH 12/38] Rename Sketch and SketchSet to ISketch and ISketchSet because they are both interfaces. --- Assets/Scripts/GUI/LoadSketchButton.cs | 4 ++-- Assets/Scripts/GUI/SketchbookPanel.cs | 2 +- .../ResourceSystem/ResourceCollectionSketchSet.cs | 2 +- Assets/Scripts/ResourceSystem/ResourceSketch.cs | 2 +- Assets/Scripts/Save/FileSketchSet.cs | 4 ++-- Assets/Scripts/Save/{SketchSet.cs => ISketchSet.cs} | 4 ++-- .../Save/{SketchSet.cs.meta => ISketchSet.cs.meta} | 0 Assets/Scripts/Save/SketchCatalog.cs | 10 +++++----- Assets/Scripts/Sharing/GoogleDriveSketchSet.cs | 2 +- Assets/Scripts/Sharing/PolySketchSet.cs | 4 ++-- Assets/Scripts/SketchControlsScript.cs | 12 ++++++------ 11 files changed, 23 insertions(+), 23 deletions(-) rename Assets/Scripts/Save/{SketchSet.cs => ISketchSet.cs} (97%) rename Assets/Scripts/Save/{SketchSet.cs.meta => ISketchSet.cs.meta} (100%) diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index b563cf144b..eb1b92f30b 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -38,7 +38,7 @@ public struct MenuButton private float m_DynamicUvTransitionSpeed = 12.0f; private float m_DynamicUvTransitionValue; private int m_SketchIndex; - private SketchSet m_SketchSet; + private ISketchSet m_SketchSet; private UIComponentManager m_UIComponentManager; public int SketchIndex @@ -51,7 +51,7 @@ public int SketchIndex } } - public SketchSet SketchSet + public ISketchSet SketchSet { get { return m_SketchSet; } set diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 972f89dcbc..bda4b1dabe 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -73,7 +73,7 @@ public class SketchbookPanel : ModalPanel private bool m_AllIconTexturesAssigned; private bool m_AllSketchesAreAvailable; private SketchSetType m_CurrentSketchSet; - private SketchSet m_SketchSet; + private ISketchSet m_SketchSet; private OptionButton m_NewSketchButtonScript; private OptionButton m_PaintButtonScript; private List m_IconScriptsOnFirstPage; diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index d1a16b8907..b098498b8f 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -8,7 +8,7 @@ using UnityEngine; namespace TiltBrush { - public class ResourceCollectionSketchSet : SketchSet + public class ResourceCollectionSketchSet : ISketchSet { private IResourceCollection m_Collection; private Task m_Init; diff --git a/Assets/Scripts/ResourceSystem/ResourceSketch.cs b/Assets/Scripts/ResourceSystem/ResourceSketch.cs index f22cbda930..8e3ac050e0 100644 --- a/Assets/Scripts/ResourceSystem/ResourceSketch.cs +++ b/Assets/Scripts/ResourceSystem/ResourceSketch.cs @@ -7,7 +7,7 @@ namespace TiltBrush { - public class ResourceSketch : Sketch + public class ResourceSketch : ISketch { private ResourceFileInfo m_FileInfo; public ResourceSketch(ResourceFileInfo fileInfo) diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 8ef39e2d65..929c3a48e2 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -23,7 +23,7 @@ namespace TiltBrush { - public class FileSketchSet : SketchSet + public class FileSketchSet : ISketchSet { static int ICON_LOAD_PER_FRAME = 3; @@ -47,7 +47,7 @@ public static byte[] ReadThumbnailAsync(SceneFileInfo fileinfo) } } - private class FileSketch : Sketch, IComparable + private class FileSketch : ISketch, IComparable { private DiskSceneFileInfo m_FileInfo; private Texture2D m_Icon; diff --git a/Assets/Scripts/Save/SketchSet.cs b/Assets/Scripts/Save/ISketchSet.cs similarity index 97% rename from Assets/Scripts/Save/SketchSet.cs rename to Assets/Scripts/Save/ISketchSet.cs index a074ce5b16..2a615c0b72 100644 --- a/Assets/Scripts/Save/SketchSet.cs +++ b/Assets/Scripts/Save/ISketchSet.cs @@ -20,7 +20,7 @@ namespace TiltBrush { // Not actually useful as only used internally in SketchSets. - public interface Sketch + public interface ISketch { SceneFileInfo SceneFileInfo { get; } string[] Authors { get; } @@ -31,7 +31,7 @@ public interface Sketch /// A collection of sketches from some source (user's local folder, showcase, cloud). /// Name, icon and author are available here, and sketches are accessed by getting the /// SceneFileInfo. - public interface SketchSet + public interface ISketchSet { SketchSetType Type { get; } diff --git a/Assets/Scripts/Save/SketchSet.cs.meta b/Assets/Scripts/Save/ISketchSet.cs.meta similarity index 100% rename from Assets/Scripts/Save/SketchSet.cs.meta rename to Assets/Scripts/Save/ISketchSet.cs.meta diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index 68f054cb15..c21b6f8ad1 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -38,9 +38,9 @@ public class SketchCatalog : MonoBehaviour // Obviously, if Poly as a database is deleted or moved, accessing these files will fail. public const string kDefaultShowcaseSketchesFolder = "DefaultShowcaseSketches"; - private SketchSet[] m_Sets; + private ISketchSet[] m_Sets; - public SketchSet GetSet(SketchSetType eType) + public ISketchSet GetSet(SketchSetType eType) { return m_Sets[(int)eType]; } @@ -65,7 +65,7 @@ void Awake() //var icosaCollection = new IcosaSketchCollection(App.HttpClient); var rssCollection = new RssSketchCollection(App.HttpClient, new Uri("https://timaidley.github.io/open-brush-feed/sketches.rss")); - m_Sets = new SketchSet[] + m_Sets = new ISketchSet[] { new FileSketchSet(), //new FileSketchSet(App.FeaturedSketchesPath()), @@ -102,7 +102,7 @@ public static bool InitFeaturedSketchesPath() void Start() { - foreach (SketchSet s in m_Sets) + foreach (ISketchSet s in m_Sets) { s.Init(); } @@ -110,7 +110,7 @@ void Start() void Update() { - foreach (SketchSet s in m_Sets) + foreach (ISketchSet s in m_Sets) { s.Update(); } diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index d40759da25..8f8e4c335c 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -28,7 +28,7 @@ namespace TiltBrush { /// A sketchset made up of the sketches stored on Google drive, excepting the ones that are copies /// of the sketches on the local device. - public class GoogleDriveSketchSet : SketchSet + public class GoogleDriveSketchSet : ISketchSet { public class GoogleDriveFileInfo : SceneFileInfo diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index 6de2358527..e6ba415075 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -26,14 +26,14 @@ namespace TiltBrush { // TODO: Specify tag for which sketches to query (curated, liked etc.) - public class PolySketchSet : SketchSet + public class PolySketchSet : ISketchSet { const int kDownloadBufferSize = 1024 * 1024; // 1MB // Downloading is handled by PolySketchSet which will set the local paths - private class PolySketch : Sketch + private class PolySketch : ISketch { // This value holds the count of sketches that were downloaded by the sketch set // before this one. It's used during our sort to retain order from Poly, while diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 905f32a91a..a8a83a2a05 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -3866,7 +3866,7 @@ IEnumerator LoadAndExportList(List filenames) // This coroutine must be run to completion or disposed. IEnumerator LoadAndExportAll() { - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User); for (int i = 0; i < SketchCatalog.m_Instance.GetSet(SketchSetType.User).NumSketches; ++i) { SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(i); @@ -4243,7 +4243,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, // TODO Refactor with Load below var index = iParam1; var sketchSetType = (SketchSetType)iParam2; - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4259,7 +4259,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { var index = iParam1; var sketchSetType = (SketchSetType)iParam2; - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4468,7 +4468,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { var index = iParam1; var sketchSetType = (SketchSetType)iParam2; - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); EatGazeObjectInput(); //launch external window and tell the user we did so @@ -4536,7 +4536,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.DeleteSketch: { var sketchSetType = (SketchSetType)iParam2; - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); sketchSet.DeleteSketch(iParam1); DismissPopupOnCurrentGazeObject(false); break; @@ -4761,7 +4761,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, if (sketchBook != null) { // Get triangle count from cloud scene file info. - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); SceneFileInfo sfi = sketchSet.GetSketchSceneFileInfo(index); int tris = sfi.TriangleCount ?? -1; From 338b7e2391c41340085bd45eb90bccf65ba0157d Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Tue, 28 Feb 2023 17:27:03 -0800 Subject: [PATCH 13/38] SketchSets are now identified by type and instance Very Work In Progress! --- Assets/Scripts/GUI/DownloadPopupWindow.cs | 4 +- Assets/Scripts/GUI/InspectSketchButton.cs | 9 +- Assets/Scripts/GUI/LoadSketchButton.cs | 10 +- Assets/Scripts/GUI/NewSketchButton.cs | 2 +- Assets/Scripts/GUI/SketchbookPanel.cs | 98 ++++++++++--------- .../FilesystemSketchCollection.cs | 3 + .../ResourceSystem/IResourceCollection.cs | 3 + .../ResourceSystem/IcosaSketchCollection.cs | 3 + .../ResourceCollectionSketchSet.cs | 5 +- .../ResourceSystem/RssSketchCollection.cs | 3 + Assets/Scripts/Save/FileSketchSet.cs | 14 ++- Assets/Scripts/Save/ISketchSet.cs | 16 ++- Assets/Scripts/Save/SketchCatalog.cs | 65 +++++++++--- Assets/Scripts/Sharing/DriveSync.cs | 2 +- .../Scripts/Sharing/DriveSyncDebugWindow.cs | 2 +- .../Scripts/Sharing/GoogleDriveSketchSet.cs | 5 +- Assets/Scripts/Sharing/PolySketchSet.cs | 36 ++++--- Assets/Scripts/Sharing/VrAssetService.cs | 6 +- Assets/Scripts/SketchControlsScript.cs | 41 ++++---- 19 files changed, 208 insertions(+), 119 deletions(-) diff --git a/Assets/Scripts/GUI/DownloadPopupWindow.cs b/Assets/Scripts/GUI/DownloadPopupWindow.cs index e3ee8a721b..9effb33834 100644 --- a/Assets/Scripts/GUI/DownloadPopupWindow.cs +++ b/Assets/Scripts/GUI/DownloadPopupWindow.cs @@ -26,12 +26,12 @@ public class DownloadPopupWindow : PopUpWindow override public void SetPopupCommandParameters(int commandParam, int commandParam2) { - if (commandParam2 != (int)SketchSetType.Drive) + var sketchSet = SketchCatalog.m_Instance.GetSet(commandParam2); + if (sketchSet.SketchSetType != GoogleDriveSketchSet.TypeName) { return; } m_SketchIndex = commandParam; - var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive) as GoogleDriveSketchSet; m_SceneFileInfo = sketchSet.GetSketchSceneFileInfo(commandParam) as GoogleDriveSketchSet.GoogleDriveFileInfo; diff --git a/Assets/Scripts/GUI/InspectSketchButton.cs b/Assets/Scripts/GUI/InspectSketchButton.cs index e337067e52..62a0cb1bcf 100644 --- a/Assets/Scripts/GUI/InspectSketchButton.cs +++ b/Assets/Scripts/GUI/InspectSketchButton.cs @@ -18,19 +18,20 @@ namespace TiltBrush public class InspectSketchButton : BaseButton { private int m_SketchIndex; - private SketchSetType m_SketchSetType; + private string m_SketchSetId; - public void SetSketchDetails(int index, SketchSetType type) + public void SetSketchDetails(int index, string type) { m_SketchIndex = index; - m_SketchSetType = type; + m_SketchSetId = type; } override protected void OnButtonPressed() { BasePanel panel = m_Manager.GetPanelForPopUps(); + int index = SketchCatalog.m_Instance.GetSetIndexById(m_SketchSetId); panel.CreatePopUp(SketchControlsScript.GlobalCommands.SketchbookMenu, - m_SketchIndex, (int)m_SketchSetType); + m_SketchIndex, index); // Position popup next to button. panel.PositionPopUp(transform.position); diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index eb1b92f30b..70d42ac366 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -86,10 +86,10 @@ public bool WarningVisible void RefreshDetails() { - m_MenuButton.SetSketchDetails(m_SketchIndex, SketchSet.Type); + m_MenuButton.SetSketchDetails(m_SketchIndex, SketchSet.SketchSetId); m_SizeOk = true; - if (m_SketchSet.Type == SketchSetType.Liked) + if (m_SketchSet.SketchSetType == PolySketchSet.TypeName && m_SketchSet.SketchSetInstance == "Liked") { if (m_SketchSet.IsSketchIndexValid(m_SketchIndex)) { @@ -151,7 +151,7 @@ override public void SetColor(Color color) override protected void OnButtonPressed() { if (!m_SketchSet.GetSketchSceneFileInfo(m_SketchIndex).Available && - m_SketchSet.Type != SketchSetType.Drive) + m_SketchSet.SketchSetType != GoogleDriveSketchSet.TypeName) { return; } @@ -160,7 +160,7 @@ override protected void OnButtonPressed() // LoadConfirmUnsaved -> LoadWaitOnDownload -> LoadConfirmComplex -> LoadComplexHigh -> Load SketchControlsScript.m_Instance.IssueGlobalCommand( SketchControlsScript.GlobalCommands.LoadConfirmUnsaved, - m_SketchIndex, (int)m_SketchSet.Type); + m_SketchIndex, SketchCatalog.m_Instance.GetSetIndex(m_SketchSet)); ResetState(); } @@ -196,7 +196,7 @@ override public void GainFocus() { base.GainFocus(); m_DynamicUvTransitionValue = 0.0f; - m_MenuButton.gameObject.SetActive(m_SketchSet.Type == SketchSetType.User); + m_MenuButton.gameObject.SetActive(m_SketchSet.SketchSetType == FileSketchSet.TypeName); if (!m_SizeOk) { SetDescriptionVisualsAvailable(false); diff --git a/Assets/Scripts/GUI/NewSketchButton.cs b/Assets/Scripts/GUI/NewSketchButton.cs index 42e85558f4..0b1f05350a 100644 --- a/Assets/Scripts/GUI/NewSketchButton.cs +++ b/Assets/Scripts/GUI/NewSketchButton.cs @@ -49,7 +49,7 @@ protected override void OnButtonPressed() // Change the shown sketchset by simulating a press on the corresponding gallery button. SketchbookPanel panel = m_Manager.GetComponent(); - if (SketchCatalog.m_Instance.GetSet(SketchSetType.User).NumSketches == 0) + if (SketchCatalog.m_Instance.GetFirstSetOrDefault(FileSketchSet.TypeName).NumSketches == 0) { panel.ButtonPressed(GalleryButton.Type.Showcase); } diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index bda4b1dabe..d478c211d5 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -72,7 +72,7 @@ public class SketchbookPanel : ModalPanel private bool m_AllIconTexturesAssigned; private bool m_AllSketchesAreAvailable; - private SketchSetType m_CurrentSketchSet; + //private string m_CurrentSketchSet; private ISketchSet m_SketchSet; private OptionButton m_NewSketchButtonScript; private OptionButton m_PaintButtonScript; @@ -114,11 +114,13 @@ protected override List Icons public override bool IsInButtonMode(ModeButton button) { GalleryButton galleryButton = button as GalleryButton; + int index = SketchCatalog.m_Instance.GetSetIndex(m_SketchSet); + // TODO: There's gotta be a better way of doing this! return galleryButton && - ((galleryButton.m_ButtonType == GalleryButton.Type.Liked && m_CurrentSketchSet == SketchSetType.Liked) || - (galleryButton.m_ButtonType == GalleryButton.Type.Local && m_CurrentSketchSet == SketchSetType.User) || - (galleryButton.m_ButtonType == GalleryButton.Type.Showcase && m_CurrentSketchSet == SketchSetType.Curated) || - (galleryButton.m_ButtonType == GalleryButton.Type.Drive && m_CurrentSketchSet == SketchSetType.Drive)); + ((galleryButton.m_ButtonType == GalleryButton.Type.Liked && index == 2) || + (galleryButton.m_ButtonType == GalleryButton.Type.Local && index == 0) || + (galleryButton.m_ButtonType == GalleryButton.Type.Showcase && index == 1) || + (galleryButton.m_ButtonType == GalleryButton.Type.Drive && index == 3)); } override public void InitPanel() @@ -160,12 +162,15 @@ protected override void OnStart() m_NotLoggedInMessage.SetActive(false); m_NotLoggedInDriveMessage.SetActive(false); + m_SketchSet = SketchCatalog.m_Instance.GetSet(2); // Poly sketches + + // Dynamically position the gallery buttons. OnDriveSetHasSketchesChanged(); // Set the sketch set var to Liked, then function set to force state. - m_CurrentSketchSet = SketchSetType.Liked; - SetVisibleSketchSet(SketchSetType.User); + SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(0)); + RefreshPage(); Action refresh = () => { @@ -178,9 +183,11 @@ protected override void OnStart() RefreshPage(); } }; - SketchCatalog.m_Instance.GetSet(SketchSetType.Liked).OnSketchRefreshingChanged += refresh; - SketchCatalog.m_Instance.GetSet(SketchSetType.Curated).OnSketchRefreshingChanged += refresh; - SketchCatalog.m_Instance.GetSet(SketchSetType.Drive).OnSketchRefreshingChanged += refresh; + + // TODO: We probably should just do a refresh when we enter a sketchset + SketchCatalog.m_Instance.GetSet(1).OnSketchRefreshingChanged += refresh; + SketchCatalog.m_Instance.GetSet(2).OnSketchRefreshingChanged += refresh; + SketchCatalog.m_Instance.GetSet(3).OnSketchRefreshingChanged += refresh; App.GoogleIdentity.OnLogout += refresh; } @@ -201,9 +208,9 @@ override protected void OnEnablePanel() } } - void SetVisibleSketchSet(SketchSetType type) + void SetVisibleSketchSet(ISketchSet newSketchSet) { - if (m_CurrentSketchSet != type) + if (newSketchSet != m_SketchSet) { // Clean up our old sketch set. if (m_SketchSet != null) @@ -212,7 +219,7 @@ void SetVisibleSketchSet(SketchSetType type) } // Cache new set. - m_SketchSet = SketchCatalog.m_Instance.GetSet(type); + m_SketchSet = newSketchSet; m_SketchSet.OnChanged += OnSketchSetDirty; m_SketchSet.RequestRefresh(); @@ -227,12 +234,12 @@ void SetVisibleSketchSet(SketchSetType type) ComputeNumPages(); ResetPageIndex(); - m_CurrentSketchSet = type; RefreshPage(); - switch (m_CurrentSketchSet) + + switch (newSketchSet.SketchSetType) { - case SketchSetType.User: + case FileSketchSet.TypeName: if (m_PanelText) { m_PanelText.text = m_PanelTextStandard; @@ -242,7 +249,7 @@ void SetVisibleSketchSet(SketchSetType type) m_PanelTextPro.text = m_PanelTextStandard; } break; - case SketchSetType.Curated: + case ResourceCollectionSketchSet.TypeName: if (m_PanelText) { m_PanelText.text = m_PanelTextShowcase; @@ -252,7 +259,7 @@ void SetVisibleSketchSet(SketchSetType type) m_PanelTextPro.text = m_PanelTextShowcase; } break; - case SketchSetType.Liked: + case PolySketchSet.TypeName: if (m_PanelText) { m_PanelText.text = m_PanelTextLiked; @@ -262,7 +269,7 @@ void SetVisibleSketchSet(SketchSetType type) m_PanelTextPro.text = m_PanelTextLiked; } break; - case SketchSetType.Drive: + case GoogleDriveSketchSet.TypeName: if (m_PanelText) { m_PanelText.text = m_PanelTextDrive; @@ -322,7 +329,7 @@ protected override void RefreshPage() // Base Refresh updates the modal parts of the panel, and we always want those refreshed. base.RefreshPage(); - bool requiresPoly = m_CurrentSketchSet == SketchSetType.Liked; + bool requiresPoly = m_SketchSet.SketchSetType == PolySketchSet.TypeName; bool polyDown = VrAssetService.m_Instance.NoConnection && requiresPoly; m_NoPolyConnectionMessage.SetActive(polyDown); @@ -344,37 +351,35 @@ protected override void RefreshPage() bool refreshIcons = m_SketchSet.NumSketches > 0; // Show no sketches if we don't have sketches. - m_NoSketchesMessage.SetActive( - (m_CurrentSketchSet == SketchSetType.User) && (m_SketchSet.NumSketches <= 0)); - m_NoDriveSketchesMessage.SetActive( - (m_CurrentSketchSet == SketchSetType.Drive) && (m_SketchSet.NumSketches <= 0)); + bool isUser = m_SketchSet.SketchSetType == FileSketchSet.TypeName; + bool isLiked = m_SketchSet.SketchSetType == PolySketchSet.TypeName; + bool isCurated = m_SketchSet.SketchSetType == ResourceCollectionSketchSet.TypeName; + bool isDrive = m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName; + m_NoSketchesMessage.SetActive(isUser && (m_SketchSet.NumSketches <= 0)); + m_NoDriveSketchesMessage.SetActive(isDrive && (m_SketchSet.NumSketches <= 0)); // Show sign in popup if signed out for liked or drive sketchsets - bool showNotLoggedIn = !App.GoogleIdentity.LoggedIn && - (m_CurrentSketchSet == SketchSetType.Liked || - m_CurrentSketchSet == SketchSetType.Drive); + bool showNotLoggedIn = !App.GoogleIdentity.LoggedIn && (isLiked || isDrive); refreshIcons = refreshIcons && !showNotLoggedIn; - m_NotLoggedInMessage.SetActive(showNotLoggedIn && m_CurrentSketchSet == SketchSetType.Liked); - m_NotLoggedInDriveMessage.SetActive(showNotLoggedIn && - m_CurrentSketchSet == SketchSetType.Drive); + m_NotLoggedInMessage.SetActive(showNotLoggedIn && isLiked); + m_NotLoggedInDriveMessage.SetActive(showNotLoggedIn && isDrive); // Show no likes text & gallery button if we don't have liked sketches. m_NoLikesMessage.SetActive( - (m_CurrentSketchSet == SketchSetType.Liked) && + isLiked && (m_SketchSet.NumSketches <= 0) && !m_SketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn); // Show Contacting Server if we're talking to Poly. m_ContactingServerMessage.SetActive( - (requiresPoly || - m_CurrentSketchSet == SketchSetType.Drive) && + (requiresPoly || isDrive) && (m_SketchSet.NumSketches <= 0) && (m_SketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn)); // Show Showcase error if we're in Showcase and don't have sketches. m_NoShowcaseMessage.SetActive( - (m_CurrentSketchSet == SketchSetType.Curated) && + isCurated && (m_SketchSet.NumSketches <= 0) && !m_SketchSet.IsActivelyRefreshingSketches); @@ -462,9 +467,9 @@ void Update() icon.UpdateUvOffsetAndScale(offset, m_SketchIconUvScale); } - switch (m_CurrentSketchSet) + switch (m_SketchSet.SketchSetType) { - case SketchSetType.Curated: + case ResourceCollectionSketchSet.TypeName: m_LoadingGallery.SetActive(m_SketchSet.IsActivelyRefreshingSketches); m_DriveSyncProgress.SetActive(false); m_SyncingDriveIcon.SetActive(false); @@ -472,7 +477,7 @@ void Update() m_DriveDisabledIcon.SetActive(false); m_DriveFullIcon.SetActive(false); break; - case SketchSetType.Liked: + case PolySketchSet.TypeName: m_LoadingGallery.SetActive(false); m_DriveSyncProgress.SetActive(false); m_SyncingDriveIcon.SetActive(false); @@ -480,9 +485,9 @@ void Update() m_DriveDisabledIcon.SetActive(false); m_DriveFullIcon.SetActive(false); break; - case SketchSetType.User: - case SketchSetType.Drive: - bool sketchSetRefreshing = m_CurrentSketchSet == SketchSetType.Drive && + case FileSketchSet.TypeName: + case GoogleDriveSketchSet.TypeName: + bool sketchSetRefreshing = m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName && m_SketchSet.IsActivelyRefreshingSketches; bool driveSyncing = App.DriveSync.Syncing; bool syncEnabled = App.DriveSync.SyncEnabled; @@ -499,7 +504,7 @@ void Update() // Check to see if whether "drive set has sketches" has changed. bool driveSetHasSketches = - SketchCatalog.m_Instance.GetSet(SketchSetType.Drive).NumSketches != 0; + SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName).NumSketches != 0; if (m_DriveSetHasSketches != driveSetHasSketches) { m_DriveSetHasSketches = driveSetHasSketches; @@ -524,7 +529,7 @@ private void OnDriveSetHasSketchesChanged() m_GalleryButtons[m_ElementNumberGalleryButtonDrive].gameObject.SetActive(false); galleryButtonN = galleryButtonAvailable - 1; - if (m_CurrentSketchSet == SketchSetType.Drive) + if (m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) { // We were on the Drive tab but it's gone away so switch to the local tab by simulating // the user pressing the local tab button. @@ -755,6 +760,7 @@ override public bool RaycastAgainstMeshCollider(Ray rRay, out RaycastHit rHitInf // Works specifically with GalleryButtons. public void ButtonPressed(GalleryButton.Type rType, BaseButton button = null) { + // TODO: Just do this whole damn thing differently. switch (rType) { case GalleryButton.Type.Exit: @@ -762,16 +768,16 @@ public void ButtonPressed(GalleryButton.Type rType, BaseButton button = null) PointerManager.m_Instance.EatLineEnabledInput(); break; case GalleryButton.Type.Showcase: - SetVisibleSketchSet(SketchSetType.Curated); + SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(1)); break; case GalleryButton.Type.Local: - SetVisibleSketchSet(SketchSetType.User); + SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(0)); break; case GalleryButton.Type.Liked: - SetVisibleSketchSet(SketchSetType.Liked); + SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(2)); break; case GalleryButton.Type.Drive: - SetVisibleSketchSet(SketchSetType.Drive); + SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(3)); if (!m_ReadOnlyShown) { CreatePopUp(SketchControlsScript.GlobalCommands.ReadOnlyNotice, diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index e4d9962ef8..d8ac220802 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -16,6 +16,9 @@ public FilesystemSketchCollection(string path, string name) Name = name; } + public string CollectionType => "LocalFolderCollection"; + public string CollectionInstance => m_Path; + public string Name { get; private set; } public Uri Uri { get; private set; } diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs index 6e58e363c6..92b0351fd5 100644 --- a/Assets/Scripts/ResourceSystem/IResourceCollection.cs +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -5,5 +5,8 @@ namespace TiltBrush public interface IResourceCollection : IResource { IAsyncEnumerable ContentsAsync(); + + string CollectionType { get; } + string CollectionInstance { get; } } } diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs index 257af623f0..f43a7b57a6 100644 --- a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs @@ -54,6 +54,9 @@ public IcosaSketchCollection(HttpClient httpClient, string user = null) m_httpClient = httpClient; } + public string CollectionType => "Icosa"; + public string CollectionInstance => m_User ?? ""; + public string Name { get; private set; } public Uri Uri { get; } public Uri PreviewUri { get; } diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index b098498b8f..3b4f63590d 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -28,7 +28,10 @@ public ResourceCollectionSketchSet(IResourceCollection collection) m_Collection = collection; m_ResourceEnumerator = m_Collection.ContentsAsync().GetAsyncEnumerator(); } - public SketchSetType Type => SketchSetType.Curated; + + public const string TypeName = "ResourceCollection"; + public string SketchSetType => m_Collection.CollectionType; + public string SketchSetInstance => m_Collection.CollectionInstance; public bool IsReadyForAccess => m_Init is { IsCompleted: true }; diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs index 4e978fdfda..113f69939d 100644 --- a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs @@ -21,6 +21,9 @@ public RssSketchCollection(HttpClient httpClient, Uri uri) m_HttpClient = httpClient; } + public string CollectionType => "Rss"; + public string CollectionInstance => m_Uri.OriginalString; + public string Name => "RSS Feed"; public Uri Uri { get; } public Uri PreviewUri { get; } diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 929c3a48e2..5343d4f60d 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -196,7 +196,6 @@ public int CompareTo(FileSketch rCompareSketch) } } - protected SketchSetType m_Type; protected bool m_ReadyForAccess; private List m_Sketches; private Stack m_RequestedLoads; @@ -209,10 +208,11 @@ public int CompareTo(FileSketch rCompareSketch) private bool m_ReadOnly; private string m_SketchesPath; - public SketchSetType Type - { - get { return m_Type; } - } + public const string TypeName = "LocalFolder"; + + public string SketchSetType => TypeName; + + public string SketchSetInstance => $"{m_SketchesPath}?readonly={m_ReadOnly}"; public bool IsReadyForAccess { @@ -236,7 +236,6 @@ public int NumSketches public FileSketchSet() { - m_Type = SketchSetType.User; m_ReadyForAccess = false; m_RequestedLoads = new Stack(); m_Sketches = new List(); @@ -248,7 +247,6 @@ public FileSketchSet() public FileSketchSet(string path) { - m_Type = SketchSetType.Curated; m_ReadyForAccess = false; m_RequestedLoads = new Stack(); m_Sketches = new List(); @@ -333,7 +331,7 @@ public virtual void DeleteSketch(int toDelete) m_FileWatcher.NotifyDelete(m_Sketches[toDelete].SceneFileInfo.FullPath); // Notify the drive sketchset as the deleted file may now be visible there. - var driveSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive); + var driveSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); if (driveSet != null) { driveSet.NotifySketchChanged(m_Sketches[toDelete].SceneFileInfo.FullPath); diff --git a/Assets/Scripts/Save/ISketchSet.cs b/Assets/Scripts/Save/ISketchSet.cs index 2a615c0b72..d4e273571c 100644 --- a/Assets/Scripts/Save/ISketchSet.cs +++ b/Assets/Scripts/Save/ISketchSet.cs @@ -33,7 +33,21 @@ public interface ISketch /// SceneFileInfo. public interface ISketchSet { - SketchSetType Type { get; } + // Each Sketch Set should have a type - e.g. 'Poly', 'Icosa', 'LocalFolder', 'Rss', + // which should be the same for all instances of that type. + string SketchSetType { get; } + // Each Sketch Set should have an instance, that is enough to create a sketch set with. + // This could be something like an URL or a path, or a type. + string SketchSetInstance { get; } + + string SketchSetId => $"{SketchSetType}:{SketchSetInstance}"; + (string type, string instance) TypeAndInstanceFromId(string id) + { + int colonPos = id.IndexOf(":"); + string type = id.Substring(0, colonPos); + string instance = id.Substring(colonPos + 1); + return (type, instance); + } /// True if the sketch set can be accessed, but does not imply that all the data (like icons, etc) /// have been read yet. diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index c21b6f8ad1..11b06dce32 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -13,21 +13,13 @@ // limitations under the License. using System; +using System.Collections.Generic; using System.IO; +using System.Linq; using UnityEngine; namespace TiltBrush { - - public enum SketchSetType - { - User, - Curated, - Liked, - Drive, - Async, - } - // SketchCatalog.Awake must come after App.Awake public class SketchCatalog : MonoBehaviour { @@ -40,9 +32,48 @@ public class SketchCatalog : MonoBehaviour private ISketchSet[] m_Sets; - public ISketchSet GetSet(SketchSetType eType) + public ISketchSet GetSet(int i) + { + return m_Sets[i]; + } + + public ISketchSet GetSet(string type, string instance) { - return m_Sets[(int)eType]; + return m_Sets.FirstOrDefault(x => x.SketchSetType == type && x.SketchSetInstance == instance); + } + + public ISketchSet GetFirstSetOrDefault(string type) + { + return m_Sets.FirstOrDefault(x => x.SketchSetType == type); + } + + public ISketchSet GetSetById(string id) + { + return m_Sets.FirstOrDefault(x => x.SketchSetId == id); + } + + public int GetSetIndexById(string id) + { + for (int i = 0; i < m_Sets.Length; i++) + { + if (m_Sets[i].SketchSetId == id) + { + return i; + } + } + return -1; + } + + public int GetSetIndex(ISketchSet sketchSet) + { + for (int i = 0; i < m_Sets.Length; i++) + { + if (m_Sets[i] == sketchSet) + { + return i; + } + } + return -1; } void Awake() @@ -72,7 +103,7 @@ void Awake() //new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), //new ResourceCollectionSketchSet(icosaCollection), new ResourceCollectionSketchSet(rssCollection), - new PolySketchSet(this, SketchSetType.Liked, maxTriangles, needsLogin: true), + new PolySketchSet(this, PolySketchSet.SketchType.Liked, maxTriangles, needsLogin: true), new GoogleDriveSketchSet(), }; } @@ -118,12 +149,16 @@ void Update() public void NotifyUserFileCreated(string fullpath) { - m_Sets[(int)SketchSetType.User].NotifySketchCreated(fullpath); + // TODO: This won't work with more tha one filesketchset. + var userSketches = GetFirstSetOrDefault(FileSketchSet.TypeName); + userSketches.NotifySketchCreated(fullpath); } public void NotifyUserFileChanged(string fullpath) { - m_Sets[(int)SketchSetType.User].NotifySketchChanged(fullpath); + // TODO: This won't work with more tha one filesketchset. + var userSketches = GetFirstSetOrDefault(FileSketchSet.TypeName); + userSketches.NotifySketchChanged(fullpath); } } diff --git a/Assets/Scripts/Sharing/DriveSync.cs b/Assets/Scripts/Sharing/DriveSync.cs index 592d62cfbf..e42430173a 100644 --- a/Assets/Scripts/Sharing/DriveSync.cs +++ b/Assets/Scripts/Sharing/DriveSync.cs @@ -970,7 +970,7 @@ private async Task UploadItemAsync(Transfer transfer, CancellationToken token) } if (Path.GetExtension(path) == ".tilt") { - var driveSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive); + var driveSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); if (item.FileId == null) { driveSet.NotifySketchCreated(path); diff --git a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs index e0ce79e925..0541b957a7 100644 --- a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs +++ b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs @@ -83,7 +83,7 @@ private void OnGUI() EditorGUILayout.Toggle("DriveSync.Initializing", App.DriveSync.Initializing); EditorGUILayout.Toggle("DriveSync.Initialized", App.DriveSync.Initialized); EditorGUILayout.Toggle("DriveSync.Syncing", App.DriveSync.Syncing); - var sketchset = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive); + var sketchset = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); if (sketchset != null) { EditorGUILayout.Toggle("SketchSet.IsReadyForAccess", sketchset.IsReadyForAccess); diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index 8f8e4c335c..4184ad7373 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -179,7 +179,10 @@ public async Task DownloadAsync(CancellationToken token) private Coroutine m_ThumbnailLoadingCoroutine; private bool m_Changed; - public SketchSetType Type => SketchSetType.Drive; + public const string TypeName = "GoogleDrive"; + public string SketchSetType => TypeName; + public string SketchSetInstance => ""; + public bool IsReadyForAccess => m_Sketches != null; diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index e6ba415075..b8b1934353 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -29,6 +29,12 @@ namespace TiltBrush public class PolySketchSet : ISketchSet { + public enum SketchType + { + Curated, + Liked, + } + const int kDownloadBufferSize = 1024 * 1024; // 1MB // Downloading is handled by PolySketchSet which will set the local paths @@ -101,21 +107,25 @@ public PolySceneFileInfo PolySceneFileInfo private bool m_ActivelyRefreshingSketches; private int m_MaximumSceneTriangles; - private SketchSetType m_Type; + private SketchType m_Type; private string m_CacheDir; private Coroutine m_RefreshCoroutine; private float m_CooldownTimer; private List m_RequestedIcons = new List(); private Coroutine m_TextureLoaderCoroutine; - public SketchSetType Type { get { return m_Type; } } + + + public const string TypeName = "Poly"; + public string SketchSetType => TypeName; + public string SketchSetInstance => m_Type == SketchType.Curated ? "Curated" : "Liked"; public VrAssetService VrAssetService { set { m_AssetService = value; } } - public PolySketchSet(MonoBehaviour parent, SketchSetType type, int maxSceneTriangles, + public PolySketchSet(MonoBehaviour parent, SketchType type, int maxSceneTriangles, bool needsLogin = false) { m_Parent = parent; @@ -288,7 +298,7 @@ private IEnumerator PeriodicRefreshCoroutine() m_RefreshRequested = false; // Don't poll the showcase - if (Type == SketchSetType.Curated) + if (m_Type == SketchType.Curated) { yield break; } @@ -326,7 +336,7 @@ private IEnumerator Refresh() if (m_CacheDir == null) { - m_CacheDir = CacheDir(Type); + m_CacheDir = CacheDir(m_Type); try { Directory.CreateDirectory(m_CacheDir); @@ -370,7 +380,7 @@ private IEnumerator PopulateSketchesCoroutine() // If we don't have a connection to Poly and we're querying the Showcase, use // the json metadatas stored in resources, instead of trying to get them from Poly. - if (VrAssetService.m_Instance.NoConnection && m_Type == SketchSetType.Curated) + if (VrAssetService.m_Instance.NoConnection && m_Type == SketchType.Curated) { TextAsset[] textAssets = Resources.LoadAll(SketchCatalog.kDefaultShowcaseSketchesFolder); @@ -382,7 +392,7 @@ private IEnumerator PopulateSketchesCoroutine() } else { - lister = m_AssetService.ListAssets(Type); + lister = m_AssetService.ListAssets(m_Type); } bool changed = false; @@ -429,11 +439,11 @@ private IEnumerator PopulateSketchesCoroutine() } // Only cull the curated sketches. If a user likes a sketch that's very high poly count, // there's no feedback to tell them why it didn't show up in their list. b/123649719 - if (m_Type == SketchSetType.Curated) + if (m_Type == SketchType.Curated) { infos = infos.Where(x => x.GltfTriangleCount < m_MaximumSceneTriangles).ToList(); } - if (m_Type == SketchSetType.Curated && !assetIds.Keys.Contains(kIntroSketchAssetId)) + if (m_Type == SketchType.Curated && !assetIds.Keys.Contains(kIntroSketchAssetId)) { yield return VrAssetService.m_Instance.InsertSketchInfo( kIntroSketchAssetId, kIntroSketchIndex, infos); @@ -472,7 +482,7 @@ private IEnumerator PopulateSketchesCoroutine() // Which results in a bad user experience. if ((++pagesFetched & 1) == 0 || lister == null || !lister.HasMore) { - if (Type == SketchSetType.Curated) + if (m_Type == SketchType.Curated) { sketches.Sort(CompareSketchesByTriangleCountAndDownloadIndex); } @@ -698,18 +708,18 @@ private IEnumerator TextureLoaderCoroutine() } } - private static string CacheDir(SketchSetType type) + private static string CacheDir(SketchType type) { switch (type) { - case SketchSetType.Liked: + case SketchType.Liked: { // Ids are in the format "people/123456" so just pull out the numeric part string id = App.GoogleIdentity.Profile.id; id = id.Substring(id.LastIndexOf('/') + 1); return Path.Combine(Application.persistentDataPath, String.Format("users/{0}/liked", id)); } - case SketchSetType.Curated: + case SketchType.Curated: return Path.Combine(Application.persistentDataPath, "Curated Sketches"); default: return null; diff --git a/Assets/Scripts/Sharing/VrAssetService.cs b/Assets/Scripts/Sharing/VrAssetService.cs index 006640c0c6..e405018227 100644 --- a/Assets/Scripts/Sharing/VrAssetService.cs +++ b/Assets/Scripts/Sharing/VrAssetService.cs @@ -759,13 +759,13 @@ public AssetGetter GetAsset(string assetId, VrAssetFormat type, string reason) return new AssetGetter(uri, assetId, type, reason); } - public AssetLister ListAssets(SketchSetType type) + public AssetLister ListAssets(PolySketchSet.SketchType type) { string filter = null; string errorMessage = null; switch (type) { - case SketchSetType.Liked: + case PolySketchSet.SketchType.Liked: if (!App.GoogleIdentity.LoggedIn) { return null; @@ -773,7 +773,7 @@ public AssetLister ListAssets(SketchSetType type) filter = $"{kUserLikesUri}?format=TILT&orderBy=LIKED_TIME&key={kPolyApiKey}"; errorMessage = "Failed to access your liked sketches."; break; - case SketchSetType.Curated: + case PolySketchSet.SketchType.Curated: if (string.IsNullOrEmpty(kPolyApiKey)) { return null; diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index a8a83a2a05..b144eebc10 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -3866,8 +3866,8 @@ IEnumerator LoadAndExportList(List filenames) // This coroutine must be run to completion or disposed. IEnumerator LoadAndExportAll() { - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User); - for (int i = 0; i < SketchCatalog.m_Instance.GetSet(SketchSetType.User).NumSketches; ++i) + ISketchSet sketchSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(FileSketchSet.TypeName); + for (int i = 0; i < sketchSet.NumSketches; ++i) { SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(i); using (var coroutine = LoadAndExport(rInfo.FullPath)) @@ -4242,8 +4242,9 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { // TODO Refactor with Load below var index = iParam1; - var sketchSetType = (SketchSetType)iParam2; - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4258,8 +4259,9 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.Load: { var index = iParam1; - var sketchSetType = (SketchSetType)iParam2; - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4467,8 +4469,9 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.ShowSketchFolder: { var index = iParam1; - var sketchSetType = (SketchSetType)iParam2; - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); EatGazeObjectInput(); //launch external window and tell the user we did so @@ -4535,8 +4538,9 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, break; case GlobalCommands.DeleteSketch: { - var sketchSetType = (SketchSetType)iParam2; - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); sketchSet.DeleteSketch(iParam1); DismissPopupOnCurrentGazeObject(false); break; @@ -4751,7 +4755,6 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.LoadConfirmComplex: { var index = iParam1; - var sketchSetType = (SketchSetType)iParam2; bool loadSketch = true; // If the sketchbook is active, we may want to show a popup instead of load. @@ -4761,7 +4764,9 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, if (sketchBook != null) { // Get triangle count from cloud scene file info. - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); SceneFileInfo sfi = sketchSet.GetSketchSceneFileInfo(index); int tris = sfi.TriangleCount ?? -1; @@ -4803,14 +4808,16 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.LoadWaitOnDownload: { bool download = false; - if (iParam2 == (int)SketchSetType.Drive) + ISketchSet sketchSet = sParam != null + ? SketchCatalog.m_Instance.GetSetById(sParam) + : SketchCatalog.m_Instance.GetSet(iParam2); + if (sketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) { BasePanel sketchBook = m_PanelManager.GetSketchBookPanel(); - var googleSketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive); if (sketchBook != null - && googleSketchSet != null - && googleSketchSet.IsSketchIndexValid(iParam1) - && !googleSketchSet.GetSketchSceneFileInfo(iParam1).Available) + && sketchSet != null + && sketchSet.IsSketchIndexValid(iParam1) + && !sketchSet.GetSketchSceneFileInfo(iParam1).Available) { sketchBook.CreatePopUp(GlobalCommands.LoadConfirmComplex, iParam1, iParam2, null); download = true; From 869d55347861273de1a810f6533dc6a7ad9ca403 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Wed, 1 Mar 2023 21:37:41 -0800 Subject: [PATCH 14/38] Sketchbook now has support for heirarchical sketchsets. --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 783 +++++++++++++++++- Assets/Scripts/GUI/DownloadPopupWindow.cs | 8 +- Assets/Scripts/GUI/InspectSketchButton.cs | 3 +- Assets/Scripts/GUI/LoadSketchButton.cs | 3 +- Assets/Scripts/GUI/NewSketchButton.cs | 12 +- Assets/Scripts/GUI/SketchbookPanel.cs | 178 ++-- .../ResourceSystem/IResourceCollection.cs | 1 - Assets/Scripts/Save/FileSketchSet.cs | 2 +- Assets/Scripts/Save/ISketchSet.cs | 5 + Assets/Scripts/Save/SketchCatalog.cs | 117 +-- Assets/Scripts/Sharing/DriveSync.cs | 2 +- .../Scripts/Sharing/DriveSyncDebugWindow.cs | 2 +- Assets/Scripts/SketchControlsScript.cs | 27 +- 13 files changed, 941 insertions(+), 202 deletions(-) diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index 3d5260bc92..5203373808 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -31,6 +31,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.7678, y: -0.5287, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012287575696} - {fileID: 4044106463973608} @@ -56,10 +57,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -84,6 +87,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6540804 BoxCollider: m_ObjectHideFlags: 0 @@ -171,9 +175,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.42, y: -0.991, z: -0.04} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 17 + m_RootOrder: 18 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3392684 MeshFilter: @@ -194,10 +199,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -222,6 +229,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6548470 BoxCollider: m_ObjectHideFlags: 0 @@ -295,6 +303,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} m_LocalScale: {x: 1, y: 0.02857143, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 447228} m_RootOrder: 0 @@ -318,10 +327,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -346,6 +357,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &109932 GameObject: m_ObjectHideFlags: 0 @@ -374,6 +386,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 400638} - {fileID: 473678} @@ -534,6 +547,7 @@ MonoBehaviour: - {fileID: 101820} m_CloseButton: {fileID: 1839306045669634} m_NewSketchButton: {fileID: 1227842993942742} + m_BackButton: {fileID: 6075256701100402820} m_GalleryButtons: - {fileID: 11443276} - {fileID: 114000011006960986} @@ -590,6 +604,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0, z: -0.1} m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 475426} m_RootOrder: 0 @@ -605,10 +620,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -633,6 +650,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &10296668 TextMesh: serializedVersion: 3 @@ -683,6 +701,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 458322} m_RootOrder: 1 @@ -706,10 +725,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -734,6 +755,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &126012 GameObject: m_ObjectHideFlags: 0 @@ -761,6 +783,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 405018} m_RootOrder: 0 @@ -808,12 +831,13 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.84, y: 0.4779, z: -0.0301} m_LocalScale: {x: 0.436, y: 0.436, z: 0.436} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 447228} - {fileID: 458322} - {fileID: 431352} m_Father: {fileID: 473678} - m_RootOrder: 13 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3366994 MeshFilter: @@ -834,10 +858,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -862,6 +888,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6529362 BoxCollider: m_ObjectHideFlags: 0 @@ -934,10 +961,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.132, y: -0.991, z: -0.04} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 440846} m_Father: {fileID: 473678} - m_RootOrder: 18 + m_RootOrder: 19 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3302166 MeshFilter: @@ -958,10 +986,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -986,6 +1016,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6522364 BoxCollider: m_ObjectHideFlags: 0 @@ -1059,6 +1090,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 479382} m_RootOrder: 1 @@ -1082,10 +1114,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1110,6 +1144,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &131562 GameObject: m_ObjectHideFlags: 0 @@ -1138,6 +1173,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0, z: -0.1} m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 423072} m_RootOrder: 0 @@ -1153,10 +1189,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1181,6 +1219,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &10216114 TextMesh: serializedVersion: 3 @@ -1231,6 +1270,7 @@ Transform: m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 432950} - {fileID: 471736} @@ -1256,10 +1296,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1284,6 +1326,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &136488 GameObject: m_ObjectHideFlags: 0 @@ -1312,6 +1355,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 458322} m_RootOrder: 0 @@ -1335,10 +1379,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1363,6 +1409,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &136962 GameObject: m_ObjectHideFlags: 0 @@ -1393,10 +1440,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.63, y: -0.991, z: -0.04} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 440778} m_Father: {fileID: 473678} - m_RootOrder: 22 + m_RootOrder: 23 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3357382 MeshFilter: @@ -1417,10 +1465,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1445,6 +1495,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6530300 BoxCollider: m_ObjectHideFlags: 0 @@ -1516,6 +1567,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4653590090589872} - {fileID: 4393356585195150} @@ -1530,6 +1582,7 @@ Transform: - {fileID: 473330} - {fileID: 476782} - {fileID: 406124} + - {fileID: 5835854812254485208} - {fileID: 490548} - {fileID: 4000010470004098} - {fileID: 468632} @@ -1593,10 +1646,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.436, y: -0.991, z: -0.04} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 408284} m_Father: {fileID: 473678} - m_RootOrder: 21 + m_RootOrder: 22 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3356862 MeshFilter: @@ -1617,10 +1671,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1645,6 +1701,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6563536 BoxCollider: m_ObjectHideFlags: 0 @@ -1721,6 +1778,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.012, y: 0.249, z: -0.03} m_LocalScale: {x: 0.935, y: 0.935, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012999570806} - {fileID: 4819910167133682} @@ -1746,10 +1804,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1774,6 +1834,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6528766 BoxCollider: m_ObjectHideFlags: 0 @@ -1859,6 +1920,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 434670} - {fileID: 454538} @@ -1884,10 +1946,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1912,6 +1976,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &153576 GameObject: m_ObjectHideFlags: 0 @@ -1943,6 +2008,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.247, y: -0.008, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000013461333742} - {fileID: 4192096235684524} @@ -1968,10 +2034,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -1996,6 +2064,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6569956 BoxCollider: m_ObjectHideFlags: 0 @@ -2084,6 +2153,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.7698, y: -0.012, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011053558040} - {fileID: 4969141364180978} @@ -2109,10 +2179,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2137,6 +2209,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6552846 BoxCollider: m_ObjectHideFlags: 0 @@ -2224,12 +2297,13 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.84, y: -0.1593, z: -0.0301} m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 412038} - {fileID: 479382} - {fileID: 499714} m_Father: {fileID: 473678} - m_RootOrder: 15 + m_RootOrder: 16 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3306764 MeshFilter: @@ -2250,10 +2324,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2278,6 +2354,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6590544 BoxCollider: m_ObjectHideFlags: 0 @@ -2348,6 +2425,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 431352} m_RootOrder: 1 @@ -2371,10 +2449,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2399,6 +2479,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &166396 GameObject: m_ObjectHideFlags: 0 @@ -2430,6 +2511,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.247, y: -0.5287, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000013138638754} - {fileID: 4916153691783676} @@ -2455,10 +2537,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2483,6 +2567,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6511028 BoxCollider: m_ObjectHideFlags: 0 @@ -2571,6 +2656,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.7698, y: 0.5129, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000013478852842} - {fileID: 4648845093172990} @@ -2596,10 +2682,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2624,6 +2712,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6524826 BoxCollider: m_ObjectHideFlags: 0 @@ -2709,6 +2798,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0, z: -0.1} m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 416688} m_RootOrder: 0 @@ -2724,10 +2814,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2752,6 +2844,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &10229552 TextMesh: serializedVersion: 3 @@ -2802,6 +2895,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.1} m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 499328} m_RootOrder: 0 @@ -2817,10 +2911,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2845,6 +2941,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &10296426 TextMesh: serializedVersion: 3 @@ -2898,6 +2995,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.2737, y: -0.5287, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011500092316} - {fileID: 4069340866196592} @@ -2923,10 +3021,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -2951,6 +3051,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6509246 BoxCollider: m_ObjectHideFlags: 0 @@ -3038,10 +3139,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.245, y: -0.991, z: -0.04} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 420674} m_Father: {fileID: 473678} - m_RootOrder: 20 + m_RootOrder: 21 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3376740 MeshFilter: @@ -3062,10 +3164,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3090,6 +3194,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6556412 BoxCollider: m_ObjectHideFlags: 0 @@ -3163,6 +3268,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 499714} m_RootOrder: 1 @@ -3186,10 +3292,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3214,6 +3322,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &173116 GameObject: m_ObjectHideFlags: 0 @@ -3242,6 +3351,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 447228} m_RootOrder: 1 @@ -3265,10 +3375,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3293,6 +3405,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &174376 GameObject: m_ObjectHideFlags: 0 @@ -3323,10 +3436,11 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.058, y: -0.991, z: -0.04} m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 494418} m_Father: {fileID: 473678} - m_RootOrder: 19 + m_RootOrder: 20 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3373530 MeshFilter: @@ -3347,10 +3461,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3375,6 +3491,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6519700 BoxCollider: m_ObjectHideFlags: 0 @@ -3448,6 +3565,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 441124} - {fileID: 427536} @@ -3473,10 +3591,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3501,6 +3621,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &176914 GameObject: m_ObjectHideFlags: 0 @@ -3529,6 +3650,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 412038} m_RootOrder: 1 @@ -3552,10 +3674,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3580,6 +3704,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &177278 GameObject: m_ObjectHideFlags: 0 @@ -3611,6 +3736,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.249, y: 0.5129, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012910955364} - {fileID: 4840805683560546} @@ -3636,10 +3762,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3664,6 +3792,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6562124 BoxCollider: m_ObjectHideFlags: 0 @@ -3752,6 +3881,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.2737, y: -0.008, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012616996494} - {fileID: 4284873399471688} @@ -3777,10 +3907,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3805,6 +3937,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6521934 BoxCollider: m_ObjectHideFlags: 0 @@ -3890,6 +4023,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 465110} - {fileID: 484996} @@ -3915,10 +4049,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -3943,6 +4079,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &183508 GameObject: m_ObjectHideFlags: 0 @@ -3971,6 +4108,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 479382} m_RootOrder: 0 @@ -3994,10 +4132,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4022,6 +4162,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &183652 GameObject: m_ObjectHideFlags: 0 @@ -4050,6 +4191,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0, z: -0.1} m_LocalScale: {x: 2, y: 2, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 494534} m_RootOrder: 0 @@ -4065,10 +4207,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4093,6 +4237,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &10216538 TextMesh: serializedVersion: 3 @@ -4143,6 +4288,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} m_LocalScale: {x: 1, y: 0.02857143, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 412038} m_RootOrder: 0 @@ -4166,10 +4312,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4194,6 +4342,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &192230 GameObject: m_ObjectHideFlags: 0 @@ -4222,6 +4371,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 441958} - {fileID: 498352} @@ -4247,10 +4397,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4275,6 +4427,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &194474 GameObject: m_ObjectHideFlags: 0 @@ -4303,6 +4456,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 431352} m_RootOrder: 0 @@ -4326,10 +4480,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4354,6 +4510,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &195798 GameObject: m_ObjectHideFlags: 0 @@ -4382,6 +4539,7 @@ Transform: m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 453004} - {fileID: 467276} @@ -4407,10 +4565,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4435,6 +4595,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &196078 GameObject: m_ObjectHideFlags: 0 @@ -4462,6 +4623,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} m_RootOrder: 2 @@ -4509,9 +4671,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.912, y: -0.991, z: -0.04} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 23 + m_RootOrder: 24 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3342126 MeshFilter: @@ -4532,10 +4695,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4560,6 +4725,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6506388 BoxCollider: m_ObjectHideFlags: 0 @@ -4633,6 +4799,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 499714} m_RootOrder: 0 @@ -4656,10 +4823,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4684,6 +4853,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010118716738 GameObject: m_ObjectHideFlags: 0 @@ -4712,6 +4882,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000011206878738} m_RootOrder: 1 @@ -4735,10 +4906,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4763,6 +4936,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010134702830 GameObject: m_ObjectHideFlags: 0 @@ -4791,6 +4965,7 @@ Transform: m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000010892569700} - {fileID: 4000013078219060} @@ -4816,10 +4991,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4844,6 +5021,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010241860486 GameObject: m_ObjectHideFlags: 0 @@ -4875,6 +5053,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.2717, y: 0.5129, z: -0.03} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011338142394} - {fileID: 4758236918301830} @@ -4900,10 +5079,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -4928,6 +5109,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000013375446164 BoxCollider: m_ObjectHideFlags: 0 @@ -5013,6 +5195,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.236, z: -0.02} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013760615668} m_RootOrder: 0 @@ -5028,10 +5211,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5056,6 +5241,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102000013715634272 TextMesh: serializedVersion: 3 @@ -5110,6 +5296,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013868811186} m_RootOrder: 0 @@ -5133,10 +5320,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5161,6 +5350,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010401472448 GameObject: m_ObjectHideFlags: 0 @@ -5187,12 +5377,13 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011551526080} - {fileID: 4000014046535472} - {fileID: 4000013013276346} m_Father: {fileID: 473678} - m_RootOrder: 42 + m_RootOrder: 43 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1000010567837980 GameObject: @@ -5223,6 +5414,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.1212, y: 0.383, z: -0.041999996} m_LocalScale: {x: 0.17, y: 0.17, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013760615668} m_RootOrder: 2 @@ -5260,10 +5452,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5288,6 +5482,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010667475366 GameObject: m_ObjectHideFlags: 0 @@ -5314,6 +5509,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011744107576} - {fileID: 4000011886445864} @@ -5350,9 +5546,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.839, y: -0.991, z: -0.0311} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 25 + m_RootOrder: 26 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000012255737950 MeshFilter: @@ -5373,10 +5570,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5401,6 +5600,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6532654 BoxCollider: m_ObjectHideFlags: 0 @@ -5484,6 +5684,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013175241986} m_RootOrder: 0 @@ -5507,10 +5708,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5535,6 +5738,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010821915206 GameObject: m_ObjectHideFlags: 0 @@ -5562,13 +5766,14 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012892386556} - {fileID: 4000010586237508} - {fileID: 4000012999227018} - {fileID: 4000013454894384} m_Father: {fileID: 473678} - m_RootOrder: 34 + m_RootOrder: 35 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010582741524 MeshRenderer: @@ -5581,10 +5786,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5609,6 +5816,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000010881089914 GameObject: m_ObjectHideFlags: 0 @@ -5639,6 +5847,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 476782} m_RootOrder: 0 @@ -5662,10 +5871,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5690,6 +5901,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000011288588380 BoxCollider: m_ObjectHideFlags: 0 @@ -5759,6 +5971,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000012925136122} m_RootOrder: 0 @@ -5782,10 +5995,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5810,6 +6025,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000011216287484 GameObject: m_ObjectHideFlags: 0 @@ -5838,6 +6054,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013454894384} m_RootOrder: 1 @@ -5861,10 +6078,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5889,6 +6108,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000011517226962 GameObject: m_ObjectHideFlags: 0 @@ -5917,6 +6137,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000011206878738} m_RootOrder: 0 @@ -5940,10 +6161,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -5968,6 +6191,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000011551410764 GameObject: m_ObjectHideFlags: 0 @@ -5998,6 +6222,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010333377928} m_RootOrder: 0 @@ -6021,10 +6246,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6049,6 +6276,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000012451105802 BoxCollider: m_ObjectHideFlags: 0 @@ -6120,12 +6348,13 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -0.84, y: 0.1593, z: -0.0301} m_LocalScale: {x: 0.436, y: 0.436, z: 0.436} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000014044617982} - {fileID: 4000011206878738} - {fileID: 4000011225904734} m_Father: {fileID: 473678} - m_RootOrder: 14 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000010882293456 MeshFilter: @@ -6146,10 +6375,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6174,6 +6405,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000010333358966 BoxCollider: m_ObjectHideFlags: 0 @@ -6242,6 +6474,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000010769280002} - {fileID: 4000012312614358} @@ -6276,6 +6509,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} m_LocalScale: {x: 1, y: 0.02857143, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000014044617982} m_RootOrder: 0 @@ -6299,10 +6533,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6327,6 +6563,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000011835935838 GameObject: m_ObjectHideFlags: 0 @@ -6354,12 +6591,13 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 224000014101254652} - {fileID: 4000010399852960} - {fileID: 4000013175241986} m_Father: {fileID: 473678} - m_RootOrder: 35 + m_RootOrder: 36 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010716088472 MeshRenderer: @@ -6372,10 +6610,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6400,6 +6640,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012110338046 GameObject: m_ObjectHideFlags: 0 @@ -6430,6 +6671,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 461906} m_RootOrder: 0 @@ -6453,10 +6695,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6481,6 +6725,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000011627801668 BoxCollider: m_ObjectHideFlags: 0 @@ -6550,6 +6795,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000011225904734} m_RootOrder: 1 @@ -6573,10 +6819,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6601,6 +6849,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012311522496 GameObject: m_ObjectHideFlags: 0 @@ -6629,6 +6878,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000014044617982} m_RootOrder: 1 @@ -6652,10 +6902,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6680,6 +6932,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012495519762 GameObject: m_ObjectHideFlags: 0 @@ -6708,6 +6961,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012956736620} - {fileID: 4000010013684490} @@ -6733,10 +6987,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6761,6 +7017,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012517480522 GameObject: m_ObjectHideFlags: 0 @@ -6791,6 +7048,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 408880} m_RootOrder: 0 @@ -6814,10 +7072,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6842,6 +7102,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000012780326052 BoxCollider: m_ObjectHideFlags: 0 @@ -6910,11 +7171,12 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4032955052552346} - {fileID: 4000013868811186} m_Father: {fileID: 473678} - m_RootOrder: 39 + m_RootOrder: 40 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010319935078 MeshRenderer: @@ -6927,10 +7189,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -6955,6 +7219,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012616600414 GameObject: m_ObjectHideFlags: 0 @@ -6983,6 +7248,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.277, y: 0, z: -0.02933333} m_LocalScale: {x: 5.905732, y: 5.905732, z: 2.952866} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010586237508} m_RootOrder: 0 @@ -6998,10 +7264,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7026,6 +7294,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102000012064194272 TextMesh: serializedVersion: 3 @@ -7078,6 +7347,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 493402} m_RootOrder: 0 @@ -7101,10 +7371,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7129,6 +7401,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000013064704980 BoxCollider: m_ObjectHideFlags: 0 @@ -7200,6 +7473,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.4113, y: -0.4082, z: -0.05} m_LocalScale: {x: 0.26, y: 0.26, z: 0.55} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 411214} m_RootOrder: 0 @@ -7223,10 +7497,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7251,6 +7527,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000011042381794 BoxCollider: m_ObjectHideFlags: 0 @@ -7321,6 +7598,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.337, z: -0.025} m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000012758470188} m_RootOrder: 1 @@ -7344,10 +7622,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7372,6 +7652,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &114000012014155796 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7415,6 +7696,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 406124} m_RootOrder: 0 @@ -7438,10 +7720,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7466,6 +7750,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000011224016396 BoxCollider: m_ObjectHideFlags: 0 @@ -7535,6 +7820,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013868811186} m_RootOrder: 1 @@ -7558,10 +7844,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7586,6 +7874,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000012918130662 GameObject: m_ObjectHideFlags: 0 @@ -7616,6 +7905,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000012758470188} m_RootOrder: 0 @@ -7636,10 +7926,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7664,6 +7956,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &33000011988818744 MeshFilter: m_ObjectHideFlags: 0 @@ -7687,6 +7980,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -7761,12 +8055,12 @@ MonoBehaviour: m_margin: {x: 0, y: 0, z: 0, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 23000014001274338} - m_maskType: 0 _SortingLayer: 0 _SortingLayerID: 0 _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 23000014001274338} + m_maskType: 0 --- !u!222 &222469015342790522 CanvasRenderer: m_ObjectHideFlags: 0 @@ -7805,6 +8099,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 474082} m_RootOrder: 0 @@ -7828,10 +8123,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7856,6 +8153,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000014294663134 BoxCollider: m_ObjectHideFlags: 0 @@ -7925,6 +8223,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000011225904734} m_RootOrder: 0 @@ -7948,10 +8247,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -7976,6 +8277,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013208288780 GameObject: m_ObjectHideFlags: 0 @@ -8005,6 +8307,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0.05999999} m_LocalScale: {x: 2, y: 1, z: 0.8783332} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010586237508} m_RootOrder: 1 @@ -8042,10 +8345,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8070,6 +8375,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013281891730 GameObject: m_ObjectHideFlags: 0 @@ -8098,6 +8404,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000012925136122} m_RootOrder: 2 @@ -8121,10 +8428,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8149,6 +8458,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013345196914 GameObject: m_ObjectHideFlags: 0 @@ -8177,6 +8487,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000013753592404} - {fileID: 4000013563491830} @@ -8202,10 +8513,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8230,6 +8543,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013409032268 GameObject: m_ObjectHideFlags: 0 @@ -8256,6 +8570,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000012486041186} - {fileID: 4000013191658744} @@ -8290,6 +8605,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013175241986} m_RootOrder: 1 @@ -8313,10 +8629,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8341,6 +8659,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013560234246 GameObject: m_ObjectHideFlags: 0 @@ -8371,6 +8690,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 401916} m_RootOrder: 0 @@ -8394,10 +8714,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8422,6 +8744,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000010553515128 BoxCollider: m_ObjectHideFlags: 0 @@ -8491,9 +8814,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.24, y: 0, z: -0.05} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 32 + m_RootOrder: 33 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000012533341368 MeshRenderer: @@ -8506,10 +8830,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8534,6 +8860,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102000012815524228 TextMesh: serializedVersion: 3 @@ -8588,6 +8915,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473330} m_RootOrder: 0 @@ -8611,10 +8939,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8639,6 +8969,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000010232623016 BoxCollider: m_ObjectHideFlags: 0 @@ -8710,6 +9041,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0.44, z: -0.054} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4000011602742270} - {fileID: 4000012865260200} @@ -8735,10 +9067,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8763,6 +9097,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65000013112234484 BoxCollider: m_ObjectHideFlags: 0 @@ -8843,6 +9178,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000012925136122} m_RootOrder: 1 @@ -8866,10 +9202,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8894,6 +9232,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1000013953183086 GameObject: m_ObjectHideFlags: 0 @@ -8922,6 +9261,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013454894384} m_RootOrder: 0 @@ -8945,10 +9285,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -8973,6 +9315,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1003691897808460 GameObject: m_ObjectHideFlags: 0 @@ -9001,6 +9344,7 @@ Transform: m_LocalRotation: {x: -0, y: 0.7073474, z: 0.7068661, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0.01} m_LocalScale: {x: 95.2381, y: 100, z: 40.000046} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4604395735417884} m_RootOrder: 2 @@ -9024,10 +9368,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9052,6 +9398,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1023390386316022 GameObject: m_ObjectHideFlags: 0 @@ -9080,6 +9427,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.29999998, y: -0.2999997, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 474082} m_RootOrder: 1 @@ -9103,10 +9451,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9131,6 +9481,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1037653607876102 GameObject: m_ObjectHideFlags: 0 @@ -9159,6 +9510,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.30000007, y: -0.29999998, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010333377928} m_RootOrder: 1 @@ -9182,10 +9534,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9210,6 +9564,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1041581295466488 GameObject: m_ObjectHideFlags: 0 @@ -9238,6 +9593,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4405259647245308} m_RootOrder: 0 @@ -9253,10 +9609,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9281,6 +9639,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102499556142731132 TextMesh: serializedVersion: 3 @@ -9333,6 +9692,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.30000007, y: -0.3, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 493402} m_RootOrder: 1 @@ -9356,10 +9716,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9384,6 +9746,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1122766985615510 GameObject: m_ObjectHideFlags: 0 @@ -9412,6 +9775,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.30000007, y: -0.2999997, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 461906} m_RootOrder: 1 @@ -9435,10 +9799,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9463,6 +9829,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1147890328312932 GameObject: m_ObjectHideFlags: 0 @@ -9490,11 +9857,12 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 224259994149328172} - {fileID: 4299097812957920} m_Father: {fileID: 473678} - m_RootOrder: 36 + m_RootOrder: 37 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23762962104057700 MeshRenderer: @@ -9507,10 +9875,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9535,6 +9905,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1157290024452308 GameObject: m_ObjectHideFlags: 0 @@ -9563,6 +9934,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4299097812957920} m_RootOrder: 0 @@ -9586,10 +9958,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9614,6 +9988,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1165898094550002 GameObject: m_ObjectHideFlags: 0 @@ -9640,8 +10015,9 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1165898094550002} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.518, y: 1.122, z: -0.002} + m_LocalPosition: {x: -0.191, y: 1.084, z: -0.002} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} m_RootOrder: 1 @@ -9657,10 +10033,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9685,6 +10063,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102610625472293180 TextMesh: serializedVersion: 3 @@ -9700,7 +10079,7 @@ TextMesh: m_Anchor: 0 m_Alignment: 0 m_TabSize: 4 - m_FontSize: 64 + m_FontSize: 56 m_FontStyle: 0 m_RichText: 1 m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} @@ -9735,6 +10114,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} m_LocalScale: {x: 4, y: 4, z: 2.857143} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4227232315394708} m_RootOrder: 0 @@ -9750,10 +10130,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9778,6 +10160,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102911170989384496 TextMesh: serializedVersion: 3 @@ -9828,6 +10211,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.30000025, y: -0.29999998, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 476782} m_RootOrder: 1 @@ -9851,10 +10235,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9879,6 +10265,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1227842993942742 GameObject: m_ObjectHideFlags: 0 @@ -9909,13 +10296,14 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1.65, y: 0, z: 0} m_LocalScale: {x: 1.05, y: 2.5, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4834806845115958} - {fileID: 4252546109650552} - {fileID: 4160166080439610} - {fileID: 4088058456074744} m_Father: {fileID: 473678} - m_RootOrder: 41 + m_RootOrder: 42 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65181151135621986 BoxCollider: @@ -9949,10 +10337,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -9977,6 +10367,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &114825227411066042 MonoBehaviour: m_ObjectHideFlags: 0 @@ -10046,6 +10437,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.29999998, y: -0.3, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 401916} m_RootOrder: 1 @@ -10069,10 +10461,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10097,6 +10491,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1329085538968134 GameObject: m_ObjectHideFlags: 0 @@ -10125,6 +10520,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4572210679967688} m_RootOrder: 0 @@ -10148,10 +10544,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10176,6 +10574,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1336920247228296 GameObject: m_ObjectHideFlags: 0 @@ -10204,6 +10603,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4299097812957920} m_RootOrder: 1 @@ -10227,10 +10627,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10255,6 +10657,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1352538921561852 GameObject: m_ObjectHideFlags: 0 @@ -10283,6 +10686,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.65, y: 0.65, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4653590090589872} m_RootOrder: 0 @@ -10306,10 +10710,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10334,6 +10740,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1353537369857522 GameObject: m_ObjectHideFlags: 0 @@ -10363,6 +10770,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.30000004, y: -0.30000004, z: -0.04} m_LocalScale: {x: 0.3, y: 0.3, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 411214} m_RootOrder: 1 @@ -10400,10 +10808,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10428,6 +10838,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1357195914620088 GameObject: m_ObjectHideFlags: 0 @@ -10456,6 +10867,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4572210679967688} m_RootOrder: 1 @@ -10479,10 +10891,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10507,6 +10921,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1367255127373718 GameObject: m_ObjectHideFlags: 0 @@ -10535,6 +10950,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.46000004, z: -0.002} m_LocalScale: {x: 0.95238096, y: 0.4, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4604395735417884} m_RootOrder: 0 @@ -10550,10 +10966,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10578,6 +10996,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102373028218004392 TextMesh: serializedVersion: 3 @@ -10630,6 +11049,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4405002968423422} m_RootOrder: 0 @@ -10650,10 +11070,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10678,6 +11100,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &33829677418357686 MeshFilter: m_ObjectHideFlags: 0 @@ -10701,6 +11124,7 @@ MonoBehaviour: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: @@ -10776,12 +11200,12 @@ MonoBehaviour: m_margin: {x: 0, y: 0, z: 0, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 23402643382222860} - m_maskType: 0 _SortingLayer: 0 _SortingLayerID: 0 _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 23402643382222860} + m_maskType: 0 --- !u!222 &222820159282912654 CanvasRenderer: m_ObjectHideFlags: 0 @@ -10818,6 +11242,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4227232315394708} m_RootOrder: 1 @@ -10841,10 +11266,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10869,6 +11296,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1593948112818424 GameObject: m_ObjectHideFlags: 0 @@ -10897,6 +11325,7 @@ Transform: m_LocalRotation: {x: -0.7068661, y: 0, z: 0, w: 0.7073474} m_LocalPosition: {x: 0.00000011353266, y: 0, z: 0.005} m_LocalScale: {x: 95.2381, y: 100.000046, z: 40.000057} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4604395735417884} m_RootOrder: 3 @@ -10920,10 +11349,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -10948,6 +11379,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1631327297680716 GameObject: m_ObjectHideFlags: 0 @@ -10978,6 +11410,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4757857785376650} - {fileID: 4483479252455118} @@ -11003,10 +11436,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11031,6 +11466,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &114320826049526124 MonoBehaviour: m_ObjectHideFlags: 0 @@ -11111,6 +11547,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 95.2381, y: 99.99982, z: 39.999924} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4604395735417884} m_RootOrder: 1 @@ -11134,10 +11571,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11162,6 +11601,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1644973727690454 GameObject: m_ObjectHideFlags: 0 @@ -11191,9 +11631,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 26 + m_RootOrder: 27 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33567874645767864 MeshFilter: @@ -11214,10 +11655,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11242,6 +11685,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &114182893473587560 MonoBehaviour: m_ObjectHideFlags: 0 @@ -11281,6 +11725,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4776209461862024} - {fileID: 4299019526169640} @@ -11314,12 +11759,13 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4522282957815948} - {fileID: 4227232315394708} - {fileID: 4572210679967688} m_Father: {fileID: 473678} - m_RootOrder: 37 + m_RootOrder: 38 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23211508628126822 MeshRenderer: @@ -11332,10 +11778,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11360,6 +11808,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1685631667352684 GameObject: m_ObjectHideFlags: 0 @@ -11388,6 +11837,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000011114460008} m_RootOrder: 0 @@ -11403,10 +11853,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11431,6 +11883,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &102687011017508858 TextMesh: serializedVersion: 3 @@ -11489,6 +11942,7 @@ Transform: m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0, z: 0.025} m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4653590090589872} m_RootOrder: 1 @@ -11512,10 +11966,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11540,6 +11996,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1806376406434594 GameObject: m_ObjectHideFlags: 0 @@ -11568,6 +12025,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.29999998, y: -0.29999998, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 406124} m_RootOrder: 1 @@ -11591,10 +12049,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11619,6 +12079,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1838418458797118 GameObject: m_ObjectHideFlags: 0 @@ -11645,6 +12106,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4434180684794314} - {fileID: 4908000352793634} @@ -11681,6 +12143,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1.082, y: -1.252, z: -0.01} m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4594768142946388} - {fileID: 4485662548378186} @@ -11706,10 +12169,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11734,6 +12199,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65086520363845836 BoxCollider: m_ObjectHideFlags: 0 @@ -11814,11 +12280,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1842065821143492} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.839, y: 1.013, z: -0.0311} + m_LocalPosition: {x: -0.372, y: 0.988, z: -0.0311} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 24 + m_RootOrder: 25 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33422040586648110 MeshFilter: @@ -11839,10 +12306,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11867,6 +12336,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &65949792714291216 BoxCollider: m_ObjectHideFlags: 0 @@ -11947,6 +12417,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.29999998, y: -0.3, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 408880} m_RootOrder: 1 @@ -11970,10 +12441,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -11998,6 +12471,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &1914095689519454 GameObject: m_ObjectHideFlags: 0 @@ -12026,6 +12500,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.29999998, y: -0.29999998, z: -0.04} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473330} m_RootOrder: 1 @@ -12049,10 +12524,12 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12077,6 +12554,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &894190226255371916 GameObject: m_ObjectHideFlags: 0 @@ -12107,9 +12585,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 31 + m_RootOrder: 32 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &9181308231173954030 MeshFilter: @@ -12130,10 +12609,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12158,6 +12639,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &6571932979411263896 BoxCollider: m_ObjectHideFlags: 0 @@ -12236,6 +12718,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7463230845054887281} - {fileID: 3442742383225157293} @@ -12270,6 +12753,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8668434879085770626} m_RootOrder: 1 @@ -12293,10 +12777,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12321,6 +12807,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2017844286305016362 GameObject: m_ObjectHideFlags: 0 @@ -12349,6 +12836,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1524240171334712824} m_RootOrder: 0 @@ -12364,10 +12852,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12392,6 +12882,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &690590041796884266 TextMesh: serializedVersion: 3 @@ -12444,6 +12935,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8835613076674131173} - {fileID: 1681593874138847941} @@ -12469,10 +12961,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12497,6 +12991,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2316682789993501927 GameObject: m_ObjectHideFlags: 0 @@ -12523,6 +13018,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1126899405721930507} - {fileID: 2349666135276550853} @@ -12557,6 +13053,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 2, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3702262655533381092} m_RootOrder: 1 @@ -12580,10 +13077,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12608,6 +13107,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &2703159376926440640 GameObject: m_ObjectHideFlags: 0 @@ -12636,6 +13136,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 9117108218266893509} m_RootOrder: 0 @@ -12651,10 +13152,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12679,6 +13182,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &3337417126575594132 TextMesh: serializedVersion: 3 @@ -12731,6 +13235,7 @@ Transform: m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 321097991674213930} - {fileID: 6474380007388265344} @@ -12756,10 +13261,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12784,6 +13291,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &3543571790462569700 GameObject: m_ObjectHideFlags: 0 @@ -12812,9 +13320,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24000001, y: 0, z: -0.05} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 33 + m_RootOrder: 34 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &3584797028731175384 MeshRenderer: @@ -12827,10 +13336,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12855,6 +13366,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &5005226965739046984 TextMesh: serializedVersion: 3 @@ -12909,6 +13421,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} m_LocalScale: {x: 1, y: 0.02857143, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8668434879085770626} m_RootOrder: 0 @@ -12932,10 +13445,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -12960,6 +13475,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4374687820491222719 GameObject: m_ObjectHideFlags: 0 @@ -12987,11 +13503,12 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2713655870301875666} - {fileID: 6471389067300543686} m_Father: {fileID: 473678} - m_RootOrder: 40 + m_RootOrder: 41 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &3762244675612984118 MeshRenderer: @@ -13004,10 +13521,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13032,6 +13551,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4611120767845027921 GameObject: m_ObjectHideFlags: 0 @@ -13060,6 +13580,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} m_LocalScale: {x: 4, y: 4, z: 2.857143} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3702262655533381092} m_RootOrder: 0 @@ -13075,10 +13596,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13103,6 +13626,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!102 &7372446237649626914 TextMesh: serializedVersion: 3 @@ -13153,6 +13677,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 550194924522150295} m_RootOrder: 0 @@ -13176,10 +13701,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13204,6 +13731,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &4987445825603729169 GameObject: m_ObjectHideFlags: 0 @@ -13233,9 +13761,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 27 + m_RootOrder: 28 m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} --- !u!33 &2139868953206300193 MeshFilter: @@ -13256,10 +13785,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13284,6 +13815,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &3173506336687836476 MonoBehaviour: m_ObjectHideFlags: 0 @@ -13324,6 +13856,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6471389067300543686} m_RootOrder: 0 @@ -13347,10 +13880,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13375,6 +13910,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6839353153389732464 GameObject: m_ObjectHideFlags: 0 @@ -13402,12 +13938,13 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8692506305276691177} - {fileID: 3702262655533381092} - {fileID: 1817565260503090077} m_Father: {fileID: 473678} - m_RootOrder: 38 + m_RootOrder: 39 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &2320526944858906914 MeshRenderer: @@ -13420,10 +13957,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13448,6 +13987,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &6937020573975178444 GameObject: m_ObjectHideFlags: 0 @@ -13478,9 +14018,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 29 + m_RootOrder: 30 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &2502232274484467176 MeshFilter: @@ -13501,10 +14042,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13529,6 +14072,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &2017034342578135502 BoxCollider: m_ObjectHideFlags: 0 @@ -13609,6 +14153,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6471389067300543686} m_RootOrder: 1 @@ -13632,10 +14177,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13660,6 +14207,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7072846544151351213 GameObject: m_ObjectHideFlags: 0 @@ -13690,9 +14238,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 30 + m_RootOrder: 31 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &7617378168068650857 MeshFilter: @@ -13713,10 +14262,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13741,6 +14292,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &1042805164852740124 BoxCollider: m_ObjectHideFlags: 0 @@ -13821,6 +14373,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1817565260503090077} m_RootOrder: 0 @@ -13844,10 +14397,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13872,6 +14427,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &7675354702135526188 GameObject: m_ObjectHideFlags: 0 @@ -13902,6 +14458,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1976086882343299162} - {fileID: 6818748104769445831} @@ -13927,10 +14484,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -13955,6 +14514,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!114 &1044113119017468845 MonoBehaviour: m_ObjectHideFlags: 0 @@ -14037,12 +14597,13 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.84, y: -0.4779, z: -0.0301} m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8668434879085770626} - {fileID: 550194924522150295} - {fileID: 8773122714945324681} m_Father: {fileID: 473678} - m_RootOrder: 16 + m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &2565729595090453201 MeshFilter: @@ -14063,10 +14624,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14091,6 +14654,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &3495489927540453658 BoxCollider: m_ObjectHideFlags: 0 @@ -14161,6 +14725,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8773122714945324681} m_RootOrder: 1 @@ -14184,10 +14749,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14212,6 +14779,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8334431517929914044 GameObject: m_ObjectHideFlags: 0 @@ -14240,6 +14808,7 @@ Transform: m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} m_LocalPosition: {x: -0, y: 0, z: 0} m_LocalScale: {x: 100, y: 100, z: 100} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1817565260503090077} m_RootOrder: 1 @@ -14263,10 +14832,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14291,6 +14862,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8425099743687099145 GameObject: m_ObjectHideFlags: 0 @@ -14319,6 +14891,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 550194924522150295} m_RootOrder: 1 @@ -14342,10 +14915,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14370,6 +14945,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8515080880137723669 GameObject: m_ObjectHideFlags: 0 @@ -14400,9 +14976,10 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0.922, y: 0.956, z: -0.075} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 28 + m_RootOrder: 29 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &830589215893783279 MeshFilter: @@ -14423,10 +15000,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14451,6 +15030,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!65 &935706471346402878 BoxCollider: m_ObjectHideFlags: 0 @@ -14531,6 +15111,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 8235492235284656829} - {fileID: 5169543984843292650} @@ -14556,10 +15137,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14584,6 +15167,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!1 &8955674742366199644 GameObject: m_ObjectHideFlags: 0 @@ -14612,6 +15196,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8773122714945324681} m_RootOrder: 0 @@ -14635,10 +15220,12 @@ MeshRenderer: m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 + m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -14663,3 +15250,121 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &4113092395604639097 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 473678} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: BackButton + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 13 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.805 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.988 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.031 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ConstrainProportionsScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Back + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &5835854812254485208 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 4113092395604639097} + m_PrefabAsset: {fileID: 0} +--- !u!114 &6075256701100402820 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 4113092395604639097} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 07f172f1096366841bb9362060bb0095, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Scripts/GUI/DownloadPopupWindow.cs b/Assets/Scripts/GUI/DownloadPopupWindow.cs index 9effb33834..54ef429c62 100644 --- a/Assets/Scripts/GUI/DownloadPopupWindow.cs +++ b/Assets/Scripts/GUI/DownloadPopupWindow.cs @@ -26,14 +26,14 @@ public class DownloadPopupWindow : PopUpWindow override public void SetPopupCommandParameters(int commandParam, int commandParam2) { - var sketchSet = SketchCatalog.m_Instance.GetSet(commandParam2); - if (sketchSet.SketchSetType != GoogleDriveSketchSet.TypeName) + if (commandParam2 != (int)SketchbookPanel.RootSet.Backup + || SketchbookPanel.Instance.SelectedSketchStack != (int)SketchbookPanel.RootSet.Backup) { return; } m_SketchIndex = commandParam; - m_SceneFileInfo = - sketchSet.GetSketchSceneFileInfo(commandParam) as GoogleDriveSketchSet.GoogleDriveFileInfo; + m_SceneFileInfo = SketchbookPanel.Instance.CurrentSketchSet + .GetSketchSceneFileInfo(commandParam) as GoogleDriveSketchSet.GoogleDriveFileInfo; if (m_SceneFileInfo.Available) { diff --git a/Assets/Scripts/GUI/InspectSketchButton.cs b/Assets/Scripts/GUI/InspectSketchButton.cs index 62a0cb1bcf..0f569c87b0 100644 --- a/Assets/Scripts/GUI/InspectSketchButton.cs +++ b/Assets/Scripts/GUI/InspectSketchButton.cs @@ -29,9 +29,8 @@ public void SetSketchDetails(int index, string type) override protected void OnButtonPressed() { BasePanel panel = m_Manager.GetPanelForPopUps(); - int index = SketchCatalog.m_Instance.GetSetIndexById(m_SketchSetId); panel.CreatePopUp(SketchControlsScript.GlobalCommands.SketchbookMenu, - m_SketchIndex, index); + m_SketchIndex, SketchbookPanel.Instance.SelectedSketchStack); // Position popup next to button. panel.PositionPopUp(transform.position); diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index 70d42ac366..9d653d802c 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -158,9 +158,10 @@ override protected void OnButtonPressed() // Sequence on load is: // LoadConfirmUnsaved -> LoadWaitOnDownload -> LoadConfirmComplex -> LoadComplexHigh -> Load + // TODO: SketchSet needs to know its own id? SketchControlsScript.m_Instance.IssueGlobalCommand( SketchControlsScript.GlobalCommands.LoadConfirmUnsaved, - m_SketchIndex, SketchCatalog.m_Instance.GetSetIndex(m_SketchSet)); + m_SketchIndex, SketchbookPanel.Instance.SelectedSketchStack); ResetState(); } diff --git a/Assets/Scripts/GUI/NewSketchButton.cs b/Assets/Scripts/GUI/NewSketchButton.cs index 0b1f05350a..5f4115c296 100644 --- a/Assets/Scripts/GUI/NewSketchButton.cs +++ b/Assets/Scripts/GUI/NewSketchButton.cs @@ -47,16 +47,8 @@ protected override void OnButtonPressed() App.Instance.ExitIntroSketch(); PromoManager.m_Instance.RequestAdvancedPanelsPromo(); - // Change the shown sketchset by simulating a press on the corresponding gallery button. - SketchbookPanel panel = m_Manager.GetComponent(); - if (SketchCatalog.m_Instance.GetFirstSetOrDefault(FileSketchSet.TypeName).NumSketches == 0) - { - panel.ButtonPressed(GalleryButton.Type.Showcase); - } - else - { - panel.ButtonPressed(GalleryButton.Type.Local); - } + // Question: Why did this used to press on the showcase if there was nothing in the local fileset? + SketchbookPanel.Instance.ButtonPressed(GalleryButton.Type.Local); } } } // namespace TiltBrush diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index d478c211d5..8f8c68361d 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -20,9 +20,18 @@ namespace TiltBrush { - public class SketchbookPanel : ModalPanel { + public enum RootSet + { + Local, + Remote, + Liked, + Backup, + } + + public static SketchbookPanel Instance => PanelManager.m_Instance.GetSketchBookPanel() as SketchbookPanel; + // Index of the "local sketches" button in m_GalleryButtons const int kElementNumberGalleryButtonLocal = 0; // Amount of extra space to put below the "local sketches" gallery button @@ -52,6 +61,7 @@ public class SketchbookPanel : ModalPanel [SerializeField] private GameObject m_NewSketchButton; // Gallery buttons will automatically reposition based on how many are visible so they must be // added to this array in order from top to bottom. + [SerializeField] private ActionButton m_BackButton; [SerializeField] private GalleryButton[] m_GalleryButtons; [SerializeField] private int m_ElementNumberGalleryButtonDrive = 3; [SerializeField] private float m_GalleryButtonHeight = 0.3186f; @@ -72,8 +82,10 @@ public class SketchbookPanel : ModalPanel private bool m_AllIconTexturesAssigned; private bool m_AllSketchesAreAvailable; - //private string m_CurrentSketchSet; - private ISketchSet m_SketchSet; + private Stack[] m_SetStacks; + private int m_SelectedStack; + + private OptionButton m_NewSketchButtonScript; private OptionButton m_PaintButtonScript; private List m_IconScriptsOnFirstPage; @@ -83,6 +95,9 @@ public class SketchbookPanel : ModalPanel public float ImageAspect { get { return m_ImageAspect; } } + public int SelectedSketchStack => m_SelectedStack; + public ISketchSet CurrentSketchSet => m_SetStacks?[m_SelectedStack]?.Peek() ?? null; + override public void SetInIntroMode(bool inIntro) { m_NewSketchButton.SetActive(inIntro); @@ -114,13 +129,12 @@ protected override List Icons public override bool IsInButtonMode(ModeButton button) { GalleryButton galleryButton = button as GalleryButton; - int index = SketchCatalog.m_Instance.GetSetIndex(m_SketchSet); // TODO: There's gotta be a better way of doing this! return galleryButton && - ((galleryButton.m_ButtonType == GalleryButton.Type.Liked && index == 2) || - (galleryButton.m_ButtonType == GalleryButton.Type.Local && index == 0) || - (galleryButton.m_ButtonType == GalleryButton.Type.Showcase && index == 1) || - (galleryButton.m_ButtonType == GalleryButton.Type.Drive && index == 3)); + ((galleryButton.m_ButtonType == GalleryButton.Type.Liked && m_SelectedStack == 2) || + (galleryButton.m_ButtonType == GalleryButton.Type.Local && m_SelectedStack == 0) || + (galleryButton.m_ButtonType == GalleryButton.Type.Showcase && m_SelectedStack == 1) || + (galleryButton.m_ButtonType == GalleryButton.Type.Drive && m_SelectedStack == 3)); } override public void InitPanel() @@ -147,6 +161,17 @@ override public void InitPanel() m_HalfInvUvScale *= 0.5f; } + private void InitializeRootSketchSets() + { + m_SetStacks = new Stack[4]; + + } + + public ISketchSet GetSketchSet(RootSet set) + { + return m_SetStacks[(int)set].Peek(); + } + protected override void OnStart() { // Initialize icons. @@ -162,14 +187,26 @@ protected override void OnStart() m_NotLoggedInMessage.SetActive(false); m_NotLoggedInDriveMessage.SetActive(false); - m_SketchSet = SketchCatalog.m_Instance.GetSet(2); // Poly sketches + var rssOptions = new Dictionary + { + {"uri", "https://timaidley.github.io/open-brush-feed/sketches.rss" } + }; + // Fetch the root stacks + m_SetStacks = new Stack[] + { + new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(FileSketchSet.TypeName, null)}), + new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet("Resource-Rss", rssOptions)}), + new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(PolySketchSet.TypeName, null)}), + new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null)}), + }; + m_SelectedStack = (int)RootSet.Backup; // Dynamically position the gallery buttons. OnDriveSetHasSketchesChanged(); // Set the sketch set var to Liked, then function set to force state. - SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(0)); + SetVisibleSketchSet(0); RefreshPage(); Action refresh = () => @@ -185,43 +222,46 @@ protected override void OnStart() }; // TODO: We probably should just do a refresh when we enter a sketchset - SketchCatalog.m_Instance.GetSet(1).OnSketchRefreshingChanged += refresh; - SketchCatalog.m_Instance.GetSet(2).OnSketchRefreshingChanged += refresh; - SketchCatalog.m_Instance.GetSet(3).OnSketchRefreshingChanged += refresh; + // SketchCatalog.m_Instance.GetSet(1).OnSketchRefreshingChanged += refresh; + // SketchCatalog.m_Instance.GetSet(2).OnSketchRefreshingChanged += refresh; + // SketchCatalog.m_Instance.GetSet(3).OnSketchRefreshingChanged += refresh; + // Should we just loop through the root ones here? App.GoogleIdentity.OnLogout += refresh; } void OnDestroy() { - if (m_SketchSet != null) + if (CurrentSketchSet != null) { - m_SketchSet.OnChanged -= OnSketchSetDirty; + CurrentSketchSet.OnChanged -= OnSketchSetDirty; } } override protected void OnEnablePanel() { base.OnEnablePanel(); - if (m_SketchSet != null) + if (CurrentSketchSet != null) { - m_SketchSet.RequestRefresh(); + CurrentSketchSet.RequestRefresh(); } } - void SetVisibleSketchSet(ISketchSet newSketchSet) + void SetVisibleSketchSet(RootSet stack) { - if (newSketchSet != m_SketchSet) + int stackIndex = (int)stack; + var newSketchSet = m_SetStacks[stackIndex].Peek(); + if (newSketchSet != CurrentSketchSet) { // Clean up our old sketch set. - if (m_SketchSet != null) + if (CurrentSketchSet != null) { - m_SketchSet.OnChanged -= OnSketchSetDirty; + CurrentSketchSet.OnChanged -= OnSketchSetDirty; } // Cache new set. - m_SketchSet = newSketchSet; - m_SketchSet.OnChanged += OnSketchSetDirty; - m_SketchSet.RequestRefresh(); + m_SelectedStack = stackIndex; + CurrentSketchSet.OnChanged += OnSketchSetDirty; + CurrentSketchSet.RequestRefresh(); // Tell all the icons which set to reference when loading sketches. IEnumerable allIcons = m_IconsOnFirstPage.Concat(m_IconsOnNormalPage) @@ -229,14 +269,13 @@ void SetVisibleSketchSet(ISketchSet newSketchSet) .Where(icon => icon != null); foreach (LoadSketchButton icon in allIcons) { - icon.SketchSet = m_SketchSet; + icon.SketchSet = CurrentSketchSet; } ComputeNumPages(); ResetPageIndex(); RefreshPage(); - switch (newSketchSet.SketchSetType) { case FileSketchSet.TypeName: @@ -285,12 +324,12 @@ void SetVisibleSketchSet(ISketchSet newSketchSet) private void ComputeNumPages() { - if (m_SketchSet.NumSketches <= m_IconsOnFirstPage.Length) + if (CurrentSketchSet.NumSketches <= m_IconsOnFirstPage.Length) { m_NumPages = 1; return; } - int remainingSketches = m_SketchSet.NumSketches - m_IconsOnFirstPage.Length; + int remainingSketches = CurrentSketchSet.NumSketches - m_IconsOnFirstPage.Length; int normalPages = ((remainingSketches - 1) / m_IconsOnNormalPage.Length) + 1; m_NumPages = 1 + normalPages; } @@ -301,7 +340,7 @@ List GetIconLoadIndices() for (int i = 0; i < Icons.Count; i++) { int sketchIndex = m_IndexOffset + i; - if (sketchIndex >= m_SketchSet.NumSketches) + if (sketchIndex >= CurrentSketchSet.NumSketches) { break; } @@ -312,7 +351,7 @@ List GetIconLoadIndices() protected override void RefreshPage() { - m_SketchSet.RequestOnlyLoadedMetadata(GetIconLoadIndices()); + CurrentSketchSet.RequestOnlyLoadedMetadata(GetIconLoadIndices()); m_AllIconTexturesAssigned = false; m_AllSketchesAreAvailable = false; @@ -329,7 +368,7 @@ protected override void RefreshPage() // Base Refresh updates the modal parts of the panel, and we always want those refreshed. base.RefreshPage(); - bool requiresPoly = m_SketchSet.SketchSetType == PolySketchSet.TypeName; + bool requiresPoly = CurrentSketchSet.SketchSetType == PolySketchSet.TypeName; bool polyDown = VrAssetService.m_Instance.NoConnection && requiresPoly; m_NoPolyConnectionMessage.SetActive(polyDown); @@ -348,15 +387,15 @@ protected override void RefreshPage() return; } - bool refreshIcons = m_SketchSet.NumSketches > 0; + bool refreshIcons = CurrentSketchSet.NumSketches > 0; // Show no sketches if we don't have sketches. - bool isUser = m_SketchSet.SketchSetType == FileSketchSet.TypeName; - bool isLiked = m_SketchSet.SketchSetType == PolySketchSet.TypeName; - bool isCurated = m_SketchSet.SketchSetType == ResourceCollectionSketchSet.TypeName; - bool isDrive = m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName; - m_NoSketchesMessage.SetActive(isUser && (m_SketchSet.NumSketches <= 0)); - m_NoDriveSketchesMessage.SetActive(isDrive && (m_SketchSet.NumSketches <= 0)); + bool isUser = CurrentSketchSet.SketchSetType == FileSketchSet.TypeName; + bool isLiked = CurrentSketchSet.SketchSetType == PolySketchSet.TypeName; + bool isCurated = CurrentSketchSet.SketchSetType == ResourceCollectionSketchSet.TypeName; + bool isDrive = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName; + m_NoSketchesMessage.SetActive(isUser && (CurrentSketchSet.NumSketches <= 0)); + m_NoDriveSketchesMessage.SetActive(isDrive && (CurrentSketchSet.NumSketches <= 0)); // Show sign in popup if signed out for liked or drive sketchsets bool showNotLoggedIn = !App.GoogleIdentity.LoggedIn && (isLiked || isDrive); @@ -367,21 +406,21 @@ protected override void RefreshPage() // Show no likes text & gallery button if we don't have liked sketches. m_NoLikesMessage.SetActive( isLiked && - (m_SketchSet.NumSketches <= 0) && - !m_SketchSet.IsActivelyRefreshingSketches && + (CurrentSketchSet.NumSketches <= 0) && + !CurrentSketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn); // Show Contacting Server if we're talking to Poly. m_ContactingServerMessage.SetActive( (requiresPoly || isDrive) && - (m_SketchSet.NumSketches <= 0) && - (m_SketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn)); + (CurrentSketchSet.NumSketches <= 0) && + (CurrentSketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn)); // Show Showcase error if we're in Showcase and don't have sketches. m_NoShowcaseMessage.SetActive( isCurated && - (m_SketchSet.NumSketches <= 0) && - !m_SketchSet.IsActivelyRefreshingSketches); + (CurrentSketchSet.NumSketches <= 0) && + !CurrentSketchSet.IsActivelyRefreshingSketches); // Refresh all icons if necessary. if (!refreshIcons) @@ -398,7 +437,7 @@ protected override void RefreshPage() // Set sketch index relative to page based index int iSketchIndex = m_IndexOffset + i; - if (iSketchIndex >= m_SketchSet.NumSketches) + if (iSketchIndex >= CurrentSketchSet.NumSketches) { iSketchIndex = -1; } @@ -407,14 +446,14 @@ protected override void RefreshPage() // Init icon according to availability of sketch GameObject go = icon.gameObject; - if (m_SketchSet.IsSketchIndexValid(iSketchIndex)) + if (CurrentSketchSet.IsSketchIndexValid(iSketchIndex)) { - string sSketchName = m_SketchSet.GetSketchName(iSketchIndex); + string sSketchName = CurrentSketchSet.GetSketchName(iSketchIndex); icon.SetDescriptionText(App.ShortenForDescriptionText(sSketchName)); - SceneFileInfo info = m_SketchSet.GetSketchSceneFileInfo(iSketchIndex); + SceneFileInfo info = CurrentSketchSet.GetSketchSceneFileInfo(iSketchIndex); if (info.Available) { - m_SketchSet.PrecacheSketchModels(iSketchIndex); + CurrentSketchSet.PrecacheSketchModels(iSketchIndex); } if (info.TriangleCount is int triCount) @@ -441,8 +480,8 @@ void Update() PageFlipUpdate(); // Refresh icons while they are in flux - if (m_SketchSet.IsReadyForAccess && - (!m_SketchSet.RequestedIconsAreLoaded || + if (CurrentSketchSet.IsReadyForAccess && + (!CurrentSketchSet.RequestedIconsAreLoaded || !m_AllIconTexturesAssigned || !m_AllSketchesAreAvailable)) { UpdateIcons(); @@ -467,10 +506,10 @@ void Update() icon.UpdateUvOffsetAndScale(offset, m_SketchIconUvScale); } - switch (m_SketchSet.SketchSetType) + switch (CurrentSketchSet.SketchSetType) { case ResourceCollectionSketchSet.TypeName: - m_LoadingGallery.SetActive(m_SketchSet.IsActivelyRefreshingSketches); + m_LoadingGallery.SetActive(CurrentSketchSet.IsActivelyRefreshingSketches); m_DriveSyncProgress.SetActive(false); m_SyncingDriveIcon.SetActive(false); m_DriveEnabledIcon.SetActive(false); @@ -487,8 +526,8 @@ void Update() break; case FileSketchSet.TypeName: case GoogleDriveSketchSet.TypeName: - bool sketchSetRefreshing = m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName && - m_SketchSet.IsActivelyRefreshingSketches; + bool sketchSetRefreshing = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName && + CurrentSketchSet.IsActivelyRefreshingSketches; bool driveSyncing = App.DriveSync.Syncing; bool syncEnabled = App.DriveSync.SyncEnabled; bool googleLoggedIn = App.GoogleIdentity.LoggedIn; @@ -503,8 +542,7 @@ void Update() } // Check to see if whether "drive set has sketches" has changed. - bool driveSetHasSketches = - SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName).NumSketches != 0; + bool driveSetHasSketches = m_SetStacks[(int)RootSet.Backup].Peek().NumSketches != 0; if (m_DriveSetHasSketches != driveSetHasSketches) { m_DriveSetHasSketches = driveSetHasSketches; @@ -529,7 +567,7 @@ private void OnDriveSetHasSketchesChanged() m_GalleryButtons[m_ElementNumberGalleryButtonDrive].gameObject.SetActive(false); galleryButtonN = galleryButtonAvailable - 1; - if (m_SketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) + if (CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) { // We were on the Drive tab but it's gone away so switch to the local tab by simulating // the user pressing the local tab button. @@ -574,16 +612,16 @@ private void UpdateIcons() LoadSketchButton icon = baseButton as LoadSketchButton; if (icon == null) { continue; } int iSketchIndex = icon.SketchIndex; - if (m_SketchSet.IsSketchIndexValid(iSketchIndex)) + if (CurrentSketchSet.IsSketchIndexValid(iSketchIndex)) { - icon.FadeIn = m_SketchSet.GetSketchSceneFileInfo(iSketchIndex).Available ? 1f : 0.5f; + icon.FadeIn = CurrentSketchSet.GetSketchSceneFileInfo(iSketchIndex).Available ? 1f : 0.5f; if (!icon.ThumbnailLoaded) { Texture2D rTexture = null; string[] authors; string description; - if (m_SketchSet.GetSketchIcon(iSketchIndex, out rTexture, out authors, out description)) + if (CurrentSketchSet.GetSketchIcon(iSketchIndex, out rTexture, out authors, out description)) { if (rTexture != null) { @@ -604,7 +642,7 @@ private void UpdateIcons() List lines = new List(); lines.Add(icon.Description); - SceneFileInfo info = m_SketchSet.GetSketchSceneFileInfo(iSketchIndex); + SceneFileInfo info = CurrentSketchSet.GetSketchSceneFileInfo(iSketchIndex); if (info is PolySceneFileInfo polyInfo && polyInfo.License != VrAssetService.kCreativeCommonsLicense) { @@ -630,7 +668,7 @@ private void UpdateIcons() { // While metadata has not finished loading, check if this file is valid bool bFileValid = false; - SceneFileInfo rInfo = m_SketchSet.GetSketchSceneFileInfo(iSketchIndex); + SceneFileInfo rInfo = CurrentSketchSet.GetSketchSceneFileInfo(iSketchIndex); if (rInfo != null) { bFileValid = rInfo.Exists; @@ -719,7 +757,7 @@ override protected void OnUpdateActive() { m_OnlineGalleryButtonRenderer.material.SetFloat("_Grayscale", 0); m_ProfileButtonRenderer.material.SetFloat("_Grayscale", 0); - m_SketchSet.RequestRefresh(); + CurrentSketchSet.RequestRefresh(); } } @@ -768,16 +806,16 @@ public void ButtonPressed(GalleryButton.Type rType, BaseButton button = null) PointerManager.m_Instance.EatLineEnabledInput(); break; case GalleryButton.Type.Showcase: - SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(1)); + SetVisibleSketchSet(RootSet.Remote); break; case GalleryButton.Type.Local: - SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(0)); + SetVisibleSketchSet(RootSet.Local); break; case GalleryButton.Type.Liked: - SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(2)); + SetVisibleSketchSet(RootSet.Liked); break; case GalleryButton.Type.Drive: - SetVisibleSketchSet(SketchCatalog.m_Instance.GetSet(3)); + SetVisibleSketchSet(RootSet.Backup); if (!m_ReadOnlyShown) { CreatePopUp(SketchControlsScript.GlobalCommands.ReadOnlyNotice, @@ -798,8 +836,8 @@ private void OnSketchSetDirty() { ComputeNumPages(); - SceneFileInfo first = (m_SketchSet.NumSketches > 0) ? - m_SketchSet.GetSketchSceneFileInfo(0) : null; + SceneFileInfo first = (CurrentSketchSet.NumSketches > 0) ? + CurrentSketchSet.GetSketchSceneFileInfo(0) : null; // If first sketch changed, return to first page. if (m_FirstSketch != null && !m_FirstSketch.Equals(first)) { diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs index 92b0351fd5..2f8b28ed3f 100644 --- a/Assets/Scripts/ResourceSystem/IResourceCollection.cs +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -5,7 +5,6 @@ namespace TiltBrush public interface IResourceCollection : IResource { IAsyncEnumerable ContentsAsync(); - string CollectionType { get; } string CollectionInstance { get; } } diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 5343d4f60d..6be5dc0cba 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -331,7 +331,7 @@ public virtual void DeleteSketch(int toDelete) m_FileWatcher.NotifyDelete(m_Sketches[toDelete].SceneFileInfo.FullPath); // Notify the drive sketchset as the deleted file may now be visible there. - var driveSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); + var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); if (driveSet != null) { driveSet.NotifySketchChanged(m_Sketches[toDelete].SceneFileInfo.FullPath); diff --git a/Assets/Scripts/Save/ISketchSet.cs b/Assets/Scripts/Save/ISketchSet.cs index d4e273571c..c4e1f6eac7 100644 --- a/Assets/Scripts/Save/ISketchSet.cs +++ b/Assets/Scripts/Save/ISketchSet.cs @@ -49,6 +49,11 @@ public interface ISketchSet return (type, instance); } + void DoTheThing() + { + Debug.Log("The Thing"); + } + /// True if the sketch set can be accessed, but does not imply that all the data (like icons, etc) /// have been read yet. bool IsReadyForAccess { get; } diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index 11b06dce32..494f8e2512 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -16,6 +16,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Reflection; +using System.Text; using UnityEngine; namespace TiltBrush @@ -30,50 +32,81 @@ public class SketchCatalog : MonoBehaviour // Obviously, if Poly as a database is deleted or moved, accessing these files will fail. public const string kDefaultShowcaseSketchesFolder = "DefaultShowcaseSketches"; - private ISketchSet[] m_Sets; + private Dictionary m_Sets = new Dictionary(); + private Dictionary, ISketchSet>> m_CollectionCreators; - public ISketchSet GetSet(int i) - { - return m_Sets[i]; - } - public ISketchSet GetSet(string type, string instance) + private void SetupResourceCollectionCreators() { - return m_Sets.FirstOrDefault(x => x.SketchSetType == type && x.SketchSetInstance == instance); - } + m_CollectionCreators = new Dictionary, ISketchSet>>(); - public ISketchSet GetFirstSetOrDefault(string type) - { - return m_Sets.FirstOrDefault(x => x.SketchSetType == type); + int maxTriangles = QualityControls.m_Instance.AppQualityLevels.MaxPolySketchTriangles; + m_CollectionCreators[FileSketchSet.TypeName] = (Dictionary _) => + new FileSketchSet(); + m_CollectionCreators[PolySketchSet.TypeName] = (Dictionary _) => + new PolySketchSet(this, PolySketchSet.SketchType.Liked, maxTriangles, needsLogin: true); + m_CollectionCreators[GoogleDriveSketchSet.TypeName] = (Dictionary _) => + new GoogleDriveSketchSet(); + m_CollectionCreators["Resource-Rss"] = (Dictionary options) => + new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["uri"]))); + m_CollectionCreators["Resource-Path"] = (Dictionary options) => + new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["path"]))); + m_CollectionCreators["Resource-Icosa"] = (Dictionary options) => + { + string user = null; + options.TryGetValue("user", out user); + return new ResourceCollectionSketchSet(new IcosaSketchCollection(App.HttpClient, user)); + }; } - public ISketchSet GetSetById(string id) + public static string CreateId(string id, Dictionary options) { - return m_Sets.FirstOrDefault(x => x.SketchSetId == id); - } + var sb = new StringBuilder(); + sb.Append(id); - public int GetSetIndexById(string id) - { - for (int i = 0; i < m_Sets.Length; i++) + if (options != null) { - if (m_Sets[i].SketchSetId == id) + string add = "?"; + foreach (var pair in options) { - return i; + sb.Append(add); + add = "&"; + sb.Append(pair.Key); + sb.Append("="); + sb.Append(pair.Value); } } - return -1; + return sb.ToString(); } - public int GetSetIndex(ISketchSet sketchSet) + public static (string type, Dictionary options) DecodeId(string id) { - for (int i = 0; i < m_Sets.Length; i++) + int firstSplit = id.IndexOf("?"); + if (firstSplit < 0) { - if (m_Sets[i] == sketchSet) - { - return i; - } + return (id, null); + } + var type = id.Substring(0, firstSplit); + var options = new Dictionary( + id.Substring(firstSplit + 1) + .Split("&") + .Select(x => x.Split("=")) + .Select(x => new KeyValuePair(x[0], x[1]))); + return (type, options); + } + + public ISketchSet GetSketchSet(string type, Dictionary options) + { + string id = CreateId(type, options); + ISketchSet sketchSet = null; + if (m_Sets.TryGetValue(id, out sketchSet)) + { + return sketchSet; } - return -1; + sketchSet = m_CollectionCreators[type].Invoke(options); + sketchSet.Init(); + m_Sets[id] = sketchSet; + return sketchSet; } void Awake() @@ -89,23 +122,9 @@ void Awake() System.Environment.SetEnvironmentVariable("MONO_MANAGED_WATCHER", "3"); } - int maxTriangles = QualityControls.m_Instance.AppQualityLevels.MaxPolySketchTriangles; - InitFeaturedSketchesPath(); - //var icosaCollection = new IcosaSketchCollection(App.HttpClient); - var rssCollection = new RssSketchCollection(App.HttpClient, new Uri("https://timaidley.github.io/open-brush-feed/sketches.rss")); - - m_Sets = new ISketchSet[] - { - new FileSketchSet(), - //new FileSketchSet(App.FeaturedSketchesPath()), - //new AsyncWrapperSketchSet(new RssSketchSetAsync(new Uri("https://heavenly-upbeat-scorpion.glitch.me/sketches.rss"))), - //new ResourceCollectionSketchSet(icosaCollection), - new ResourceCollectionSketchSet(rssCollection), - new PolySketchSet(this, PolySketchSet.SketchType.Liked, maxTriangles, needsLogin: true), - new GoogleDriveSketchSet(), - }; + SetupResourceCollectionCreators(); } public static bool InitFeaturedSketchesPath() @@ -131,17 +150,9 @@ public static bool InitFeaturedSketchesPath() return true; } - void Start() - { - foreach (ISketchSet s in m_Sets) - { - s.Init(); - } - } - void Update() { - foreach (ISketchSet s in m_Sets) + foreach (ISketchSet s in m_Sets.Values) { s.Update(); } @@ -150,14 +161,14 @@ void Update() public void NotifyUserFileCreated(string fullpath) { // TODO: This won't work with more tha one filesketchset. - var userSketches = GetFirstSetOrDefault(FileSketchSet.TypeName); + var userSketches = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local); userSketches.NotifySketchCreated(fullpath); } public void NotifyUserFileChanged(string fullpath) { // TODO: This won't work with more tha one filesketchset. - var userSketches = GetFirstSetOrDefault(FileSketchSet.TypeName); + var userSketches = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local); userSketches.NotifySketchChanged(fullpath); } } diff --git a/Assets/Scripts/Sharing/DriveSync.cs b/Assets/Scripts/Sharing/DriveSync.cs index e42430173a..7f12de28a6 100644 --- a/Assets/Scripts/Sharing/DriveSync.cs +++ b/Assets/Scripts/Sharing/DriveSync.cs @@ -970,7 +970,7 @@ private async Task UploadItemAsync(Transfer transfer, CancellationToken token) } if (Path.GetExtension(path) == ".tilt") { - var driveSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); + var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); if (item.FileId == null) { driveSet.NotifySketchCreated(path); diff --git a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs index 0541b957a7..1f11534d66 100644 --- a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs +++ b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs @@ -83,7 +83,7 @@ private void OnGUI() EditorGUILayout.Toggle("DriveSync.Initializing", App.DriveSync.Initializing); EditorGUILayout.Toggle("DriveSync.Initialized", App.DriveSync.Initialized); EditorGUILayout.Toggle("DriveSync.Syncing", App.DriveSync.Syncing); - var sketchset = SketchCatalog.m_Instance.GetFirstSetOrDefault(GoogleDriveSketchSet.TypeName); + var sketchset = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); if (sketchset != null) { EditorGUILayout.Toggle("SketchSet.IsReadyForAccess", sketchset.IsReadyForAccess); diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index b144eebc10..3a24bd44e1 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -3866,7 +3866,8 @@ IEnumerator LoadAndExportList(List filenames) // This coroutine must be run to completion or disposed. IEnumerator LoadAndExportAll() { - ISketchSet sketchSet = SketchCatalog.m_Instance.GetFirstSetOrDefault(FileSketchSet.TypeName); + // Currently just gets the user sketch set + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSketchSet(FileSketchSet.TypeName, null); for (int i = 0; i < sketchSet.NumSketches; ++i) { SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(i); @@ -4242,9 +4243,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { // TODO Refactor with Load below var index = iParam1; - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4259,9 +4258,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.Load: { var index = iParam1; - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { @@ -4469,9 +4466,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.ShowSketchFolder: { var index = iParam1; - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); EatGazeObjectInput(); //launch external window and tell the user we did so @@ -4538,9 +4533,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, break; case GlobalCommands.DeleteSketch: { - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); sketchSet.DeleteSketch(iParam1); DismissPopupOnCurrentGazeObject(false); break; @@ -4764,9 +4757,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, if (sketchBook != null) { // Get triangle count from cloud scene file info. - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); SceneFileInfo sfi = sketchSet.GetSketchSceneFileInfo(index); int tris = sfi.TriangleCount ?? -1; @@ -4808,9 +4799,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, case GlobalCommands.LoadWaitOnDownload: { bool download = false; - ISketchSet sketchSet = sParam != null - ? SketchCatalog.m_Instance.GetSetById(sParam) - : SketchCatalog.m_Instance.GetSet(iParam2); + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); if (sketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) { BasePanel sketchBook = m_PanelManager.GetSketchBookPanel(); From 44aca953fec719bda2ed3d48610c59dc60eb9481 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Wed, 1 Mar 2023 22:24:51 -0800 Subject: [PATCH 15/38] Sketchset titles --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 184 +++--------------- Assets/Scripts/GUI/SketchbookPanel.cs | 58 ++---- .../FilesystemSketchCollection.cs | 2 +- .../ResourceCollectionSketchSet.cs | 2 + .../ResourceSystem/RssSketchCollection.cs | 25 ++- Assets/Scripts/Save/FileSketchSet.cs | 2 + Assets/Scripts/Save/ISketchSet.cs | 2 + Assets/Scripts/Save/SketchCatalog.cs | 2 +- .../Scripts/Sharing/GoogleDriveSketchSet.cs | 1 + Assets/Scripts/Sharing/PolySketchSet.cs | 2 + 10 files changed, 70 insertions(+), 210 deletions(-) diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index 5203373808..fea811e057 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -527,7 +527,7 @@ MonoBehaviour: m_ContactingServerMessage: {fileID: 1000011835935838} m_OutOfDateMessage: {fileID: 1000012586849750} m_NoPolyConnectionMessage: {fileID: 4374687820491222719} - m_OnlineGalleryButtonRenderer: {fileID: 23175542353181748} + m_OnlineGalleryButtonRenderer: {fileID: 0} m_IconsOnFirstPage: - {fileID: 142432} - {fileID: 167238} @@ -1594,7 +1594,6 @@ Transform: - {fileID: 423072} - {fileID: 494534} - {fileID: 410012} - - {fileID: 4459060226476560} - {fileID: 4000012031974818} - {fileID: 4067235498706310} - {fileID: 962364287279058834} @@ -2382,8 +2381,8 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Liked Sketches - m_DescriptionTextExtra: From Poly + m_DescriptionText: Favorite Sketches + m_DescriptionTextExtra: That you have liked m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 0cdb2feeef1898445b0f54660acd59d8, type: 3} @@ -5383,7 +5382,7 @@ Transform: - {fileID: 4000014046535472} - {fileID: 4000013013276346} m_Father: {fileID: 473678} - m_RootOrder: 43 + m_RootOrder: 42 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1000010567837980 GameObject: @@ -5549,7 +5548,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 26 + m_RootOrder: 25 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33000012255737950 MeshFilter: @@ -5773,7 +5772,7 @@ Transform: - {fileID: 4000012999227018} - {fileID: 4000013454894384} m_Father: {fileID: 473678} - m_RootOrder: 35 + m_RootOrder: 34 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010582741524 MeshRenderer: @@ -6434,7 +6433,7 @@ MonoBehaviour: m_DescriptionType: 0 m_DescriptionYOffset: 0 m_DescriptionText: Featured Sketches - m_DescriptionTextExtra: From Poly + m_DescriptionTextExtra: From the Internet m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 78bb99e2fe13ca44d9d0b4ab7882f4ce, type: 3} @@ -6597,7 +6596,7 @@ Transform: - {fileID: 4000010399852960} - {fileID: 4000013175241986} m_Father: {fileID: 473678} - m_RootOrder: 36 + m_RootOrder: 35 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010716088472 MeshRenderer: @@ -7176,7 +7175,7 @@ Transform: - {fileID: 4032955052552346} - {fileID: 4000013868811186} m_Father: {fileID: 473678} - m_RootOrder: 40 + m_RootOrder: 39 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000010319935078 MeshRenderer: @@ -8817,7 +8816,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 33 + m_RootOrder: 32 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23000012533341368 MeshRenderer: @@ -9862,7 +9861,7 @@ Transform: - {fileID: 224259994149328172} - {fileID: 4299097812957920} m_Father: {fileID: 473678} - m_RootOrder: 37 + m_RootOrder: 36 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23762962104057700 MeshRenderer: @@ -10015,7 +10014,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1165898094550002} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.191, y: 1.084, z: -0.002} + m_LocalPosition: {x: -0.509, y: 1.084, z: -0.002} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -10303,7 +10302,7 @@ Transform: - {fileID: 4160166080439610} - {fileID: 4088058456074744} m_Father: {fileID: 473678} - m_RootOrder: 42 + m_RootOrder: 41 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &65181151135621986 BoxCollider: @@ -11634,7 +11633,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 27 + m_RootOrder: 26 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &33567874645767864 MeshFilter: @@ -11765,7 +11764,7 @@ Transform: - {fileID: 4227232315394708} - {fileID: 4572210679967688} m_Father: {fileID: 473678} - m_RootOrder: 38 + m_RootOrder: 37 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23211508628126822 MeshRenderer: @@ -12252,143 +12251,6 @@ MonoBehaviour: m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} ---- !u!1 &1842065821143492 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4459060226476560} - - component: {fileID: 33422040586648110} - - component: {fileID: 23175542353181748} - - component: {fileID: 65949792714291216} - - component: {fileID: 114501524827504004} - m_Layer: 16 - m_Name: OnlineGalleryButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4459060226476560 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1842065821143492} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.372, y: 0.988, z: -0.0311} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 25 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33422040586648110 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1842065821143492} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23175542353181748 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1842065821143492} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3c8ca511828182747a0b79564892ec57, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65949792714291216 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1842065821143492} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114501524827504004 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1842065821143492} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Browse Poly - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: da8fcd82368826b4cad505e8249bd63c, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 50 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 0 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} --- !u!1 &1855919676530468 GameObject: m_ObjectHideFlags: 0 @@ -12588,7 +12450,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 32 + m_RootOrder: 31 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &9181308231173954030 MeshFilter: @@ -13323,7 +13185,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 34 + m_RootOrder: 33 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &3584797028731175384 MeshRenderer: @@ -13508,7 +13370,7 @@ Transform: - {fileID: 2713655870301875666} - {fileID: 6471389067300543686} m_Father: {fileID: 473678} - m_RootOrder: 41 + m_RootOrder: 40 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &3762244675612984118 MeshRenderer: @@ -13764,7 +13626,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 28 + m_RootOrder: 27 m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} --- !u!33 &2139868953206300193 MeshFilter: @@ -13944,7 +13806,7 @@ Transform: - {fileID: 3702262655533381092} - {fileID: 1817565260503090077} m_Father: {fileID: 473678} - m_RootOrder: 39 + m_RootOrder: 38 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &2320526944858906914 MeshRenderer: @@ -14021,7 +13883,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 30 + m_RootOrder: 29 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &2502232274484467176 MeshFilter: @@ -14241,7 +14103,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 31 + m_RootOrder: 30 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &7617378168068650857 MeshFilter: @@ -14979,7 +14841,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 29 + m_RootOrder: 28 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &830589215893783279 MeshFilter: diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 8f8c68361d..675e5e4380 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -54,7 +54,6 @@ public enum RootSet [SerializeField] private GameObject m_ContactingServerMessage; [SerializeField] private GameObject m_OutOfDateMessage; [SerializeField] private GameObject m_NoPolyConnectionMessage; - [SerializeField] private Renderer m_OnlineGalleryButtonRenderer; [SerializeField] private GameObject[] m_IconsOnFirstPage; [SerializeField] private GameObject[] m_IconsOnNormalPage; [SerializeField] private GameObject m_CloseButton; @@ -192,10 +191,16 @@ protected override void OnStart() {"uri", "https://timaidley.github.io/open-brush-feed/sketches.rss" } }; + var fileOptions = new Dictionary + { + {"path", App.UserPath() }, + {"name", "Your Sketches"} + }; + // Fetch the root stacks m_SetStacks = new Stack[] { - new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(FileSketchSet.TypeName, null)}), + new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet("Resource-Path", fileOptions)}), new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet("Resource-Rss", rssOptions)}), new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(PolySketchSet.TypeName, null)}), new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null)}), @@ -276,48 +281,13 @@ void SetVisibleSketchSet(RootSet stack) ResetPageIndex(); RefreshPage(); - switch (newSketchSet.SketchSetType) + if (m_PanelText) { - case FileSketchSet.TypeName: - if (m_PanelText) - { - m_PanelText.text = m_PanelTextStandard; - } - if (m_PanelTextPro) - { - m_PanelTextPro.text = m_PanelTextStandard; - } - break; - case ResourceCollectionSketchSet.TypeName: - if (m_PanelText) - { - m_PanelText.text = m_PanelTextShowcase; - } - if (m_PanelTextPro) - { - m_PanelTextPro.text = m_PanelTextShowcase; - } - break; - case PolySketchSet.TypeName: - if (m_PanelText) - { - m_PanelText.text = m_PanelTextLiked; - } - if (m_PanelTextPro) - { - m_PanelTextPro.text = m_PanelTextLiked; - } - break; - case GoogleDriveSketchSet.TypeName: - if (m_PanelText) - { - m_PanelText.text = m_PanelTextDrive; - } - if (m_PanelTextPro) - { - m_PanelTextPro.text = m_PanelTextDrive; - } - break; + m_PanelText.text = CurrentSketchSet.Title; + } + if (m_PanelTextPro) + { + m_PanelTextPro.text = CurrentSketchSet.Title; } } } @@ -733,7 +703,6 @@ override protected void OnUpdateActive() // If we're not active, hide all our preview panels if (!m_GazeActive) { - m_OnlineGalleryButtonRenderer.material.SetFloat("_Grayscale", 1); m_ProfileButtonRenderer.material.SetFloat("_Grayscale", 1); for (int i = 0; i < m_IconScriptsOnFirstPage.Count; ++i) @@ -755,7 +724,6 @@ override protected void OnUpdateActive() } else if (m_CurrentState == PanelState.Available) { - m_OnlineGalleryButtonRenderer.material.SetFloat("_Grayscale", 0); m_ProfileButtonRenderer.material.SetFloat("_Grayscale", 0); CurrentSketchSet.RequestRefresh(); } diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index d8ac220802..50b63988e2 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -5,7 +5,7 @@ using UnityEngine; namespace TiltBrush { - public class FilesystemSketchCollection : IResource, IResourceCollection + public class FilesystemSketchCollection : IResourceCollection { private string m_Path; private DirectoryInfo m_Dir; diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 3b4f63590d..ae38109000 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -33,6 +33,8 @@ public ResourceCollectionSketchSet(IResourceCollection collection) public string SketchSetType => m_Collection.CollectionType; public string SketchSetInstance => m_Collection.CollectionInstance; + public string Title => m_Collection.Name; + public bool IsReadyForAccess => m_Init is { IsCompleted: true }; public bool IsActivelyRefreshingSketches => m_Refreshing is { IsCompleted: false }; diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs index 113f69939d..0036382593 100644 --- a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/RssSketchCollection.cs @@ -14,6 +14,8 @@ public class RssSketchCollection : IResourceCollection { private Uri m_Uri; private HttpClient m_HttpClient; + private List m_Items; + private string m_Title; public RssSketchCollection(HttpClient httpClient, Uri uri) { @@ -24,7 +26,7 @@ public RssSketchCollection(HttpClient httpClient, Uri uri) public string CollectionType => "Rss"; public string CollectionInstance => m_Uri.OriginalString; - public string Name => "RSS Feed"; + public string Name => m_Title; public Uri Uri { get; } public Uri PreviewUri { get; } public string Description { get; } @@ -33,7 +35,26 @@ public RssSketchCollection(HttpClient httpClient, Uri uri) public async Task InitAsync() { // might as well do all the work when getting the page - return; + SyndicationFeed feed; + try + { + var stream = await m_HttpClient.GetStreamAsync(m_Uri); + using var xmlReader = XmlReader.Create(stream); + feed = SyndicationFeed.Load(xmlReader); + } + catch (Exception e) + { + Debug.LogException(e); + return; + } + m_Title = feed.Title.Text; + m_Items = feed.Items.Select(item => new RemoteSketchResource( + name: item.Title.Text, + uri: item.Links[0].Uri, + previewUri: null, + description: item.Summary.Text, + authors: item.Authors.Select(x => new TiltBrush.Author { Name = x.Name, Url = x.Uri, Email = x.Email }).ToArray() + )).ToList(); } public async Task LoadPreviewAsync() { diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 6be5dc0cba..d77236a666 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -214,6 +214,8 @@ public int CompareTo(FileSketch rCompareSketch) public string SketchSetInstance => $"{m_SketchesPath}?readonly={m_ReadOnly}"; + public string Title => "Your Sketches"; + public bool IsReadyForAccess { get { return m_ReadyForAccess; } diff --git a/Assets/Scripts/Save/ISketchSet.cs b/Assets/Scripts/Save/ISketchSet.cs index c4e1f6eac7..e822f7616e 100644 --- a/Assets/Scripts/Save/ISketchSet.cs +++ b/Assets/Scripts/Save/ISketchSet.cs @@ -40,6 +40,8 @@ public interface ISketchSet // This could be something like an URL or a path, or a type. string SketchSetInstance { get; } + string Title { get; } + string SketchSetId => $"{SketchSetType}:{SketchSetInstance}"; (string type, string instance) TypeAndInstanceFromId(string id) { diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index 494f8e2512..aa237fed26 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -50,7 +50,7 @@ private void SetupResourceCollectionCreators() m_CollectionCreators["Resource-Rss"] = (Dictionary options) => new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["uri"]))); m_CollectionCreators["Resource-Path"] = (Dictionary options) => - new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["path"]))); + new ResourceCollectionSketchSet(new FilesystemSketchCollection(options["path"], options?["name"] ?? "")); m_CollectionCreators["Resource-Icosa"] = (Dictionary options) => { string user = null; diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index 4184ad7373..00fc92f349 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -182,6 +182,7 @@ public async Task DownloadAsync(CancellationToken token) public const string TypeName = "GoogleDrive"; public string SketchSetType => TypeName; public string SketchSetInstance => ""; + public string Title => "Google Drive Backup"; public bool IsReadyForAccess => m_Sketches != null; diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index b8b1934353..4bcca92ae3 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -120,6 +120,8 @@ public PolySceneFileInfo PolySceneFileInfo public string SketchSetType => TypeName; public string SketchSetInstance => m_Type == SketchType.Curated ? "Curated" : "Liked"; + public string Title => "Poly"; + public VrAssetService VrAssetService { set { m_AssetService = value; } From e7078d6479515922624b61bc9b933cff783f3255 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Thu, 2 Mar 2023 22:38:05 -0800 Subject: [PATCH 16/38] Filesystem resources kind of working --- Assets/Scripts/GUI/SketchbookPanel.cs | 2 +- Assets/Scripts/ResourceSystem/DotTiltFile.cs | 4 ++++ Assets/Scripts/ResourceSystem/FilesystemSketch.cs | 2 +- Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs | 3 ++- Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs | 3 +-- Assets/Scripts/ResourceSystem/ResourceSketch.cs | 3 ++- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 675e5e4380..af23b2abad 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -193,7 +193,7 @@ protected override void OnStart() var fileOptions = new Dictionary { - {"path", App.UserPath() }, + {"path", App.UserSketchPath() }, {"name", "Your Sketches"} }; diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs index 60fde1107d..c821e26891 100644 --- a/Assets/Scripts/ResourceSystem/DotTiltFile.cs +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -70,6 +70,10 @@ public bool ReadAndVerifyTiltHeader(Stream stream) public async Task GetSubFileAsync(string filename) { var stream = await m_Resource.GetStreamAsync(); + if (stream == null) + { + return null; + } string tempFilename; if (!stream.CanSeek) { diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs index 0b49b3731d..50a44d36f3 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketch.cs @@ -36,7 +36,7 @@ public async Task InitAsync() public async Task LoadPreviewAsync() { - throw new NotImplementedException(); + //throw new NotImplementedException(); return null; } public async Task GetStreamAsync() diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index 50b63988e2..68b1a46665 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -35,7 +35,7 @@ public FilesystemSketchCollection(string path, string name) public async Task LoadPreviewAsync() { // TODO: Perhaps to something clever with having a thumbnail in a .meta subdir? - throw new NotImplementedException(); + //throw new NotImplementedException(); return null; } @@ -68,6 +68,7 @@ public async IAsyncEnumerable ContentsAsync() public async Task GetStreamAsync() { + return null; throw new NotImplementedException(); } #pragma warning restore 1998 diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index ae38109000..2e99b5932d 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -99,13 +99,12 @@ private async Task LoadSketchIcon(ResourceSketch resourceSketch) return; } - var url = resourceSketch.SceneFileInfo.FullPath; var tilt = new DotTiltFile(resourceSketch.ResourceFileInfo.Resource); using (var thumbStream = await tilt.GetSubFileAsync(TiltFile.FN_THUMBNAIL)) { if (thumbStream == null) { - Debug.LogError($"Could not open {TiltFile.FN_THUMBNAIL} stream from {url}."); + Debug.LogError($"Could not open {TiltFile.FN_THUMBNAIL} stream for {resourceSketch.ResourceFileInfo.Resource.Uri}."); return; } try diff --git a/Assets/Scripts/ResourceSystem/ResourceSketch.cs b/Assets/Scripts/ResourceSystem/ResourceSketch.cs index 8e3ac050e0..dfa0d9dd60 100644 --- a/Assets/Scripts/ResourceSystem/ResourceSketch.cs +++ b/Assets/Scripts/ResourceSystem/ResourceSketch.cs @@ -10,6 +10,7 @@ namespace TiltBrush public class ResourceSketch : ISketch { private ResourceFileInfo m_FileInfo; + private static readonly string[] emptyStringArray = new string[] { }; public ResourceSketch(ResourceFileInfo fileInfo) { m_FileInfo = fileInfo; @@ -27,7 +28,7 @@ public SceneFileInfo SceneFileInfo public string[] Authors { - get => m_FileInfo.Resource.Authors.Select(x => x.Name).ToArray(); + get => m_FileInfo.Resource.Authors?.Select(x => x.Name).ToArray() ?? emptyStringArray; set { throw new NotSupportedException("ResourceSketch does not support setting authors."); From 05214d491a714f4e7e4e00c48bfbfc211c03684f Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sat, 4 Mar 2023 08:40:50 -0800 Subject: [PATCH 17/38] Can load subdirectories --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 2 +- Assets/Scripts/GUI/LoadSketchButton.cs | 10 +++++++ Assets/Scripts/GUI/SketchbookPanel.cs | 23 ++++++++++++--- .../FilesystemSketchCollection.cs | 10 +++---- Assets/Scripts/Save/SketchCatalog.cs | 29 ++++++++++--------- 5 files changed, 50 insertions(+), 24 deletions(-) diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index fea811e057..e19ead508c 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -527,7 +527,6 @@ MonoBehaviour: m_ContactingServerMessage: {fileID: 1000011835935838} m_OutOfDateMessage: {fileID: 1000012586849750} m_NoPolyConnectionMessage: {fileID: 4374687820491222719} - m_OnlineGalleryButtonRenderer: {fileID: 0} m_IconsOnFirstPage: - {fileID: 142432} - {fileID: 167238} @@ -564,6 +563,7 @@ MonoBehaviour: m_DriveFullIcon: {fileID: 894190226255371916} m_SketchIconUvScale: {x: 0.7, y: 0.7} m_ReadOnlyPopupOffset: {x: 0.2, y: 0, z: 0} + m_FolderIcon: {fileID: 2800000, guid: ee2622d6ec17a3640a40234981c65bff, type: 3} --- !u!114 &114513666115880546 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index 9d653d802c..c410c77d12 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -156,6 +156,16 @@ override protected void OnButtonPressed() return; } + var sketch = m_SketchSet.GetSketchSceneFileInfo(m_SketchIndex); + if (sketch is ResourceFileInfo resourceFileInfo) + { + if (resourceFileInfo.Resource is IResourceCollection collection) + { + var sketchSet = new ResourceCollectionSketchSet(collection); + SketchbookPanel.Instance.PushSketchSet(SketchbookPanel.Instance.SelectedSketchStack, sketchSet); + } + } + // Sequence on load is: // LoadConfirmUnsaved -> LoadWaitOnDownload -> LoadConfirmComplex -> LoadComplexHigh -> Load // TODO: SketchSet needs to know its own id? diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index af23b2abad..42d9ed3c19 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -17,6 +17,7 @@ using System.Collections.Generic; using System.Linq; using TMPro; +using UnityEngine.Serialization; namespace TiltBrush { @@ -74,6 +75,8 @@ public enum RootSet [SerializeField] private Vector2 m_SketchIconUvScale = new Vector2(0.7f, 0.7f); [SerializeField] private Vector3 m_ReadOnlyPopupOffset; + [FormerlySerializedAs("m_FolderTexture")][SerializeField] private Texture2D m_FolderIcon; + private float m_ImageAspect; private Vector2 m_HalfInvUvScale; @@ -95,7 +98,7 @@ public enum RootSet public float ImageAspect { get { return m_ImageAspect; } } public int SelectedSketchStack => m_SelectedStack; - public ISketchSet CurrentSketchSet => m_SetStacks?[m_SelectedStack]?.Peek() ?? null; + public ISketchSet CurrentSketchSet { get; private set; } override public void SetInIntroMode(bool inIntro) { @@ -186,15 +189,16 @@ protected override void OnStart() m_NotLoggedInMessage.SetActive(false); m_NotLoggedInDriveMessage.SetActive(false); - var rssOptions = new Dictionary + var rssOptions = new Dictionary { {"uri", "https://timaidley.github.io/open-brush-feed/sketches.rss" } }; - var fileOptions = new Dictionary + var fileOptions = new Dictionary { {"path", App.UserSketchPath() }, - {"name", "Your Sketches"} + {"name", "Your Sketches"}, + {"icon", m_FolderIcon}, }; // Fetch the root stacks @@ -206,6 +210,7 @@ protected override void OnStart() new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null)}), }; m_SelectedStack = (int)RootSet.Backup; + CurrentSketchSet = m_SetStacks[m_SelectedStack].Peek(); // Dynamically position the gallery buttons. OnDriveSetHasSketchesChanged(); @@ -251,6 +256,15 @@ override protected void OnEnablePanel() } } + public void PushSketchSet(int stack, ISketchSet sketchSet) + { + m_SetStacks[stack].Push(sketchSet); + if (stack == m_SelectedStack) + { + SetVisibleSketchSet((RootSet)m_SelectedStack); + } + } + void SetVisibleSketchSet(RootSet stack) { int stackIndex = (int)stack; @@ -265,6 +279,7 @@ void SetVisibleSketchSet(RootSet stack) // Cache new set. m_SelectedStack = stackIndex; + CurrentSketchSet = m_SetStacks[m_SelectedStack].Peek(); CurrentSketchSet.OnChanged += OnSketchSetDirty; CurrentSketchSet.RequestRefresh(); diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs index 68b1a46665..beb712454c 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs @@ -9,11 +9,13 @@ public class FilesystemSketchCollection : IResourceCollection { private string m_Path; private DirectoryInfo m_Dir; + private Texture2D m_Icon; - public FilesystemSketchCollection(string path, string name) + public FilesystemSketchCollection(string path, string name, Texture2D icon = null) { m_Path = path; Name = name; + m_Icon = icon; } public string CollectionType => "LocalFolderCollection"; @@ -34,9 +36,7 @@ public FilesystemSketchCollection(string path, string name) #pragma warning disable 1998 public async Task LoadPreviewAsync() { - // TODO: Perhaps to something clever with having a thumbnail in a .meta subdir? - //throw new NotImplementedException(); - return null; + return m_Icon; } public async Task InitAsync() @@ -57,7 +57,7 @@ public async IAsyncEnumerable ContentsAsync() { continue; } - yield return new FilesystemSketchCollection(dirInfo.FullName, dirInfo.Name); + yield return new FilesystemSketchCollection(dirInfo.FullName, dirInfo.Name, m_Icon); } foreach (var fileInfo in m_Dir.EnumerateFiles("*.tilt")) diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index aa237fed26..0c6273df3f 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -33,33 +33,33 @@ public class SketchCatalog : MonoBehaviour public const string kDefaultShowcaseSketchesFolder = "DefaultShowcaseSketches"; private Dictionary m_Sets = new Dictionary(); - private Dictionary, ISketchSet>> m_CollectionCreators; + private Dictionary, ISketchSet>> m_CollectionCreators; private void SetupResourceCollectionCreators() { - m_CollectionCreators = new Dictionary, ISketchSet>>(); + m_CollectionCreators = new Dictionary, ISketchSet>>(); int maxTriangles = QualityControls.m_Instance.AppQualityLevels.MaxPolySketchTriangles; - m_CollectionCreators[FileSketchSet.TypeName] = (Dictionary _) => + m_CollectionCreators[FileSketchSet.TypeName] = (Dictionary _) => new FileSketchSet(); - m_CollectionCreators[PolySketchSet.TypeName] = (Dictionary _) => + m_CollectionCreators[PolySketchSet.TypeName] = (Dictionary _) => new PolySketchSet(this, PolySketchSet.SketchType.Liked, maxTriangles, needsLogin: true); - m_CollectionCreators[GoogleDriveSketchSet.TypeName] = (Dictionary _) => + m_CollectionCreators[GoogleDriveSketchSet.TypeName] = (Dictionary _) => new GoogleDriveSketchSet(); - m_CollectionCreators["Resource-Rss"] = (Dictionary options) => - new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["uri"]))); - m_CollectionCreators["Resource-Path"] = (Dictionary options) => - new ResourceCollectionSketchSet(new FilesystemSketchCollection(options["path"], options?["name"] ?? "")); - m_CollectionCreators["Resource-Icosa"] = (Dictionary options) => + m_CollectionCreators["Resource-Rss"] = (Dictionary options) => + new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["uri"] as string))); + m_CollectionCreators["Resource-Path"] = (Dictionary options) => + new ResourceCollectionSketchSet(new FilesystemSketchCollection(options["path"] as string, (options?["name"] ?? "") as string, options?["icon"] as Texture2D)); + m_CollectionCreators["Resource-Icosa"] = (Dictionary options) => { - string user = null; + object user = null; options.TryGetValue("user", out user); - return new ResourceCollectionSketchSet(new IcosaSketchCollection(App.HttpClient, user)); + return new ResourceCollectionSketchSet(new IcosaSketchCollection(App.HttpClient, user as string)); }; } - public static string CreateId(string id, Dictionary options) + public static string CreateId(string id, Dictionary options) { var sb = new StringBuilder(); sb.Append(id); @@ -95,7 +95,7 @@ public static (string type, Dictionary options) DecodeId(string return (type, options); } - public ISketchSet GetSketchSet(string type, Dictionary options) + public ISketchSet GetSketchSet(string type, Dictionary options) { string id = CreateId(type, options); ISketchSet sketchSet = null; @@ -109,6 +109,7 @@ public ISketchSet GetSketchSet(string type, Dictionary options) return sketchSet; } + void Awake() { m_Instance = this; From 9fd3fd6cf9837feebe0da56d416adbe0b4300f5b Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Tue, 14 Mar 2023 16:38:34 -0700 Subject: [PATCH 18/38] Get rid of unnecessary packagemanger include --- Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs index f43a7b57a6..dbc34a7128 100644 --- a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs @@ -7,7 +7,6 @@ using System.Net.Http.Headers; using System.Threading.Tasks; using Newtonsoft.Json; -using UnityEditor.PackageManager; using UnityEngine; using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; namespace TiltBrush From be15d1cd03bdf9bd122f4710405f01babdcc6be2 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 19 Mar 2023 18:04:43 -0700 Subject: [PATCH 19/38] Move over to use Collection Factories. --- Assets/Prefabs/Utility.meta | 8 + .../Utility/ResourceCollectionFactory.prefab | 151 +++++++++ .../ResourceCollectionFactory.prefab.meta | 7 + Assets/Scenes/Main.unity | 289 +++++------------- Assets/Scripts/GUI/LoadSketchButton.cs | 6 +- Assets/Scripts/GUI/SketchbookPanel.cs | 139 +++++---- Assets/Scripts/ResourceSystem/DotTiltFile.cs | 80 +++-- .../Editor/FilesystemSketchTests.cs | 8 +- .../Editor/IcosaCollectionTest.cs | 5 +- .../Editor/TestFiles/TiltFileTest.cs | 2 +- ...Collection.cs => FeedCollectionFactory.cs} | 52 ++-- ....cs.meta => FeedCollectionFactory.cs.meta} | 0 .../FilesystemSketchCollection.cs | 77 ----- Assets/Scripts/ResourceSystem/IResource.cs | 12 + .../ResourceSystem/IResourceCollection.cs | 16 +- ...ollection.cs => IcosaCollectionFactory.cs} | 49 ++- ...cs.meta => IcosaCollectionFactory.cs.meta} | 0 ...lesystemSketch.cs => LocalFileResource.cs} | 21 +- ...etch.cs.meta => LocalFileResource.cs.meta} | 0 .../LocalFolderCollectionFactory.cs | 107 +++++++ ...a => LocalFolderCollectionFactory.cs.meta} | 0 .../ResourceCollectionFactory.cs | 55 ++++ .../ResourceCollectionFactory.cs.meta | 3 + .../ResourceCollectionSketchSet.cs | 5 +- .../ResourceSystem/SketchCollection.cs | 108 +++++++ .../ResourceSystem/SketchCollection.cs.meta | 3 + .../WritableLocalFileResource.cs | 11 + .../WritableLocalFileResource.cs.meta | 3 + Assets/Scripts/Save/FileSketchSet.cs | 2 +- Assets/Scripts/Save/ISketchSet.cs | 14 - Assets/Scripts/Save/SaveLoadScript.cs | 282 ++++++++--------- Assets/Scripts/Save/SketchCatalog.cs | 104 +++---- Assets/Scripts/Sharing/DriveSync.cs | 2 +- .../Scripts/Sharing/DriveSyncDebugWindow.cs | 2 +- .../Scripts/Sharing/GoogleDriveSketchSet.cs | 4 +- Assets/Scripts/Sharing/PolySketchSet.cs | 4 +- Assets/Scripts/SketchControlsScript.cs | 4 +- 37 files changed, 975 insertions(+), 660 deletions(-) create mode 100644 Assets/Prefabs/Utility.meta create mode 100644 Assets/Prefabs/Utility/ResourceCollectionFactory.prefab create mode 100644 Assets/Prefabs/Utility/ResourceCollectionFactory.prefab.meta rename Assets/Scripts/ResourceSystem/{RssSketchCollection.cs => FeedCollectionFactory.cs} (64%) rename Assets/Scripts/ResourceSystem/{RssSketchCollection.cs.meta => FeedCollectionFactory.cs.meta} (100%) delete mode 100644 Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs rename Assets/Scripts/ResourceSystem/{IcosaSketchCollection.cs => IcosaCollectionFactory.cs} (79%) rename Assets/Scripts/ResourceSystem/{IcosaSketchCollection.cs.meta => IcosaCollectionFactory.cs.meta} (100%) rename Assets/Scripts/ResourceSystem/{FilesystemSketch.cs => LocalFileResource.cs} (55%) rename Assets/Scripts/ResourceSystem/{FilesystemSketch.cs.meta => LocalFileResource.cs.meta} (100%) create mode 100644 Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs rename Assets/Scripts/ResourceSystem/{FilesystemSketchCollection.cs.meta => LocalFolderCollectionFactory.cs.meta} (100%) create mode 100644 Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs create mode 100644 Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/SketchCollection.cs create mode 100644 Assets/Scripts/ResourceSystem/SketchCollection.cs.meta create mode 100644 Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs create mode 100644 Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs.meta diff --git a/Assets/Prefabs/Utility.meta b/Assets/Prefabs/Utility.meta new file mode 100644 index 0000000000..e55a0e046b --- /dev/null +++ b/Assets/Prefabs/Utility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef958ceb94a720f46b5fbe977cd367e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab new file mode 100644 index 0000000000..84b6c46c14 --- /dev/null +++ b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab @@ -0,0 +1,151 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &181213052578665738 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7352678666177677243} + - component: {fileID: 8205663950546837776} + - component: {fileID: 2270018919364646586} + m_Layer: 0 + m_Name: FeedCollectionFactory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7352678666177677243 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181213052578665738} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1197480599120525051} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8205663950546837776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181213052578665738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e40a8a9d9ec80644a66760d2dafa6d1, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &2270018919364646586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 181213052578665738} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d471abc55694a57a26c8ea58bd2cd08, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FolderLogo: {fileID: 0} +--- !u!1 &511455843847941796 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1197480599120525051} + - component: {fileID: 7468463092264690242} + m_Layer: 0 + m_Name: ResourceCollectionFactory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1197480599120525051 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511455843847941796} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7352678666177677243} + - {fileID: 5817307013886715331} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7468463092264690242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 511455843847941796} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 730833d9ce6a4ef69dbcb1aefa319085, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &7586609730876914498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5817307013886715331} + - component: {fileID: 4691017187077185165} + m_Layer: 0 + m_Name: LocalFileCollectionFactory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5817307013886715331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7586609730876914498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1197480599120525051} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4691017187077185165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7586609730876914498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d471abc55694a57a26c8ea58bd2cd08, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FolderLogo: {fileID: 2800000, guid: ee2622d6ec17a3640a40234981c65bff, type: 3} diff --git a/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab.meta b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab.meta new file mode 100644 index 0000000000..07b7d080ee --- /dev/null +++ b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 86013ec7845ec4c49aea1aa9efa5c5fe +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index ab27e75740..7461dcfd6a 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -7689,11 +7689,13 @@ MonoBehaviour: Quality Level: ~~ - # FPS High: ~~~~ (> ~~) + # + FPS High: ~~~~ (> ~~) # GPU Low: ~~~~ (< ~~.~~) - # FPS Low: ~~~~ (< ~~) + # FPS Low: ~~~~ (< + ~~) # GPU High: ~~~~ (> ~~.~~) @@ -9578,6 +9580,7 @@ Transform: - {fileID: 1412532063} - {fileID: 383974627} - {fileID: 669339392} + - {fileID: 3156743985483546036} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -28433,7 +28436,8 @@ MonoBehaviour: m_QuestSideLoadingHowToURL: https://docs.openbrush.app/user-guide/using-reference-images-on-oculus-quest m_ContributionPromoText: 'Open Brush is a free app entirely run by volunteers. - If you enjoy the app, please consider donating in the settings menu!' + If + you enjoy the app, please consider donating in the settings menu!' m_ContributionURL: https://opencollective.com/icosa m_WorldTransformMinScale: 0.1 m_WorldTransformMaxScale: 10 @@ -31118,210 +31122,6 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1915334737} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} - currentOverlayType: 2 - isDynamic: 0 - isProtectedContent: 0 - srcRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - srcRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - invertTextureRects: 0 - overrideTextureRectMatrix: 0 - overridePerLayerColorScaleAndOffset: 0 - colorScale: {x: 1, y: 1, z: 1, w: 1} - colorOffset: {x: 0, y: 0, z: 0, w: 0} - useExpensiveSuperSample: 0 - useExpensiveSharpen: 0 - hidden: 0 - isExternalSurface: 0 - externalSurfaceWidth: 0 - externalSurfaceHeight: 0 - compositionDepth: 0 - noDepthBufferTesting: 1 - layerTextureFormat: 0 - currentOverlayShape: 0 - textures: - - {fileID: 0} - - {fileID: 0} - isAlphaPremultiplied: 0 - useBicubicFiltering: 0 - useLegacyCubemapRotation: 0 - useEfficientSupersample: 0 - useEfficientSharpen: 0 - _previewInEditor: 0 - currentOverlayType: 2 - isDynamic: 0 - isProtectedContent: 0 - srcRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - srcRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - invertTextureRects: 0 - overrideTextureRectMatrix: 0 - overridePerLayerColorScaleAndOffset: 0 - colorScale: {x: 1, y: 1, z: 1, w: 1} - colorOffset: {x: 0, y: 0, z: 0, w: 0} - useExpensiveSuperSample: 0 - useExpensiveSharpen: 0 - hidden: 0 - isExternalSurface: 0 - externalSurfaceWidth: 0 - externalSurfaceHeight: 0 - compositionDepth: 0 - noDepthBufferTesting: 1 - layerTextureFormat: 0 - currentOverlayShape: 0 - textures: - - {fileID: 0} - - {fileID: 0} - isAlphaPremultiplied: 0 - useBicubicFiltering: 0 - useLegacyCubemapRotation: 0 - useEfficientSupersample: 0 - useEfficientSharpen: 0 - _previewInEditor: 0 - currentOverlayType: 2 - isDynamic: 0 - isProtectedContent: 0 - srcRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - srcRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - invertTextureRects: 0 - overrideTextureRectMatrix: 0 - overridePerLayerColorScaleAndOffset: 0 - colorScale: {x: 1, y: 1, z: 1, w: 1} - colorOffset: {x: 0, y: 0, z: 0, w: 0} - useExpensiveSuperSample: 0 - useExpensiveSharpen: 0 - hidden: 0 - isExternalSurface: 0 - externalSurfaceWidth: 0 - externalSurfaceHeight: 0 - compositionDepth: 0 - noDepthBufferTesting: 1 - layerTextureFormat: 0 - currentOverlayShape: 0 - textures: - - {fileID: 0} - - {fileID: 0} - isAlphaPremultiplied: 0 - useBicubicFiltering: 0 - useLegacyCubemapRotation: 0 - useEfficientSupersample: 0 - useEfficientSharpen: 0 - _previewInEditor: 0 - currentOverlayType: 2 - isDynamic: 0 - isProtectedContent: 0 - srcRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - srcRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectLeft: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - destRectRight: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - invertTextureRects: 0 - overrideTextureRectMatrix: 0 - overridePerLayerColorScaleAndOffset: 0 - colorScale: {x: 1, y: 1, z: 1, w: 1} - colorOffset: {x: 0, y: 0, z: 0, w: 0} - useExpensiveSuperSample: 0 - useExpensiveSharpen: 0 - hidden: 0 - isExternalSurface: 0 - externalSurfaceWidth: 0 - externalSurfaceHeight: 0 - compositionDepth: 0 - noDepthBufferTesting: 1 - layerTextureFormat: 0 - currentOverlayShape: 0 - textures: - - {fileID: 0} - - {fileID: 0} - isAlphaPremultiplied: 0 - useBicubicFiltering: 0 - useLegacyCubemapRotation: 0 - useEfficientSupersample: 0 - useEfficientSharpen: 0 - _previewInEditor: 0 --- !u!1001 &1916224247 PrefabInstance: m_ObjectHideFlags: 0 @@ -33952,6 +33752,81 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1001 &3156743985483546035 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 652605545} + m_Modifications: + - target: {fileID: 511455843847941796, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_Name + value: ResourceCollectionFactory + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, type: 3} +--- !u!4 &3156743985483546036 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1197480599120525051, guid: 86013ec7845ec4c49aea1aa9efa5c5fe, + type: 3} + m_PrefabInstance: {fileID: 3156743985483546035} + m_PrefabAsset: {fileID: 0} --- !u!4 &3873296417163464587 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index c410c77d12..86e5a81cee 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -86,10 +86,10 @@ public bool WarningVisible void RefreshDetails() { - m_MenuButton.SetSketchDetails(m_SketchIndex, SketchSet.SketchSetId); + m_MenuButton.SetSketchDetails(m_SketchIndex, SketchSet.SketchSetInstance); m_SizeOk = true; - if (m_SketchSet.SketchSetType == PolySketchSet.TypeName && m_SketchSet.SketchSetInstance == "Liked") + if (m_SketchSet.SketchSetType == PolySketchSet.UriName && m_SketchSet.SketchSetInstance == "Liked") { if (m_SketchSet.IsSketchIndexValid(m_SketchIndex)) { @@ -151,7 +151,7 @@ override public void SetColor(Color color) override protected void OnButtonPressed() { if (!m_SketchSet.GetSketchSceneFileInfo(m_SketchIndex).Available && - m_SketchSet.SketchSetType != GoogleDriveSketchSet.TypeName) + m_SketchSet.SketchSetType != GoogleDriveSketchSet.UriString) { return; } diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 42d9ed3c19..f610a2447a 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -201,14 +201,14 @@ protected override void OnStart() {"icon", m_FolderIcon}, }; - // Fetch the root stacks - m_SetStacks = new Stack[] + m_SetStacks = new string[] { - new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet("Resource-Path", fileOptions)}), - new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet("Resource-Rss", rssOptions)}), - new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(PolySketchSet.TypeName, null)}), - new Stack(new[]{SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null)}), - }; + $"file:///{App.UserSketchPath()}", + "feed:https://timaidley.github.io/open-brush-feed/sketches.rss", + "poly:", + "googledrive:" + }.Select(uri => new Stack(new[] { SketchCatalog.m_Instance.GetSketchSet(uri) })).ToArray(); + m_SelectedStack = (int)RootSet.Backup; CurrentSketchSet = m_SetStacks[m_SelectedStack].Peek(); @@ -353,60 +353,69 @@ protected override void RefreshPage() // Base Refresh updates the modal parts of the panel, and we always want those refreshed. base.RefreshPage(); - bool requiresPoly = CurrentSketchSet.SketchSetType == PolySketchSet.TypeName; - - bool polyDown = VrAssetService.m_Instance.NoConnection && requiresPoly; - m_NoPolyConnectionMessage.SetActive(polyDown); - - bool outOfDate = !polyDown && !VrAssetService.m_Instance.Available && requiresPoly; - m_OutOfDateMessage.SetActive(outOfDate); - - if (outOfDate || polyDown) - { - m_NoSketchesMessage.SetActive(false); - m_NoDriveSketchesMessage.SetActive(false); - m_NotLoggedInMessage.SetActive(false); - m_NoLikesMessage.SetActive(false); - m_ContactingServerMessage.SetActive(false); - m_NoShowcaseMessage.SetActive(false); - return; - } + m_NoSketchesMessage.SetActive(false); + m_NoDriveSketchesMessage.SetActive(false); + m_NotLoggedInMessage.SetActive(false); + m_NoLikesMessage.SetActive(false); + m_ContactingServerMessage.SetActive(false); + m_NoShowcaseMessage.SetActive(false); + + // bool requiresPoly = CurrentSketchSet.SketchSetType == PolySketchSet.UriName; + // + // bool polyDown = VrAssetService.m_Instance.NoConnection && requiresPoly; + // m_NoPolyConnectionMessage.SetActive(polyDown); + // + // bool outOfDate = !polyDown && !VrAssetService.m_Instance.Available && requiresPoly; + // m_OutOfDateMessage.SetActive(outOfDate); + // + // if (outOfDate || polyDown) + // { + // m_NoSketchesMessage.SetActive(false); + // m_NoDriveSketchesMessage.SetActive(false); + // m_NotLoggedInMessage.SetActive(false); + // m_NoLikesMessage.SetActive(false); + // m_ContactingServerMessage.SetActive(false); + // m_NoShowcaseMessage.SetActive(false); + // return; + // } + // + // bool refreshIcons = CurrentSketchSet.NumSketches > 0; + // + // // Show no sketches if we don't have sketches. + // bool isUser = CurrentSketchSet.SketchSetType == FileSketchSet.TypeName; + // bool isLiked = CurrentSketchSet.SketchSetType == PolySketchSet.UriName; + // bool isCurated = CurrentSketchSet is ResourceCollectionSketchSet; + // bool isDrive = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.UriString; + // m_NoSketchesMessage.SetActive(isUser && (CurrentSketchSet.NumSketches <= 0)); + // m_NoDriveSketchesMessage.SetActive(isDrive && (CurrentSketchSet.NumSketches <= 0)); + // + // // Show sign in popup if signed out for liked or drive sketchsets + // bool showNotLoggedIn = !App.GoogleIdentity.LoggedIn && (isLiked || isDrive); + // refreshIcons = refreshIcons && !showNotLoggedIn; + // m_NotLoggedInMessage.SetActive(showNotLoggedIn && isLiked); + // m_NotLoggedInDriveMessage.SetActive(showNotLoggedIn && isDrive); + // + // // Show no likes text & gallery button if we don't have liked sketches. + // m_NoLikesMessage.SetActive( + // isLiked && + // (CurrentSketchSet.NumSketches <= 0) && + // !CurrentSketchSet.IsActivelyRefreshingSketches && + // App.GoogleIdentity.LoggedIn); + // + // // Show Contacting Server if we're talking to Poly. + // m_ContactingServerMessage.SetActive( + // (requiresPoly || isDrive) && + // (CurrentSketchSet.NumSketches <= 0) && + // (CurrentSketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn)); + // + // // Show Showcase error if we're in Showcase and don't have sketches. + // m_NoShowcaseMessage.SetActive( + // isCurated && + // (CurrentSketchSet.NumSketches <= 0) && + // !CurrentSketchSet.IsActivelyRefreshingSketches); bool refreshIcons = CurrentSketchSet.NumSketches > 0; - // Show no sketches if we don't have sketches. - bool isUser = CurrentSketchSet.SketchSetType == FileSketchSet.TypeName; - bool isLiked = CurrentSketchSet.SketchSetType == PolySketchSet.TypeName; - bool isCurated = CurrentSketchSet.SketchSetType == ResourceCollectionSketchSet.TypeName; - bool isDrive = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName; - m_NoSketchesMessage.SetActive(isUser && (CurrentSketchSet.NumSketches <= 0)); - m_NoDriveSketchesMessage.SetActive(isDrive && (CurrentSketchSet.NumSketches <= 0)); - - // Show sign in popup if signed out for liked or drive sketchsets - bool showNotLoggedIn = !App.GoogleIdentity.LoggedIn && (isLiked || isDrive); - refreshIcons = refreshIcons && !showNotLoggedIn; - m_NotLoggedInMessage.SetActive(showNotLoggedIn && isLiked); - m_NotLoggedInDriveMessage.SetActive(showNotLoggedIn && isDrive); - - // Show no likes text & gallery button if we don't have liked sketches. - m_NoLikesMessage.SetActive( - isLiked && - (CurrentSketchSet.NumSketches <= 0) && - !CurrentSketchSet.IsActivelyRefreshingSketches && - App.GoogleIdentity.LoggedIn); - - // Show Contacting Server if we're talking to Poly. - m_ContactingServerMessage.SetActive( - (requiresPoly || isDrive) && - (CurrentSketchSet.NumSketches <= 0) && - (CurrentSketchSet.IsActivelyRefreshingSketches && App.GoogleIdentity.LoggedIn)); - - // Show Showcase error if we're in Showcase and don't have sketches. - m_NoShowcaseMessage.SetActive( - isCurated && - (CurrentSketchSet.NumSketches <= 0) && - !CurrentSketchSet.IsActivelyRefreshingSketches); - // Refresh all icons if necessary. if (!refreshIcons) { @@ -491,9 +500,9 @@ void Update() icon.UpdateUvOffsetAndScale(offset, m_SketchIconUvScale); } - switch (CurrentSketchSet.SketchSetType) + switch (SelectedSketchStack) { - case ResourceCollectionSketchSet.TypeName: + case (int)RootSet.Liked: m_LoadingGallery.SetActive(CurrentSketchSet.IsActivelyRefreshingSketches); m_DriveSyncProgress.SetActive(false); m_SyncingDriveIcon.SetActive(false); @@ -501,7 +510,7 @@ void Update() m_DriveDisabledIcon.SetActive(false); m_DriveFullIcon.SetActive(false); break; - case PolySketchSet.TypeName: + case (int)RootSet.Remote: m_LoadingGallery.SetActive(false); m_DriveSyncProgress.SetActive(false); m_SyncingDriveIcon.SetActive(false); @@ -509,9 +518,9 @@ void Update() m_DriveDisabledIcon.SetActive(false); m_DriveFullIcon.SetActive(false); break; - case FileSketchSet.TypeName: - case GoogleDriveSketchSet.TypeName: - bool sketchSetRefreshing = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName && + case (int)RootSet.Local: + case (int)RootSet.Backup: + bool sketchSetRefreshing = CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.UriString && CurrentSketchSet.IsActivelyRefreshingSketches; bool driveSyncing = App.DriveSync.Syncing; bool syncEnabled = App.DriveSync.SyncEnabled; @@ -552,7 +561,7 @@ private void OnDriveSetHasSketchesChanged() m_GalleryButtons[m_ElementNumberGalleryButtonDrive].gameObject.SetActive(false); galleryButtonN = galleryButtonAvailable - 1; - if (CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) + if (CurrentSketchSet.SketchSetType == GoogleDriveSketchSet.UriString) { // We were on the Drive tab but it's gone away so switch to the local tab by simulating // the user pressing the local tab button. diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs index c821e26891..c745414503 100644 --- a/Assets/Scripts/ResourceSystem/DotTiltFile.cs +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -1,4 +1,5 @@ +using System; using System.IO; using System.IO.Compression; using System.Runtime.InteropServices; @@ -20,10 +21,15 @@ private struct TiltZipHeader public uint unused2; } public const uint TILT_SENTINEL = 0x546c6974; // 'tilT' + public const string FN_METADATA = "metadata.json"; + public const string FN_METADATA_LEGACY = "main.json"; // used pre-release only + public const string FN_SKETCH = "data.sketch"; + public const string FN_THUMBNAIL = "thumbnail.png"; public static ushort HEADER_VERSION = 1; public static ushort HEADER_SIZE = (ushort)Marshal.SizeOf(); private IResource m_Resource; + private FileInfo m_FileCache; public IResource Resource => m_Resource; @@ -32,6 +38,40 @@ public DotTiltFile(IResource resource) m_Resource = resource; } + ~DotTiltFile() + { + if (m_FileCache != null) + { + m_FileCache.Delete(); + } + } + + public async Task GetStreamAsync() + { + if (m_FileCache == null) + { + var original = await m_Resource.GetStreamAsync(); + if (original is FileStream) + { + return original; + } + string tempFilename = Path.GetTempFileName(); + using (var fileStream = File.Create(tempFilename)) + { + await original.CopyToAsync(fileStream); + fileStream.Close(); + } + original.Close(); + m_FileCache = new FileInfo(tempFilename); + } + return m_FileCache.Open(FileMode.Open, FileAccess.Read, FileShare.Read); + } + + public async Task VerifyTiltHeaderAsync() + { + return ReadAndVerifyTiltHeader(await GetStreamAsync()); + } + public bool ReadAndVerifyTiltHeader(Stream stream) { var reader = new BinaryReader(stream); @@ -69,25 +109,7 @@ public bool ReadAndVerifyTiltHeader(Stream stream) public async Task GetSubFileAsync(string filename) { - var stream = await m_Resource.GetStreamAsync(); - if (stream == null) - { - return null; - } - string tempFilename; - if (!stream.CanSeek) - { - // Cache to a file - tempFilename = Path.GetTempFileName(); - using (var fileStream = File.Create(tempFilename)) - { - await stream.CopyToAsync(fileStream); - fileStream.Close(); - } - //Debug.Log($"Copied {m_Resource.Uri} to {tempFilename}."); - stream.Close(); - stream = File.Open(tempFilename, FileMode.Open); - } + var stream = await GetStreamAsync(); if (!ReadAndVerifyTiltHeader(stream)) { @@ -104,5 +126,25 @@ public async Task GetSubFileAsync(string filename) return entry.Open(); } + + public async Task GetMetaDataStreamAsync() + { + var stream = await GetSubFileAsync(FN_METADATA); + if (stream == null) + { + return await GetSubFileAsync(FN_METADATA_LEGACY); + } + return stream; + } + + public async Task GetSketchStreamAsync() + { + return await GetSubFileAsync(FN_SKETCH); + } + + public async Task GetThumbnailStream() + { + return await GetSubFileAsync(FN_THUMBNAIL); + } } } \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs index 4f3abbc671..01bfde233b 100644 --- a/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs +++ b/Assets/Scripts/ResourceSystem/Editor/FilesystemSketchTests.cs @@ -16,20 +16,20 @@ public class FilesystemSketchTests [Test] public void CreateFilesystemSketchFromTilt() { - var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + var fileSketch = new LocalFileResource($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); } [Test] public void FilesystemSketchUriIsCorrect() { - var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + var fileSketch = new LocalFileResource($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); Assert.AreEqual(fileSketch.Uri, new Uri($"file://{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt")); } [Test] public async Task FilesystemSketchCollectionEnumAsync() { - var collection = new FilesystemSketchCollection($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet", "Test"); + var collection = new LocalFolderCollection($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet", "Test"); await collection.InitAsync(); Assert.AreEqual(collection.Uri, new Uri($"file://{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet")); Assert.AreEqual(collection.Name, "Test"); @@ -41,7 +41,7 @@ public async Task FilesystemSketchCollectionEnumAsync() Assert.AreEqual(contents.Count, 6); Assert.AreEqual(contents.Count(x => x is IResourceCollection), 1); - var subdir = contents.FirstOrDefault(x => x is IResourceCollection) as FilesystemSketchCollection; + var subdir = contents.FirstOrDefault(x => x is IResourceCollection) as LocalFolderCollection; await subdir.InitAsync(); contents = new List(); diff --git a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs index 6a152d6788..3709317ba1 100644 --- a/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs +++ b/Assets/Scripts/ResourceSystem/Editor/IcosaCollectionTest.cs @@ -1,4 +1,5 @@ -using System.Net.Http; +using System; +using System.Net.Http; using System.Threading.Tasks; using NUnit.Framework; using UnityEngine; @@ -23,7 +24,7 @@ public void OneTimeTearDown() [Test] public async Task TestIcosaCollection() { - var collection = new IcosaSketchCollection(m_HttpClient); + var collection = new IcosaCollection(m_HttpClient, IcosaCollection.AllAssetsUri); await collection.InitAsync(); var enumerator = collection.ContentsAsync().GetAsyncEnumerator(); for (int i = 0; i < 10; ++i) diff --git a/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs index 216a426a89..f2a8507b58 100644 --- a/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs +++ b/Assets/Scripts/ResourceSystem/Editor/TestFiles/TiltFileTest.cs @@ -11,7 +11,7 @@ public class TiltFileTest [Test] public async Task CanExtractMetaFromTiltFile() { - var fileSketch = new FilesystemSketch($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); + var fileSketch = new LocalFileResource($"{Application.dataPath}/Scripts/Resources/Editor/TestFiles/SketchSet/Sketch 1.tilt"); var tiltFile = new DotTiltFile(fileSketch); var metaStream = await tiltFile.GetSubFileAsync("metadata.json"); Assert.IsNotNull(metaStream); diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs b/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs similarity index 64% rename from Assets/Scripts/ResourceSystem/RssSketchCollection.cs rename to Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs index 0036382593..93c3050901 100644 --- a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs @@ -7,17 +7,29 @@ using System.Xml; using System.ServiceModel.Syndication; using UnityEngine; +using UnityEngine.Assertions; namespace TiltBrush { - public class RssSketchCollection : IResourceCollection + public class FeedCollectionFactory : MonoBehaviour, IResourceCollectionFactory + { + public string Scheme => "feed"; + + public IResourceCollection Create(Uri uri) + { + Assert.AreEqual(uri.Scheme, Scheme); + return new FeedCollection(App.HttpClient, uri); + } + } + + public class FeedCollection : IResourceCollection { private Uri m_Uri; private HttpClient m_HttpClient; private List m_Items; private string m_Title; - public RssSketchCollection(HttpClient httpClient, Uri uri) + public FeedCollection(HttpClient httpClient, Uri uri) { m_Uri = uri; m_HttpClient = httpClient; @@ -32,13 +44,15 @@ public RssSketchCollection(HttpClient httpClient, Uri uri) public string Description { get; } public Author[] Authors { get; } public ResourceLicense License { get; } + + public int NumResources => m_Items?.Count ?? 0; public async Task InitAsync() { // might as well do all the work when getting the page SyndicationFeed feed; try { - var stream = await m_HttpClient.GetStreamAsync(m_Uri); + var stream = await m_HttpClient.GetStreamAsync(m_Uri.AbsolutePath); using var xmlReader = XmlReader.Create(stream); feed = SyndicationFeed.Load(xmlReader); } @@ -66,32 +80,16 @@ public async Task GetStreamAsync() } public async IAsyncEnumerable ContentsAsync() { - SyndicationFeed feed; - try + foreach (var item in m_Items) { - Debug.Log($"Fetching rss stream {m_Uri.AbsoluteUri}"); - var stream = await m_HttpClient.GetStreamAsync(m_Uri); - Debug.Log("Got stream"); - using var xmlReader = XmlReader.Create(stream); - Debug.Log("Loading feed"); - feed = SyndicationFeed.Load(xmlReader); - } - catch (Exception e) - { - Debug.LogException(e); - yield break; - } - foreach (var item in feed.Items) - { - var remoteSketch = new RemoteSketchResource( - name: item.Title.Text, - uri: item.Links[0].Uri, - previewUri: null, - description: item.Summary.Text, - authors: item.Authors.Select(x => new TiltBrush.Author { Name = x.Name, Url = x.Uri, Email = x.Email }).ToArray() - ); - yield return remoteSketch; + yield return item; } } + public void Refresh() + { + InitAsync(); + } + public event Action OnChanged; + public event Action OnRefreshingChanged; } } diff --git a/Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs.meta similarity index 100% rename from Assets/Scripts/ResourceSystem/RssSketchCollection.cs.meta rename to Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs.meta diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs b/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs deleted file mode 100644 index beb712454c..0000000000 --- a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading.Tasks; -using UnityEngine; -namespace TiltBrush -{ - public class FilesystemSketchCollection : IResourceCollection - { - private string m_Path; - private DirectoryInfo m_Dir; - private Texture2D m_Icon; - - public FilesystemSketchCollection(string path, string name, Texture2D icon = null) - { - m_Path = path; - Name = name; - m_Icon = icon; - } - - public string CollectionType => "LocalFolderCollection"; - public string CollectionInstance => m_Path; - - public string Name { get; private set; } - - public Uri Uri { get; private set; } - - public Uri PreviewUri { get; } - - public string Description { get; } - - public Author[] Authors { get; set; } - - public ResourceLicense License { get; } - -#pragma warning disable 1998 - public async Task LoadPreviewAsync() - { - return m_Icon; - } - - public async Task InitAsync() - { - m_Dir = new DirectoryInfo(m_Path); - if (Name == null) - { - Name = m_Dir.Name; - } - Uri = new Uri($"file://{m_Dir.FullName}"); - } - - public async IAsyncEnumerable ContentsAsync() - { - foreach (var dirInfo in m_Dir.EnumerateDirectories()) - { - if (dirInfo.Name.StartsWith(".")) - { - continue; - } - yield return new FilesystemSketchCollection(dirInfo.FullName, dirInfo.Name, m_Icon); - } - - foreach (var fileInfo in m_Dir.EnumerateFiles("*.tilt")) - { - yield return new FilesystemSketch(fileInfo.FullName); - } - } - - public async Task GetStreamAsync() - { - return null; - throw new NotImplementedException(); - } -#pragma warning restore 1998 - - } -} diff --git a/Assets/Scripts/ResourceSystem/IResource.cs b/Assets/Scripts/ResourceSystem/IResource.cs index d88b568315..6156ed2626 100644 --- a/Assets/Scripts/ResourceSystem/IResource.cs +++ b/Assets/Scripts/ResourceSystem/IResource.cs @@ -19,4 +19,16 @@ public interface IResource Task LoadPreviewAsync(); Task GetStreamAsync(); } + + public interface IHasPreviewImage + { + Task LoadImageAsync(); + } + + public interface IWritableResource : IResource + { + + } + + } diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs index 2f8b28ed3f..7373ee781e 100644 --- a/Assets/Scripts/ResourceSystem/IResourceCollection.cs +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -1,11 +1,21 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Threading.Tasks; namespace TiltBrush { public interface IResourceCollection : IResource { + int NumResources { get; } IAsyncEnumerable ContentsAsync(); - string CollectionType { get; } - string CollectionInstance { get; } + void Refresh(); + event Action OnChanged; + event Action OnRefreshingChanged; + + } + + public interface IResourceCollectionFactory + { + string Scheme { get; } + IResourceCollection Create(Uri uri); } } diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs similarity index 79% rename from Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs rename to Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs index dbc34a7128..128a75af20 100644 --- a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs @@ -5,9 +5,11 @@ using System.Net; using System.Net.Http; using System.Net.Http.Headers; +using System.Security.Policy; using System.Threading.Tasks; using Newtonsoft.Json; using UnityEngine; +using UnityEngine.Assertions; using ErrorEventArgs = Newtonsoft.Json.Serialization.ErrorEventArgs; namespace TiltBrush { @@ -32,24 +34,41 @@ public class Format public string ownerurl; } - public class IcosaSketchCollection : IResourceCollection + public class IcosaCollectionFactory : MonoBehaviour, IResourceCollectionFactory + { + public string Scheme => "icosa"; + + public IResourceCollection Create(Uri uri) + { + Assert.AreEqual(uri.Scheme, Scheme); + return new FeedCollection(App.HttpClient, uri); + } + } + + public class IcosaCollection : IResourceCollection { private string m_User; private HttpClient m_httpClient; + public static Uri AllAssetsUri => new Uri("https://api.icosa.gallery/assets"); + + public static Uri CreateUserUri(string user) + { + return new Uri($"https://api.icosa.gallery/users/{user}/assets"); + } - public IcosaSketchCollection(HttpClient httpClient, string user = null) + public IcosaCollection(HttpClient httpClient, Uri uri) { - m_User = user; - Name = "Icosa"; - if (m_User != null) + if (uri.Segments.Length > 1) { - Name += $" for {m_User}"; - Uri = new Uri($"https://api.icosa.gallery/users/{m_User}/assets"); + m_User = uri.Segments[uri.Segments.Length - 2]; + Name = $"Icosa : {m_User}"; } else { - Uri = new Uri($"https://api.icosa.gallery/assets"); + Name = "Icosa"; + m_User = null; } + m_httpClient = httpClient; } @@ -116,6 +135,14 @@ public async Task GetStreamAsync() #pragma warning restore 1998 + public int NumResources + { + get + { + throw new NotImplementedException(); + } + } + public async IAsyncEnumerable ContentsAsync() { if (m_User == null) @@ -154,5 +181,11 @@ public async IAsyncEnumerable ContentsAsync() } } } + public void Refresh() + { + throw new NotImplementedException(); + } + public event Action OnChanged; + public event Action OnRefreshingChanged; } } diff --git a/Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs.meta similarity index 100% rename from Assets/Scripts/ResourceSystem/IcosaSketchCollection.cs.meta rename to Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs.meta diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs b/Assets/Scripts/ResourceSystem/LocalFileResource.cs similarity index 55% rename from Assets/Scripts/ResourceSystem/FilesystemSketch.cs rename to Assets/Scripts/ResourceSystem/LocalFileResource.cs index 50a44d36f3..7c4dbc34e1 100644 --- a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs +++ b/Assets/Scripts/ResourceSystem/LocalFileResource.cs @@ -5,28 +5,27 @@ using UnityEngine.Assertions; namespace TiltBrush { - public class FilesystemSketch : IResource + public class LocalFileResource : IResource { - private string m_Path; - public FilesystemSketch(string path) + protected string m_Path; + public LocalFileResource(string path) { m_Path = path; Name = Path.GetFileNameWithoutExtension(path); Uri = new Uri("file://" + m_Path); - Assert.IsTrue(File.Exists(m_Path)); } - public string Name { get; } + public string Name { get; protected set; } - public Uri Uri { get; } + public Uri Uri { get; protected set; } - public Uri PreviewUri { get; } + public Uri PreviewUri { get; protected set; } - public string Description { get; } + public string Description { get; protected set; } - public Author[] Authors { get; } + public Author[] Authors { get; protected set; } - public ResourceLicense License { get; } + public ResourceLicense License { get; protected set; } #pragma warning disable 1998 public async Task InitAsync() @@ -41,7 +40,7 @@ public async Task LoadPreviewAsync() } public async Task GetStreamAsync() { - return new FileStream(m_Path, FileMode.Open); + return new FileStream(m_Path, FileMode.Open, FileAccess.Read, FileShare.Read); } #pragma warning restore 1998 } diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta b/Assets/Scripts/ResourceSystem/LocalFileResource.cs.meta similarity index 100% rename from Assets/Scripts/ResourceSystem/FilesystemSketch.cs.meta rename to Assets/Scripts/ResourceSystem/LocalFileResource.cs.meta diff --git a/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs new file mode 100644 index 0000000000..733d287492 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Assertions; +namespace TiltBrush +{ + public class LocalFolderCollectionFactory : MonoBehaviour, IResourceCollectionFactory + { + [SerializeField] private Texture2D m_FolderLogo; + + public string Scheme => "file"; + + public IResourceCollection Create(Uri uri) + { + // TODO: Should I have special handling in here for special paths? + Assert.AreEqual(uri.Scheme, Scheme); + string path = uri.LocalPath; + string name = uri.Segments.Last(); + return new LocalFolderCollection(path, name, m_FolderLogo); + } + + } + + public class LocalFolderCollection : IResourceCollection + { + private string m_Path; + private DirectoryInfo m_Dir; + private Texture2D m_Icon; + private List m_Resources; + + public LocalFolderCollection(string path, string name, Texture2D icon = null) + { + m_Path = path; + Name = name; + m_Icon = icon; + Uri = new Uri($"file:///{m_Path}"); + } + + public string CollectionType => "LocalFolderCollection"; + public string CollectionInstance => m_Path; + + public string Name { get; private set; } + + public Uri Uri { get; private set; } + + public Uri PreviewUri { get; } + + public string Description { get; } + + public Author[] Authors { get; set; } + + public ResourceLicense License { get; } + + public int NumResources => m_Resources?.Count ?? 0; + +#pragma warning disable 1998 + public async Task LoadPreviewAsync() + { + return m_Icon; + } + + public async Task InitAsync() + { + m_Dir = new DirectoryInfo(m_Path); + if (Name == null) + { + Name = m_Dir.Name; + } + Uri = new Uri($"file://{m_Dir.FullName}"); + + Refresh(); + } + + public async IAsyncEnumerable ContentsAsync() + { + foreach (var resource in m_Resources) + { + yield return resource; + } + } + public void Refresh() + { + if (!m_Dir.Exists) + { + Debug.LogWarning($"Cannot read local folder {m_Dir.FullName}."); + return; + } + m_Resources = new List(); + m_Resources.AddRange(m_Dir.EnumerateDirectories().Where(dirInfo => !dirInfo.Name.StartsWith(".")) + .Select(dirInfo => new LocalFolderCollection(dirInfo.FullName, dirInfo.Name, m_Icon))); + m_Resources.AddRange(m_Dir.EnumerateFiles("*.tilt").Select(fileInfo => new LocalFileResource(fileInfo.FullName))); + } + public event Action OnChanged; + public event Action OnRefreshingChanged; + + public async Task GetStreamAsync() + { + return null; + throw new NotImplementedException(); + } +#pragma warning restore 1998 + + } +} diff --git a/Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs.meta similarity index 100% rename from Assets/Scripts/ResourceSystem/FilesystemSketchCollection.cs.meta rename to Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs.meta diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs new file mode 100644 index 0000000000..5cddad4af9 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +namespace TiltBrush +{ + public class ResourceCollectionFactory : MonoBehaviour + { + public static ResourceCollectionFactory Instance { get; private set; } + + private Dictionary m_CollectionFactories; + private Dictionary m_Collections; + + private void Awake() + { + Instance = this; + m_CollectionFactories = new Dictionary(); + m_Collections = new Dictionary(); + + foreach (var factory in GetComponentsInChildren()) + { + RegisterCollectionType(factory); + } + } + + public void RegisterCollectionType(IResourceCollectionFactory factory) + { + m_CollectionFactories[factory.Scheme] = factory; + } + + public IResourceCollection FetchCollection(string uri) + { + return FetchCollection(new Uri(uri)); + } + + public IResourceCollection FetchCollection(Uri uri) + { + if (m_Collections.TryGetValue(uri, out var collection)) + { + return collection; + } + if (m_CollectionFactories.TryGetValue(uri.Scheme, out var factory)) + { + var newCollection = factory.Create(uri); + m_Collections[uri] = newCollection; + return newCollection; + } + else + { + Debug.LogWarning($"{typeof(ResourceCollectionFactory).Name}: A handler for Uri scheme of '{uri.Scheme}' could not be found."); + return null; + } + } + + } +} diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs.meta b/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs.meta new file mode 100644 index 0000000000..db341820f5 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionFactory.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 730833d9ce6a4ef69dbcb1aefa319085 +timeCreated: 1678153563 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 2e99b5932d..da8ce4c95d 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -29,9 +29,8 @@ public ResourceCollectionSketchSet(IResourceCollection collection) m_ResourceEnumerator = m_Collection.ContentsAsync().GetAsyncEnumerator(); } - public const string TypeName = "ResourceCollection"; - public string SketchSetType => m_Collection.CollectionType; - public string SketchSetInstance => m_Collection.CollectionInstance; + public string SketchSetType => m_Collection?.Uri?.Scheme ?? ""; + public string SketchSetInstance => m_Collection?.Uri?.OriginalString ?? ""; public string Title => m_Collection.Name; diff --git a/Assets/Scripts/ResourceSystem/SketchCollection.cs b/Assets/Scripts/ResourceSystem/SketchCollection.cs new file mode 100644 index 0000000000..0966fc2af7 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/SketchCollection.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; +using UnityEngine; +namespace TiltBrush +{ + public class SketchCollection + { + private IResourceCollection m_Collection; + private IAsyncEnumerator m_ResourceEnumerator; + private int m_RequestedIndex = 0; + private Task m_RequestsTask = null; + private List m_Resources; + + public IResourceCollection Collection => m_Collection; + + public int NumSketches => m_Resources?.Count ?? 0; + + public SketchCollection(IResourceCollection collection, int firstRequest = 20) + { + m_Collection = collection; + m_Resources = new List(); + Refresh(firstRequest); + m_Collection.OnChanged += OnChanged; + m_Collection.OnRefreshingChanged += OnRefreshingChanged; + } + + public void RequestToIndex(int index) + { + m_RequestedIndex = index; + if (m_RequestsTask == null || m_RequestsTask.IsCompleted) + { + m_RequestsTask = ProcessRequests(); + } + } + + public async Task ProcessRequests() + { + while (await m_ResourceEnumerator.MoveNextAsync() && m_RequestedIndex > NumSketches) + { + m_Resources.Add(m_ResourceEnumerator.Current); + } + } + + public bool IsRefreshing => !m_RequestsTask?.IsCompleted ?? false; + + public void Refresh(int toIndex) + { + m_ResourceEnumerator = m_Collection.ContentsAsync().GetAsyncEnumerator(); + RequestToIndex(toIndex); + } + + public async Task GetIconAsync(int index) + { + var resource = m_Resources[index]; + var preview = m_Resources[index] as IHasPreviewImage; + if (preview == null) + { + return null; + } + Texture2D icon = await preview.LoadImageAsync(); + + if (icon != null) + { + return icon; + } + + // If we do not get an icon, get one from the file? + + var tilt = new DotTiltFile(resource); + using (var thumbStream = await tilt.GetSubFileAsync(DotTiltFile.FN_THUMBNAIL)) + { + if (thumbStream == null) + { + Debug.LogError($"Could not open {DotTiltFile.FN_THUMBNAIL} stream for {resource.Uri}."); + return null; + } + try + { + icon = new Texture2D(2, 2); + var memStream = new MemoryStream(); + await thumbStream.CopyToAsync(memStream); + icon.LoadImage(memStream.ToArray()); + } + catch (Exception e) + { + Debug.LogException(e); + } + } + return icon; + } + + public IResource GetResource(int index) + { + return m_Resources[index]; + } + + public void DeleteSketch(int index) + { + // TODO: Check writability of collection etc + throw new NotImplementedException(); + } + + public event Action OnChanged; + public event Action OnRefreshingChanged; + } +} diff --git a/Assets/Scripts/ResourceSystem/SketchCollection.cs.meta b/Assets/Scripts/ResourceSystem/SketchCollection.cs.meta new file mode 100644 index 0000000000..0873222b96 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/SketchCollection.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 911455cfbb1c4910a94106da200cbc2e +timeCreated: 1678562103 \ No newline at end of file diff --git a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs new file mode 100644 index 0000000000..c410dacf15 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs @@ -0,0 +1,11 @@ +namespace TiltBrush +{ + public class WritableLocalFileResource : LocalFileResource, IWritableResource + { + public WritableLocalFileResource(string path) : base(path) + { + + } + + } +} diff --git a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs.meta b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs.meta new file mode 100644 index 0000000000..97f21209a3 --- /dev/null +++ b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d3c566eb90414b8b8686dd792202709a +timeCreated: 1678582753 \ No newline at end of file diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index d77236a666..4179239546 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -333,7 +333,7 @@ public virtual void DeleteSketch(int toDelete) m_FileWatcher.NotifyDelete(m_Sketches[toDelete].SceneFileInfo.FullPath); // Notify the drive sketchset as the deleted file may now be visible there. - var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); + var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.UriString); if (driveSet != null) { driveSet.NotifySketchChanged(m_Sketches[toDelete].SceneFileInfo.FullPath); diff --git a/Assets/Scripts/Save/ISketchSet.cs b/Assets/Scripts/Save/ISketchSet.cs index e822f7616e..888c61e6c2 100644 --- a/Assets/Scripts/Save/ISketchSet.cs +++ b/Assets/Scripts/Save/ISketchSet.cs @@ -42,20 +42,6 @@ public interface ISketchSet string Title { get; } - string SketchSetId => $"{SketchSetType}:{SketchSetInstance}"; - (string type, string instance) TypeAndInstanceFromId(string id) - { - int colonPos = id.IndexOf(":"); - string type = id.Substring(0, colonPos); - string instance = id.Substring(colonPos + 1); - return (type, instance); - } - - void DoTheThing() - { - Debug.Log("The Thing"); - } - /// True if the sketch set can be accessed, but does not imply that all the data (like icons, etc) /// have been read yet. bool IsReadyForAccess { get; } diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 61c26bb3a8..29bb8e87ce 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -598,181 +598,185 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false } m_LastSceneIsLegacy = false; - Stream metadata = await GetMetadataReadStreamAsync(fileInfo); - if (metadata == null) + SketchMetadata jsonData; + using (Stream metadata = await GetMetadataReadStreamAsync(fileInfo)) { - OutputWindowScript.m_Instance.AddNewLine("Could not load: {0}", fileInfo.HumanName); - return false; + if (metadata == null) + { + OutputWindowScript.m_Instance.AddNewLine("Could not load: {0}", fileInfo.HumanName); + return false; + } + using (var jsonReader = new JsonTextReader(new StreamReader(metadata))) + { + jsonData = DeserializeMetadata(jsonReader); + } } - using (var jsonReader = new JsonTextReader(new StreamReader(metadata))) + + if (LastMetadataError != null) { - var jsonData = DeserializeMetadata(jsonReader); - if (LastMetadataError != null) + ControllerConsoleScript.m_Instance.AddNewLine( + string.Format("Error detected in sketch '{0}'.\nSuggest re-saving.", + fileInfo.HumanName)); + Debug.LogWarning(string.Format("Error reading metadata for {0}.\n{1}", + fileInfo.FullPath, + SaveLoadScript.m_Instance.LastMetadataError)); + } + if (jsonData.RequiredCapabilities != null) + { + var missingCapabilities = jsonData.RequiredCapabilities.Except( + Enum.GetNames(typeof(PlaybackCapabilities))).ToArray(); + if (missingCapabilities.Length > 0) { - ControllerConsoleScript.m_Instance.AddNewLine( - string.Format("Error detected in sketch '{0}'.\nSuggest re-saving.", - fileInfo.HumanName)); - Debug.LogWarning(string.Format("Error reading meteadata for {0}.\n{1}", - fileInfo.FullPath, - SaveLoadScript.m_Instance.LastMetadataError)); + Debug.LogFormat("Lacking playback capabilities: {0}", + String.Join(", ", missingCapabilities)); + OutputWindowScript.m_Instance.AddNewLine( + "Lacking a capability to load {0}. Upgrade Tilt Brush?", + fileInfo.HumanName); + return false; } - if (jsonData.RequiredCapabilities != null) + } + + if (!bAdditive) + { + var environment = EnvironmentCatalog.m_Instance + .GetEnvironment(new Guid(jsonData.EnvironmentPreset)); + if (environment != null) { - var missingCapabilities = jsonData.RequiredCapabilities.Except( - Enum.GetNames(typeof(PlaybackCapabilities))).ToArray(); - if (missingCapabilities.Length > 0) + SceneSettings.m_Instance.RecordSkyColorsForFading(); + if (jsonData.Environment != null) { - Debug.LogFormat("Lacking playback capabilities: {0}", - String.Join(", ", missingCapabilities)); - OutputWindowScript.m_Instance.AddNewLine( - "Lacking a capability to load {0}. Upgrade Tilt Brush?", - fileInfo.HumanName); - return false; + SceneSettings.m_Instance.SetCustomEnvironment(jsonData.Environment, environment); } + SceneSettings.m_Instance.SetDesiredPreset( + environment, forceTransition: true, + keepSceneTransform: true, hasCustomLights: jsonData.Lights != null + ); } - - if (!bAdditive) + else { - var environment = EnvironmentCatalog.m_Instance - .GetEnvironment(new Guid(jsonData.EnvironmentPreset)); - if (environment != null) - { - SceneSettings.m_Instance.RecordSkyColorsForFading(); - if (jsonData.Environment != null) - { - SceneSettings.m_Instance.SetCustomEnvironment(jsonData.Environment, environment); - } - SceneSettings.m_Instance.SetDesiredPreset( - environment, forceTransition: true, - keepSceneTransform: true, hasCustomLights: jsonData.Lights != null - ); - } - else - { - Debug.LogWarningFormat("Unknown environment preset {0}", - jsonData.EnvironmentPreset); - } - App.Instance.SetOdsCameraTransforms(jsonData.ThumbnailCameraTransformInRoomSpace, - jsonData.SceneTransformInRoomSpace); - App.Scene.Pose = jsonData.SceneTransformInRoomSpace; - App.Scene.ResetLayers(true); - Coords.CanvasLocalPose = TrTransform.identity; - if (jsonData.CanvasTransformInSceneSpace != TrTransform.identity) + Debug.LogWarningFormat("Unknown environment preset {0}", + jsonData.EnvironmentPreset); + } + App.Instance.SetOdsCameraTransforms(jsonData.ThumbnailCameraTransformInRoomSpace, + jsonData.SceneTransformInRoomSpace); + App.Scene.Pose = jsonData.SceneTransformInRoomSpace; + App.Scene.ResetLayers(true); + Coords.CanvasLocalPose = TrTransform.identity; + if (jsonData.CanvasTransformInSceneSpace != TrTransform.identity) + { + Debug.LogWarning("This file has an unsupported, experimental Canvas Transform specified."); + if (Config.IsExperimental) { - Debug.LogWarning("This file has an unsupported, experimental Canvas Transform specified."); - if (Config.IsExperimental) - { - Coords.CanvasLocalPose = jsonData.CanvasTransformInSceneSpace; - } + Coords.CanvasLocalPose = jsonData.CanvasTransformInSceneSpace; } - LastThumbnail_SS = App.Scene.Pose.inverse * - jsonData.ThumbnailCameraTransformInRoomSpace; - } + LastThumbnail_SS = App.Scene.Pose.inverse * + jsonData.ThumbnailCameraTransformInRoomSpace; + + } - SketchControlsScript.m_Instance.SketchPlaybackMode = - SketchControlsScript.m_Instance.m_DefaultSketchPlaybackMode; + SketchControlsScript.m_Instance.SketchPlaybackMode = + SketchControlsScript.m_Instance.m_DefaultSketchPlaybackMode; - if (!bAdditive) + if (!bAdditive) + { + // Create Layers + if (jsonData.Layers != null) { - // Create Layers - if (jsonData.Layers != null) + foreach (var layer in jsonData.Layers.Skip(1)) // Skip the main canvas { - foreach (var layer in jsonData.Layers.Skip(1)) // Skip the main canvas - { - var canvas = App.Scene.AddLayerNow(); - canvas.gameObject.name = layer.Name; - canvas.gameObject.SetActive(layer.Visible); - } + var canvas = App.Scene.AddLayerNow(); + canvas.gameObject.name = layer.Name; + canvas.gameObject.SetActive(layer.Visible); } } + } - var oldGroupToNewGroup = new Dictionary(); + var oldGroupToNewGroup = new Dictionary(); - // Load sketch - using (var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH)) + // Load sketch + using (var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH)) + { + Guid[] brushGuids = jsonData.BrushIndex.Select(GetForceSupersededBy).ToArray(); + bool legacySketch; + bool success = SketchWriter.ReadMemory(stream, brushGuids, bAdditive, out legacySketch, out oldGroupToNewGroup); + m_LastSceneIsLegacy |= legacySketch; + if (!success) { - Guid[] brushGuids = jsonData.BrushIndex.Select(GetForceSupersededBy).ToArray(); - bool legacySketch; - bool success = SketchWriter.ReadMemory(stream, brushGuids, bAdditive, out legacySketch, out oldGroupToNewGroup); - m_LastSceneIsLegacy |= legacySketch; - if (!success) - { - OutputWindowScript.m_Instance.AddNewLine( - "Could not load: {0}", fileInfo.HumanName); - // Prevent it from being overwritten - m_LastSceneIsLegacy = false; - return false; - } + OutputWindowScript.m_Instance.AddNewLine( + "Could not load: {0}", fileInfo.HumanName); + // Prevent it from being overwritten + m_LastSceneIsLegacy = false; + return false; } + } - // It's proving to be rather complex to merge widgets/models etc. - // For now skip all that when loading additively with the if (!bAdditive) below - // This should cover the majority of use cases. + // It's proving to be rather complex to merge widgets/models etc. + // For now skip all that when loading additively with the if (!bAdditive) below + // This should cover the majority of use cases. - // (For when we do support merging widgets:) - // It's much simpler to change the group ids in the JSON - // before we pass it to WidgetManager - //GroupManager.UpdateWidgetJsonToNewGroups(jsonData, oldGroupToNewGroup); + // (For when we do support merging widgets:) + // It's much simpler to change the group ids in the JSON + // before we pass it to WidgetManager + //GroupManager.UpdateWidgetJsonToNewGroups(jsonData, oldGroupToNewGroup); - if (!bAdditive) - { - ModelCatalog.m_Instance.ClearMissingModels(); - SketchMemoryScript.m_Instance.InitialSketchTransform = jsonData.SceneTransformInRoomSpace; + if (!bAdditive) + { + ModelCatalog.m_Instance.ClearMissingModels(); + SketchMemoryScript.m_Instance.InitialSketchTransform = jsonData.SceneTransformInRoomSpace; - if (jsonData.ModelIndex != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.ModelIndex); - } + if (jsonData.ModelIndex != null) + { + WidgetManager.m_Instance.SetDataFromTilt(jsonData.ModelIndex); + } - if (jsonData.GuideIndex != null) - { - foreach (Guides guides in jsonData.GuideIndex) - { - StencilWidget.FromGuideIndex(guides); - } - } - if (jsonData.Lights != null) - { - LightsControlScript.m_Instance.CustomLights = jsonData.Lights; - } - // Pass even if null; null is treated as empty - CustomColorPaletteStorage.m_Instance.SetColorsFromPalette(jsonData.Palette); - // Images are not stored on Poly either. - if (!(fileInfo is PolySceneFileInfo)) - { - if (ReferenceImageCatalog.m_Instance != null && jsonData.ImageIndex != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.ImageIndex); - } - if (VideoCatalog.Instance != null && jsonData.Videos != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.Videos); - } - } - if (jsonData.Mirror != null) - { - PointerManager.m_Instance.SymmetryWidgetFromMirror(jsonData.Mirror); - } - if (jsonData.CameraPaths != null) + if (jsonData.GuideIndex != null) + { + foreach (Guides guides in jsonData.GuideIndex) { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.CameraPaths); + StencilWidget.FromGuideIndex(guides); } - if (fileInfo is GoogleDriveSketchSet.GoogleDriveFileInfo gdInfo) + } + if (jsonData.Lights != null) + { + LightsControlScript.m_Instance.CustomLights = jsonData.Lights; + } + // Pass even if null; null is treated as empty + CustomColorPaletteStorage.m_Instance.SetColorsFromPalette(jsonData.Palette); + // Images are not stored on Poly either. + if (!(fileInfo is PolySceneFileInfo)) + { + if (ReferenceImageCatalog.m_Instance != null && jsonData.ImageIndex != null) { - gdInfo.SourceId = jsonData.SourceId; + WidgetManager.m_Instance.SetDataFromTilt(jsonData.ImageIndex); } - if (WidgetManager.m_Instance.CreatingMediaWidgets) + if (VideoCatalog.Instance != null && jsonData.Videos != null) { - StartCoroutine( - OverlayManager.m_Instance.RunInCompositor( - OverlayType.LoadMedia, - WidgetManager.m_Instance.CreateMediaWidgetsFromLoadDataCoroutine(), - 0.5f)); + WidgetManager.m_Instance.SetDataFromTilt(jsonData.Videos); } - m_LastSceneFile = fileInfo; } + if (jsonData.Mirror != null) + { + PointerManager.m_Instance.SymmetryWidgetFromMirror(jsonData.Mirror); + } + if (jsonData.CameraPaths != null) + { + WidgetManager.m_Instance.SetDataFromTilt(jsonData.CameraPaths); + } + if (fileInfo is GoogleDriveSketchSet.GoogleDriveFileInfo gdInfo) + { + gdInfo.SourceId = jsonData.SourceId; + } + if (WidgetManager.m_Instance.CreatingMediaWidgets) + { + StartCoroutine( + OverlayManager.m_Instance.RunInCompositor( + OverlayType.LoadMedia, + WidgetManager.m_Instance.CreateMediaWidgetsFromLoadDataCoroutine(), + 0.5f)); + } + m_LastSceneFile = fileInfo; } return true; diff --git a/Assets/Scripts/Save/SketchCatalog.cs b/Assets/Scripts/Save/SketchCatalog.cs index 0c6273df3f..d9f0e5765c 100644 --- a/Assets/Scripts/Save/SketchCatalog.cs +++ b/Assets/Scripts/Save/SketchCatalog.cs @@ -16,8 +16,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Reflection; -using System.Text; using UnityEngine; namespace TiltBrush @@ -25,87 +23,41 @@ namespace TiltBrush // SketchCatalog.Awake must come after App.Awake public class SketchCatalog : MonoBehaviour { - static public SketchCatalog m_Instance; + public static SketchCatalog m_Instance; // This folder contains json files which define where to pull the sketch thumbnail and data // from Poly. These are used to populate the showcase when we can't query Poly. // Obviously, if Poly as a database is deleted or moved, accessing these files will fail. public const string kDefaultShowcaseSketchesFolder = "DefaultShowcaseSketches"; - private Dictionary m_Sets = new Dictionary(); - private Dictionary, ISketchSet>> m_CollectionCreators; + private PolySketchSet m_polySketchSet; + private GoogleDriveSketchSet m_googleDriveSketchSet = new(); + private Dictionary> m_Sets = new(); - private void SetupResourceCollectionCreators() + public ISketchSet GetSketchSet(string uri) { - m_CollectionCreators = new Dictionary, ISketchSet>>(); - - int maxTriangles = QualityControls.m_Instance.AppQualityLevels.MaxPolySketchTriangles; - m_CollectionCreators[FileSketchSet.TypeName] = (Dictionary _) => - new FileSketchSet(); - m_CollectionCreators[PolySketchSet.TypeName] = (Dictionary _) => - new PolySketchSet(this, PolySketchSet.SketchType.Liked, maxTriangles, needsLogin: true); - m_CollectionCreators[GoogleDriveSketchSet.TypeName] = (Dictionary _) => - new GoogleDriveSketchSet(); - m_CollectionCreators["Resource-Rss"] = (Dictionary options) => - new ResourceCollectionSketchSet(new RssSketchCollection(App.HttpClient, new Uri(options["uri"] as string))); - m_CollectionCreators["Resource-Path"] = (Dictionary options) => - new ResourceCollectionSketchSet(new FilesystemSketchCollection(options["path"] as string, (options?["name"] ?? "") as string, options?["icon"] as Texture2D)); - m_CollectionCreators["Resource-Icosa"] = (Dictionary options) => - { - object user = null; - options.TryGetValue("user", out user); - return new ResourceCollectionSketchSet(new IcosaSketchCollection(App.HttpClient, user as string)); - }; + return GetSketchSet(new Uri(uri)); } - public static string CreateId(string id, Dictionary options) + public ISketchSet GetSketchSet(Uri uri) { - var sb = new StringBuilder(); - sb.Append(id); - - if (options != null) + ISketchSet sketchSet = null; + if (m_Sets.TryGetValue(uri, out WeakReference sketchSetRef)) { - string add = "?"; - foreach (var pair in options) + if (sketchSetRef.TryGetTarget(out sketchSet)) { - sb.Append(add); - add = "&"; - sb.Append(pair.Key); - sb.Append("="); - sb.Append(pair.Value); + return sketchSet; } + m_Sets.Remove(uri); } - return sb.ToString(); - } - - public static (string type, Dictionary options) DecodeId(string id) - { - int firstSplit = id.IndexOf("?"); - if (firstSplit < 0) - { - return (id, null); - } - var type = id.Substring(0, firstSplit); - var options = new Dictionary( - id.Substring(firstSplit + 1) - .Split("&") - .Select(x => x.Split("=")) - .Select(x => new KeyValuePair(x[0], x[1]))); - return (type, options); - } - public ISketchSet GetSketchSet(string type, Dictionary options) - { - string id = CreateId(type, options); - ISketchSet sketchSet = null; - if (m_Sets.TryGetValue(id, out sketchSet)) + sketchSet = new ResourceCollectionSketchSet(ResourceCollectionFactory.Instance.FetchCollection(uri)); + sketchSet.Init(); + if (sketchSet != null) { - return sketchSet; + m_Sets[uri] = new WeakReference(sketchSet); } - sketchSet = m_CollectionCreators[type].Invoke(options); - sketchSet.Init(); - m_Sets[id] = sketchSet; return sketchSet; } @@ -114,6 +66,10 @@ void Awake() { m_Instance = this; + m_polySketchSet = new PolySketchSet(this, PolySketchSet.SketchType.Curated, 100000); + m_Sets[new Uri("poly:")] = new WeakReference(m_polySketchSet); + m_Sets[new Uri("googledrive:")] = new WeakReference(m_googleDriveSketchSet); + if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.OSXPlayer) { @@ -124,11 +80,15 @@ void Awake() } InitFeaturedSketchesPath(); + } - SetupResourceCollectionCreators(); + void Start() + { + m_polySketchSet.Init(); + m_googleDriveSketchSet.Init(); } - public static bool InitFeaturedSketchesPath() + private static bool InitFeaturedSketchesPath() { string featuredPath = App.FeaturedSketchesPath(); if (!App.InitDirectoryAtPath(featuredPath)) { return false; } @@ -153,9 +113,17 @@ public static bool InitFeaturedSketchesPath() void Update() { - foreach (ISketchSet s in m_Sets.Values) + foreach (var entry in m_Sets.ToArray()) { - s.Update(); + ISketchSet sketchSet; + if (entry.Value.TryGetTarget(out sketchSet)) + { + sketchSet.Update(); + } + else + { + m_Sets.Remove(entry.Key); + } } } diff --git a/Assets/Scripts/Sharing/DriveSync.cs b/Assets/Scripts/Sharing/DriveSync.cs index 7f12de28a6..43fa4cdab0 100644 --- a/Assets/Scripts/Sharing/DriveSync.cs +++ b/Assets/Scripts/Sharing/DriveSync.cs @@ -970,7 +970,7 @@ private async Task UploadItemAsync(Transfer transfer, CancellationToken token) } if (Path.GetExtension(path) == ".tilt") { - var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); + var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.UriString); if (item.FileId == null) { driveSet.NotifySketchCreated(path); diff --git a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs index 1f11534d66..7f9fbb94f4 100644 --- a/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs +++ b/Assets/Scripts/Sharing/DriveSyncDebugWindow.cs @@ -83,7 +83,7 @@ private void OnGUI() EditorGUILayout.Toggle("DriveSync.Initializing", App.DriveSync.Initializing); EditorGUILayout.Toggle("DriveSync.Initialized", App.DriveSync.Initialized); EditorGUILayout.Toggle("DriveSync.Syncing", App.DriveSync.Syncing); - var sketchset = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.TypeName, null); + var sketchset = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.UriString); if (sketchset != null) { EditorGUILayout.Toggle("SketchSet.IsReadyForAccess", sketchset.IsReadyForAccess); diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index 00fc92f349..b1ff192e59 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -179,8 +179,8 @@ public async Task DownloadAsync(CancellationToken token) private Coroutine m_ThumbnailLoadingCoroutine; private bool m_Changed; - public const string TypeName = "GoogleDrive"; - public string SketchSetType => TypeName; + public const string UriString = "googledrive:"; + public string SketchSetType => UriString; public string SketchSetInstance => ""; public string Title => "Google Drive Backup"; diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index 4bcca92ae3..c065f85370 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -116,8 +116,8 @@ public PolySceneFileInfo PolySceneFileInfo - public const string TypeName = "Poly"; - public string SketchSetType => TypeName; + public const string UriName = "poly:"; + public string SketchSetType => UriName; public string SketchSetInstance => m_Type == SketchType.Curated ? "Curated" : "Liked"; public string Title => "Poly"; diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 3a24bd44e1..d375dcf5a3 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -3867,7 +3867,7 @@ IEnumerator LoadAndExportList(List filenames) IEnumerator LoadAndExportAll() { // Currently just gets the user sketch set - ISketchSet sketchSet = SketchCatalog.m_Instance.GetSketchSet(FileSketchSet.TypeName, null); + ISketchSet sketchSet = SketchCatalog.m_Instance.GetSketchSet(FileSketchSet.TypeName); for (int i = 0; i < sketchSet.NumSketches; ++i) { SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(i); @@ -4800,7 +4800,7 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { bool download = false; ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); - if (sketchSet.SketchSetType == GoogleDriveSketchSet.TypeName) + if (sketchSet.SketchSetType == GoogleDriveSketchSet.UriString) { BasePanel sketchBook = m_PanelManager.GetSketchBookPanel(); if (sketchBook != null From a648620fbcc12ec735ebc1aa6db9c26fb04ec053 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 19 Mar 2023 18:54:33 -0700 Subject: [PATCH 20/38] Icosa Gallery added in --- .../Utility/ResourceCollectionFactory.prefab | 77 +++++++++++++++++++ Assets/Scripts/GUI/SketchbookPanel.cs | 2 +- .../ResourceSystem/IcosaCollectionFactory.cs | 8 +- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab index 84b6c46c14..62dc9d0993 100644 --- a/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab +++ b/Assets/Prefabs/Utility/ResourceCollectionFactory.prefab @@ -1,5 +1,36 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1186575691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1186575692} + m_Layer: 0 + m_Name: PolySketchSet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1186575692 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1186575691} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1197480599120525051} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &181213052578665738 GameObject: m_ObjectHideFlags: 0 @@ -89,6 +120,8 @@ Transform: m_Children: - {fileID: 7352678666177677243} - {fileID: 5817307013886715331} + - {fileID: 1186575692} + - {fileID: 8866470003074788290} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -104,6 +137,50 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 730833d9ce6a4ef69dbcb1aefa319085, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &620338092573772038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8866470003074788290} + - component: {fileID: 1706921022958993577} + m_Layer: 0 + m_Name: IcosaCollectionFactory + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8866470003074788290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 620338092573772038} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1197480599120525051} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1706921022958993577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 620338092573772038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b0bb2e4292a84736a61a785ac4d1e60d, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &7586609730876914498 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index f610a2447a..1dc14af147 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -205,7 +205,7 @@ protected override void OnStart() { $"file:///{App.UserSketchPath()}", "feed:https://timaidley.github.io/open-brush-feed/sketches.rss", - "poly:", + IcosaCollection.AllAssetsUri.OriginalString, "googledrive:" }.Select(uri => new Stack(new[] { SketchCatalog.m_Instance.GetSketchSet(uri) })).ToArray(); diff --git a/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs index 128a75af20..e72516cb80 100644 --- a/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs +++ b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs @@ -41,7 +41,7 @@ public class IcosaCollectionFactory : MonoBehaviour, IResourceCollectionFactory public IResourceCollection Create(Uri uri) { Assert.AreEqual(uri.Scheme, Scheme); - return new FeedCollection(App.HttpClient, uri); + return new IcosaCollection(App.HttpClient, new Uri(uri.AbsoluteUri)); } } @@ -49,16 +49,16 @@ public class IcosaCollection : IResourceCollection { private string m_User; private HttpClient m_httpClient; - public static Uri AllAssetsUri => new Uri("https://api.icosa.gallery/assets"); + public static Uri AllAssetsUri => new Uri("icosa:https://api.icosa.gallery/assets"); public static Uri CreateUserUri(string user) { - return new Uri($"https://api.icosa.gallery/users/{user}/assets"); + return new Uri($"icosa:https://api.icosa.gallery/users/{user}/assets"); } public IcosaCollection(HttpClient httpClient, Uri uri) { - if (uri.Segments.Length > 1) + if (uri.Segments.Contains("users")) { m_User = uri.Segments[uri.Segments.Length - 2]; Name = $"Icosa : {m_User}"; From 79e4da50ec65666832697b915b462489025490bd Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 19 Mar 2023 19:46:42 -0700 Subject: [PATCH 21/38] Back button works --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 35 +++++++++++++++++++ Assets/Scripts/GUI/LoadSketchButton.cs | 1 + Assets/Scripts/GUI/SketchbookPanel.cs | 14 ++++++++ .../ResourceCollectionSketchSet.cs | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index e19ead508c..05d06c33e7 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -15210,6 +15210,41 @@ PrefabInstance: propertyPath: m_DescriptionText value: Back objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2478559423573741591} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackButtonPressed + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.SketchbookPanel, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} --- !u!4 &5835854812254485208 stripped diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index 86e5a81cee..a7760233c4 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -163,6 +163,7 @@ override protected void OnButtonPressed() { var sketchSet = new ResourceCollectionSketchSet(collection); SketchbookPanel.Instance.PushSketchSet(SketchbookPanel.Instance.SelectedSketchStack, sketchSet); + return; } } diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 1dc14af147..1546a4ff7f 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -265,6 +265,15 @@ public void PushSketchSet(int stack, ISketchSet sketchSet) } } + public void PopSketchSet(int stack) + { + m_SetStacks[stack].Pop(); + if (stack == m_SelectedStack) + { + SetVisibleSketchSet((RootSet)m_SelectedStack); + } + } + void SetVisibleSketchSet(RootSet stack) { int stackIndex = (int)stack; @@ -824,6 +833,11 @@ public void ButtonPressed(GalleryButton.Type rType, BaseButton button = null) } } + public void BackButtonPressed() + { + PopSketchSet(m_SelectedStack); + } + private void OnSketchSetDirty() { ComputeNumPages(); diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index da8ce4c95d..11888285a6 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -148,7 +148,7 @@ public bool GetSketchIcon(int index, out Texture2D icon, out string[] authors, o var sketch = m_Sketches[index]; icon = sketch.Icon; authors = sketch.Authors; - description = "DESCRIPTION NOT IMPLEMENTED"; + description = sketch.ResourceFileInfo.Resource.Description ?? ""; return icon != null; } From c4940074120cccd61ffd179b226963a34b05dd02 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sun, 19 Mar 2023 19:56:28 -0700 Subject: [PATCH 22/38] Subcollection initialization added. --- Assets/Scripts/GUI/LoadSketchButton.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index a7760233c4..4ac3dbad31 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -162,6 +162,7 @@ override protected void OnButtonPressed() if (resourceFileInfo.Resource is IResourceCollection collection) { var sketchSet = new ResourceCollectionSketchSet(collection); + sketchSet.Init(); SketchbookPanel.Instance.PushSketchSet(SketchbookPanel.Instance.SelectedSketchStack, sketchSet); return; } From 3a4c9a339000a37945a5e3117fb1aad3f1f56fbf Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Mon, 20 Mar 2023 21:52:02 -0700 Subject: [PATCH 23/38] Resource Sketchsets work now with large collections that don't all load at once now --- Assets/Scripts/GUI/SketchbookPanel.cs | 32 +++++++++---------- .../ResourceCollectionSketchSet.cs | 11 +++++++ 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Assets/Scripts/GUI/SketchbookPanel.cs b/Assets/Scripts/GUI/SketchbookPanel.cs index 1546a4ff7f..29373c5ccf 100644 --- a/Assets/Scripts/GUI/SketchbookPanel.cs +++ b/Assets/Scripts/GUI/SketchbookPanel.cs @@ -219,24 +219,19 @@ protected override void OnStart() SetVisibleSketchSet(0); RefreshPage(); - Action refresh = () => - { - if (m_ContactingServerMessage.activeSelf || - m_NoShowcaseMessage.activeSelf || - m_LoadingGallery.activeSelf) - { - // Update the overlays more frequently when these overlays are shown to reflect whether - // we are actively trying to get sketches from Poly. - RefreshPage(); - } - }; + App.GoogleIdentity.OnLogout += OnSketchRefreshingChanged; + } - // TODO: We probably should just do a refresh when we enter a sketchset - // SketchCatalog.m_Instance.GetSet(1).OnSketchRefreshingChanged += refresh; - // SketchCatalog.m_Instance.GetSet(2).OnSketchRefreshingChanged += refresh; - // SketchCatalog.m_Instance.GetSet(3).OnSketchRefreshingChanged += refresh; - // Should we just loop through the root ones here? - App.GoogleIdentity.OnLogout += refresh; + void OnSketchRefreshingChanged() + { + if (m_ContactingServerMessage.activeSelf || + m_NoShowcaseMessage.activeSelf || + m_LoadingGallery.activeSelf) + { + // Update the overlays more frequently when these overlays are shown to reflect whether + // we are actively trying to get sketches from Poly. + RefreshPage(); + } } void OnDestroy() @@ -244,6 +239,7 @@ void OnDestroy() if (CurrentSketchSet != null) { CurrentSketchSet.OnChanged -= OnSketchSetDirty; + CurrentSketchSet.OnSketchRefreshingChanged -= OnSketchRefreshingChanged; } } @@ -284,12 +280,14 @@ void SetVisibleSketchSet(RootSet stack) if (CurrentSketchSet != null) { CurrentSketchSet.OnChanged -= OnSketchSetDirty; + CurrentSketchSet.OnSketchRefreshingChanged -= OnSketchRefreshingChanged; } // Cache new set. m_SelectedStack = stackIndex; CurrentSketchSet = m_SetStacks[m_SelectedStack].Peek(); CurrentSketchSet.OnChanged += OnSketchSetDirty; + CurrentSketchSet.OnSketchRefreshingChanged += OnSketchRefreshingChanged; CurrentSketchSet.RequestRefresh(); // Tell all the icons which set to reference when loading sketches. diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 11888285a6..ddb7a62261 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -133,12 +133,23 @@ private void FetchSketchesToAtLeast(int index) private async Task FetchSketchesToAtLeastAsync(int index) { int totalIndex = index + m_LookAhead; + bool updated = false; while (await m_ResourceEnumerator.MoveNextAsync() && totalIndex > NumSketches) { + if (!updated) + { + OnSketchRefreshingChanged?.Invoke(); + } var resource = m_ResourceEnumerator.Current; var fileInfo = new ResourceFileInfo(resource); var sketch = new ResourceSketch(fileInfo); m_Sketches.Add(sketch); + updated = true; + } + if (updated) + { + OnSketchRefreshingChanged?.Invoke(); + OnChanged?.Invoke(); } } From ea3e535939bf627a44752c1da8416ff8fc409ca0 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Mon, 20 Mar 2023 22:52:28 -0700 Subject: [PATCH 24/38] Added text to collection objects, and made sketchbook icons prefabs. --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 11402 ++++++---------- .../Panels/Widgets/Sketch_Button.prefab | 530 + .../Panels/Widgets/Sketch_Button.prefab.meta | 7 + Assets/Scripts/GUI/LoadSketchButton.cs | 29 + .../ResourceCollectionSketchSet.cs | 5 + .../Scripts/ResourceSystem/ResourceSketch.cs | 1 + 6 files changed, 4924 insertions(+), 7050 deletions(-) create mode 100644 Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab create mode 100644 Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab.meta diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index 05d06c33e7..0661adcbe7 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -1,150 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &101820 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 406124} - - component: {fileID: 3348596} - - component: {fileID: 2352760} - - component: {fileID: 6540804} - - component: {fileID: 11403980} - - component: {fileID: 114252119631105008} - m_Layer: 16 - m_Name: Sketch_Button9 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &406124 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.7678, y: -0.5287, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000012287575696} - - {fileID: 4044106463973608} - m_Father: {fileID: 473678} - m_RootOrder: 12 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3348596 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2352760 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6540804 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11403980 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114362806798608418} - m_Warning: {fileID: 1806376406434594} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114252119631105008 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 101820} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: --- !u!1 &102468 GameObject: m_ObjectHideFlags: 0 @@ -178,7 +33,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 18 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3392684 MeshFilter: @@ -528,22 +383,22 @@ MonoBehaviour: m_OutOfDateMessage: {fileID: 1000012586849750} m_NoPolyConnectionMessage: {fileID: 4374687820491222719} m_IconsOnFirstPage: - - {fileID: 142432} - - {fileID: 167238} - - {fileID: 155428} - - {fileID: 169670} - - {fileID: 166396} - - {fileID: 101820} + - {fileID: 7564822669806053312} + - {fileID: 785293821492932395} + - {fileID: 8434476480850399477} + - {fileID: 8813983256960973405} + - {fileID: 3607859171922347347} + - {fileID: 6117204845192880629} m_IconsOnNormalPage: - - {fileID: 1000010241860486} - - {fileID: 177278} - - {fileID: 167238} - - {fileID: 178250} - - {fileID: 153576} - - {fileID: 155428} - - {fileID: 169670} - - {fileID: 166396} - - {fileID: 101820} + - {fileID: 4756993747288768874} + - {fileID: 3016537938136338426} + - {fileID: 785293821492932395} + - {fileID: 7546992150643877038} + - {fileID: 9169204103733216185} + - {fileID: 8434476480850399477} + - {fileID: 8813983256960973405} + - {fileID: 3607859171922347347} + - {fileID: 6117204845192880629} m_CloseButton: {fileID: 1839306045669634} m_NewSketchButton: {fileID: 1227842993942742} m_BackButton: {fileID: 6075256701100402820} @@ -837,7 +692,7 @@ Transform: - {fileID: 458322} - {fileID: 431352} m_Father: {fileID: 473678} - m_RootOrder: 14 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3366994 MeshFilter: @@ -965,7 +820,7 @@ Transform: m_Children: - {fileID: 440846} m_Father: {fileID: 473678} - m_RootOrder: 19 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3302166 MeshFilter: @@ -1444,7 +1299,7 @@ Transform: m_Children: - {fileID: 440778} m_Father: {fileID: 473678} - m_RootOrder: 23 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3357382 MeshFilter: @@ -1572,16 +1427,7 @@ Transform: - {fileID: 4653590090589872} - {fileID: 4393356585195150} - {fileID: 400022} - - {fileID: 411214} - - {fileID: 4000010333377928} - - {fileID: 461906} - - {fileID: 474082} - - {fileID: 401916} - - {fileID: 493402} - - {fileID: 408880} - - {fileID: 473330} - - {fileID: 476782} - - {fileID: 406124} + - {fileID: 7926938724112014635} - {fileID: 5835854812254485208} - {fileID: 490548} - {fileID: 4000010470004098} @@ -1649,7 +1495,7 @@ Transform: m_Children: - {fileID: 408284} m_Father: {fileID: 473678} - m_RootOrder: 22 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &3356862 MeshFilter: @@ -1746,7 +1592,7 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} ---- !u!1 &142432 +--- !u!1 &148956 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1754,51 +1600,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 411214} - - component: {fileID: 3345518} - - component: {fileID: 2338066} - - component: {fileID: 6528766} - - component: {fileID: 11452860} - - component: {fileID: 114951584114983914} + - component: {fileID: 447228} + - component: {fileID: 3365804} + - component: {fileID: 2369836} m_Layer: 16 - m_Name: Sketch_ButtonLarge + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &411214 + m_IsActive: 0 +--- !u!4 &447228 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.012, y: 0.249, z: -0.03} - m_LocalScale: {x: 0.935, y: 0.935, z: 0.45} + m_GameObject: {fileID: 148956} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} + m_LocalScale: {x: 1.7142856, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000012999570806} - - {fileID: 4819910167133682} - m_Father: {fileID: 473678} - m_RootOrder: 3 + - {fileID: 434670} + - {fileID: 454538} + m_Father: {fileID: 490548} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3345518 +--- !u!33 &3365804 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2338066 + m_GameObject: {fileID: 148956} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2369836 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} + m_GameObject: {fileID: 148956} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1812,7 +1655,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -1834,64 +1677,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6528766 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11452860 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114871902584000098} - m_Warning: {fileID: 1353537369857522} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114951584114983914 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 142432} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &148956 +--- !u!1 &155754 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1899,48 +1685,51 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 447228} - - component: {fileID: 3365804} - - component: {fileID: 2369836} + - component: {fileID: 468632} + - component: {fileID: 3306764} + - component: {fileID: 2330722} + - component: {fileID: 6590544} + - component: {fileID: 11456692} m_Layer: 16 - m_Name: Background + m_Name: GalleryButton_Likes m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &447228 + m_IsActive: 1 +--- !u!4 &468632 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 148956} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} - m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_GameObject: {fileID: 155754} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.84, y: -0.1593, z: -0.0301} + m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 434670} - - {fileID: 454538} - m_Father: {fileID: 490548} - m_RootOrder: 0 + - {fileID: 412038} + - {fileID: 479382} + - {fileID: 499714} + m_Father: {fileID: 473678} + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3365804 +--- !u!33 &3306764 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 148956} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2369836 + m_GameObject: {fileID: 155754} + m_Mesh: {fileID: 4300000, guid: 32e7e35b9cca7864db503eed4ee39ebc, type: 3} +--- !u!23 &2330722 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 148956} + m_GameObject: {fileID: 155754} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -1976,59 +1765,96 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &153576 -GameObject: +--- !u!65 &6590544 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 493402} - - component: {fileID: 3354416} - - component: {fileID: 2355008} - - component: {fileID: 6569956} - - component: {fileID: 11475750} - - component: {fileID: 114712990197232438} - m_Layer: 16 - m_Name: Sketch_Button5 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &493402 -Transform: + m_GameObject: {fileID: 155754} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.12, y: 0.73, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &11456692 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.247, y: -0.008, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_GameObject: {fileID: 155754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Favorite Sketches + m_DescriptionTextExtra: That you have liked + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 0cdb2feeef1898445b0f54660acd59d8, type: 3} + m_AtlasTexture: 0 + m_ToggleButton: 1 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.04 + m_ZAdjustClick: 0 + m_HoverScale: 1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_ButtonType: 3 +--- !u!1 &162048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 427536} + - component: {fileID: 3335230} + - component: {fileID: 2385560} + m_Layer: 16 + m_Name: BottomBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &427536 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162048} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000013461333742} - - {fileID: 4192096235684524} - m_Father: {fileID: 473678} - m_RootOrder: 8 + m_Children: [] + m_Father: {fileID: 431352} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3354416 +--- !u!33 &3335230 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2355008 + m_GameObject: {fileID: 162048} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2385560 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} + m_GameObject: {fileID: 162048} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2042,7 +1868,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2064,64 +1890,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6569956 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11475750 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114549399520814884} - m_Warning: {fileID: 1063686457530790} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114712990197232438 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 153576} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &155428 +--- !u!1 &167948 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2129,51 +1898,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 408880} - - component: {fileID: 3388248} - - component: {fileID: 2393944} - - component: {fileID: 6552846} - - component: {fileID: 11413066} - - component: {fileID: 114322198536857422} + - component: {fileID: 494418} + - component: {fileID: 2384872} + - component: {fileID: 10229552} m_Layer: 16 - m_Name: Sketch_Button6 + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &408880 +--- !u!4 &494418 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} + m_GameObject: {fileID: 167948} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.7698, y: -0.012, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_LocalPosition: {x: 0, y: -0, z: -0.1} + m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000011053558040} - - {fileID: 4969141364180978} - m_Father: {fileID: 473678} - m_RootOrder: 9 + m_Children: [] + m_Father: {fileID: 416688} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3388248 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2393944 +--- !u!23 &2384872 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} + m_GameObject: {fileID: 167948} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2187,7 +1943,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2209,64 +1965,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6552846 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11413066 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114323545490698212} - m_Warning: {fileID: 1855919676530468} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114322198536857422 -MonoBehaviour: +--- !u!102 &10229552 +TextMesh: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155428} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &155754 + m_GameObject: {fileID: 167948} + m_Text: 99 + m_OffsetZ: 0 + m_CharacterSize: 0.06 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &168646 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2274,51 +1995,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 468632} - - component: {fileID: 3306764} - - component: {fileID: 2330722} - - component: {fileID: 6590544} - - component: {fileID: 11456692} + - component: {fileID: 440846} + - component: {fileID: 2380942} + - component: {fileID: 10296426} m_Layer: 16 - m_Name: GalleryButton_Likes + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &468632 +--- !u!4 &440846 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155754} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.84, y: -0.1593, z: -0.0301} - m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} + m_GameObject: {fileID: 168646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1} + m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 412038} - - {fileID: 479382} - - {fileID: 499714} - m_Father: {fileID: 473678} - m_RootOrder: 16 + m_Children: [] + m_Father: {fileID: 499328} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3306764 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155754} - m_Mesh: {fileID: 4300000, guid: 32e7e35b9cca7864db503eed4ee39ebc, type: 3} ---- !u!23 &2330722 +--- !u!23 &2380942 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155754} + m_GameObject: {fileID: 168646} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2332,7 +2040,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2354,49 +2062,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6590544 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155754} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.12, y: 0.73, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11456692 -MonoBehaviour: +--- !u!102 &10296426 +TextMesh: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 155754} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Favorite Sketches - m_DescriptionTextExtra: That you have liked - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: 0cdb2feeef1898445b0f54660acd59d8, type: 3} - m_AtlasTexture: 0 - m_ToggleButton: 1 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.04 - m_ZAdjustClick: 0 - m_HoverScale: 1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_ButtonType: 3 ---- !u!1 &162048 + m_GameObject: {fileID: 168646} + m_Text: 99 + m_OffsetZ: 0 + m_CharacterSize: 0.06 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &171976 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2404,46 +2092,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 427536} - - component: {fileID: 3335230} - - component: {fileID: 2385560} + - component: {fileID: 475426} + - component: {fileID: 3376740} + - component: {fileID: 2344784} + - component: {fileID: 6556412} + - component: {fileID: 11406912} m_Layer: 16 - m_Name: BottomBorder + m_Name: JumpPage3 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &427536 +--- !u!4 &475426 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 162048} + m_GameObject: {fileID: 171976} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_LocalPosition: {x: 0.245, y: -0.991, z: -0.04} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 431352} - m_RootOrder: 1 + m_Children: + - {fileID: 420674} + m_Father: {fileID: 473678} + m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3335230 +--- !u!33 &3376740 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 162048} + m_GameObject: {fileID: 171976} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2385560 +--- !u!23 &2344784 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 162048} + m_GameObject: {fileID: 171976} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2457,7 +2148,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2479,7 +2170,52 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &166396 +--- !u!65 &6556412 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171976} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 0.1} + m_Center: {x: 0, y: 0, z: -0.1} +--- !u!114 &11406912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 171976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.03 + m_HoverScale: 1.25 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_SelectionTexture: {fileID: 0} + m_ButtonType: 2 + m_GotoPage: 0 + m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} +--- !u!1 &172220 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2487,51 +2223,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 476782} - - component: {fileID: 3390222} - - component: {fileID: 2331128} - - component: {fileID: 6511028} - - component: {fileID: 11452280} - - component: {fileID: 114868663564487396} + - component: {fileID: 498352} + - component: {fileID: 3364482} + - component: {fileID: 2315040} m_Layer: 16 - m_Name: Sketch_Button8 + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &476782 +--- !u!4 &498352 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} + m_GameObject: {fileID: 172220} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.247, y: -0.5287, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000013138638754} - - {fileID: 4916153691783676} - m_Father: {fileID: 473678} - m_RootOrder: 11 + m_Children: [] + m_Father: {fileID: 499714} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3390222 +--- !u!33 &3364482 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2331128 + m_GameObject: {fileID: 172220} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2315040 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} + m_GameObject: {fileID: 172220} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2545,7 +2276,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2567,64 +2298,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6511028 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11452280 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114095498643358690} - m_Warning: {fileID: 1194264369200220} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114868663564487396 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 166396} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &167238 +--- !u!1 &173116 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2632,51 +2306,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 474082} - - component: {fileID: 3309702} - - component: {fileID: 2399930} - - component: {fileID: 6524826} - - component: {fileID: 11486740} - - component: {fileID: 114537375294634330} + - component: {fileID: 454538} + - component: {fileID: 3359794} + - component: {fileID: 2340116} m_Layer: 16 - m_Name: Sketch_Button3 + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &474082 +--- !u!4 &454538 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} + m_GameObject: {fileID: 173116} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.7698, y: 0.5129, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} + m_LocalScale: {x: 1, y: 0.028571432, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000013478852842} - - {fileID: 4648845093172990} - m_Father: {fileID: 473678} - m_RootOrder: 6 + m_Children: [] + m_Father: {fileID: 447228} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3309702 +--- !u!33 &3359794 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2399930 + m_GameObject: {fileID: 173116} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2340116 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} + m_GameObject: {fileID: 173116} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2690,7 +2359,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2712,64 +2381,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6524826 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11486740 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114195161851537796} - m_Warning: {fileID: 1023390386316022} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114537375294634330 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167238} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &167948 +--- !u!1 &174376 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2777,38 +2389,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 494418} - - component: {fileID: 2384872} - - component: {fileID: 10229552} + - component: {fileID: 416688} + - component: {fileID: 3373530} + - component: {fileID: 2347558} + - component: {fileID: 6519700} + - component: {fileID: 11468240} m_Layer: 16 - m_Name: Text + m_Name: JumpPage2 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &494418 +--- !u!4 &416688 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167948} + m_GameObject: {fileID: 174376} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0, z: -0.1} - m_LocalScale: {x: 2, y: 2, z: 2} + m_LocalPosition: {x: 0.058, y: -0.991, z: -0.04} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 416688} - m_RootOrder: 0 + m_Children: + - {fileID: 494418} + m_Father: {fileID: 473678} + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2384872 +--- !u!33 &3373530 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 174376} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2347558 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167948} + m_GameObject: {fileID: 174376} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2822,7 +2445,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2844,29 +2467,52 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &10229552 -TextMesh: - serializedVersion: 3 +--- !u!65 &6519700 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 167948} - m_Text: 99 - m_OffsetZ: 0 - m_CharacterSize: 0.06 - m_LineSpacing: 1 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &168646 + m_GameObject: {fileID: 174376} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 0.1} + m_Center: {x: 0, y: 0, z: -0.1} +--- !u!114 &11468240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 174376} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.03 + m_HoverScale: 1.25 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_SelectionTexture: {fileID: 0} + m_ButtonType: 2 + m_GotoPage: 0 + m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} +--- !u!1 &175552 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2874,38 +2520,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 440846} - - component: {fileID: 2380942} - - component: {fileID: 10296426} + - component: {fileID: 431352} + - component: {fileID: 3319242} + - component: {fileID: 2342500} m_Layer: 16 - m_Name: Text + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &440846 + m_IsActive: 0 +--- !u!4 &431352 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 168646} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.1} - m_LocalScale: {x: 2, y: 2, z: 2} + m_GameObject: {fileID: 175552} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} + m_LocalScale: {x: 4.5714283, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 499328} - m_RootOrder: 0 + m_Children: + - {fileID: 441124} + - {fileID: 427536} + m_Father: {fileID: 490548} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2380942 +--- !u!33 &3319242 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175552} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2342500 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 168646} + m_GameObject: {fileID: 175552} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -2919,7 +2575,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2941,29 +2597,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &10296426 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 168646} - m_Text: 99 - m_OffsetZ: 0 - m_CharacterSize: 0.06 - m_LineSpacing: 1 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &169670 +--- !u!1 &176914 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2971,51 +2605,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 473330} - - component: {fileID: 3348150} - - component: {fileID: 2379072} - - component: {fileID: 6509246} - - component: {fileID: 11490938} - - component: {fileID: 114715753213173670} + - component: {fileID: 484996} + - component: {fileID: 3313266} + - component: {fileID: 2346100} m_Layer: 16 - m_Name: Sketch_Button7 + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &473330 +--- !u!4 &484996 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} + m_GameObject: {fileID: 176914} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.2737, y: -0.5287, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} + m_LocalScale: {x: 1, y: 0.028571432, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000011500092316} - - {fileID: 4069340866196592} - m_Father: {fileID: 473678} - m_RootOrder: 10 + m_Children: [] + m_Father: {fileID: 412038} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3348150 +--- !u!33 &3313266 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2379072 + m_GameObject: {fileID: 176914} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2346100 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} + m_GameObject: {fileID: 176914} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3029,7 +2658,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3051,64 +2680,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6509246 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11490938 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114635763778407954} - m_Warning: {fileID: 1914095689519454} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114715753213173670 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 169670} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &171976 +--- !u!1 &178916 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3116,49 +2688,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 475426} - - component: {fileID: 3376740} - - component: {fileID: 2344784} - - component: {fileID: 6556412} - - component: {fileID: 11406912} + - component: {fileID: 412038} + - component: {fileID: 3314012} + - component: {fileID: 2337802} m_Layer: 16 - m_Name: JumpPage3 + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &475426 + m_IsActive: 0 +--- !u!4 &412038 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171976} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.245, y: -0.991, z: -0.04} - m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_GameObject: {fileID: 178916} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} + m_LocalScale: {x: 1.7142856, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 420674} - m_Father: {fileID: 473678} - m_RootOrder: 21 + - {fileID: 465110} + - {fileID: 484996} + m_Father: {fileID: 468632} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3376740 +--- !u!33 &3314012 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171976} + m_GameObject: {fileID: 178916} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2344784 +--- !u!23 &2337802 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171976} + m_GameObject: {fileID: 178916} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3172,7 +2743,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3194,52 +2765,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6556412 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171976} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 0.1} - m_Center: {x: 0, y: 0, z: -0.1} ---- !u!114 &11406912 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 171976} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.03 - m_HoverScale: 1.25 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_SelectionTexture: {fileID: 0} - m_ButtonType: 2 - m_GotoPage: 0 - m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} ---- !u!1 &172220 +--- !u!1 &183508 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3247,46 +2773,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 498352} - - component: {fileID: 3364482} - - component: {fileID: 2315040} + - component: {fileID: 453004} + - component: {fileID: 3395878} + - component: {fileID: 2317704} m_Layer: 16 - m_Name: BottomBorder + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &498352 +--- !u!4 &453004 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 172220} + m_GameObject: {fileID: 183508} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} + m_LocalScale: {x: 1, y: 0.028571434, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 499714} - m_RootOrder: 1 + m_Father: {fileID: 479382} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3364482 +--- !u!33 &3395878 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 172220} + m_GameObject: {fileID: 183508} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2315040 +--- !u!23 &2317704 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 172220} + m_GameObject: {fileID: 183508} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3322,7 +2848,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &173116 +--- !u!1 &183652 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3330,46 +2856,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 454538} - - component: {fileID: 3359794} - - component: {fileID: 2340116} + - component: {fileID: 440778} + - component: {fileID: 2397020} + - component: {fileID: 10216538} m_Layer: 16 - m_Name: BottomBorder + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &454538 +--- !u!4 &440778 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 173116} + m_GameObject: {fileID: 183652} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} - m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_LocalPosition: {x: 0, y: -0, z: -0.1} + m_LocalScale: {x: 2, y: 2, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 447228} - m_RootOrder: 1 + m_Father: {fileID: 494534} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3359794 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 173116} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2340116 +--- !u!23 &2397020 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 173116} + m_GameObject: {fileID: 183652} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3383,7 +2901,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3405,7 +2923,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &174376 +--- !u!102 &10216538 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 183652} + m_Text: 99 + m_OffsetZ: 0 + m_CharacterSize: 0.06 + m_LineSpacing: 1 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &188732 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3413,49 +2953,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 416688} - - component: {fileID: 3373530} - - component: {fileID: 2347558} - - component: {fileID: 6519700} - - component: {fileID: 11468240} + - component: {fileID: 465110} + - component: {fileID: 3342042} + - component: {fileID: 2374132} m_Layer: 16 - m_Name: JumpPage2 + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &416688 +--- !u!4 &465110 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 174376} + m_GameObject: {fileID: 188732} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.058, y: -0.991, z: -0.04} - m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} + m_LocalScale: {x: 1, y: 0.02857143, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 494418} - m_Father: {fileID: 473678} - m_RootOrder: 20 + m_Children: [] + m_Father: {fileID: 412038} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3373530 +--- !u!33 &3342042 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 174376} + m_GameObject: {fileID: 188732} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2347558 +--- !u!23 &2374132 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 174376} + m_GameObject: {fileID: 188732} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3469,7 +3006,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3491,52 +3028,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6519700 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 174376} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 0.1} - m_Center: {x: 0, y: 0, z: -0.1} ---- !u!114 &11468240 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 174376} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.03 - m_HoverScale: 1.25 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_SelectionTexture: {fileID: 0} - m_ButtonType: 2 - m_GotoPage: 0 - m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} ---- !u!1 &175552 +--- !u!1 &192230 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3544,9 +3036,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 431352} - - component: {fileID: 3319242} - - component: {fileID: 2342500} + - component: {fileID: 499714} + - component: {fileID: 3374636} + - component: {fileID: 2346422} m_Layer: 16 m_Name: Background m_TagString: Untagged @@ -3554,38 +3046,38 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 ---- !u!4 &431352 +--- !u!4 &499714 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175552} + m_GameObject: {fileID: 192230} m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} m_LocalScale: {x: 4.5714283, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 441124} - - {fileID: 427536} - m_Father: {fileID: 490548} + - {fileID: 441958} + - {fileID: 498352} + m_Father: {fileID: 468632} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3319242 +--- !u!33 &3374636 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175552} + m_GameObject: {fileID: 192230} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2342500 +--- !u!23 &2346422 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 175552} + m_GameObject: {fileID: 192230} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3621,7 +3113,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &176914 +--- !u!1 &194474 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3629,46 +3121,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 484996} - - component: {fileID: 3313266} - - component: {fileID: 2346100} + - component: {fileID: 441124} + - component: {fileID: 3334046} + - component: {fileID: 2345224} m_Layer: 16 - m_Name: BottomBorder + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &484996 +--- !u!4 &441124 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176914} + m_GameObject: {fileID: 194474} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} - m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 412038} - m_RootOrder: 1 + m_Father: {fileID: 431352} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3313266 +--- !u!33 &3334046 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176914} + m_GameObject: {fileID: 194474} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2346100 +--- !u!23 &2345224 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 176914} + m_GameObject: {fileID: 194474} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3704,7 +3196,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &177278 +--- !u!1 &195798 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3712,51 +3204,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 461906} - - component: {fileID: 3327974} - - component: {fileID: 2323426} - - component: {fileID: 6562124} - - component: {fileID: 11431774} - - component: {fileID: 114348256171424074} + - component: {fileID: 479382} + - component: {fileID: 3326064} + - component: {fileID: 2301026} m_Layer: 16 - m_Name: Sketch_Button2 + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &461906 + m_IsActive: 0 +--- !u!4 &479382 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.249, y: 0.5129, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_GameObject: {fileID: 195798} + m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} + m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} + m_LocalScale: {x: 0.9142857, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000012910955364} - - {fileID: 4840805683560546} - m_Father: {fileID: 473678} - m_RootOrder: 5 + - {fileID: 453004} + - {fileID: 467276} + m_Father: {fileID: 468632} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3327974 +--- !u!33 &3326064 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2323426 + m_GameObject: {fileID: 195798} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2301026 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} + m_GameObject: {fileID: 195798} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3770,7 +3259,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3792,64 +3281,52 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6562124 -BoxCollider: +--- !u!1 &196078 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11431774 -MonoBehaviour: + serializedVersion: 6 + m_Component: + - component: {fileID: 400022} + - component: {fileID: 6509770} + m_Layer: 16 + m_Name: MeshCollider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400022 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114866655278054368} - m_Warning: {fileID: 1122766985615510} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114348256171424074 -MonoBehaviour: + m_GameObject: {fileID: 196078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &6509770 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 177278} + m_GameObject: {fileID: 196078} + m_Material: {fileID: 0} + m_IsTrigger: 0 m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &178250 + serializedVersion: 2 + m_Size: {x: 2.44, y: 2.7, z: 0.042} + m_Center: {x: 0, y: -0.06, z: -0.01} +--- !u!1 &196312 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3857,51 +3334,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 401916} - - component: {fileID: 3363168} - - component: {fileID: 2395168} - - component: {fileID: 6521934} - - component: {fileID: 11477404} - - component: {fileID: 114112006115677326} + - component: {fileID: 410012} + - component: {fileID: 3342126} + - component: {fileID: 2359332} + - component: {fileID: 6506388} + - component: {fileID: 11459642} m_Layer: 16 - m_Name: Sketch_Button4 + m_Name: Nav_NextPage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &401916 +--- !u!4 &410012 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} + m_GameObject: {fileID: 196312} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.2737, y: -0.008, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_LocalPosition: {x: 0.912, y: -0.991, z: -0.04} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000012616996494} - - {fileID: 4284873399471688} + m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 7 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3363168 +--- !u!33 &3342126 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &2395168 + m_GameObject: {fileID: 196312} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2359332 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} + m_GameObject: {fileID: 196312} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -3915,7 +3389,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3937,64 +3411,52 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6521934 +--- !u!65 &6506388 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} + m_GameObject: {fileID: 196312} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} + m_Size: {x: 1, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11477404 +--- !u!114 &11459642 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} + m_GameObject: {fileID: 196312} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} + m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: 0 + m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 + m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} + m_AtlasTexture: 1 m_ToggleButton: 0 m_LongPressReleaseButton: 0 m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 - m_MenuButton: {fileID: 114244469609186990} - m_Warning: {fileID: 1236945777315276} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114112006115677326 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178250} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &178916 + m_SelectionTexture: {fileID: 0} + m_ButtonType: 0 + m_GotoPage: 0 + m_InactiveColor: {r: 0, g: 0, b: 0, a: 0} +--- !u!1 &197350 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4002,48 +3464,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 412038} - - component: {fileID: 3314012} - - component: {fileID: 2337802} + - component: {fileID: 441958} + - component: {fileID: 3369242} + - component: {fileID: 2363890} m_Layer: 16 - m_Name: Background + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &412038 + m_IsActive: 1 +--- !u!4 &441958 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178916} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} - m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_GameObject: {fileID: 197350} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 465110} - - {fileID: 484996} - m_Father: {fileID: 468632} + m_Children: [] + m_Father: {fileID: 499714} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3314012 +--- !u!33 &3369242 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178916} + m_GameObject: {fileID: 197350} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2337802 +--- !u!23 &2363890 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178916} + m_GameObject: {fileID: 197350} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4057,7 +3517,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4079,7 +3539,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &183508 +--- !u!1 &1000010118716738 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4087,46 +3547,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 453004} - - component: {fileID: 3395878} - - component: {fileID: 2317704} + - component: {fileID: 4000013078219060} + - component: {fileID: 33000011125244486} + - component: {fileID: 23000011806362410} m_Layer: 16 - m_Name: TopBorder + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &453004 +--- !u!4 &4000013078219060 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183508} + m_GameObject: {fileID: 1000010118716738} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} + m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} m_LocalScale: {x: 1, y: 0.028571434, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 479382} - m_RootOrder: 0 + m_Father: {fileID: 4000011206878738} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3395878 +--- !u!33 &33000011125244486 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183508} + m_GameObject: {fileID: 1000010118716738} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2317704 +--- !u!23 &23000011806362410 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183508} + m_GameObject: {fileID: 1000010118716738} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4162,7 +3622,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &183652 +--- !u!1 &1000010134702830 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4170,38 +3630,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 440778} - - component: {fileID: 2397020} - - component: {fileID: 10216538} + - component: {fileID: 4000011206878738} + - component: {fileID: 33000011206434982} + - component: {fileID: 23000010270107320} m_Layer: 16 - m_Name: Text + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &440778 + m_IsActive: 0 +--- !u!4 &4000011206878738 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183652} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0, z: -0.1} - m_LocalScale: {x: 2, y: 2, z: 2} + m_GameObject: {fileID: 1000010134702830} + m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} + m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} + m_LocalScale: {x: 0.9142857, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 494534} - m_RootOrder: 0 + m_Children: + - {fileID: 4000010892569700} + - {fileID: 4000013078219060} + m_Father: {fileID: 4000010470004098} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2397020 +--- !u!33 &33000011206434982 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010134702830} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000010270107320 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183652} + m_GameObject: {fileID: 1000010134702830} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4215,7 +3685,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4237,29 +3707,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &10216538 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 183652} - m_Text: 99 - m_OffsetZ: 0 - m_CharacterSize: 0.06 - m_LineSpacing: 1 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &188732 +--- !u!1 &1000010358450346 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4267,46 +3715,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 465110} - - component: {fileID: 3342042} - - component: {fileID: 2374132} + - component: {fileID: 4000012892386556} + - component: {fileID: 23000013296900752} + - component: {fileID: 102000013715634272} m_Layer: 16 - m_Name: TopBorder + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &465110 +--- !u!4 &4000012892386556 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 188732} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} - m_LocalScale: {x: 1, y: 0.02857143, z: 1} + m_GameObject: {fileID: 1000010358450346} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.236, z: -0.02} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 412038} + m_Father: {fileID: 4000013760615668} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3342042 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 188732} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2374132 +--- !u!23 &23000013296900752 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 188732} + m_GameObject: {fileID: 1000010358450346} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4320,7 +3760,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4342,7 +3782,33 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &192230 +--- !u!102 &102000013715634272 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010358450346} + m_Text: 'Like sketches + + on Poly to + + see them here' + m_OffsetZ: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.72 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 36 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1000010365406468 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4350,62 +3816,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 499714} - - component: {fileID: 3374636} - - component: {fileID: 2346422} + - component: {fileID: 4000011744107576} + - component: {fileID: 33000011204178654} + - component: {fileID: 23000011808244094} m_Layer: 16 - m_Name: Background + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &499714 + m_IsActive: 1 +--- !u!4 &4000011744107576 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192230} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} - m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_GameObject: {fileID: 1000010365406468} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 441958} - - {fileID: 498352} - m_Father: {fileID: 468632} - m_RootOrder: 2 + m_Children: [] + m_Father: {fileID: 4000013868811186} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3374636 +--- !u!33 &33000011204178654 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192230} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2346422 + m_GameObject: {fileID: 1000010365406468} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000011808244094 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 192230} + m_GameObject: {fileID: 1000010365406468} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4427,7 +3891,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &194474 +--- !u!1 &1000010401472448 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4435,60 +3899,109 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 441124} - - component: {fileID: 3334046} - - component: {fileID: 2345224} + - component: {fileID: 4000012925136122} m_Layer: 16 - m_Name: TopBorder + m_Name: Sketchbook m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &441124 +--- !u!4 &4000012925136122 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194474} + m_GameObject: {fileID: 1000010401472448} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4000011551526080} + - {fileID: 4000014046535472} + - {fileID: 4000013013276346} + m_Father: {fileID: 473678} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1000010567837980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000012999227018} + - component: {fileID: 33000011881333540} + - component: {fileID: 64000013758589526} + - component: {fileID: 23000012792460524} + m_Layer: 16 + m_Name: LikeHeart + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012999227018 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010567837980} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.1212, y: 0.383, z: -0.041999996} + m_LocalScale: {x: 0.17, y: 0.17, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 431352} - m_RootOrder: 0 + m_Father: {fileID: 4000013760615668} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3334046 +--- !u!33 &33000011881333540 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194474} + m_GameObject: {fileID: 1000010567837980} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2345224 +--- !u!64 &64000013758589526 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010567837980} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000012792460524 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 194474} + m_GameObject: {fileID: 1000010567837980} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: ea9e319c064d649418afa200367da9aa, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4497,7 +4010,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -4510,7 +4023,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &195798 +--- !u!1 &1000010667475366 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4518,178 +4031,81 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 479382} - - component: {fileID: 3326064} - - component: {fileID: 2301026} + - component: {fileID: 4000013868811186} m_Layer: 16 - m_Name: Background + m_Name: BlocksLibraryPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &479382 + m_IsActive: 1 +--- !u!4 &4000013868811186 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 195798} - m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} - m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} - m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_GameObject: {fileID: 1000010667475366} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 453004} - - {fileID: 467276} - m_Father: {fileID: 468632} + - {fileID: 4000011744107576} + - {fileID: 4000011886445864} + m_Father: {fileID: 4000011114460008} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3326064 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 195798} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2301026 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 195798} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &196078 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 400022} - - component: {fileID: 6509770} - m_Layer: 16 - m_Name: MeshCollider - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400022 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196078} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &6509770 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196078} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2.44, y: 2.7, z: 0.042} - m_Center: {x: 0, y: -0.06, z: -0.01} ---- !u!1 &196312 -GameObject: +--- !u!1 &1000010683355590 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 410012} - - component: {fileID: 3342126} - - component: {fileID: 2359332} - - component: {fileID: 6506388} - - component: {fileID: 11459642} + - component: {fileID: 4000012031974818} + - component: {fileID: 33000012255737950} + - component: {fileID: 23000010055527898} + - component: {fileID: 6532654} + - component: {fileID: 114911010639464544} m_Layer: 16 - m_Name: Nav_NextPage + m_Name: ProfileButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &410012 +--- !u!4 &4000012031974818 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196312} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.912, y: -0.991, z: -0.04} + m_GameObject: {fileID: 1000010683355590} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.839, y: -0.991, z: -0.0311} m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 24 + m_RootOrder: 16 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3342126 +--- !u!33 &33000012255737950 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196312} + m_GameObject: {fileID: 1000010683355590} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2359332 +--- !u!23 &23000010055527898 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196312} + m_GameObject: {fileID: 1000010683355590} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4703,7 +4119,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} + - {fileID: 2100000, guid: da7f0d43a22e3f24bbc517466728866f, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4725,39 +4141,39 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6506388 +--- !u!65 &6532654 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196312} + m_GameObject: {fileID: 1000010683355590} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 0.01} + m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &11459642 +--- !u!114 &114911010639464544 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 196312} + m_GameObject: {fileID: 1000010683355590} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dbae3ff4457df6f4ea3af0389871cb9c, type: 3} + m_Script: {fileID: 11500000, guid: c247e1fc5473c884a9dd9cf29ae40d51, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: -1 + m_DescriptionType: 0 m_DescriptionYOffset: 0 m_DescriptionText: m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} - m_AtlasTexture: 1 + m_ButtonTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} + m_AtlasTexture: 0 m_ToggleButton: 0 m_LongPressReleaseButton: 0 m_ButtonHasPressedAudio: 1 @@ -4766,11 +4182,21 @@ MonoBehaviour: m_HoverScale: 1.1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 - m_SelectionTexture: {fileID: 0} - m_ButtonType: 0 - m_GotoPage: 0 - m_InactiveColor: {r: 0, g: 0, b: 0, a: 0} ---- !u!1 &197350 + m_Command: 30 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + m_AnonymousTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} + m_LoggedInText: Accounts + m_LogInText: Accounts +--- !u!1 &1000010744527238 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4778,60 +4204,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 441958} - - component: {fileID: 3369242} - - component: {fileID: 2363890} + - component: {fileID: 4000012486041186} + - component: {fileID: 33000012057045804} + - component: {fileID: 23000010862609652} m_Layer: 16 - m_Name: TopBorder + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &441958 +--- !u!4 &4000012486041186 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 197350} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_GameObject: {fileID: 1000010744527238} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 499714} + m_Father: {fileID: 4000013175241986} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3369242 +--- !u!33 &33000012057045804 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 197350} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2363890 + m_GameObject: {fileID: 1000010744527238} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000010862609652 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 197350} + m_GameObject: {fileID: 1000010744527238} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4853,7 +4279,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010118716738 +--- !u!1 &1000010821915206 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4861,46 +4287,41 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013078219060} - - component: {fileID: 33000011125244486} - - component: {fileID: 23000011806362410} + - component: {fileID: 4000013760615668} + - component: {fileID: 23000010582741524} m_Layer: 16 - m_Name: BottomBorder + m_Name: NoLikesMessage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000013078219060 + m_IsActive: 0 +--- !u!4 &4000013760615668 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010118716738} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} - m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_GameObject: {fileID: 1000010821915206} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000011206878738} - m_RootOrder: 1 + m_Children: + - {fileID: 4000012892386556} + - {fileID: 4000010586237508} + - {fileID: 4000012999227018} + - {fileID: 4000013454894384} + m_Father: {fileID: 473678} + m_RootOrder: 25 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011125244486 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010118716738} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011806362410 +--- !u!23 &23000010582741524 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010118716738} + m_GameObject: {fileID: 1000010821915206} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -4914,7 +4335,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4936,7 +4357,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010134702830 +--- !u!1 &1000011094475738 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4944,62 +4365,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011206878738} - - component: {fileID: 33000011206434982} - - component: {fileID: 23000010270107320} + - component: {fileID: 4000011551526080} + - component: {fileID: 33000011121147842} + - component: {fileID: 23000012348211526} m_Layer: 16 - m_Name: Background + m_Name: SketchbookBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011206878738 + m_IsActive: 1 +--- !u!4 &4000011551526080 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010134702830} - m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} - m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} - m_LocalScale: {x: 0.9142857, y: 1, z: 1} + m_GameObject: {fileID: 1000011094475738} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000010892569700} - - {fileID: 4000013078219060} - m_Father: {fileID: 4000010470004098} - m_RootOrder: 1 + m_Children: [] + m_Father: {fileID: 4000012925136122} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011206434982 +--- !u!33 &33000011121147842 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010134702830} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010270107320 + m_GameObject: {fileID: 1000011094475738} + m_Mesh: {fileID: 4300002, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} +--- !u!23 &23000012348211526 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010134702830} + m_GameObject: {fileID: 1000011094475738} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5021,7 +4440,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010241860486 +--- !u!1 &1000011216287484 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5029,65 +4448,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010333377928} - - component: {fileID: 33000012812584494} - - component: {fileID: 23000011392783962} - - component: {fileID: 65000013375446164} - - component: {fileID: 114000013156271550} - - component: {fileID: 114558051923318988} + - component: {fileID: 4000012312614358} + - component: {fileID: 33000012369206972} + - component: {fileID: 23000011694606930} m_Layer: 16 - m_Name: Sketch_Button1 + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010333377928 +--- !u!4 &4000012312614358 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.2717, y: 0.5129, z: -0.03} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_GameObject: {fileID: 1000011216287484} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000011338142394} - - {fileID: 4758236918301830} - m_Father: {fileID: 473678} - m_RootOrder: 4 + m_Children: [] + m_Father: {fileID: 4000013454894384} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012812584494 +--- !u!33 &33000012369206972 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} - m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} ---- !u!23 &23000011392783962 + m_GameObject: {fileID: 1000011216287484} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000011694606930 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} + m_GameObject: {fileID: 1000011216287484} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5109,64 +4523,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000013375446164 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114000013156271550 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.06 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_MenuButton: {fileID: 114335706120377868} - m_Warning: {fileID: 1037653607876102} - m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} ---- !u!114 &114558051923318988 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010241860486} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1000010358450346 +--- !u!1 &1000011517226962 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5174,38 +4531,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012892386556} - - component: {fileID: 23000013296900752} - - component: {fileID: 102000013715634272} + - component: {fileID: 4000010892569700} + - component: {fileID: 33000011120581400} + - component: {fileID: 23000011159452854} m_Layer: 16 - m_Name: Text + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012892386556 +--- !u!4 &4000010892569700 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010358450346} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.02} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1000011517226962} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} + m_LocalScale: {x: 1, y: 0.028571434, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013760615668} + m_Father: {fileID: 4000011206878738} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000013296900752 +--- !u!33 &33000011120581400 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011517226962} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000011159452854 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010358450346} + m_GameObject: {fileID: 1000011517226962} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5219,7 +4584,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5241,33 +4606,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000013715634272 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010358450346} - m_Text: 'Like sketches - - on Poly to - - see them here' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1000010365406468 +--- !u!1 &1000011622452938 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5275,60 +4614,65 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011744107576} - - component: {fileID: 33000011204178654} - - component: {fileID: 23000011808244094} + - component: {fileID: 4000010470004098} + - component: {fileID: 33000010882293456} + - component: {fileID: 23000010524948804} + - component: {fileID: 65000010333358966} + - component: {fileID: 114000011006960986} m_Layer: 16 - m_Name: PopupBg + m_Name: GalleryButton_Showcase m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000011744107576 +--- !u!4 &4000010470004098 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010365406468} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1000011622452938} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.84, y: 0.1593, z: -0.0301} + m_LocalScale: {x: 0.436, y: 0.436, z: 0.436} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000013868811186} - m_RootOrder: 0 + m_Children: + - {fileID: 4000014044617982} + - {fileID: 4000011206878738} + - {fileID: 4000011225904734} + m_Father: {fileID: 473678} + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011204178654 +--- !u!33 &33000010882293456 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010365406468} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000011808244094 + m_GameObject: {fileID: 1000011622452938} + m_Mesh: {fileID: 4300000, guid: b78271332916ed14da90a2894e22e012, type: 3} +--- !u!23 &23000010524948804 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010365406468} + m_GameObject: {fileID: 1000011622452938} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5350,7 +4694,49 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010401472448 +--- !u!65 &65000010333358966 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011622452938} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.12, y: 0.73, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &114000011006960986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011622452938} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Featured Sketches + m_DescriptionTextExtra: From the Internet + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: 78bb99e2fe13ca44d9d0b4ab7882f4ce, type: 3} + m_AtlasTexture: 0 + m_ToggleButton: 1 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.04 + m_ZAdjustClick: 0 + m_HoverScale: 1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_ButtonType: 5 +--- !u!1 &1000011692107830 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5358,33 +4744,32 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012925136122} + - component: {fileID: 4000013454894384} m_Layer: 16 - m_Name: Sketchbook + m_Name: BlocksLibraryPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012925136122 +--- !u!4 &4000013454894384 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010401472448} + m_GameObject: {fileID: 1000011692107830} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000011551526080} - - {fileID: 4000014046535472} - - {fileID: 4000013013276346} - m_Father: {fileID: 473678} - m_RootOrder: 42 + - {fileID: 4000010769280002} + - {fileID: 4000012312614358} + m_Father: {fileID: 4000013760615668} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1000010567837980 +--- !u!1 &1000011797134698 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5392,75 +4777,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012999227018} - - component: {fileID: 33000011881333540} - - component: {fileID: 64000013758589526} - - component: {fileID: 23000012792460524} + - component: {fileID: 4000012956736620} + - component: {fileID: 33000011351091714} + - component: {fileID: 23000010144209866} m_Layer: 16 - m_Name: LikeHeart + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012999227018 +--- !u!4 &4000012956736620 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010567837980} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.1212, y: 0.383, z: -0.041999996} - m_LocalScale: {x: 0.17, y: 0.17, z: 1} + m_GameObject: {fileID: 1000011797134698} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} + m_LocalScale: {x: 1, y: 0.02857143, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013760615668} - m_RootOrder: 2 + m_Father: {fileID: 4000014044617982} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011881333540 +--- !u!33 &33000011351091714 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010567837980} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!64 &64000013758589526 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010567837980} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 + m_GameObject: {fileID: 1000011797134698} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012792460524 +--- !u!23 &23000010144209866 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010567837980} + m_GameObject: {fileID: 1000011797134698} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: ea9e319c064d649418afa200367da9aa, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5469,7 +4839,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -5482,7 +4852,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010667475366 +--- !u!1 &1000011835935838 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5490,81 +4860,40 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013868811186} + - component: {fileID: 4000012758470188} + - component: {fileID: 23000010716088472} m_Layer: 16 - m_Name: BlocksLibraryPopupMesh + m_Name: ContactingServer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000013868811186 + m_IsActive: 0 +--- !u!4 &4000012758470188 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010667475366} + m_GameObject: {fileID: 1000011835935838} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} + m_LocalPosition: {x: 0.24, y: 0, z: -0.1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000011744107576} - - {fileID: 4000011886445864} - m_Father: {fileID: 4000011114460008} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1000010683355590 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4000012031974818} - - component: {fileID: 33000012255737950} - - component: {fileID: 23000010055527898} - - component: {fileID: 6532654} - - component: {fileID: 114911010639464544} - m_Layer: 16 - m_Name: ProfileButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000012031974818 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010683355590} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.839, y: -0.991, z: -0.0311} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} - m_ConstrainProportionsScale: 0 - m_Children: [] + - {fileID: 224000014101254652} + - {fileID: 4000010399852960} + - {fileID: 4000013175241986} m_Father: {fileID: 473678} - m_RootOrder: 25 + m_RootOrder: 26 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012255737950 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010683355590} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010055527898 +--- !u!23 &23000010716088472 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010683355590} + m_GameObject: {fileID: 1000011835935838} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5578,7 +4907,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: da7f0d43a22e3f24bbc517466728866f, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5600,62 +4929,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6532654 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010683355590} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114911010639464544 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010683355590} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c247e1fc5473c884a9dd9cf29ae40d51, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.05 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 30 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} - m_AnonymousTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} - m_LoggedInText: Accounts - m_LogInText: Accounts ---- !u!1 &1000010744527238 +--- !u!1 &1000012149669276 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5663,60 +4937,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012486041186} - - component: {fileID: 33000012057045804} - - component: {fileID: 23000010862609652} + - component: {fileID: 4000013563491830} + - component: {fileID: 33000010883985424} + - component: {fileID: 23000012392550902} m_Layer: 16 - m_Name: PopupBg + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012486041186 +--- !u!4 &4000013563491830 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010744527238} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1000012149669276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013175241986} - m_RootOrder: 0 + m_Father: {fileID: 4000011225904734} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012057045804 +--- !u!33 &33000010883985424 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010744527238} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000010862609652 + m_GameObject: {fileID: 1000012149669276} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000012392550902 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010744527238} + m_GameObject: {fileID: 1000012149669276} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5738,7 +5012,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010821915206 +--- !u!1 &1000012311522496 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5746,41 +5020,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013760615668} - - component: {fileID: 23000010582741524} + - component: {fileID: 4000010013684490} + - component: {fileID: 33000012851111020} + - component: {fileID: 23000011541119754} m_Layer: 16 - m_Name: NoLikesMessage + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000013760615668 + m_IsActive: 1 +--- !u!4 &4000010013684490 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010821915206} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1000012311522496} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} + m_LocalScale: {x: 1, y: 0.028571432, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000012892386556} - - {fileID: 4000010586237508} - - {fileID: 4000012999227018} - - {fileID: 4000013454894384} - m_Father: {fileID: 473678} - m_RootOrder: 34 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000010582741524 + m_Children: [] + m_Father: {fileID: 4000014044617982} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000012851111020 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012311522496} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000011541119754 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010821915206} + m_GameObject: {fileID: 1000012311522496} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -5794,7 +5073,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5816,7 +5095,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000010881089914 +--- !u!1 &1000012495519762 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5824,62 +5103,62 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013138638754} - - component: {fileID: 33000011808528658} - - component: {fileID: 23000013384138372} - - component: {fileID: 65000011288588380} - - component: {fileID: 114095498643358690} + - component: {fileID: 4000014044617982} + - component: {fileID: 33000013472049802} + - component: {fileID: 23000010645622776} m_Layer: 16 - m_Name: MenuButton + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 ---- !u!4 &4000013138638754 +--- !u!4 &4000014044617982 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010881089914} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1000012495519762} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} + m_LocalScale: {x: 1.7142856, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 476782} + m_Children: + - {fileID: 4000012956736620} + - {fileID: 4000010013684490} + m_Father: {fileID: 4000010470004098} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011808528658 +--- !u!33 &33000013472049802 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010881089914} + m_GameObject: {fileID: 1000012495519762} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000013384138372 +--- !u!23 &23000010645622776 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010881089914} + m_GameObject: {fileID: 1000012495519762} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5888,7 +5167,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -5901,48 +5180,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000011288588380 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010881089914} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114095498643358690 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000010881089914} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000011094475738 +--- !u!1 &1000012586849750 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5950,60 +5188,53 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011551526080} - - component: {fileID: 33000011121147842} - - component: {fileID: 23000012348211526} + - component: {fileID: 4000011114460008} + - component: {fileID: 23000010319935078} m_Layer: 16 - m_Name: SketchbookBg + m_Name: OutOfDate m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000011551526080 + m_IsActive: 0 +--- !u!4 &4000011114460008 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011094475738} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1000012586849750} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000012925136122} - m_RootOrder: 0 + m_Children: + - {fileID: 4032955052552346} + - {fileID: 4000013868811186} + m_Father: {fileID: 473678} + m_RootOrder: 30 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011121147842 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011094475738} - m_Mesh: {fileID: 4300002, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} ---- !u!23 &23000012348211526 +--- !u!23 &23000010319935078 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011094475738} + m_GameObject: {fileID: 1000012586849750} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6025,7 +5256,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000011216287484 +--- !u!1 &1000012616600414 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6033,60 +5264,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012312614358} - - component: {fileID: 33000012369206972} - - component: {fileID: 23000011694606930} + - component: {fileID: 4000011602742270} + - component: {fileID: 23000012840096384} + - component: {fileID: 102000012064194272} m_Layer: 16 - m_Name: PopupBorder + m_Name: Ok m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012312614358 +--- !u!4 &4000011602742270 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011216287484} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1000012616600414} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.277, y: 0, z: -0.02933333} + m_LocalScale: {x: 5.905732, y: 5.905732, z: 2.952866} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013454894384} - m_RootOrder: 1 + m_Father: {fileID: 4000010586237508} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012369206972 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011216287484} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000011694606930 +--- !u!23 &23000012840096384 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011216287484} + m_GameObject: {fileID: 1000012616600414} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6108,7 +5331,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000011517226962 +--- !u!102 &102000012064194272 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012616600414} + m_Text: OPEN + m_OffsetZ: 0 + m_CharacterSize: 0.01 + m_LineSpacing: 0.75 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1000012741200280 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6116,60 +5361,61 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010892569700} - - component: {fileID: 33000011120581400} - - component: {fileID: 23000011159452854} + - component: {fileID: 4000010399852960} + - component: {fileID: 33000010754946242} + - component: {fileID: 23000013719367618} + - component: {fileID: 114000012014155796} m_Layer: 16 - m_Name: TopBorder + m_Name: AnimIcon m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010892569700 +--- !u!4 &4000010399852960 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011517226962} + m_GameObject: {fileID: 1000012741200280} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} - m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_LocalPosition: {x: 0, y: -0.337, z: -0.025} + m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000011206878738} - m_RootOrder: 0 + m_Father: {fileID: 4000012758470188} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011120581400 +--- !u!33 &33000010754946242 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011517226962} + m_GameObject: {fileID: 1000012741200280} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011159452854 +--- !u!23 &23000013719367618 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011517226962} + m_GameObject: {fileID: 1000012741200280} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 7dd436b1e98554d4daef5bc9d1eeaae9, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6178,7 +5424,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -6191,7 +5437,20 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000011551410764 +--- !u!114 &114000012014155796 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012741200280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0278ab0b9144784db8dad7f91bd1d11, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Speed: -180 +--- !u!1 &1000012812392858 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6199,48 +5458,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011338142394} - - component: {fileID: 33000011412534472} - - component: {fileID: 23000011915373980} - - component: {fileID: 65000012451105802} - - component: {fileID: 114335706120377868} + - component: {fileID: 4000011886445864} + - component: {fileID: 33000012714006372} + - component: {fileID: 23000011473763406} m_Layer: 16 - m_Name: MenuButton + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011338142394 + m_IsActive: 1 +--- !u!4 &4000011886445864 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011551410764} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1000012812392858} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000010333377928} - m_RootOrder: 0 + m_Father: {fileID: 4000013868811186} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011412534472 +--- !u!33 &33000012714006372 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011551410764} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011915373980 + m_GameObject: {fileID: 1000012812392858} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000011473763406 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011551410764} + m_GameObject: {fileID: 1000012812392858} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6254,7 +5511,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6263,7 +5520,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -6276,48 +5533,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000012451105802 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011551410764} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114335706120377868 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011551410764} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000011622452938 +--- !u!1 &1000012918130662 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6325,65 +5541,59 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010470004098} - - component: {fileID: 33000010882293456} - - component: {fileID: 23000010524948804} - - component: {fileID: 65000010333358966} - - component: {fileID: 114000011006960986} + - component: {fileID: 224000014101254652} + - component: {fileID: 23000014001274338} + - component: {fileID: 33000011988818744} + - component: {fileID: 114000010157185962} + - component: {fileID: 222469015342790522} m_Layer: 16 - m_Name: GalleryButton_Showcase + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010470004098 -Transform: +--- !u!224 &224000014101254652 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011622452938} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.84, y: 0.1593, z: -0.0301} - m_LocalScale: {x: 0.436, y: 0.436, z: 0.436} + m_GameObject: {fileID: 1000012918130662} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000014044617982} - - {fileID: 4000011206878738} - - {fileID: 4000011225904734} - m_Father: {fileID: 473678} - m_RootOrder: 15 + m_Children: [] + m_Father: {fileID: 4000012758470188} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010882293456 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011622452938} - m_Mesh: {fileID: 4300000, guid: b78271332916ed14da90a2894e22e012, type: 3} ---- !u!23 &23000010524948804 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.875, y: 0.503} + m_SizeDelta: {x: 1.7469866, y: 0.9611659} + m_Pivot: {x: 0, y: 1} +--- !u!23 &23000014001274338 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011622452938} + m_GameObject: {fileID: 1000012918130662} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6405,49 +5615,119 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000010333358966 -BoxCollider: +--- !u!33 &33000011988818744 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011622452938} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.12, y: 0.73, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114000011006960986 + m_GameObject: {fileID: 1000012918130662} + m_Mesh: {fileID: 0} +--- !u!114 &114000010157185962 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011622452938} + m_GameObject: {fileID: 1000012918130662} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Featured Sketches - m_DescriptionTextExtra: From the Internet - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: 78bb99e2fe13ca44d9d0b4ab7882f4ce, type: 3} - m_AtlasTexture: 0 - m_ToggleButton: 1 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.04 - m_ZAdjustClick: 0 - m_HoverScale: 1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_ButtonType: 5 ---- !u!1 &1000011692107830 + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Retrieving + + sketches... + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4288059030 + m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.8 + m_fontSizeBase: 1.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 258 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -24.8 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 23000014001274338} + m_maskType: 0 +--- !u!222 &222469015342790522 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012918130662} + m_CullTransparentMesh: 0 +--- !u!1 &1000013171469736 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6455,79 +5735,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013454894384} + - component: {fileID: 4000013753592404} + - component: {fileID: 33000010406950982} + - component: {fileID: 23000011647786516} m_Layer: 16 - m_Name: BlocksLibraryPopupMesh + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000013454894384 +--- !u!4 &4000013753592404 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011692107830} + m_GameObject: {fileID: 1000013171469736} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000010769280002} - - {fileID: 4000012312614358} - m_Father: {fileID: 4000013760615668} - m_RootOrder: 3 + m_Children: [] + m_Father: {fileID: 4000011225904734} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1000011797134698 -GameObject: +--- !u!33 &33000010406950982 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4000012956736620} - - component: {fileID: 33000011351091714} - - component: {fileID: 23000010144209866} - m_Layer: 16 - m_Name: TopBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000012956736620 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011797134698} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} - m_LocalScale: {x: 1, y: 0.02857143, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000014044617982} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011351091714 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011797134698} + m_GameObject: {fileID: 1000013171469736} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010144209866 +--- !u!23 &23000011647786516 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011797134698} + m_GameObject: {fileID: 1000013171469736} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6563,7 +5810,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000011835935838 +--- !u!1 &1000013208288780 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6571,54 +5818,75 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012758470188} - - component: {fileID: 23000010716088472} + - component: {fileID: 4000012865260200} + - component: {fileID: 33000012686066634} + - component: {fileID: 64000013419342136} + - component: {fileID: 23000014182572166} m_Layer: 16 - m_Name: ContactingServer + m_Name: ConfirmButtonBG m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012758470188 + m_IsActive: 1 +--- !u!4 &4000012865260200 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011835935838} + m_GameObject: {fileID: 1000013208288780} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.05999999} + m_LocalScale: {x: 2, y: 1, z: 0.8783332} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 224000014101254652} - - {fileID: 4000010399852960} - - {fileID: 4000013175241986} - m_Father: {fileID: 473678} - m_RootOrder: 35 + m_Children: [] + m_Father: {fileID: 4000010586237508} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000010716088472 +--- !u!33 &33000012686066634 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013208288780} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &64000013419342136 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013208288780} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000014182572166 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000011835935838} + m_GameObject: {fileID: 1000013208288780} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 39d7053101c6e8e4b8d692eddc65d2b2, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6627,7 +5895,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -6640,7 +5908,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012110338046 +--- !u!1 &1000013281891730 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6648,48 +5916,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012910955364} - - component: {fileID: 33000012807620068} - - component: {fileID: 23000012957518724} - - component: {fileID: 65000011627801668} - - component: {fileID: 114866655278054368} + - component: {fileID: 4000013013276346} + - component: {fileID: 33000010839572548} + - component: {fileID: 23000010888086858} m_Layer: 16 - m_Name: MenuButton + m_Name: SketchbookLeftColumn m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012910955364 + m_IsActive: 1 +--- !u!4 &4000013013276346 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012110338046} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1000013281891730} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 461906} - m_RootOrder: 0 + m_Father: {fileID: 4000012925136122} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012807620068 +--- !u!33 &33000010839572548 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012110338046} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012957518724 + m_GameObject: {fileID: 1000013281891730} + m_Mesh: {fileID: 4300000, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} +--- !u!23 &23000010888086858 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012110338046} + m_GameObject: {fileID: 1000013281891730} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6703,7 +5969,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 8fe8230ee7ae32a4eb7fe6d5df34ebd4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6712,7 +5978,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -6725,48 +5991,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000011627801668 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012110338046} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114866655278054368 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012110338046} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000012149669276 +--- !u!1 &1000013345196914 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6774,46 +5999,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013563491830} - - component: {fileID: 33000010883985424} - - component: {fileID: 23000012392550902} + - component: {fileID: 4000011225904734} + - component: {fileID: 33000010676958356} + - component: {fileID: 23000011105810680} m_Layer: 16 - m_Name: BottomBorder + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000013563491830 + m_IsActive: 0 +--- !u!4 &4000011225904734 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012149669276} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_GameObject: {fileID: 1000013345196914} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} + m_LocalScale: {x: 4.5714283, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000011225904734} - m_RootOrder: 1 + m_Children: + - {fileID: 4000013753592404} + - {fileID: 4000013563491830} + m_Father: {fileID: 4000010470004098} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010883985424 +--- !u!33 &33000010676958356 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012149669276} + m_GameObject: {fileID: 1000013345196914} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012392550902 +--- !u!23 &23000011105810680 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012149669276} + m_GameObject: {fileID: 1000013345196914} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6827,7 +6054,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6849,7 +6076,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012311522496 +--- !u!1 &1000013409032268 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6857,60 +6084,93 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010013684490} - - component: {fileID: 33000012851111020} - - component: {fileID: 23000011541119754} + - component: {fileID: 4000013175241986} m_Layer: 16 - m_Name: BottomBorder + m_Name: BlocksLibraryPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010013684490 +--- !u!4 &4000013175241986 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012311522496} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} - m_LocalScale: {x: 1, y: 0.028571432, z: 1} + m_GameObject: {fileID: 1000013409032268} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4000012486041186} + - {fileID: 4000013191658744} + m_Father: {fileID: 4000012758470188} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1000013456164478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000013191658744} + - component: {fileID: 33000013506293760} + - component: {fileID: 23000011010906374} + m_Layer: 16 + m_Name: PopupBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000013191658744 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013456164478} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000014044617982} + m_Father: {fileID: 4000013175241986} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012851111020 +--- !u!33 &33000013506293760 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012311522496} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011541119754 + m_GameObject: {fileID: 1000013456164478} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000011010906374 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012311522496} + m_GameObject: {fileID: 1000013456164478} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6932,7 +6192,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012495519762 +--- !u!1 &1000013652916002 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6940,48 +6200,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000014044617982} - - component: {fileID: 33000013472049802} - - component: {fileID: 23000010645622776} + - component: {fileID: 4000012873944384} + - component: {fileID: 23000012533341368} + - component: {fileID: 102000012815524228} m_Layer: 16 - m_Name: Background + m_Name: NoSketchesMessage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 ---- !u!4 &4000014044617982 +--- !u!4 &4000012873944384 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012495519762} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} - m_LocalScale: {x: 1.7142856, y: 1, z: 1} + m_GameObject: {fileID: 1000013652916002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.24, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000012956736620} - - {fileID: 4000010013684490} - m_Father: {fileID: 4000010470004098} - m_RootOrder: 0 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 23 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013472049802 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012495519762} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010645622776 +--- !u!23 &23000012533341368 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012495519762} + m_GameObject: {fileID: 1000013652916002} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -6995,7 +6245,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7017,7 +6267,31 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012517480522 +--- !u!102 &102000012815524228 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013652916002} + m_Text: 'No saved + + sketches' + m_OffsetZ: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.72 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1000013782811050 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7025,62 +6299,64 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011053558040} - - component: {fileID: 33000013108224718} - - component: {fileID: 23000012855354006} - - component: {fileID: 65000012780326052} - - component: {fileID: 114323545490698212} + - component: {fileID: 4000010586237508} + - component: {fileID: 33000013863582604} + - component: {fileID: 23000010413877198} + - component: {fileID: 65000013112234484} + - component: {fileID: 114000010491166222} m_Layer: 16 - m_Name: MenuButton + m_Name: PopUpButton_GotIt m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011053558040 + m_IsActive: 1 +--- !u!4 &4000010586237508 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012517480522} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1000013782811050} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.44, z: -0.054} + m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 408880} - m_RootOrder: 0 + m_Children: + - {fileID: 4000011602742270} + - {fileID: 4000012865260200} + m_Father: {fileID: 4000013760615668} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013108224718 +--- !u!33 &33000013863582604 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012517480522} + m_GameObject: {fileID: 1000013782811050} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012855354006 +--- !u!23 &23000010413877198 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012517480522} - m_Enabled: 1 + m_GameObject: {fileID: 1000013782811050} + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7089,7 +6365,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -7102,29 +6378,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000012780326052 +--- !u!65 &65000013112234484 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012517480522} + m_GameObject: {fileID: 1000013782811050} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} + m_Size: {x: 2, y: 1, z: 0.01} m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114323545490698212 +--- !u!114 &114000010491166222 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012517480522} + m_GameObject: {fileID: 1000013782811050} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} m_Name: m_EditorClassIdentifier: m_DescriptionType: -1 @@ -7133,17 +6409,28 @@ MonoBehaviour: m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} + m_ButtonTexture: {fileID: 0} m_AtlasTexture: 1 m_ToggleButton: 0 m_LongPressReleaseButton: 0 m_ButtonHasPressedAudio: 1 m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 ---- !u!1 &1000012586849750 + m_Command: 50 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} +--- !u!1 &1000013804988808 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7151,53 +6438,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011114460008} - - component: {fileID: 23000010319935078} + - component: {fileID: 4000014046535472} + - component: {fileID: 33000011914095804} + - component: {fileID: 23000012709485446} m_Layer: 16 - m_Name: OutOfDate + m_Name: SketchbookBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011114460008 + m_IsActive: 1 +--- !u!4 &4000014046535472 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012586849750} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1000013804988808} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4032955052552346} - - {fileID: 4000013868811186} - m_Father: {fileID: 473678} - m_RootOrder: 39 + m_Children: [] + m_Father: {fileID: 4000012925136122} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000010319935078 +--- !u!33 &33000011914095804 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013804988808} + m_Mesh: {fileID: 4300004, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} +--- !u!23 &23000012709485446 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012586849750} + m_GameObject: {fileID: 1000013804988808} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7219,7 +6513,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012616600414 +--- !u!1 &1000013953183086 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7227,52 +6521,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011602742270} - - component: {fileID: 23000012840096384} - - component: {fileID: 102000012064194272} + - component: {fileID: 4000010769280002} + - component: {fileID: 33000014113340520} + - component: {fileID: 23000011453653706} m_Layer: 16 - m_Name: Ok + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000011602742270 +--- !u!4 &4000010769280002 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012616600414} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.277, y: 0, z: -0.02933333} - m_LocalScale: {x: 5.905732, y: 5.905732, z: 2.952866} + m_GameObject: {fileID: 1000013953183086} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000010586237508} + m_Father: {fileID: 4000013454894384} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000012840096384 +--- !u!33 &33000014113340520 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013953183086} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23000011453653706 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012616600414} + m_GameObject: {fileID: 1000013953183086} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7294,29 +6596,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000012064194272 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012616600414} - m_Text: OPEN - m_OffsetZ: 0 - m_CharacterSize: 0.01 - m_LineSpacing: 0.75 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1000012646663936 +--- !u!1 &1003691897808460 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7324,48 +6604,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013461333742} - - component: {fileID: 33000010800557860} - - component: {fileID: 23000013629219680} - - component: {fileID: 65000013064704980} - - component: {fileID: 114549399520814884} + - component: {fileID: 4160166080439610} + - component: {fileID: 33682943879407966} + - component: {fileID: 23285029018001180} m_Layer: 16 - m_Name: MenuButton + m_Name: NewSketchBack m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000013461333742 + m_IsActive: 1 +--- !u!4 &4160166080439610 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012646663936} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1003691897808460} + m_LocalRotation: {x: -0, y: 0.7073474, z: 0.7068661, w: 0} + m_LocalPosition: {x: 0, y: 0, z: 0.01} + m_LocalScale: {x: 95.2381, y: 100, z: 40.000046} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 493402} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010800557860 + m_Father: {fileID: 4604395735417884} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: -89.961006, y: 180, z: 0} +--- !u!33 &33682943879407966 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012646663936} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000013629219680 + m_GameObject: {fileID: 1003691897808460} + m_Mesh: {fileID: 4300000, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} +--- !u!23 &23285029018001180 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012646663936} + m_GameObject: {fileID: 1003691897808460} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7379,7 +6657,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7388,7 +6666,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -7401,111 +6679,60 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000013064704980 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012646663936} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114549399520814884 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012646663936} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000012671655106 -GameObject: +--- !u!1 &1041581295466488 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012999570806} - - component: {fileID: 33000013219408624} - - component: {fileID: 23000012385250744} - - component: {fileID: 65000011042381794} - - component: {fileID: 114871902584000098} + - component: {fileID: 4522282957815948} + - component: {fileID: 23073115017278414} + - component: {fileID: 102499556142731132} m_Layer: 16 - m_Name: MenuButton + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012999570806 + m_IsActive: 1 +--- !u!4 &4522282957815948 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012671655106} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.4113, y: -0.4082, z: -0.05} - m_LocalScale: {x: 0.26, y: 0.26, z: 0.55} + m_GameObject: {fileID: 1041581295466488} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 411214} + m_Father: {fileID: 4405259647245308} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013219408624 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012671655106} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012385250744 +--- !u!23 &23073115017278414 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012671655106} + m_GameObject: {fileID: 1041581295466488} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7514,7 +6741,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -7527,48 +6754,31 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000011042381794 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012671655106} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114871902584000098 -MonoBehaviour: +--- !u!102 &102499556142731132 +TextMesh: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012671655106} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000012741200280 + m_GameObject: {fileID: 1041581295466488} + m_Text: 'Sign in to access + + Poly sketches' + m_OffsetZ: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.85 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 36 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1147890328312932 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7576,61 +6786,53 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010399852960} - - component: {fileID: 33000010754946242} - - component: {fileID: 23000013719367618} - - component: {fileID: 114000012014155796} + - component: {fileID: 4405002968423422} + - component: {fileID: 23762962104057700} m_Layer: 16 - m_Name: AnimIcon + m_Name: ShowcaseError m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000010399852960 + m_IsActive: 0 +--- !u!4 &4405002968423422 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012741200280} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.337, z: -0.025} - m_LocalScale: {x: 0.45, y: 0.45, z: 0.45} + m_GameObject: {fileID: 1147890328312932} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000012758470188} - m_RootOrder: 1 + m_Children: + - {fileID: 224259994149328172} + - {fileID: 4299097812957920} + m_Father: {fileID: 473678} + m_RootOrder: 27 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010754946242 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012741200280} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000013719367618 +--- !u!23 &23762962104057700 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012741200280} + m_GameObject: {fileID: 1147890328312932} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7dd436b1e98554d4daef5bc9d1eeaae9, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7639,7 +6841,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -7652,20 +6854,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &114000012014155796 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012741200280} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e0278ab0b9144784db8dad7f91bd1d11, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Speed: -180 ---- !u!1 &1000012752427380 +--- !u!1 &1157290024452308 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7673,48 +6862,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012287575696} - - component: {fileID: 33000013646666634} - - component: {fileID: 23000012322681054} - - component: {fileID: 65000011224016396} - - component: {fileID: 114362806798608418} + - component: {fileID: 4776209461862024} + - component: {fileID: 33340641278957148} + - component: {fileID: 23196893736027008} m_Layer: 16 - m_Name: MenuButton + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012287575696 + m_IsActive: 1 +--- !u!4 &4776209461862024 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012752427380} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1157290024452308} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 406124} + m_Father: {fileID: 4299097812957920} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013646666634 +--- !u!33 &33340641278957148 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012752427380} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012322681054 + m_GameObject: {fileID: 1157290024452308} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23196893736027008 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012752427380} + m_GameObject: {fileID: 1157290024452308} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -7728,7 +6915,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7737,7 +6924,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -7750,48 +6937,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000011224016396 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012752427380} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114362806798608418 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012752427380} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000012812392858 +--- !u!1 &1165898094550002 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7799,60 +6945,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011886445864} - - component: {fileID: 33000012714006372} - - component: {fileID: 23000011473763406} + - component: {fileID: 4393356585195150} + - component: {fileID: 23886380444155872} + - component: {fileID: 102610625472293180} m_Layer: 16 - m_Name: PopupBorder + m_Name: TextLine m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000011886445864 +--- !u!4 &4393356585195150 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012812392858} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1165898094550002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.509, y: 1.084, z: -0.002} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013868811186} + m_Father: {fileID: 473678} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012714006372 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012812392858} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000011473763406 +--- !u!23 &23886380444155872 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012812392858} + m_GameObject: {fileID: 1165898094550002} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7874,7 +7012,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000012918130662 +--- !u!102 &102610625472293180 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1165898094550002} + m_Text: Your Sketches + m_OffsetZ: 0 + m_CharacterSize: 0.025 + m_LineSpacing: 1 + m_Anchor: 0 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 56 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1178598216715188 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -7882,59 +7042,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 224000014101254652} - - component: {fileID: 23000014001274338} - - component: {fileID: 33000011988818744} - - component: {fileID: 114000010157185962} - - component: {fileID: 222469015342790522} + - component: {fileID: 4757857785376650} + - component: {fileID: 23872249293856394} + - component: {fileID: 102911170989384496} m_Layer: 16 - m_Name: Text + m_Name: Signin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &224000014101254652 -RectTransform: +--- !u!4 &4757857785376650 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012918130662} + m_GameObject: {fileID: 1178598216715188} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.019999996} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} + m_LocalScale: {x: 4, y: 4, z: 2.857143} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000012758470188} + m_Father: {fileID: 4227232315394708} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -0.875, y: 0.503} - m_SizeDelta: {x: 1.7469866, y: 0.9611659} - m_Pivot: {x: 0, y: 1} ---- !u!23 &23000014001274338 +--- !u!23 &23872249293856394 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012918130662} + m_GameObject: {fileID: 1178598216715188} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7956,119 +7109,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &33000011988818744 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012918130662} - m_Mesh: {fileID: 0} ---- !u!114 &114000010157185962 -MonoBehaviour: +--- !u!102 &102911170989384496 +TextMesh: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012918130662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: 'Retrieving - - sketches... - -' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4288059030 - m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: 0 - m_overrideHtmlColors: 0 - m_faceColor: + m_GameObject: {fileID: 1178598216715188} + m_Text: SIGN IN + m_OffsetZ: 0 + m_CharacterSize: 0.02 + m_LineSpacing: 1 + m_Anchor: 6 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 43 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 1.8 - m_fontSizeBase: 1.8 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 258 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: -24.8 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 0 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 1 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 23000014001274338} - m_maskType: 0 ---- !u!222 &222469015342790522 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000012918130662} - m_CullTransparentMesh: 0 ---- !u!1 &1000013014429140 +--- !u!1 &1227842993942742 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8076,48 +7139,65 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013478852842} - - component: {fileID: 33000011491718626} - - component: {fileID: 23000012842220818} - - component: {fileID: 65000014294663134} - - component: {fileID: 114195161851537796} + - component: {fileID: 4604395735417884} + - component: {fileID: 65181151135621986} + - component: {fileID: 33728303746786244} + - component: {fileID: 23143898185668198} + - component: {fileID: 114825227411066042} m_Layer: 16 - m_Name: MenuButton + m_Name: NewSketchButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000013478852842 + m_IsActive: 1 +--- !u!4 &4604395735417884 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013014429140} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1227842993942742} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.65, y: 0, z: 0} + m_LocalScale: {x: 1.05, y: 2.5, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 474082} - m_RootOrder: 0 + m_Children: + - {fileID: 4834806845115958} + - {fileID: 4252546109650552} + - {fileID: 4160166080439610} + - {fileID: 4088058456074744} + m_Father: {fileID: 473678} + m_RootOrder: 32 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011491718626 +--- !u!65 &65181151135621986 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1227842993942742} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 0.02} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &33728303746786244 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013014429140} + m_GameObject: {fileID: 1227842993942742} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000012842220818 +--- !u!23 &23143898185668198 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013014429140} + m_GameObject: {fileID: 1227842993942742} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8131,7 +7211,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: 5cdfd862a108c5143bf9590e2261bfa8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8140,7 +7220,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8153,29 +7233,16 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000014294663134 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013014429140} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114195161851537796 +--- !u!114 &114825227411066042 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013014429140} + m_GameObject: {fileID: 1227842993942742} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} + m_Script: {fileID: 11500000, guid: e671d005f5b41df4f8e5776601c1609f, type: 3} m_Name: m_EditorClassIdentifier: m_DescriptionType: -1 @@ -8184,78 +7251,91 @@ MonoBehaviour: m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} + m_ButtonTexture: {fileID: 0} m_AtlasTexture: 1 m_ToggleButton: 0 m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 + m_ButtonHasPressedAudio: 0 + m_ZAdjustHover: -0.0001 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.05 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 ---- !u!1 &1000013171469736 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} + m_Command: 4 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + m_AdjustDistanceAmount: 1 + m_NewSketchButtonBG: {fileID: 23829150869085828} +--- !u!1 &1329085538968134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013753592404} - - component: {fileID: 33000010406950982} - - component: {fileID: 23000011647786516} + - component: {fileID: 4434180684794314} + - component: {fileID: 33281479349217826} + - component: {fileID: 23653853174322732} m_Layer: 16 - m_Name: TopBorder + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000013753592404 +--- !u!4 &4434180684794314 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013171469736} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_GameObject: {fileID: 1329085538968134} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000011225904734} + m_Father: {fileID: 4572210679967688} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010406950982 +--- !u!33 &33281479349217826 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013171469736} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011647786516 + m_GameObject: {fileID: 1329085538968134} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23653853174322732 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013171469736} + m_GameObject: {fileID: 1329085538968134} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8277,7 +7357,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013208288780 +--- !u!1 &1336920247228296 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8285,61 +7365,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012865260200} - - component: {fileID: 33000012686066634} - - component: {fileID: 64000013419342136} - - component: {fileID: 23000014182572166} + - component: {fileID: 4299019526169640} + - component: {fileID: 33306568108413466} + - component: {fileID: 23516625510131908} m_Layer: 16 - m_Name: ConfirmButtonBG + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012865260200 +--- !u!4 &4299019526169640 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013208288780} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.05999999} - m_LocalScale: {x: 2, y: 1, z: 0.8783332} + m_GameObject: {fileID: 1336920247228296} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000010586237508} + m_Father: {fileID: 4299097812957920} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012686066634 +--- !u!33 &33306568108413466 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013208288780} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!64 &64000013419342136 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013208288780} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000014182572166 + m_GameObject: {fileID: 1336920247228296} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23516625510131908 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013208288780} + m_GameObject: {fileID: 1336920247228296} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8353,7 +7418,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 39d7053101c6e8e4b8d692eddc65d2b2, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8362,7 +7427,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8375,7 +7440,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013281891730 +--- !u!1 &1352538921561852 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8383,46 +7448,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013013276346} - - component: {fileID: 33000010839572548} - - component: {fileID: 23000010888086858} + - component: {fileID: 4594768142946388} + - component: {fileID: 33291731134228232} + - component: {fileID: 23113948110040164} m_Layer: 16 - m_Name: SketchbookLeftColumn + m_Name: Quad m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000013013276346 +--- !u!4 &4594768142946388 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013281891730} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1352538921561852} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.65, y: 0.65, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000012925136122} - m_RootOrder: 2 + m_Father: {fileID: 4653590090589872} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010839572548 +--- !u!33 &33291731134228232 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013281891730} - m_Mesh: {fileID: 4300000, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} ---- !u!23 &23000010888086858 + m_GameObject: {fileID: 1352538921561852} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23113948110040164 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013281891730} + m_GameObject: {fileID: 1352538921561852} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8436,7 +7501,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8fe8230ee7ae32a4eb7fe6d5df34ebd4, type: 2} + - {fileID: 2100000, guid: 0d7eb02b18ffb4c419fb75924cb900dc, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8445,7 +7510,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8458,7 +7523,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013345196914 +--- !u!1 &1357195914620088 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8466,62 +7531,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011225904734} - - component: {fileID: 33000010676958356} - - component: {fileID: 23000011105810680} + - component: {fileID: 4908000352793634} + - component: {fileID: 33408476018355782} + - component: {fileID: 23228715770772510} m_Layer: 16 - m_Name: Background + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011225904734 + m_IsActive: 1 +--- !u!4 &4908000352793634 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013345196914} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} - m_LocalScale: {x: 4.5714283, y: 1, z: 1} + m_GameObject: {fileID: 1357195914620088} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000013753592404} - - {fileID: 4000013563491830} - m_Father: {fileID: 4000010470004098} - m_RootOrder: 2 + m_Children: [] + m_Father: {fileID: 4572210679967688} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000010676958356 +--- !u!33 &33408476018355782 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013345196914} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011105810680 + m_GameObject: {fileID: 1357195914620088} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &23228715770772510 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013345196914} + m_GameObject: {fileID: 1357195914620088} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8543,7 +7606,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013409032268 +--- !u!1 &1367255127373718 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8551,93 +7614,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000013175241986} + - component: {fileID: 4834806845115958} + - component: {fileID: 23314464775903874} + - component: {fileID: 102373028218004392} m_Layer: 16 - m_Name: BlocksLibraryPopupMesh + m_Name: TextLine m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000013175241986 +--- !u!4 &4834806845115958 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013409032268} + m_GameObject: {fileID: 1367255127373718} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000012486041186} - - {fileID: 4000013191658744} - m_Father: {fileID: 4000012758470188} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1000013456164478 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4000013191658744} - - component: {fileID: 33000013506293760} - - component: {fileID: 23000011010906374} - m_Layer: 16 - m_Name: PopupBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000013191658744 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013456164478} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0, y: 0.46000004, z: -0.002} + m_LocalScale: {x: 0.95238096, y: 0.4, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013175241986} - m_RootOrder: 1 + m_Father: {fileID: 4604395735417884} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013506293760 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013456164478} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000011010906374 +--- !u!23 &23314464775903874 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013456164478} + m_GameObject: {fileID: 1367255127373718} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8659,56 +7681,75 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013560234246 -GameObject: +--- !u!102 &102373028218004392 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1367255127373718} + m_Text: New Sketch + m_OffsetZ: 0 + m_CharacterSize: 0.027 + m_LineSpacing: 1 + m_Anchor: 1 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1398843787414576 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012616996494} - - component: {fileID: 33000012247514248} - - component: {fileID: 23000011953218240} - - component: {fileID: 65000010553515128} - - component: {fileID: 114244469609186990} + - component: {fileID: 224259994149328172} + - component: {fileID: 23402643382222860} + - component: {fileID: 33829677418357686} + - component: {fileID: 114268548082608368} + - component: {fileID: 222820159282912654} m_Layer: 16 - m_Name: MenuButton + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012616996494 -Transform: + m_IsActive: 1 +--- !u!224 &224259994149328172 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013560234246} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1398843787414576} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 401916} + m_Father: {fileID: 4405002968423422} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012247514248 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013560234246} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000011953218240 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.000000014901161, y: 0} + m_SizeDelta: {x: 1.104868, y: 1.4460607} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &23402643382222860 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013560234246} + m_GameObject: {fileID: 1398843787414576} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8722,7 +7763,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8731,7 +7772,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8744,48 +7785,120 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000010553515128 -BoxCollider: +--- !u!33 &33829677418357686 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013560234246} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114244469609186990 + m_GameObject: {fileID: 1398843787414576} + m_Mesh: {fileID: 0} +--- !u!114 &114268548082608368 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013560234246} + m_GameObject: {fileID: 1398843787414576} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000013652916002 + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Error gathering sketches from Poly + + + + How''s + your Internet?' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4288059030 + m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 514 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -30 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 23402643382222860} + m_maskType: 0 +--- !u!222 &222820159282912654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398843787414576} + m_CullTransparentMesh: 0 +--- !u!1 &1585279513007384 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8793,52 +7906,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012873944384} - - component: {fileID: 23000012533341368} - - component: {fileID: 102000012815524228} + - component: {fileID: 4483479252455118} + - component: {fileID: 33595363077444256} + - component: {fileID: 23894264309938392} m_Layer: 16 - m_Name: NoSketchesMessage + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012873944384 + m_IsActive: 1 +--- !u!4 &4483479252455118 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} + m_GameObject: {fileID: 1585279513007384} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.05} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 32 + m_Father: {fileID: 4227232315394708} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000012533341368 +--- !u!33 &33595363077444256 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1585279513007384} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23894264309938392 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} + m_GameObject: {fileID: 1585279513007384} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 0ead8b8e224bcf040862605f5eed7211, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8847,7 +7968,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8860,31 +7981,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000012815524228 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} - m_Text: 'No saved - - sketches' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1000013664674502 +--- !u!1 &1593948112818424 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8892,48 +7989,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011500092316} - - component: {fileID: 33000012106556998} - - component: {fileID: 23000010465273940} - - component: {fileID: 65000010232623016} - - component: {fileID: 114635763778407954} + - component: {fileID: 4088058456074744} + - component: {fileID: 33685971061773632} + - component: {fileID: 23829150869085828} m_Layer: 16 - m_Name: MenuButton + m_Name: NewSketchBG m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000011500092316 + m_IsActive: 1 +--- !u!4 &4088058456074744 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013664674502} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.3, y: -0.25, z: -0.05} - m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_GameObject: {fileID: 1593948112818424} + m_LocalRotation: {x: -0.7068661, y: 0, z: 0, w: 0.7073474} + m_LocalPosition: {x: 0.00000011353266, y: 0, z: 0.005} + m_LocalScale: {x: 95.2381, y: 100.000046, z: 40.000057} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 473330} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000012106556998 + m_Father: {fileID: 4604395735417884} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: -89.961006, y: 0, z: 0} +--- !u!33 &33685971061773632 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013664674502} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010465273940 + m_GameObject: {fileID: 1593948112818424} + m_Mesh: {fileID: 4300000, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} +--- !u!23 &23829150869085828 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013664674502} + m_GameObject: {fileID: 1593948112818424} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -8947,7 +8042,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + - {fileID: 2100000, guid: b4ea4550a07ece74eaa39816d64e25c3, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8956,7 +8051,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -8969,48 +8064,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000010232623016 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013664674502} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.7, y: 1, z: 0.025} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114635763778407954 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013664674502} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.2 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 ---- !u!1 &1000013782811050 +--- !u!1 &1631327297680716 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9018,50 +8072,50 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010586237508} - - component: {fileID: 33000013863582604} - - component: {fileID: 23000010413877198} - - component: {fileID: 65000013112234484} - - component: {fileID: 114000010491166222} + - component: {fileID: 4227232315394708} + - component: {fileID: 33174227262776470} + - component: {fileID: 23170325807074218} + - component: {fileID: 114320826049526124} + - component: {fileID: 65396808301261166} m_Layer: 16 - m_Name: PopUpButton_GotIt + m_Name: Button_Login m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010586237508 +--- !u!4 &4227232315394708 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} + m_GameObject: {fileID: 1631327297680716} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.44, z: -0.054} + m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000011602742270} - - {fileID: 4000012865260200} - m_Father: {fileID: 4000013760615668} + - {fileID: 4757857785376650} + - {fileID: 4483479252455118} + m_Father: {fileID: 4405259647245308} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013863582604 +--- !u!33 &33174227262776470 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} + m_GameObject: {fileID: 1631327297680716} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010413877198 +--- !u!23 &23170325807074218 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} + m_GameObject: {fileID: 1631327297680716} m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -9075,7 +8129,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 5ba3c7f8df6e87543a356f17f88601fe, type: 2} + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9097,26 +8151,13 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65000013112234484 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2, y: 1, z: 0.01} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &114000010491166222 +--- !u!114 &114320826049526124 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} + m_GameObject: {fileID: 1631327297680716} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} @@ -9124,7 +8165,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: -1 m_DescriptionYOffset: 0 - m_DescriptionText: + m_DescriptionText: Sign out of Poly m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 @@ -9138,18 +8179,31 @@ MonoBehaviour: m_HoverScale: 1.1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 - m_Command: 50 - m_CommandParam: -1 + m_Command: 95 + m_CommandParam: 1 m_CommandParam2: -1 - m_RequiresPopup: 0 + m_RequiresPopup: 1 m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupOffset: {x: 0.24, y: 0, z: 0} m_PopupText: m_ToggleOnDescription: m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} ---- !u!1 &1000013804988808 +--- !u!65 &65396808301261166 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1631327297680716} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 2, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &1637582873204310 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9157,46 +8211,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000014046535472} - - component: {fileID: 33000011914095804} - - component: {fileID: 23000012709485446} + - component: {fileID: 4252546109650552} + - component: {fileID: 33530010535052012} + - component: {fileID: 23650157034878372} m_Layer: 16 - m_Name: SketchbookBorder + m_Name: NewSketchBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000014046535472 +--- !u!4 &4252546109650552 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013804988808} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1637582873204310} + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 95.2381, y: 99.99982, z: 39.999924} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000012925136122} + m_Father: {fileID: 4604395735417884} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000011914095804 +--- !u!33 &33530010535052012 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013804988808} - m_Mesh: {fileID: 4300004, guid: d84d90f974e4ad84fad7e02769b22f11, type: 3} ---- !u!23 &23000012709485446 + m_GameObject: {fileID: 1637582873204310} + m_Mesh: {fileID: 4300002, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} +--- !u!23 &23650157034878372 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013804988808} + m_GameObject: {fileID: 1637582873204310} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -9232,7 +8286,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013953183086 +--- !u!1 &1644973727690454 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9240,46 +8294,47 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000010769280002} - - component: {fileID: 33000014113340520} - - component: {fileID: 23000011453653706} + - component: {fileID: 4067235498706310} + - component: {fileID: 33567874645767864} + - component: {fileID: 23579533556926390} + - component: {fileID: 114182893473587560} m_Layer: 16 - m_Name: PopupBg + m_Name: LoadingGallery m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000010769280002 +--- !u!4 &4067235498706310 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013953183086} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 1644973727690454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} + m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000013454894384} - m_RootOrder: 0 + m_Father: {fileID: 473678} + m_RootOrder: 17 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000014113340520 +--- !u!33 &33567874645767864 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013953183086} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23000011453653706 + m_GameObject: {fileID: 1644973727690454} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23579533556926390 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013953183086} + m_GameObject: {fileID: 1644973727690454} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -9293,7 +8348,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: 7dd436b1e98554d4daef5bc9d1eeaae9, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9302,7 +8357,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -9315,7 +8370,20 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1003691897808460 +--- !u!114 &114182893473587560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1644973727690454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e0278ab0b9144784db8dad7f91bd1d11, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Speed: -180 +--- !u!1 &1672029381864338 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9323,60 +8391,87 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4160166080439610} - - component: {fileID: 33682943879407966} - - component: {fileID: 23285029018001180} + - component: {fileID: 4299097812957920} m_Layer: 16 - m_Name: NewSketchBack + m_Name: BlocksLibraryPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4160166080439610 +--- !u!4 &4299097812957920 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1003691897808460} - m_LocalRotation: {x: -0, y: 0.7073474, z: 0.7068661, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0.01} - m_LocalScale: {x: 95.2381, y: 100, z: 40.000046} + m_GameObject: {fileID: 1672029381864338} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4604395735417884} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: -89.961006, y: 180, z: 0} ---- !u!33 &33682943879407966 -MeshFilter: + m_Children: + - {fileID: 4776209461862024} + - {fileID: 4299019526169640} + m_Father: {fileID: 4405002968423422} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1676764474539712 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1003691897808460} - m_Mesh: {fileID: 4300000, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} ---- !u!23 &23285029018001180 -MeshRenderer: + serializedVersion: 6 + m_Component: + - component: {fileID: 4405259647245308} + - component: {fileID: 23211508628126822} + m_Layer: 16 + m_Name: NotLoggedInMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4405259647245308 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1003691897808460} + m_GameObject: {fileID: 1676764474539712} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4522282957815948} + - {fileID: 4227232315394708} + - {fileID: 4572210679967688} + m_Father: {fileID: 473678} + m_RootOrder: 28 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23211508628126822 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1676764474539712} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9398,7 +8493,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1023390386316022 +--- !u!1 &1685631667352684 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9406,60 +8501,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4648845093172990} - - component: {fileID: 33767155316608232} - - component: {fileID: 23277872400089690} + - component: {fileID: 4032955052552346} + - component: {fileID: 23917627250300364} + - component: {fileID: 102687011017508858} m_Layer: 16 - m_Name: Warning + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4648845093172990 +--- !u!4 &4032955052552346 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1023390386316022} + m_GameObject: {fileID: 1685631667352684} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.29999998, y: -0.2999997, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 474082} - m_RootOrder: 1 + m_Father: {fileID: 4000011114460008} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33767155316608232 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1023390386316022} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23277872400089690 +--- !u!23 &23917627250300364 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1023390386316022} + m_GameObject: {fileID: 1685631667352684} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9468,7 +8555,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -9481,7 +8568,37 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1037653607876102 +--- !u!102 &102687011017508858 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685631667352684} + m_Text: 'Poly was shut down + + on 2021/06/30 + + + Icosa Gallery support + + coming + soon!' + m_OffsetZ: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.72 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 36 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &1718400279081948 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9489,49 +8606,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4758236918301830} - - component: {fileID: 33256049024245930} - - component: {fileID: 23080108550709402} + - component: {fileID: 4485662548378186} + - component: {fileID: 33957633259298626} + - component: {fileID: 23659469354840926} m_Layer: 16 - m_Name: Warning + m_Name: ExitButtonBackground m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4758236918301830 +--- !u!4 &4485662548378186 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1037653607876102} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.30000007, y: -0.29999998, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_GameObject: {fileID: 1718400279081948} + m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0.025} + m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4000010333377928} + m_Father: {fileID: 4653590090589872} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33256049024245930 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &33957633259298626 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1037653607876102} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23080108550709402 + m_GameObject: {fileID: 1718400279081948} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23659469354840926 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1037653607876102} + m_GameObject: {fileID: 1718400279081948} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 @@ -9542,7 +8659,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9564,7 +8681,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1041581295466488 +--- !u!1 &1838418458797118 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9572,98 +8689,32 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4522282957815948} - - component: {fileID: 23073115017278414} - - component: {fileID: 102499556142731132} + - component: {fileID: 4572210679967688} m_Layer: 16 - m_Name: Text + m_Name: PolyPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4522282957815948 +--- !u!4 &4572210679967688 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1041581295466488} + m_GameObject: {fileID: 1838418458797118} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 4434180684794314} + - {fileID: 4908000352793634} m_Father: {fileID: 4405259647245308} - m_RootOrder: 0 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23073115017278414 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1041581295466488} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102499556142731132 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1041581295466488} - m_Text: 'Sign in to access - - Poly sketches' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.85 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1063686457530790 +--- !u!1 &1839306045669634 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9671,60 +8722,64 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4192096235684524} - - component: {fileID: 33405629311793028} - - component: {fileID: 23964885390213338} + - component: {fileID: 4653590090589872} + - component: {fileID: 33573308757238834} + - component: {fileID: 23049653070262970} + - component: {fileID: 65086520363845836} + - component: {fileID: 114786666466332882} m_Layer: 16 - m_Name: Warning + m_Name: Button_ClosePopup m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4192096235684524 +--- !u!4 &4653590090589872 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063686457530790} + m_GameObject: {fileID: 1839306045669634} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.30000007, y: -0.3, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_LocalPosition: {x: 1.082, y: -1.252, z: -0.01} + m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 493402} - m_RootOrder: 1 + m_Children: + - {fileID: 4594768142946388} + - {fileID: 4485662548378186} + m_Father: {fileID: 473678} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33405629311793028 +--- !u!33 &33573308757238834 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063686457530790} + m_GameObject: {fileID: 1839306045669634} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23964885390213338 +--- !u!23 &23049653070262970 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1063686457530790} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_GameObject: {fileID: 1839306045669634} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 3c8ca511828182747a0b79564892ec57, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9733,7 +8788,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -9746,90 +8801,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1122766985615510 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4840805683560546} - - component: {fileID: 33373790172941974} - - component: {fileID: 23670557460008746} - m_Layer: 16 - m_Name: Warning - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4840805683560546 -Transform: +--- !u!65 &65086520363845836 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1122766985615510} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.30000007, y: -0.2999997, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 461906} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33373790172941974 -MeshFilter: + m_GameObject: {fileID: 1839306045669634} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.0000001, y: 1, z: 0.01} + m_Center: {x: 0, y: 0, z: -0.01} +--- !u!114 &114786666466332882 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1122766985615510} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23670557460008746 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1122766985615510} + m_GameObject: {fileID: 1839306045669634} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1147890328312932 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Close Sketchbook + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 42 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 0 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} +--- !u!1 &894190226255371916 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9837,39 +8861,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4405002968423422} - - component: {fileID: 23762962104057700} + - component: {fileID: 1119913004652199461} + - component: {fileID: 9181308231173954030} + - component: {fileID: 6267101527266830350} + - component: {fileID: 6571932979411263896} + - component: {fileID: 4188583716324234656} m_Layer: 16 - m_Name: ShowcaseError + m_Name: DriveFullButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4405002968423422 + m_IsActive: 1 +--- !u!4 &1119913004652199461 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1147890328312932} + m_GameObject: {fileID: 894190226255371916} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} + m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 224259994149328172} - - {fileID: 4299097812957920} + m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 36 + m_RootOrder: 22 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23762962104057700 +--- !u!33 &9181308231173954030 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894190226255371916} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6267101527266830350 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1147890328312932} + m_GameObject: {fileID: 894190226255371916} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -9883,7 +8916,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 9cad1001e55b6a34083acc3b00f3a2aa, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9905,7 +8938,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1157290024452308 +--- !u!65 &6571932979411263896 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894190226255371916} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &4188583716324234656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894190226255371916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Drive Backup Full + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 0 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 94 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} +--- !u!1 &915226954648437342 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9913,60 +8998,93 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4776209461862024} - - component: {fileID: 33340641278957148} - - component: {fileID: 23196893736027008} + - component: {fileID: 6471389067300543686} m_Layer: 16 - m_Name: PopupBg + m_Name: BlocksLibraryPopupMesh m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4776209461862024 +--- !u!4 &6471389067300543686 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1157290024452308} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 915226954648437342} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7463230845054887281} + - {fileID: 3442742383225157293} + m_Father: {fileID: 9117108218266893509} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1322492417976703408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5169543984843292650} + - component: {fileID: 2500334484848516744} + - component: {fileID: 6727792851652802458} + m_Layer: 16 + m_Name: BottomBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5169543984843292650 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322492417976703408} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} + m_LocalScale: {x: 1, y: 0.028571432, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4299097812957920} - m_RootOrder: 0 + m_Father: {fileID: 8668434879085770626} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33340641278957148 +--- !u!33 &2500334484848516744 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1157290024452308} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23196893736027008 + m_GameObject: {fileID: 1322492417976703408} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6727792851652802458 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1157290024452308} + m_GameObject: {fileID: 1322492417976703408} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9988,7 +9106,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1165898094550002 +--- !u!1 &2017844286305016362 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9996,38 +9114,38 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4393356585195150} - - component: {fileID: 23886380444155872} - - component: {fileID: 102610625472293180} + - component: {fileID: 8692506305276691177} + - component: {fileID: 2293314450001802957} + - component: {fileID: 690590041796884266} m_Layer: 16 - m_Name: TextLine + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4393356585195150 +--- !u!4 &8692506305276691177 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.509, y: 1.084, z: -0.002} + m_GameObject: {fileID: 2017844286305016362} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 1 + m_Father: {fileID: 1524240171334712824} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23886380444155872 +--- !u!23 &2293314450001802957 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} + m_GameObject: {fileID: 2017844286305016362} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -10063,29 +9181,31 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102610625472293180 +--- !u!102 &690590041796884266 TextMesh: serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} - m_Text: Your Sketches + m_GameObject: {fileID: 2017844286305016362} + m_Text: 'Sign in to access + + Google Drive' m_OffsetZ: 0 - m_CharacterSize: 0.025 - m_LineSpacing: 1 - m_Anchor: 0 - m_Alignment: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.85 + m_Anchor: 4 + m_Alignment: 1 m_TabSize: 4 - m_FontSize: 56 + m_FontSize: 36 m_FontStyle: 0 m_RichText: 1 m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} m_Color: serializedVersion: 2 rgba: 4294967295 ---- !u!1 &1178598216715188 +--- !u!1 &2158335996185070942 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10093,38 +9213,48 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4757857785376650} - - component: {fileID: 23872249293856394} - - component: {fileID: 102911170989384496} + - component: {fileID: 8773122714945324681} + - component: {fileID: 1248259070182587467} + - component: {fileID: 4322300826379264523} m_Layer: 16 - m_Name: Signin + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4757857785376650 + m_IsActive: 0 +--- !u!4 &8773122714945324681 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178598216715188} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} - m_LocalScale: {x: 4, y: 4, z: 2.857143} + m_GameObject: {fileID: 2158335996185070942} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} + m_LocalScale: {x: 4.5714283, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4227232315394708} - m_RootOrder: 0 + m_Children: + - {fileID: 8835613076674131173} + - {fileID: 1681593874138847941} + m_Father: {fileID: 7687396309078903398} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23872249293856394 +--- !u!33 &1248259070182587467 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2158335996185070942} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4322300826379264523 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178598216715188} + m_GameObject: {fileID: 2158335996185070942} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -10138,7 +9268,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10160,29 +9290,40 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102911170989384496 -TextMesh: - serializedVersion: 3 +--- !u!1 &2316682789993501927 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178598216715188} - m_Text: SIGN IN - m_OffsetZ: 0 - m_CharacterSize: 0.02 - m_LineSpacing: 1 - m_Anchor: 6 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 43 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1194264369200220 + serializedVersion: 6 + m_Component: + - component: {fileID: 1817565260503090077} + m_Layer: 16 + m_Name: PolyPopupMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1817565260503090077 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2316682789993501927} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1126899405721930507} + - {fileID: 2349666135276550853} + m_Father: {fileID: 1524240171334712824} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2564330845180575454 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10190,49 +9331,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4916153691783676} - - component: {fileID: 33315681194821888} - - component: {fileID: 23954081408954116} + - component: {fileID: 6818748104769445831} + - component: {fileID: 3786255149657314558} + - component: {fileID: 6799487165711865126} m_Layer: 16 - m_Name: Warning + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4916153691783676 +--- !u!4 &6818748104769445831 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1194264369200220} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.30000025, y: -0.29999998, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_GameObject: {fileID: 2564330845180575454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 476782} + m_Father: {fileID: 3702262655533381092} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33315681194821888 +--- !u!33 &3786255149657314558 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1194264369200220} + m_GameObject: {fileID: 2564330845180575454} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23954081408954116 +--- !u!23 &6799487165711865126 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1194264369200220} + m_GameObject: {fileID: 2564330845180575454} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 @@ -10243,7 +9384,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 0ead8b8e224bcf040862605f5eed7211, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10265,7 +9406,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1227842993942742 +--- !u!1 &2703159376926440640 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10273,79 +9414,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4604395735417884} - - component: {fileID: 65181151135621986} - - component: {fileID: 33728303746786244} - - component: {fileID: 23143898185668198} - - component: {fileID: 114825227411066042} + - component: {fileID: 2713655870301875666} + - component: {fileID: 6245471826573932768} + - component: {fileID: 3337417126575594132} m_Layer: 16 - m_Name: NewSketchButton + m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4604395735417884 +--- !u!4 &2713655870301875666 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1227842993942742} + m_GameObject: {fileID: 2703159376926440640} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -1.65, y: 0, z: 0} - m_LocalScale: {x: 1.05, y: 2.5, z: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4834806845115958} - - {fileID: 4252546109650552} - - {fileID: 4160166080439610} - - {fileID: 4088058456074744} - m_Father: {fileID: 473678} - m_RootOrder: 41 + m_Children: [] + m_Father: {fileID: 9117108218266893509} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &65181151135621986 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1227842993942742} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 0.02} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &33728303746786244 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1227842993942742} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23143898185668198 +--- !u!23 &6245471826573932768 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1227842993942742} + m_GameObject: {fileID: 2703159376926440640} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 5cdfd862a108c5143bf9590e2261bfa8, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10367,48 +9481,31 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &114825227411066042 -MonoBehaviour: +--- !u!102 &3337417126575594132 +TextMesh: + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1227842993942742} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e671d005f5b41df4f8e5776601c1609f, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 0 - m_ZAdjustHover: -0.0001 - m_ZAdjustClick: 0.05 - m_HoverScale: 1.05 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 4 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 0 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} - m_AdjustDistanceAmount: 1 - m_NewSketchButtonBG: {fileID: 23829150869085828} ---- !u!1 &1236945777315276 + m_GameObject: {fileID: 2703159376926440640} + m_Text: 'Error Connecting + + to Poly' + m_OffsetZ: 0 + m_CharacterSize: 0.04 + m_LineSpacing: 0.72 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 36 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &3489518439063806035 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10416,60 +9513,62 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4284873399471688} - - component: {fileID: 33461801393607834} - - component: {fileID: 23368292305140902} + - component: {fileID: 550194924522150295} + - component: {fileID: 3710666160644817266} + - component: {fileID: 254053543371224220} m_Layer: 16 - m_Name: Warning + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4284873399471688 + m_IsActive: 0 +--- !u!4 &550194924522150295 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236945777315276} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.29999998, y: -0.3, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_GameObject: {fileID: 3489518439063806035} + m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} + m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} + m_LocalScale: {x: 0.9142857, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 401916} - m_RootOrder: 1 + m_Children: + - {fileID: 321097991674213930} + - {fileID: 6474380007388265344} + m_Father: {fileID: 7687396309078903398} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33461801393607834 +--- !u!33 &3710666160644817266 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236945777315276} + m_GameObject: {fileID: 3489518439063806035} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23368292305140902 +--- !u!23 &254053543371224220 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1236945777315276} + m_GameObject: {fileID: 3489518439063806035} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10478,7 +9577,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -10491,7 +9590,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1329085538968134 +--- !u!1 &3543571790462569700 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10499,60 +9598,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4434180684794314} - - component: {fileID: 33281479349217826} - - component: {fileID: 23653853174322732} + - component: {fileID: 2539730209626117130} + - component: {fileID: 3584797028731175384} + - component: {fileID: 5005226965739046984} m_Layer: 16 - m_Name: PopupBg + m_Name: NoDriveSketchesMessage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4434180684794314 + m_IsActive: 0 +--- !u!4 &2539730209626117130 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329085538968134} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 3543571790462569700} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24000001, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4572210679967688} - m_RootOrder: 0 + m_Father: {fileID: 473678} + m_RootOrder: 24 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33281479349217826 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329085538968134} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23653853174322732 +--- !u!23 &3584797028731175384 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329085538968134} + m_GameObject: {fileID: 3543571790462569700} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10574,7 +9665,33 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1336920247228296 +--- !u!102 &5005226965739046984 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3543571790462569700} + m_Text: 'No Google Drive + + sketches + + available' + m_OffsetZ: 0 + m_CharacterSize: 0.03 + m_LineSpacing: 0.9 + m_Anchor: 4 + m_Alignment: 1 + m_TabSize: 4 + m_FontSize: 64 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &3711792098476514597 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10582,60 +9699,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4299019526169640} - - component: {fileID: 33306568108413466} - - component: {fileID: 23516625510131908} + - component: {fileID: 8235492235284656829} + - component: {fileID: 6232630873404181854} + - component: {fileID: 5317958202426579345} m_Layer: 16 - m_Name: PopupBorder + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4299019526169640 +--- !u!4 &8235492235284656829 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1336920247228296} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 3711792098476514597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} + m_LocalScale: {x: 1, y: 0.02857143, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4299097812957920} - m_RootOrder: 1 + m_Father: {fileID: 8668434879085770626} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33306568108413466 +--- !u!33 &6232630873404181854 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1336920247228296} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23516625510131908 + m_GameObject: {fileID: 3711792098476514597} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5317958202426579345 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1336920247228296} + m_GameObject: {fileID: 3711792098476514597} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10657,7 +9774,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1352538921561852 +--- !u!1 &3905048285009915507 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10665,60 +9782,94 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4594768142946388} - - component: {fileID: 33291731134228232} - - component: {fileID: 23113948110040164} + - component: {fileID: 7926938724112014635} m_Layer: 16 - m_Name: Quad + m_Name: SketchButtons m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4594768142946388 +--- !u!4 &7926938724112014635 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352538921561852} + m_GameObject: {fileID: 3905048285009915507} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.65, y: 0.65, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4653590090589872} - m_RootOrder: 0 + m_LocalPosition: {x: 0.24700001, y: -0.008, z: -0.03} + m_LocalScale: {x: 0.5228, y: 0.5228, z: 0.5228} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 7563266016153997774} + - {fileID: 4758480587321177956} + - {fileID: 3013292121896729076} + - {fileID: 785971507940366629} + - {fileID: 7544080359650103968} + - {fileID: 9165448599162238391} + - {fileID: 8431019797415831291} + - {fileID: 8816983120958852179} + - {fileID: 3610770556643259229} + - {fileID: 6118444763801524219} + m_Father: {fileID: 473678} + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33291731134228232 -MeshFilter: +--- !u!1 &4374687820491222719 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352538921561852} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23113948110040164 + serializedVersion: 6 + m_Component: + - component: {fileID: 9117108218266893509} + - component: {fileID: 3762244675612984118} + m_Layer: 16 + m_Name: NoPolyConnection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &9117108218266893509 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4374687820491222719} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2713655870301875666} + - {fileID: 6471389067300543686} + m_Father: {fileID: 473678} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &3762244675612984118 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352538921561852} + m_GameObject: {fileID: 4374687820491222719} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0d7eb02b18ffb4c419fb75924cb900dc, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10727,7 +9878,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -10740,7 +9891,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1353537369857522 +--- !u!1 &4611120767845027921 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10748,75 +9899,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4819910167133682} - - component: {fileID: 33552357186652048} - - component: {fileID: 64811554049219990} - - component: {fileID: 23962719988514430} + - component: {fileID: 1976086882343299162} + - component: {fileID: 7756061003300770718} + - component: {fileID: 7372446237649626914} m_Layer: 16 - m_Name: Warning + m_Name: Signin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4819910167133682 +--- !u!4 &1976086882343299162 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1353537369857522} + m_GameObject: {fileID: 4611120767845027921} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.30000004, y: -0.30000004, z: -0.04} - m_LocalScale: {x: 0.3, y: 0.3, z: 1} + m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} + m_LocalScale: {x: 4, y: 4, z: 2.857143} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 411214} - m_RootOrder: 1 + m_Father: {fileID: 3702262655533381092} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33552357186652048 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1353537369857522} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!64 &64811554049219990 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1353537369857522} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23962719988514430 +--- !u!23 &7756061003300770718 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1353537369857522} + m_GameObject: {fileID: 4611120767845027921} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10825,7 +9953,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -10838,7 +9966,29 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1357195914620088 +--- !u!102 &7372446237649626914 +TextMesh: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4611120767845027921} + m_Text: SIGN IN + m_OffsetZ: 0 + m_CharacterSize: 0.02 + m_LineSpacing: 1 + m_Anchor: 6 + m_Alignment: 0 + m_TabSize: 4 + m_FontSize: 43 + m_FontStyle: 0 + m_RichText: 1 + m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} + m_Color: + serializedVersion: 2 + rgba: 4294967295 +--- !u!1 &4778719595247149710 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10846,60 +9996,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4908000352793634} - - component: {fileID: 33408476018355782} - - component: {fileID: 23228715770772510} + - component: {fileID: 321097991674213930} + - component: {fileID: 6533685272076450346} + - component: {fileID: 8511952729671633760} m_Layer: 16 - m_Name: PopupBorder + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4908000352793634 +--- !u!4 &321097991674213930 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1357195914620088} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} + m_GameObject: {fileID: 4778719595247149710} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} + m_LocalScale: {x: 1, y: 0.028571434, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4572210679967688} - m_RootOrder: 1 + m_Father: {fileID: 550194924522150295} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33408476018355782 +--- !u!33 &6533685272076450346 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1357195914620088} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &23228715770772510 + m_GameObject: {fileID: 4778719595247149710} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8511952729671633760 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1357195914620088} + m_GameObject: {fileID: 4778719595247149710} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10921,7 +10071,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1367255127373718 +--- !u!1 &4987445825603729169 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10929,52 +10079,61 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4834806845115958} - - component: {fileID: 23314464775903874} - - component: {fileID: 102373028218004392} + - component: {fileID: 962364287279058834} + - component: {fileID: 2139868953206300193} + - component: {fileID: 6969350590622297653} + - component: {fileID: 3173506336687836476} m_Layer: 16 - m_Name: TextLine + m_Name: DriveSyncProgress m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4834806845115958 +--- !u!4 &962364287279058834 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.46000004, z: -0.002} - m_LocalScale: {x: 0.95238096, y: 0.4, z: 1} + m_GameObject: {fileID: 4987445825603729169} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4604395735417884} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23314464775903874 + m_Father: {fileID: 473678} + m_RootOrder: 18 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} +--- !u!33 &2139868953206300193 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4987445825603729169} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6969350590622297653 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} + m_GameObject: {fileID: 4987445825603729169} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: a2a12f534cd6cef4d8302066eaa81c25, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10983,7 +10142,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -10996,29 +10155,19 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102373028218004392 -TextMesh: - serializedVersion: 3 +--- !u!114 &3173506336687836476 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} - m_Text: New Sketch - m_OffsetZ: 0 - m_CharacterSize: 0.027 - m_LineSpacing: 1 - m_Anchor: 1 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1398843787414576 + m_GameObject: {fileID: 4987445825603729169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8daae932e00bdb749b4f667b08f50ca8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &5708433634109880750 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11026,45 +10175,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 224259994149328172} - - component: {fileID: 23402643382222860} - - component: {fileID: 33829677418357686} - - component: {fileID: 114268548082608368} - - component: {fileID: 222820159282912654} + - component: {fileID: 7463230845054887281} + - component: {fileID: 7528090674439679421} + - component: {fileID: 4958408737088699452} m_Layer: 16 - m_Name: Text + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &224259994149328172 -RectTransform: +--- !u!4 &7463230845054887281 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.019999996} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 5708433634109880750} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4405002968423422} + m_Father: {fileID: 6471389067300543686} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -0.000000014901161, y: 0} - m_SizeDelta: {x: 1.104868, y: 1.4460607} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!23 &23402643382222860 +--- !u!33 &7528090674439679421 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5708433634109880750} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &4958408737088699452 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} + m_GameObject: {fileID: 5708433634109880750} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11078,7 +10228,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11100,120 +10250,84 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &33829677418357686 -MeshFilter: +--- !u!1 &6839353153389732464 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} - m_Mesh: {fileID: 0} ---- !u!114 &114268548082608368 -MonoBehaviour: + serializedVersion: 6 + m_Component: + - component: {fileID: 1524240171334712824} + - component: {fileID: 2320526944858906914} + m_Layer: 16 + m_Name: NotLoggedInDriveMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1524240171334712824 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} + m_GameObject: {fileID: 6839353153389732464} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8692506305276691177} + - {fileID: 3702262655533381092} + - {fileID: 1817565260503090077} + m_Father: {fileID: 473678} + m_RootOrder: 29 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2320526944858906914 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6839353153389732464} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: 'Error gathering sketches from Poly - - - - How''s - your Internet?' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4288059030 - m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: 0 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 1.5 - m_fontSizeBase: 1.5 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 514 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: -30 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 0 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 1 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 - m_hasFontAssetChanged: 0 - m_renderer: {fileID: 23402643382222860} - m_maskType: 0 ---- !u!222 &222820159282912654 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} - m_CullTransparentMesh: 0 ---- !u!1 &1585279513007384 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &6937020573975178444 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11221,60 +10335,62 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4483479252455118} - - component: {fileID: 33595363077444256} - - component: {fileID: 23894264309938392} + - component: {fileID: 3686855872783221364} + - component: {fileID: 2502232274484467176} + - component: {fileID: 7736865385011264558} + - component: {fileID: 2017034342578135502} + - component: {fileID: 6670325552642882511} m_Layer: 16 - m_Name: Background + m_Name: DriveEnabledButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4483479252455118 +--- !u!4 &3686855872783221364 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1585279513007384} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 1, z: 1} + m_GameObject: {fileID: 6937020573975178444} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} + m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4227232315394708} - m_RootOrder: 1 + m_Father: {fileID: 473678} + m_RootOrder: 20 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33595363077444256 +--- !u!33 &2502232274484467176 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1585279513007384} + m_GameObject: {fileID: 6937020573975178444} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23894264309938392 +--- !u!23 &7736865385011264558 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1585279513007384} + m_GameObject: {fileID: 6937020573975178444} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0ead8b8e224bcf040862605f5eed7211, type: 2} + - {fileID: 2100000, guid: 3f00bfbfa437f004888833cf848a2416, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11283,7 +10399,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -11296,7 +10412,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1593948112818424 +--- !u!65 &2017034342578135502 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6937020573975178444} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &6670325552642882511 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6937020573975178444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Drive Backup Complete + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 0 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 94 + m_CommandParam: -1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} +--- !u!1 &6967533768856939298 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11304,46 +10472,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4088058456074744} - - component: {fileID: 33685971061773632} - - component: {fileID: 23829150869085828} + - component: {fileID: 3442742383225157293} + - component: {fileID: 7509040775308887635} + - component: {fileID: 7456337122011815175} m_Layer: 16 - m_Name: NewSketchBG + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4088058456074744 +--- !u!4 &3442742383225157293 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1593948112818424} - m_LocalRotation: {x: -0.7068661, y: 0, z: 0, w: 0.7073474} - m_LocalPosition: {x: 0.00000011353266, y: 0, z: 0.005} - m_LocalScale: {x: 95.2381, y: 100.000046, z: 40.000057} + m_GameObject: {fileID: 6967533768856939298} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4604395735417884} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: -89.961006, y: 0, z: 0} ---- !u!33 &33685971061773632 + m_Father: {fileID: 6471389067300543686} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7509040775308887635 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1593948112818424} - m_Mesh: {fileID: 4300000, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} ---- !u!23 &23829150869085828 + m_GameObject: {fileID: 6967533768856939298} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &7456337122011815175 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1593948112818424} + m_GameObject: {fileID: 6967533768856939298} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11357,7 +10525,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: b4ea4550a07ece74eaa39816d64e25c3, type: 2} + - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11379,7 +10547,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1631327297680716 +--- !u!1 &7072846544151351213 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11387,51 +10555,49 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4227232315394708} - - component: {fileID: 33174227262776470} - - component: {fileID: 23170325807074218} - - component: {fileID: 114320826049526124} - - component: {fileID: 65396808301261166} + - component: {fileID: 4080001203028523953} + - component: {fileID: 7617378168068650857} + - component: {fileID: 1425647262863554714} + - component: {fileID: 1042805164852740124} + - component: {fileID: 7544911188538389732} m_Layer: 16 - m_Name: Button_Login + m_Name: DriveDisabledButton m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4227232315394708 +--- !u!4 &4080001203028523953 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1631327297680716} + m_GameObject: {fileID: 7072846544151351213} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} + m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} + m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4757857785376650} - - {fileID: 4483479252455118} - m_Father: {fileID: 4405259647245308} - m_RootOrder: 1 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 21 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33174227262776470 +--- !u!33 &7617378168068650857 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1631327297680716} + m_GameObject: {fileID: 7072846544151351213} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23170325807074218 +--- !u!23 &1425647262863554714 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1631327297680716} - m_Enabled: 0 + m_GameObject: {fileID: 7072846544151351213} + m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 @@ -11444,7 +10610,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} + - {fileID: 2100000, guid: 6b65e04b1b7fb5644862eb36bfcfb419, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11466,59 +10632,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &114320826049526124 +--- !u!65 &1042805164852740124 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7072846544151351213} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &7544911188538389732 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1631327297680716} + m_GameObject: {fileID: 7072846544151351213} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: -1 + m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Sign out of Poly + m_DescriptionText: Drive Backup Disabled m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 1 + m_AtlasTexture: 0 m_ToggleButton: 0 m_LongPressReleaseButton: 0 m_ButtonHasPressedAudio: 1 m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.05 + m_ZAdjustClick: 0.02 m_HoverScale: 1.1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 - m_Command: 95 - m_CommandParam: 1 + m_Command: 94 + m_CommandParam: -1 m_CommandParam2: -1 m_RequiresPopup: 1 m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0.24, y: 0, z: 0} + m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: m_ToggleOnDescription: m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} ---- !u!65 &65396808301261166 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1631327297680716} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!1 &1637582873204310 +--- !u!1 &7514244858002170337 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11526,46 +10692,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4252546109650552} - - component: {fileID: 33530010535052012} - - component: {fileID: 23650157034878372} + - component: {fileID: 1126899405721930507} + - component: {fileID: 2312766600907746419} + - component: {fileID: 6640112692333009932} m_Layer: 16 - m_Name: NewSketchBorder + m_Name: PopupBg m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4252546109650552 +--- !u!4 &1126899405721930507 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1637582873204310} - m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 95.2381, y: 99.99982, z: 39.999924} + m_GameObject: {fileID: 7514244858002170337} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4604395735417884} - m_RootOrder: 1 + m_Father: {fileID: 1817565260503090077} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33530010535052012 +--- !u!33 &2312766600907746419 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1637582873204310} - m_Mesh: {fileID: 4300002, guid: dcc3e41ab91bd8e4a91e7bafc931a658, type: 3} ---- !u!23 &23650157034878372 + m_GameObject: {fileID: 7514244858002170337} + m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &6640112692333009932 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1637582873204310} + m_GameObject: {fileID: 7514244858002170337} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11579,7 +10745,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} + - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11601,7 +10767,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1644973727690454 +--- !u!1 &7675354702135526188 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11609,61 +10775,64 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4067235498706310} - - component: {fileID: 33567874645767864} - - component: {fileID: 23579533556926390} - - component: {fileID: 114182893473587560} + - component: {fileID: 3702262655533381092} + - component: {fileID: 6394529472826107509} + - component: {fileID: 4496872532728751682} + - component: {fileID: 1044113119017468845} + - component: {fileID: 8252809422751876693} m_Layer: 16 - m_Name: LoadingGallery + m_Name: Button_Login m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4067235498706310 +--- !u!4 &3702262655533381092 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1644973727690454} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} - m_LocalScale: {x: 0.4, y: 0.4, z: 0.4} + m_GameObject: {fileID: 7675354702135526188} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} + m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 26 + m_Children: + - {fileID: 1976086882343299162} + - {fileID: 6818748104769445831} + m_Father: {fileID: 1524240171334712824} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33567874645767864 +--- !u!33 &6394529472826107509 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1644973727690454} + m_GameObject: {fileID: 7675354702135526188} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23579533556926390 +--- !u!23 &4496872532728751682 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1644973727690454} - m_Enabled: 1 + m_GameObject: {fileID: 7675354702135526188} + m_Enabled: 0 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 7dd436b1e98554d4daef5bc9d1eeaae9, type: 2} + - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11672,7 +10841,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -11685,53 +10854,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &114182893473587560 +--- !u!114 &1044113119017468845 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1644973727690454} + m_GameObject: {fileID: 7675354702135526188} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e0278ab0b9144784db8dad7f91bd1d11, type: 3} + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} m_Name: m_EditorClassIdentifier: - m_Speed: -180 ---- !u!1 &1672029381864338 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4299097812957920} - m_Layer: 16 - m_Name: BlocksLibraryPopupMesh - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4299097812957920 -Transform: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: Sign out of Poly + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 95 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0.24, y: 0, z: 0} + m_PopupText: + m_ToggleOnDescription: + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} +--- !u!65 &8252809422751876693 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1672029381864338} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4776209461862024} - - {fileID: 4299019526169640} - m_Father: {fileID: 4405002968423422} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1676764474539712 + m_GameObject: {fileID: 7675354702135526188} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 2, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &8051552516459751659 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11739,40 +10914,51 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4405259647245308} - - component: {fileID: 23211508628126822} + - component: {fileID: 7687396309078903398} + - component: {fileID: 2565729595090453201} + - component: {fileID: 242684669425554780} + - component: {fileID: 3495489927540453658} + - component: {fileID: 4985083439257374453} m_Layer: 16 - m_Name: NotLoggedInMessage + m_Name: GalleryButton_Drive m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4405259647245308 + m_IsActive: 1 +--- !u!4 &7687396309078903398 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1676764474539712} + m_GameObject: {fileID: 8051552516459751659} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: -0.84, y: -0.4779, z: -0.0301} + m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4522282957815948} - - {fileID: 4227232315394708} - - {fileID: 4572210679967688} + - {fileID: 8668434879085770626} + - {fileID: 550194924522150295} + - {fileID: 8773122714945324681} m_Father: {fileID: 473678} - m_RootOrder: 37 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23211508628126822 +--- !u!33 &2565729595090453201 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8051552516459751659} + m_Mesh: {fileID: 4300000, guid: 32e7e35b9cca7864db503eed4ee39ebc, type: 3} +--- !u!23 &242684669425554780 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1676764474539712} + m_GameObject: {fileID: 8051552516459751659} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11786,7 +10972,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11808,46 +10994,96 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1685631667352684 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4032955052552346} - - component: {fileID: 23917627250300364} - - component: {fileID: 102687011017508858} - m_Layer: 16 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4032955052552346 -Transform: +--- !u!65 &3495489927540453658 +BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1685631667352684} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.019999996} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4000011114460008} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23917627250300364 -MeshRenderer: + m_GameObject: {fileID: 8051552516459751659} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.12, y: 0.73, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &4985083439257374453 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1685631667352684} + m_GameObject: {fileID: 8051552516459751659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: Backed-up Sketches + m_DescriptionTextExtra: On Google Drive + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: f05641d311b7c1a43bd473bd4eea43c9, type: 3} + m_AtlasTexture: 0 + m_ToggleButton: 1 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.04 + m_ZAdjustClick: 0 + m_HoverScale: 1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_ButtonType: 7 +--- !u!1 &8156343948566993514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1681593874138847941} + - component: {fileID: 7850102019527573647} + - component: {fileID: 5958813571982909246} + m_Layer: 16 + m_Name: BottomBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1681593874138847941 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8156343948566993514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8773122714945324681} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7850102019527573647 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8156343948566993514} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5958813571982909246 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8156343948566993514} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11861,7 +11097,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -11883,37 +11119,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102687011017508858 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1685631667352684} - m_Text: 'Poly was shut down - - on 2021/06/30 - - - Icosa Gallery support - - coming - soon!' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1718400279081948 +--- !u!1 &8334431517929914044 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -11921,46 +11127,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4485662548378186} - - component: {fileID: 33957633259298626} - - component: {fileID: 23659469354840926} + - component: {fileID: 2349666135276550853} + - component: {fileID: 1779665805953307883} + - component: {fileID: 7719181122270953382} m_Layer: 16 - m_Name: ExitButtonBackground + m_Name: PopupBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4485662548378186 +--- !u!4 &2349666135276550853 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718400279081948} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0.025} - m_LocalScale: {x: 0.79999995, y: 0.02, z: 0.8} + m_GameObject: {fileID: 8334431517929914044} + m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 100, z: 100} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 4653590090589872} + m_Father: {fileID: 1817565260503090077} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &33957633259298626 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1779665805953307883 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718400279081948} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23659469354840926 + m_GameObject: {fileID: 8334431517929914044} + m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} +--- !u!23 &7719181122270953382 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1718400279081948} + m_GameObject: {fileID: 8334431517929914044} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -11983,7 +11189,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -11996,7 +11202,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1806376406434594 +--- !u!1 &8425099743687099145 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -12004,60 +11210,60 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4044106463973608} - - component: {fileID: 33436210745481492} - - component: {fileID: 23796359347038216} + - component: {fileID: 6474380007388265344} + - component: {fileID: 5384255025845176638} + - component: {fileID: 6206861901402410492} m_Layer: 16 - m_Name: Warning + m_Name: BottomBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4044106463973608 +--- !u!4 &6474380007388265344 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1806376406434594} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.29999998, y: -0.29999998, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_GameObject: {fileID: 8425099743687099145} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} + m_LocalScale: {x: 1, y: 0.028571434, z: 2} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 406124} + m_Father: {fileID: 550194924522150295} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33436210745481492 +--- !u!33 &5384255025845176638 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1806376406434594} + m_GameObject: {fileID: 8425099743687099145} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23796359347038216 +--- !u!23 &6206861901402410492 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1806376406434594} + m_GameObject: {fileID: 8425099743687099145} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -12066,7 +11272,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -12079,40 +11285,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1838418458797118 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4572210679967688} - m_Layer: 16 - m_Name: PolyPopupMesh - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4572210679967688 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1838418458797118} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4434180684794314} - - {fileID: 4908000352793634} - m_Father: {fileID: 4405259647245308} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1839306045669634 +--- !u!1 &8515080880137723669 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -12120,64 +11293,62 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4653590090589872} - - component: {fileID: 33573308757238834} - - component: {fileID: 23049653070262970} - - component: {fileID: 65086520363845836} - - component: {fileID: 114786666466332882} + - component: {fileID: 6536455007563281599} + - component: {fileID: 830589215893783279} + - component: {fileID: 6087368721055170469} + - component: {fileID: 935706471346402878} + - component: {fileID: 5055648481581678162} m_Layer: 16 - m_Name: Button_ClosePopup + m_Name: SyncingDriveIcon m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4653590090589872 +--- !u!4 &6536455007563281599 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839306045669634} + m_GameObject: {fileID: 8515080880137723669} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 1.082, y: -1.252, z: -0.01} - m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} + m_LocalPosition: {x: 0.922, y: 0.956, z: -0.075} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4594768142946388} - - {fileID: 4485662548378186} + m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 0 + m_RootOrder: 19 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33573308757238834 +--- !u!33 &830589215893783279 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839306045669634} + m_GameObject: {fileID: 8515080880137723669} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23049653070262970 +--- !u!23 &6087368721055170469 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839306045669634} - m_Enabled: 0 + m_GameObject: {fileID: 8515080880137723669} + m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 3c8ca511828182747a0b79564892ec57, type: 2} + - {fileID: 2100000, guid: 3f00bfbfa437f004888833cf848a2416, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -12186,7 +11357,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -12199,51 +11370,51 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &65086520363845836 +--- !u!65 &935706471346402878 BoxCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839306045669634} + m_GameObject: {fileID: 8515080880137723669} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1, z: 0.01} - m_Center: {x: 0, y: 0, z: -0.01} ---- !u!114 &114786666466332882 + m_Size: {x: 2.75, y: 2.75, z: 0.1} + m_Center: {x: -0.75, y: 0.5, z: 0} +--- !u!114 &5055648481581678162 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1839306045669634} + m_GameObject: {fileID: 8515080880137723669} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} m_Name: m_EditorClassIdentifier: m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Close Sketchbook + m_DescriptionYOffset: 0.5 + m_DescriptionText: Backing up on Drive m_DescriptionTextExtra: m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 1 + m_AtlasTexture: 0 m_ToggleButton: 0 m_LongPressReleaseButton: 0 m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.05 - m_HoverScale: 1.1 + m_ZAdjustHover: 0 + m_ZAdjustClick: 0 + m_HoverScale: 1 m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 - m_Command: 42 + m_Command: 94 m_CommandParam: -1 m_CommandParam2: -1 - m_RequiresPopup: 0 + m_RequiresPopup: 1 m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: @@ -12251,90 +11422,7 @@ MonoBehaviour: m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} ---- !u!1 &1855919676530468 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4969141364180978} - - component: {fileID: 33999473819885868} - - component: {fileID: 23112694586702466} - m_Layer: 16 - m_Name: Warning - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4969141364180978 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855919676530468} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.29999998, y: -0.3, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 408880} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33999473819885868 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855919676530468} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23112694586702466 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1855919676530468} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1914095689519454 +--- !u!1 &8643510522094066947 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -12342,60 +11430,62 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4069340866196592} - - component: {fileID: 33810070024719510} - - component: {fileID: 23303719792488170} + - component: {fileID: 8668434879085770626} + - component: {fileID: 3909138286404281281} + - component: {fileID: 4677814556235448182} m_Layer: 16 - m_Name: Warning + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4069340866196592 + m_IsActive: 0 +--- !u!4 &8668434879085770626 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1914095689519454} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.29999998, y: -0.29999998, z: -0.04} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_GameObject: {fileID: 8643510522094066947} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} + m_LocalScale: {x: 1.7142856, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473330} - m_RootOrder: 1 + m_Children: + - {fileID: 8235492235284656829} + - {fileID: 5169543984843292650} + m_Father: {fileID: 7687396309078903398} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33810070024719510 +--- !u!33 &3909138286404281281 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1914095689519454} + m_GameObject: {fileID: 8643510522094066947} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23303719792488170 +--- !u!23 &4677814556235448182 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1914095689519454} + m_GameObject: {fileID: 8643510522094066947} m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -12404,7 +11494,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 0 @@ -12417,7 +11507,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &894190226255371916 +--- !u!1 &8955674742366199644 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -12425,48 +11515,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1119913004652199461} - - component: {fileID: 9181308231173954030} - - component: {fileID: 6267101527266830350} - - component: {fileID: 6571932979411263896} - - component: {fileID: 4188583716324234656} + - component: {fileID: 8835613076674131173} + - component: {fileID: 870282709681677666} + - component: {fileID: 9047820634047644070} m_Layer: 16 - m_Name: DriveFullButton + m_Name: TopBorder m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1119913004652199461 +--- !u!4 &8835613076674131173 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894190226255371916} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} - m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_GameObject: {fileID: 8955674742366199644} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} + m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 31 + m_Father: {fileID: 8773122714945324681} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &9181308231173954030 +--- !u!33 &870282709681677666 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894190226255371916} + m_GameObject: {fileID: 8955674742366199644} m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6267101527266830350 +--- !u!23 &9047820634047644070 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894190226255371916} + m_GameObject: {fileID: 8955674742366199644} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 @@ -12480,7 +11568,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 9cad1001e55b6a34083acc3b00f3a2aa, type: 2} + - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -12502,2766 +11590,980 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6571932979411263896 -BoxCollider: +--- !u!1001 &341014617860506031 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894190226255371916} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &4188583716324234656 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 894190226255371916} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Full - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 94 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!1 &915226954648437342 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (3) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!1 &785293821492932395 stripped GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 341014617860506031} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6471389067300543686} - m_Layer: 16 - m_Name: BlocksLibraryPopupMesh - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6471389067300543686 +--- !u!4 &785971507940366629 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 341014617860506031} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 915226954648437342} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.000000014901161, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 7463230845054887281} - - {fileID: 3442742383225157293} - m_Father: {fileID: 9117108218266893509} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1322492417976703408 -GameObject: +--- !u!1001 &2846995319310557566 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5169543984843292650} - - component: {fileID: 2500334484848516744} - - component: {fileID: 6727792851652802458} - m_Layer: 16 - m_Name: BottomBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5169543984843292650 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (2) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!4 &3013292121896729076 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1322492417976703408} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.5, z: -0.0024999883} - m_LocalScale: {x: 1, y: 0.028571432, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8668434879085770626} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2500334484848516744 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1322492417976703408} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6727792851652802458 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 2846995319310557566} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1322492417976703408} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &2017844286305016362 +--- !u!1 &3016537938136338426 stripped GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8692506305276691177} - - component: {fileID: 2293314450001802957} - - component: {fileID: 690590041796884266} - m_Layer: 16 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8692506305276691177 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2017844286305016362} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1524240171334712824} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2293314450001802957 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2017844286305016362} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &690590041796884266 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 2846995319310557566} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2017844286305016362} - m_Text: 'Sign in to access - - Google Drive' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.85 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &2158335996185070942 -GameObject: +--- !u!1001 &4113092395604639097 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8773122714945324681} - - component: {fileID: 1248259070182587467} - - component: {fileID: 4322300826379264523} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &8773122714945324681 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2158335996185070942} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: -1.0697142, z: 0.9165714} - m_LocalScale: {x: 4.5714283, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8835613076674131173} - - {fileID: 1681593874138847941} - m_Father: {fileID: 7687396309078903398} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1248259070182587467 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2158335996185070942} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4322300826379264523 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2158335996185070942} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &2316682789993501927 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1817565260503090077} - m_Layer: 16 - m_Name: PolyPopupMesh - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1817565260503090077 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2316682789993501927} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1126899405721930507} - - {fileID: 2349666135276550853} - m_Father: {fileID: 1524240171334712824} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2564330845180575454 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6818748104769445831} - - component: {fileID: 3786255149657314558} - - component: {fileID: 6799487165711865126} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6818748104769445831 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2564330845180575454} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 2, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3702262655533381092} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3786255149657314558 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2564330845180575454} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6799487165711865126 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2564330845180575454} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0ead8b8e224bcf040862605f5eed7211, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &2703159376926440640 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2713655870301875666} - - component: {fileID: 6245471826573932768} - - component: {fileID: 3337417126575594132} - m_Layer: 16 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2713655870301875666 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2703159376926440640} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.019999996} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 9117108218266893509} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &6245471826573932768 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2703159376926440640} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &3337417126575594132 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2703159376926440640} - m_Text: 'Error Connecting - - to Poly' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &3489518439063806035 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 550194924522150295} - - component: {fileID: 3710666160644817266} - - component: {fileID: 254053543371224220} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &550194924522150295 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3489518439063806035} - m_LocalRotation: {x: 0.5000001, y: 0.5, z: -0.5, w: 0.49999994} - m_LocalPosition: {x: 0, y: 1.2142847, z: 0.4594286} - m_LocalScale: {x: 0.9142857, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 321097991674213930} - - {fileID: 6474380007388265344} - m_Father: {fileID: 7687396309078903398} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3710666160644817266 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3489518439063806035} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &254053543371224220 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3489518439063806035} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3543571790462569700 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2539730209626117130} - - component: {fileID: 3584797028731175384} - - component: {fileID: 5005226965739046984} - m_Layer: 16 - m_Name: NoDriveSketchesMessage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &2539730209626117130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.05} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 33 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &3584797028731175384 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &5005226965739046984 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_Text: 'No Google Drive - - sketches - - available' - m_OffsetZ: 0 - m_CharacterSize: 0.03 - m_LineSpacing: 0.9 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &3711792098476514597 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8235492235284656829} - - component: {fileID: 6232630873404181854} - - component: {fileID: 5317958202426579345} - m_Layer: 16 - m_Name: TopBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8235492235284656829 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3711792098476514597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.5, z: -0.0025} - m_LocalScale: {x: 1, y: 0.02857143, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8668434879085770626} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6232630873404181854 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3711792098476514597} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &5317958202426579345 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3711792098476514597} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &4374687820491222719 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9117108218266893509} - - component: {fileID: 3762244675612984118} - m_Layer: 16 - m_Name: NoPolyConnection - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &9117108218266893509 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4374687820491222719} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2713655870301875666} - - {fileID: 6471389067300543686} - m_Father: {fileID: 473678} - m_RootOrder: 40 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &3762244675612984118 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4374687820491222719} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &4611120767845027921 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1976086882343299162} - - component: {fileID: 7756061003300770718} - - component: {fileID: 7372446237649626914} - m_Layer: 16 - m_Name: Signin - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1976086882343299162 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4611120767845027921} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} - m_LocalScale: {x: 4, y: 4, z: 2.857143} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 3702262655533381092} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &7756061003300770718 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4611120767845027921} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &7372446237649626914 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4611120767845027921} - m_Text: SIGN IN - m_OffsetZ: 0 - m_CharacterSize: 0.02 - m_LineSpacing: 1 - m_Anchor: 6 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 43 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &4778719595247149710 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 321097991674213930} - - component: {fileID: 6533685272076450346} - - component: {fileID: 8511952729671633760} - m_Layer: 16 - m_Name: TopBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &321097991674213930 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} - m_LocalScale: {x: 1, y: 0.028571434, z: 2} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 550194924522150295} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6533685272076450346 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8511952729671633760 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &4987445825603729169 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 962364287279058834} - - component: {fileID: 2139868953206300193} - - component: {fileID: 6969350590622297653} - - component: {fileID: 3173506336687836476} - m_Layer: 16 - m_Name: DriveSyncProgress - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &962364287279058834 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4987445825603729169} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} - m_LocalPosition: {x: 0.847, y: 1.001, z: -0.05} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 27 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} ---- !u!33 &2139868953206300193 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4987445825603729169} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6969350590622297653 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4987445825603729169} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a2a12f534cd6cef4d8302066eaa81c25, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &3173506336687836476 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4987445825603729169} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8daae932e00bdb749b4f667b08f50ca8, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &5708433634109880750 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7463230845054887281} - - component: {fileID: 7528090674439679421} - - component: {fileID: 4958408737088699452} - m_Layer: 16 - m_Name: PopupBg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7463230845054887281 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5708433634109880750} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6471389067300543686} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7528090674439679421 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5708433634109880750} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &4958408737088699452 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5708433634109880750} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6839353153389732464 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1524240171334712824} - - component: {fileID: 2320526944858906914} - m_Layer: 16 - m_Name: NotLoggedInDriveMessage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1524240171334712824 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6839353153389732464} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8692506305276691177} - - {fileID: 3702262655533381092} - - {fileID: 1817565260503090077} - m_Father: {fileID: 473678} - m_RootOrder: 38 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2320526944858906914 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6839353153389732464} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6937020573975178444 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3686855872783221364} - - component: {fileID: 2502232274484467176} - - component: {fileID: 7736865385011264558} - - component: {fileID: 2017034342578135502} - - component: {fileID: 6670325552642882511} - m_Layer: 16 - m_Name: DriveEnabledButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3686855872783221364 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} - m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 29 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2502232274484467176 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7736865385011264558 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3f00bfbfa437f004888833cf848a2416, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &2017034342578135502 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &6670325552642882511 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Complete - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 94 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!1 &6967533768856939298 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3442742383225157293} - - component: {fileID: 7509040775308887635} - - component: {fileID: 7456337122011815175} - m_Layer: 16 - m_Name: PopupBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3442742383225157293 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6967533768856939298} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6471389067300543686} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7509040775308887635 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6967533768856939298} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &7456337122011815175 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6967533768856939298} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7072846544151351213 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4080001203028523953} - - component: {fileID: 7617378168068650857} - - component: {fileID: 1425647262863554714} - - component: {fileID: 1042805164852740124} - - component: {fileID: 7544911188538389732} - m_Layer: 16 - m_Name: DriveDisabledButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4080001203028523953 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7072846544151351213} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} - m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 30 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7617378168068650857 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7072846544151351213} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1425647262863554714 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7072846544151351213} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 6b65e04b1b7fb5644862eb36bfcfb419, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &1042805164852740124 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7072846544151351213} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.0000001, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &7544911188538389732 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7072846544151351213} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Disabled - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.02 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 94 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!1 &7514244858002170337 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1126899405721930507} - - component: {fileID: 2312766600907746419} - - component: {fileID: 6640112692333009932} - m_Layer: 16 - m_Name: PopupBg - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1126899405721930507 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7514244858002170337} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1817565260503090077} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2312766600907746419 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7514244858002170337} - m_Mesh: {fileID: 4300002, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &6640112692333009932 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7514244858002170337} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: db0305ff9081c3b448ac79e85d26e5d4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &7675354702135526188 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3702262655533381092} - - component: {fileID: 6394529472826107509} - - component: {fileID: 4496872532728751682} - - component: {fileID: 1044113119017468845} - - component: {fileID: 8252809422751876693} - m_Layer: 16 - m_Name: Button_Login - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3702262655533381092 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.44, z: -0.054000005} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1976086882343299162} - - {fileID: 6818748104769445831} - m_Father: {fileID: 1524240171334712824} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6394529472826107509 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4496872532728751682 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_Enabled: 0 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 40d29de2bdc11f04dbfa25059165916e, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!114 &1044113119017468845 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: Sign out of Poly - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.05 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 95 - m_CommandParam: 1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0.24, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!65 &8252809422751876693 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!1 &8051552516459751659 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7687396309078903398} - - component: {fileID: 2565729595090453201} - - component: {fileID: 242684669425554780} - - component: {fileID: 3495489927540453658} - - component: {fileID: 4985083439257374453} - m_Layer: 16 - m_Name: GalleryButton_Drive - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7687396309078903398 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8051552516459751659} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.84, y: -0.4779, z: -0.0301} - m_LocalScale: {x: 0.43600002, y: 0.43600002, z: 0.43600002} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8668434879085770626} - - {fileID: 550194924522150295} - - {fileID: 8773122714945324681} - m_Father: {fileID: 473678} - m_RootOrder: 17 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2565729595090453201 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8051552516459751659} - m_Mesh: {fileID: 4300000, guid: 32e7e35b9cca7864db503eed4ee39ebc, type: 3} ---- !u!23 &242684669425554780 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8051552516459751659} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &3495489927540453658 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8051552516459751659} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1.12, y: 0.73, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &4985083439257374453 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8051552516459751659} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 29c7cf785cea60442ad3d31e7b01ad81, type: 3} - m_Name: - m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0 - m_DescriptionText: Backed-up Sketches - m_DescriptionTextExtra: On Google Drive - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 2800000, guid: f05641d311b7c1a43bd473bd4eea43c9, type: 3} - m_AtlasTexture: 0 - m_ToggleButton: 1 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.04 - m_ZAdjustClick: 0 - m_HoverScale: 1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_ButtonType: 7 ---- !u!1 &8156343948566993514 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1681593874138847941} - - component: {fileID: 7850102019527573647} - - component: {fileID: 5958813571982909246} - m_Layer: 16 - m_Name: BottomBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1681593874138847941 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8156343948566993514} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: 0.00228548} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8773122714945324681} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7850102019527573647 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8156343948566993514} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &5958813571982909246 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8156343948566993514} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8334431517929914044 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2349666135276550853} - - component: {fileID: 1779665805953307883} - - component: {fileID: 7719181122270953382} - m_Layer: 16 - m_Name: PopupBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2349666135276550853 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8334431517929914044} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1817565260503090077} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1779665805953307883 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8334431517929914044} - m_Mesh: {fileID: 4300000, guid: 494f6a456f266384a85d4868be7b55bf, type: 3} ---- !u!23 &7719181122270953382 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8334431517929914044} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 77dd4ff8b1158a84397aba783cd0af05, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8425099743687099145 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6474380007388265344} - - component: {fileID: 5384255025845176638} - - component: {fileID: 6206861901402410492} - m_Layer: 16 - m_Name: BottomBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6474380007388265344 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8425099743687099145} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.49999997, z: -0.002} - m_LocalScale: {x: 1, y: 0.028571434, z: 2} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 550194924522150295} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5384255025845176638 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8425099743687099145} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6206861901402410492 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8425099743687099145} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8515080880137723669 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6536455007563281599} - - component: {fileID: 830589215893783279} - - component: {fileID: 6087368721055170469} - - component: {fileID: 935706471346402878} - - component: {fileID: 5055648481581678162} - m_Layer: 16 - m_Name: SyncingDriveIcon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6536455007563281599 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 473678} + m_Modifications: + - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Name + value: BackButton + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.x + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.y + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalScale.z + value: 0.3 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.805 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.988 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.031 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ConstrainProportionsScale + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_ButtonTexture + value: + objectReference: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_DescriptionText + value: Back + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 2478559423573741591} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: BackButtonPressed + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName + value: TiltBrush.SketchbookPanel, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} +--- !u!4 &5835854812254485208 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8515080880137723669} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.922, y: 0.956, z: -0.075} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 28 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &830589215893783279 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8515080880137723669} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6087368721055170469 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8515080880137723669} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3f00bfbfa437f004888833cf848a2416, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &935706471346402878 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 4113092395604639097} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8515080880137723669} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2.75, y: 2.75, z: 0.1} - m_Center: {x: -0.75, y: 0.5, z: 0} ---- !u!114 &5055648481581678162 +--- !u!114 &6075256701100402820 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + type: 3} + m_PrefabInstance: {fileID: 4113092395604639097} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8515080880137723669} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Script: {fileID: 11500000, guid: 07f172f1096366841bb9362060bb0095, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: 0 - m_DescriptionYOffset: 0.5 - m_DescriptionText: Backing up on Drive - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 0 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: 0 - m_ZAdjustClick: 0 - m_HoverScale: 1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 94 - m_CommandParam: -1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!1 &8643510522094066947 +--- !u!1001 &4345932546781916119 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (8) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!1 &3607859171922347347 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 4345932546781916119} + m_PrefabAsset: {fileID: 0} +--- !u!4 &3610770556643259229 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 4345932546781916119} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &5501805488331386862 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!1 &4756993747288768874 stripped GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 5501805488331386862} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8668434879085770626} - - component: {fileID: 3909138286404281281} - - component: {fileID: 4677814556235448182} - m_Layer: 16 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &8668434879085770626 +--- !u!4 &4758480587321177956 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 5501805488331386862} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8643510522094066947} - m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071067} - m_LocalPosition: {x: 0, y: 0.35714287, z: 0.002285719} - m_LocalScale: {x: 1.7142856, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8235492235284656829} - - {fileID: 5169543984843292650} - m_Father: {fileID: 7687396309078903398} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3909138286404281281 -MeshFilter: +--- !u!1001 &6537756648044924785 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (9) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!1 &6117204845192880629 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 6537756648044924785} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8643510522094066947} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4677814556235448182 -MeshRenderer: +--- !u!4 &6118444763801524219 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 6537756648044924785} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &7396542599549618500 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalScale.x + value: 1.7880001 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalScale.y + value: 1.7880001 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalScale.z + value: 1.7880001 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (Big) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!4 &7563266016153997774 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 7396542599549618500} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8643510522094066947} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 8da1dcc64b3bf2640af4fc243b5151cf, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &8955674742366199644 +--- !u!1 &7564822669806053312 stripped GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 7396542599549618500} m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8835613076674131173} - - component: {fileID: 870282709681677666} - - component: {fileID: 9047820634047644070} - m_Layer: 16 - m_Name: TopBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8835613076674131173 +--- !u!1001 &7413530873517410858 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (4) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!4 &7544080359650103968 stripped Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8955674742366199644} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: 0.0022855483} - m_LocalScale: {x: 1, y: 0.028571434, z: 0.9142854} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 8773122714945324681} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &870282709681677666 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 7413530873517410858} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8955674742366199644} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &9047820634047644070 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} +--- !u!1 &7546992150643877038 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 7413530873517410858} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8955674742366199644} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: d153b453067a0724889fb677fef801a1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!1001 &4113092395604639097 +--- !u!1001 &8170062851205836093 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: - m_TransformParent: {fileID: 473678} + m_TransformParent: {fileID: 7926938724112014635} m_Modifications: - - target: {fileID: 7630606763700834929, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Name - value: BackButton + propertyPath: m_RootOrder + value: 5 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_RootOrder - value: 13 + propertyPath: m_LocalPosition.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_LocalScale.x - value: 0.3 + propertyPath: m_LocalPosition.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_LocalScale.y - value: 0.3 + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_LocalScale.z - value: 0.3 + propertyPath: m_LocalRotation.w + value: 1 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (5) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!4 &9165448599162238391 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 8170062851205836093} + m_PrefabAsset: {fileID: 0} +--- !u!1 &9169204103733216185 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 8170062851205836093} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8363155370126447833 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalPosition.x - value: -0.805 + value: -1 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalPosition.y - value: 0.988 + value: -1 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalPosition.z - value: -0.031 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalRotation.y - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_ConstrainProportionsScale + propertyPath: m_Name + value: Sketch_Button (7) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!1 &8813983256960973405 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 8363155370126447833} + m_PrefabAsset: {fileID: 0} +--- !u!4 &8816983120958852179 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + m_PrefabInstance: {fileID: 8363155370126447833} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &8886496822350462577 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 7926938724112014635} + m_Modifications: + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_LocalPosition.x value: 1 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_ButtonTexture - value: - objectReference: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_DescriptionText - value: Back + propertyPath: m_LocalPosition.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.size + propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Mode - value: 1 + propertyPath: m_LocalRotation.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Target - value: - objectReference: {fileID: 2478559423573741591} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_CallState - value: 2 + propertyPath: m_LocalRotation.z + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName - value: BackButtonPressed + propertyPath: m_LocalEulerAnglesHint.x + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName - value: TiltBrush.SketchbookPanel, Assembly-CSharp + propertyPath: m_LocalEulerAnglesHint.y + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, + - target: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - propertyPath: m_Action.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName - value: UnityEngine.Object, UnityEngine + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, + type: 3} + propertyPath: m_Name + value: Sketch_Button (6) objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 0963942396a615f4fb1b390436e881b8, type: 3} ---- !u!4 &5835854812254485208 stripped + m_SourcePrefab: {fileID: 100100000, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} +--- !u!4 &8431019797415831291 stripped Transform: - m_CorrespondingSourceObject: {fileID: 7631838532712089505, guid: 0963942396a615f4fb1b390436e881b8, + m_CorrespondingSourceObject: {fileID: 1032399709762197642, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - m_PrefabInstance: {fileID: 4113092395604639097} + m_PrefabInstance: {fileID: 8886496822350462577} m_PrefabAsset: {fileID: 0} ---- !u!114 &6075256701100402820 stripped -MonoBehaviour: - m_CorrespondingSourceObject: {fileID: 7879899076693153277, guid: 0963942396a615f4fb1b390436e881b8, +--- !u!1 &8434476480850399477 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1035381981039275652, guid: 2c314183f31d58e4cb76ca18c3df72be, type: 3} - m_PrefabInstance: {fileID: 4113092395604639097} + m_PrefabInstance: {fileID: 8886496822350462577} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 07f172f1096366841bb9362060bb0095, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab b/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab new file mode 100644 index 0000000000..2af2d8986b --- /dev/null +++ b/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab @@ -0,0 +1,530 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1035344479674026756 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1030480419240708484} + - component: {fileID: 1021122905547369896} + - component: {fileID: 1012211300334939544} + m_Layer: 16 + m_Name: Warning + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1030480419240708484 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035344479674026756} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.354, y: 0.355, z: -0.04} + m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1032399709762197642} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1021122905547369896 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035344479674026756} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1012211300334939544 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035344479674026756} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &1035381981039275652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1032399709762197642} + - component: {fileID: 1020305808750299948} + - component: {fileID: 1012273692508871512} + - component: {fileID: 1061453986557645206} + - component: {fileID: 1137411262704158908} + - component: {fileID: 1138032042204698062} + m_Layer: 16 + m_Name: Sketch_Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1032399709762197642 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.861, y: 0.861, z: 0.861} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 1032399710649524152} + - {fileID: 1030480419240708484} + - {fileID: 6266097989884724058} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1020305808750299948 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_Mesh: {fileID: 4300000, guid: 5501f437160666942ae970f3648fbeb8, type: 3} +--- !u!23 &1012273692508871512 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7a8c27c7da1931c43b4f488dd7438bcf, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1061453986557645206 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.0000001, y: 1.0000001, z: 0.025} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1137411262704158908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 466a866cc6c3db745be153c01cbf7c4e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: 0 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 0 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.06 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.2 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_MenuButton: {fileID: 1138236788517739278} + m_Warning: {fileID: 1035344479674026756} + m_SketchName: {fileID: 3742936407600645475} + m_WarningMaterial: {fileID: 2100000, guid: 0cf7b445a25cf3c489b5861e35712c08, type: 2} + m_ErrorMaterial: {fileID: 2100000, guid: 1ab4267339b01594aa29020a744e68ba, type: 2} +--- !u!114 &1138032042204698062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981039275652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739d5b1996234d64992a2ae60c3723e9, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1035381981813688142 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1032399710649524152} + - component: {fileID: 1020305807733995978} + - component: {fileID: 1012273693047971998} + - component: {fileID: 1061453985532608776} + - component: {fileID: 1138236788517739278} + m_Layer: 16 + m_Name: MenuButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1032399710649524152 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981813688142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.307, y: 0.247, z: -0.05} + m_LocalScale: {x: 0.55, y: 0.55, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1032399709762197642} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1020305807733995978 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981813688142} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1012273693047971998 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981813688142} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 02600dc3cae2e864e868f74335b18927, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &1061453985532608776 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981813688142} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 0.7, y: 1, z: 0.025} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1138236788517739278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1035381981813688142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c83402cfc3a556489a1d516399e5b92, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: + m_DescriptionTextExtra: + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 2800000, guid: c857d1d6a5bf83243989063c621fd1b4, type: 3} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.02 + m_HoverScale: 1.2 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 +--- !u!1 &5017948192501158957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6266097989884724058} + - component: {fileID: 8180862148953016807} + - component: {fileID: 3742936407600645475} + m_Layer: 16 + m_Name: Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6266097989884724058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5017948192501158957} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.04} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1032399709762197642} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.011, y: -0.367} + m_SizeDelta: {x: 0.969, y: 0.2472} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8180862148953016807 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5017948192501158957} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &3742936407600645475 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5017948192501158957} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Name + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_sharedMaterial: {fileID: 2122602, guid: ec48085d8b1ed18499cf1411d42005a0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 2 + m_fontSizeBase: 2 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8180862148953016807} + m_maskType: 0 diff --git a/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab.meta b/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab.meta new file mode 100644 index 0000000000..639eed64d8 --- /dev/null +++ b/Assets/Prefabs/Panels/Widgets/Sketch_Button.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2c314183f31d58e4cb76ca18c3df72be +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index 4ac3dbad31..902800edd8 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +using TMPro; using UnityEngine; namespace TiltBrush @@ -28,6 +29,7 @@ public struct MenuButton [SerializeField] private InspectSketchButton m_MenuButton; [SerializeField] private GameObject m_Warning; + [SerializeField] private TextMeshPro m_SketchName; [SerializeField] private Material m_WarningMaterial; [SerializeField] private Material m_ErrorMaterial; @@ -84,6 +86,22 @@ public bool WarningVisible get { return m_Warning != null && m_Warning.activeSelf; } } + public string SketchName + { + set + { + if (m_SketchName != null) + { + m_SketchName.gameObject.SetActive(value != null); + m_SketchName.text = value ?? ""; + } + } + get + { + return (m_SketchName?.gameObject.activeSelf ?? false) ? m_SketchName.text : null; + } + } + void RefreshDetails() { m_MenuButton.SetSketchDetails(m_SketchIndex, SketchSet.SketchSetInstance); @@ -105,6 +123,16 @@ void RefreshDetails() { m_Warning.GetComponent().material = m_SizeOk ? m_WarningMaterial : m_ErrorMaterial; } + if (m_SketchSet is ResourceCollectionSketchSet collectionSet + && m_SketchSet.IsSketchIndexValid(m_SketchIndex) + && collectionSet.GetResource(m_SketchIndex) is IResourceCollection collection) + { + SketchName = collection.Name; + } + else + { + SketchName = null; + } } public void UpdateUvOffsetAndScale(Vector2 offset, Vector2 scale) @@ -124,6 +152,7 @@ override protected void Awake() base.Awake(); m_UIComponentManager = GetComponent(); WarningVisible = false; + SketchName = null; m_DynamicUvScale = Vector2.one; m_DynamicUvOffset = Vector2.zero; m_DynamicUvTransitionValue = 0.0f; diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index ddb7a62261..35efac1687 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -173,6 +173,11 @@ public string GetSketchName(int index) return m_Sketches[index].SceneFileInfo.HumanName; } + public IResource GetResource(int index) + { + return m_Sketches[index].ResourceFileInfo.Resource; + } + public void DeleteSketch(int index) { // do nothing diff --git a/Assets/Scripts/ResourceSystem/ResourceSketch.cs b/Assets/Scripts/ResourceSystem/ResourceSketch.cs index dfa0d9dd60..18969987d4 100644 --- a/Assets/Scripts/ResourceSystem/ResourceSketch.cs +++ b/Assets/Scripts/ResourceSystem/ResourceSketch.cs @@ -23,6 +23,7 @@ public SceneFileInfo SceneFileInfo set { Assert.IsTrue(value is ResourceFileInfo); + m_FileInfo = (ResourceFileInfo)value; } } From 0a8d5acc303f449928f87d47edeacbbb3306c698 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sat, 25 Mar 2023 11:16:34 -0700 Subject: [PATCH 25/38] Make local filesystem sketches writable by default --- Assets/Scripts/GUI/LoadSketchButton.cs | 10 ++++++++- Assets/Scripts/ResourceSystem/IResource.cs | 5 +++-- .../LocalFolderCollectionFactory.cs | 2 +- .../WritableLocalFileResource.cs | 22 +++++++++++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/GUI/LoadSketchButton.cs b/Assets/Scripts/GUI/LoadSketchButton.cs index 902800edd8..d05b6c59a1 100644 --- a/Assets/Scripts/GUI/LoadSketchButton.cs +++ b/Assets/Scripts/GUI/LoadSketchButton.cs @@ -238,7 +238,15 @@ override public void GainFocus() { base.GainFocus(); m_DynamicUvTransitionValue = 0.0f; - m_MenuButton.gameObject.SetActive(m_SketchSet.SketchSetType == FileSketchSet.TypeName); + bool isWritable = m_SketchSet.SketchSetType == FileSketchSet.TypeName; + if (m_SketchSet is ResourceCollectionSketchSet resourceSet) + { + if (m_SketchSet.GetSketchSceneFileInfo(m_SketchIndex) is ResourceFileInfo fileInfo) + { + isWritable |= fileInfo.Resource is IWritableResource; + } + } + m_MenuButton.gameObject.SetActive(isWritable); if (!m_SizeOk) { SetDescriptionVisualsAvailable(false); diff --git a/Assets/Scripts/ResourceSystem/IResource.cs b/Assets/Scripts/ResourceSystem/IResource.cs index 6156ed2626..e191a0ccf3 100644 --- a/Assets/Scripts/ResourceSystem/IResource.cs +++ b/Assets/Scripts/ResourceSystem/IResource.cs @@ -27,8 +27,9 @@ public interface IHasPreviewImage public interface IWritableResource : IResource { + new string Name { get; set; } + new string Description { get; set; } + Task GetWriteStreamAsync(); } - - } diff --git a/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs index 733d287492..56ad355cad 100644 --- a/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs +++ b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs @@ -91,7 +91,7 @@ public void Refresh() m_Resources = new List(); m_Resources.AddRange(m_Dir.EnumerateDirectories().Where(dirInfo => !dirInfo.Name.StartsWith(".")) .Select(dirInfo => new LocalFolderCollection(dirInfo.FullName, dirInfo.Name, m_Icon))); - m_Resources.AddRange(m_Dir.EnumerateFiles("*.tilt").Select(fileInfo => new LocalFileResource(fileInfo.FullName))); + m_Resources.AddRange(m_Dir.EnumerateFiles("*.tilt").Select(fileInfo => new WritableLocalFileResource(fileInfo.FullName))); } public event Action OnChanged; public event Action OnRefreshingChanged; diff --git a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs index c410dacf15..73e7e19e6c 100644 --- a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs +++ b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs @@ -1,3 +1,5 @@ +using System.IO; +using System.Threading.Tasks; namespace TiltBrush { public class WritableLocalFileResource : LocalFileResource, IWritableResource @@ -7,5 +9,25 @@ public WritableLocalFileResource(string path) : base(path) } + public string Name + { + get => base.Name; + set + { + throw new System.NotImplementedException(); + } + } + public string Description + { + get => base.Description; + set + { + throw new System.NotImplementedException(); + } + } + public async Task GetWriteStreamAsync() + { + throw new System.NotImplementedException(); + } } } From 0bee5ad6b97f683a659d2192d82451087281dfde Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Sat, 25 Mar 2023 12:38:20 -0700 Subject: [PATCH 26/38] Make extra sure streams and associated file handles get closed. --- Assets/Scripts/Poly/PolyAssetCatalog.cs | 42 +++++------ Assets/Scripts/ResourceSystem/DotTiltFile.cs | 69 ++++++++++++++++--- .../ResourceSystem/FeedCollectionFactory.cs | 6 ++ Assets/Scripts/ResourceSystem/IResource.cs | 2 +- .../ResourceSystem/IResourceCollection.cs | 3 + .../ResourceSystem/IcosaCollectionFactory.cs | 6 ++ .../LocalFolderCollectionFactory.cs | 20 ++++++ .../ResourceCollectionSketchSet.cs | 13 +++- .../ResourceSystem/SketchCollection.cs | 2 +- Assets/Scripts/ResourceSystem/SubStream.cs | 7 ++ .../WritableLocalFileResource.cs | 6 ++ Assets/Scripts/Save/DiskSceneFileInfo.cs | 14 ++-- Assets/Scripts/Save/SaveLoadScript.cs | 4 +- Assets/Scripts/Sharing/DriveSync.cs | 2 +- 14 files changed, 152 insertions(+), 44 deletions(-) diff --git a/Assets/Scripts/Poly/PolyAssetCatalog.cs b/Assets/Scripts/Poly/PolyAssetCatalog.cs index 5688df6938..92bb435a3c 100644 --- a/Assets/Scripts/Poly/PolyAssetCatalog.cs +++ b/Assets/Scripts/Poly/PolyAssetCatalog.cs @@ -693,31 +693,33 @@ private static async Task> GetModelIds(SceneFileInfo sceneFileInfo) // Json deserializing is in a separate method that doesn't access Unity objects so that it // can be called on a thread. The json deserializing can be pretty slow and can cause // frame drops if performed on the main thread. - Stream metadata = await SaveLoadScript.GetMetadataReadStreamAsync(sceneFileInfo); - if (metadata == null) + await using (Stream metadata = await SaveLoadScript.GetMetadataReadStreamAsync(sceneFileInfo)) { - if (sceneFileInfo.Exists) + if (metadata == null) { - // ??? Let's try to provoke an exception to propagate to the caller - using (var dummy = File.OpenRead(sceneFileInfo.FullPath)) { } - throw new Exception($"Unknown error opening metadata {sceneFileInfo.FullPath}"); - } - else - { - throw new Exception( - "Reading metadata from nonexistent " + - $"{sceneFileInfo.InfoType} {sceneFileInfo.HumanName}"); + if (sceneFileInfo.Exists) + { + // ??? Let's try to provoke an exception to propagate to the caller + using (var dummy = File.OpenRead(sceneFileInfo.FullPath)) { } + throw new Exception($"Unknown error opening metadata {sceneFileInfo.FullPath}"); + } + else + { + throw new Exception( + "Reading metadata from nonexistent " + + $"{sceneFileInfo.InfoType} {sceneFileInfo.HumanName}"); + } } - } - using (var jsonReader = new JsonTextReader(new StreamReader(metadata))) - { - var jsonData = SaveLoadScript.m_Instance.DeserializeMetadata(jsonReader); - if (SaveLoadScript.m_Instance.LastMetadataError != null) + using (var jsonReader = new JsonTextReader(new StreamReader(metadata))) { - throw new Exception($"Deserialize error: {SaveLoadScript.m_Instance.LastMetadataError}"); + var jsonData = SaveLoadScript.m_Instance.DeserializeMetadata(jsonReader); + if (SaveLoadScript.m_Instance.LastMetadataError != null) + { + throw new Exception($"Deserialize error: {SaveLoadScript.m_Instance.LastMetadataError}"); + } + if (jsonData.ModelIndex == null) { return null; } + return jsonData.ModelIndex.Select(m => m.AssetId).Where(a => a != null).ToList(); } - if (jsonData.ModelIndex == null) { return null; } - return jsonData.ModelIndex.Select(m => m.AssetId).Where(a => a != null).ToList(); } } diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs index c745414503..8d4a341bfd 100644 --- a/Assets/Scripts/ResourceSystem/DotTiltFile.cs +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -11,6 +11,60 @@ namespace TiltBrush { public class DotTiltFile { + public class SubFileStream : Stream + { + private Stream m_OriginalStream; + private SubStream m_SubStream; + private ZipArchive m_Archive; + private ZipArchiveEntry m_Entry; + private Stream m_Stream; + public SubFileStream(Stream stream, string filename) + { + m_SubStream = new SubStream(stream); + m_Archive = new ZipArchive(m_SubStream, ZipArchiveMode.Read, leaveOpen: false); + m_Entry = m_Archive.GetEntry(filename); + m_Stream = m_Entry.Open(); + } + public override async ValueTask DisposeAsync() + { + await base.DisposeAsync(); + await m_Stream.DisposeAsync(); + m_Archive.Dispose(); + await m_SubStream.DisposeAsync(); + await m_OriginalStream.DisposeAsync(); + } + public override void Flush() + { + m_Stream.Flush(); + } + public override int Read(byte[] buffer, int offset, int count) + { + return m_Stream.Read(buffer, offset, count); + } + public override long Seek(long offset, SeekOrigin origin) + { + return m_Stream.Seek(offset, origin); + } + public override void SetLength(long value) + { + m_Stream.SetLength(value); + } + public override void Write(byte[] buffer, int offset, int count) + { + m_Stream.Write(buffer, offset, count); + } + public override bool CanRead => m_Stream.CanRead; + public override bool CanSeek => m_Stream.CanSeek; + public override bool CanWrite => m_Stream.CanWrite; + public override long Length => m_Stream.Length; + public override long Position + { + get => m_Stream.Position; + set { m_Stream.Position = value; } + } + } + + [StructLayout(LayoutKind.Sequential, Pack = 2)] private struct TiltZipHeader { @@ -69,7 +123,10 @@ public async Task GetStreamAsync() public async Task VerifyTiltHeaderAsync() { - return ReadAndVerifyTiltHeader(await GetStreamAsync()); + await using (var stream = await GetStreamAsync()) + { + return ReadAndVerifyTiltHeader(stream); + } } public bool ReadAndVerifyTiltHeader(Stream stream) @@ -116,15 +173,7 @@ public async Task GetSubFileAsync(string filename) return null; } - var subStream = new SubStream(stream); - var archive = new ZipArchive(subStream, ZipArchiveMode.Read); - var entry = archive.GetEntry(filename); - if (entry == null) - { - return null; - } - - return entry.Open(); + return new SubFileStream(stream, filename); } public async Task GetMetaDataStreamAsync() diff --git a/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs b/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs index 93c3050901..fc07c29bcd 100644 --- a/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs +++ b/Assets/Scripts/ResourceSystem/FeedCollectionFactory.cs @@ -89,6 +89,12 @@ public void Refresh() { InitAsync(); } + + public bool Delete(IResource resource) + { + return false; + } + public event Action OnChanged; public event Action OnRefreshingChanged; } diff --git a/Assets/Scripts/ResourceSystem/IResource.cs b/Assets/Scripts/ResourceSystem/IResource.cs index e191a0ccf3..07674ecd92 100644 --- a/Assets/Scripts/ResourceSystem/IResource.cs +++ b/Assets/Scripts/ResourceSystem/IResource.cs @@ -30,6 +30,6 @@ public interface IWritableResource : IResource new string Name { get; set; } new string Description { get; set; } Task GetWriteStreamAsync(); - + bool Delete(); } } diff --git a/Assets/Scripts/ResourceSystem/IResourceCollection.cs b/Assets/Scripts/ResourceSystem/IResourceCollection.cs index 7373ee781e..cb0acbe15f 100644 --- a/Assets/Scripts/ResourceSystem/IResourceCollection.cs +++ b/Assets/Scripts/ResourceSystem/IResourceCollection.cs @@ -8,6 +8,9 @@ public interface IResourceCollection : IResource int NumResources { get; } IAsyncEnumerable ContentsAsync(); void Refresh(); + + bool Delete(IResource resource); + event Action OnChanged; event Action OnRefreshingChanged; diff --git a/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs index e72516cb80..8dc2f6bf19 100644 --- a/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs +++ b/Assets/Scripts/ResourceSystem/IcosaCollectionFactory.cs @@ -185,6 +185,12 @@ public void Refresh() { throw new NotImplementedException(); } + + public bool Delete(IResource resource) + { + return false; + } + public event Action OnChanged; public event Action OnRefreshingChanged; } diff --git a/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs index 56ad355cad..5a8b0a8d03 100644 --- a/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs +++ b/Assets/Scripts/ResourceSystem/LocalFolderCollectionFactory.cs @@ -92,7 +92,27 @@ public void Refresh() m_Resources.AddRange(m_Dir.EnumerateDirectories().Where(dirInfo => !dirInfo.Name.StartsWith(".")) .Select(dirInfo => new LocalFolderCollection(dirInfo.FullName, dirInfo.Name, m_Icon))); m_Resources.AddRange(m_Dir.EnumerateFiles("*.tilt").Select(fileInfo => new WritableLocalFileResource(fileInfo.FullName))); + OnChanged?.Invoke(); } + + public bool Delete(IResource resource) + { + if (!m_Resources.Contains(resource)) + { + return false; + } + if (resource is IWritableResource writableResource) + { + bool success = writableResource.Delete(); + if (success) + { + Refresh(); + } + return success; + } + return false; + } + public event Action OnChanged; public event Action OnRefreshingChanged; diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index 35efac1687..e83c227d74 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -27,6 +27,7 @@ public ResourceCollectionSketchSet(IResourceCollection collection) m_IconsToLoad = new ConcurrentQueue(); m_Collection = collection; m_ResourceEnumerator = m_Collection.ContentsAsync().GetAsyncEnumerator(); + m_Collection.OnChanged += RequestRefresh; } public string SketchSetType => m_Collection?.Uri?.Scheme ?? ""; @@ -99,7 +100,7 @@ private async Task LoadSketchIcon(ResourceSketch resourceSketch) } var tilt = new DotTiltFile(resourceSketch.ResourceFileInfo.Resource); - using (var thumbStream = await tilt.GetSubFileAsync(TiltFile.FN_THUMBNAIL)) + await using (var thumbStream = await tilt.GetSubFileAsync(TiltFile.FN_THUMBNAIL)) { if (thumbStream == null) { @@ -180,7 +181,10 @@ public IResource GetResource(int index) public void DeleteSketch(int index) { - // do nothing + if (m_Collection.Delete(m_Sketches[index].ResourceFileInfo.Resource)) + { + RequestRefresh(); + } } public void PrecacheSketchModels(int index) @@ -202,7 +206,10 @@ public void NotifySketchChanged(string fullpath) public void RequestRefresh() { - // Not sure we have to do anything here + if (!IsActivelyRefreshingSketches) + { + m_Refreshing = FetchSketchesToAtLeastAsync(m_Sketches.Count - m_LookAhead); + } } public void Update() diff --git a/Assets/Scripts/ResourceSystem/SketchCollection.cs b/Assets/Scripts/ResourceSystem/SketchCollection.cs index 0966fc2af7..e356754cb0 100644 --- a/Assets/Scripts/ResourceSystem/SketchCollection.cs +++ b/Assets/Scripts/ResourceSystem/SketchCollection.cs @@ -69,7 +69,7 @@ public async Task GetIconAsync(int index) // If we do not get an icon, get one from the file? var tilt = new DotTiltFile(resource); - using (var thumbStream = await tilt.GetSubFileAsync(DotTiltFile.FN_THUMBNAIL)) + await using (var thumbStream = await tilt.GetSubFileAsync(DotTiltFile.FN_THUMBNAIL)) { if (thumbStream == null) { diff --git a/Assets/Scripts/ResourceSystem/SubStream.cs b/Assets/Scripts/ResourceSystem/SubStream.cs index a8c0a2d671..26cd6f709f 100644 --- a/Assets/Scripts/ResourceSystem/SubStream.cs +++ b/Assets/Scripts/ResourceSystem/SubStream.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; namespace TiltBrush { /// @@ -18,6 +19,12 @@ public SubStream(Stream original) m_Position = m_Stream.Position; } + public override async ValueTask DisposeAsync() + { + await base.DisposeAsync(); + await m_Stream.DisposeAsync(); + } + public override int Read(byte[] buffer, int offset, int count) { CheckDisposed(); diff --git a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs index 73e7e19e6c..2ab568f470 100644 --- a/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs +++ b/Assets/Scripts/ResourceSystem/WritableLocalFileResource.cs @@ -29,5 +29,11 @@ public async Task GetWriteStreamAsync() { throw new System.NotImplementedException(); } + + public bool Delete() + { + File.Delete(m_Path); + return !File.Exists(m_Path); + } } } diff --git a/Assets/Scripts/Save/DiskSceneFileInfo.cs b/Assets/Scripts/Save/DiskSceneFileInfo.cs index 5cf5056bfb..6788f895bc 100644 --- a/Assets/Scripts/Save/DiskSceneFileInfo.cs +++ b/Assets/Scripts/Save/DiskSceneFileInfo.cs @@ -308,14 +308,16 @@ public bool IsHeaderValid() public async Task ReadMetadataAsync() { SketchMetadata metadata = null; - var stream = await SaveLoadScript.GetMetadataReadStreamAsync(this); - if (stream != null) + await using (var stream = await SaveLoadScript.GetMetadataReadStreamAsync(this)) { - using (var jsonReader = new JsonTextReader(new StreamReader(stream))) + if (stream != null) { - metadata = SaveLoadScript.m_Instance.DeserializeMetadata(jsonReader); - m_SourceId = metadata.SourceId; - m_AssetId = metadata.AssetId; + using (var jsonReader = new JsonTextReader(new StreamReader(stream))) + { + metadata = SaveLoadScript.m_Instance.DeserializeMetadata(jsonReader); + m_SourceId = metadata.SourceId; + m_AssetId = metadata.AssetId; + } } } return metadata; diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 29bb8e87ce..3ed9dac3bd 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -599,7 +599,7 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false m_LastSceneIsLegacy = false; SketchMetadata jsonData; - using (Stream metadata = await GetMetadataReadStreamAsync(fileInfo)) + await using (Stream metadata = await GetMetadataReadStreamAsync(fileInfo)) { if (metadata == null) { @@ -695,7 +695,7 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false var oldGroupToNewGroup = new Dictionary(); // Load sketch - using (var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH)) + await using (var stream = await fileInfo.GetReadStreamAsync(TiltFile.FN_SKETCH)) { Guid[] brushGuids = jsonData.BrushIndex.Select(GetForceSupersededBy).ToArray(); bool legacySketch; diff --git a/Assets/Scripts/Sharing/DriveSync.cs b/Assets/Scripts/Sharing/DriveSync.cs index 43fa4cdab0..b5f2102d89 100644 --- a/Assets/Scripts/Sharing/DriveSync.cs +++ b/Assets/Scripts/Sharing/DriveSync.cs @@ -986,7 +986,7 @@ private async Task UploadItemAsync(Transfer transfer, CancellationToken token) { var hints = new DriveData.File.ContentHintsData(); var fileInfo = new DiskSceneFileInfo(path); - using (var thumbStream = await fileInfo.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) + await using (var thumbStream = await fileInfo.GetReadStreamAsync(TiltFile.FN_THUMBNAIL)) { var thumbBytes = new byte[thumbStream.Length]; int read = await thumbStream.ReadAsync(thumbBytes, 0, thumbBytes.Length); From 270b2cf2c1fa0a9a161a8a41b342d9a228304aa7 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Fri, 14 Jul 2023 14:24:06 +0100 Subject: [PATCH 27/38] Untangle KeyboardPopUpWindow from renaming logic KeyboardPopUpWindow shouldn't have code specific to renaming as it's meant to be generic for all uses of the keyboard --- .../PopUps/PopUpWindow_SketchbookMenu.prefab | 17 +++++++++- Assets/Scripts/GUI/KeyboardPopUpWindow.cs | 18 +++-------- Assets/Scripts/GUI/KeyboardPopupButton.cs | 32 +++++++++++++++++++ .../Scripts/GUI/KeyboardPopupButton.cs.meta | 11 +++++++ Assets/Scripts/GUI/MenuPopUpWindow.cs | 23 +++++++++++++ Assets/Scripts/GUI/OptionButton.cs | 2 +- Assets/Scripts/SketchControlsScript.cs | 5 ++- 7 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 Assets/Scripts/GUI/KeyboardPopupButton.cs create mode 100644 Assets/Scripts/GUI/KeyboardPopupButton.cs.meta diff --git a/Assets/Prefabs/PopUps/PopUpWindow_SketchbookMenu.prefab b/Assets/Prefabs/PopUps/PopUpWindow_SketchbookMenu.prefab index 37f755a53f..f33d01f238 100644 --- a/Assets/Prefabs/PopUps/PopUpWindow_SketchbookMenu.prefab +++ b/Assets/Prefabs/PopUps/PopUpWindow_SketchbookMenu.prefab @@ -931,7 +931,7 @@ MonoBehaviour: m_GameObject: {fileID: 8366139741319417911} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Script: {fileID: 11500000, guid: 68ab65faed9850448927b196242878d7, type: 3} m_Name: m_EditorClassIdentifier: m_DescriptionType: 0 @@ -997,6 +997,21 @@ MonoBehaviour: m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + m_BeforePopupAction: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 114000011997523446} + m_TargetAssemblyTypeName: TiltBrush.MenuPopUpWindow, Assembly-CSharp + m_MethodName: SetInitialKeyboardText + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 references: version: 2 RefIds: [] diff --git a/Assets/Scripts/GUI/KeyboardPopUpWindow.cs b/Assets/Scripts/GUI/KeyboardPopUpWindow.cs index 9f4a726603..287fabd70a 100644 --- a/Assets/Scripts/GUI/KeyboardPopUpWindow.cs +++ b/Assets/Scripts/GUI/KeyboardPopUpWindow.cs @@ -14,12 +14,14 @@ using System; using System.IO; +using UnityEngine; namespace TiltBrush { public class KeyboardPopUpWindow : OptionsPopUpWindow { private KeyboardUI m_KeyboardUI; + [NonSerialized] public static string m_InitialText; [NonSerialized] public static string m_LastInput; public bool m_SanitizeFilename; @@ -30,20 +32,10 @@ void Awake() m_KeyboardUI.KeyPressed += KeyPressed; } - override public void SetPopupCommandParameters(int commandParam, int commandParam2) + override public void Init(GameObject rParent, string sText) { - if (commandParam2 != (int)SketchSetType.User) - { - return; - } - var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User) as FileSketchSet; - var sceneFileInfo = sketchSet.GetSketchSceneFileInfo(commandParam); - var currentName = Path.GetFileName(sceneFileInfo.FullPath); - if (currentName.EndsWith(SaveLoadScript.TILT_SUFFIX)) - { - currentName = currentName.Substring(0, currentName.Length - SaveLoadScript.TILT_SUFFIX.Length); - } - m_KeyboardUI.AddConsoleContent(currentName); + base.Init(rParent, sText); + m_KeyboardUI.AddConsoleContent(m_InitialText); } private void OnDestroy() diff --git a/Assets/Scripts/GUI/KeyboardPopupButton.cs b/Assets/Scripts/GUI/KeyboardPopupButton.cs new file mode 100644 index 0000000000..12c2bd5808 --- /dev/null +++ b/Assets/Scripts/GUI/KeyboardPopupButton.cs @@ -0,0 +1,32 @@ +// Copyright 2023 The Tilt Brush Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using UnityEngine; +using UnityEngine.Events; + +namespace TiltBrush +{ + + public class KeyboardPopupButton : OptionButton + { + [SerializeField] + private UnityEvent m_BeforePopupAction; + + override protected void OnButtonPressed() + { + m_BeforePopupAction.Invoke(this); + base.OnButtonPressed(); + } + } +} // namespace TiltBrush diff --git a/Assets/Scripts/GUI/KeyboardPopupButton.cs.meta b/Assets/Scripts/GUI/KeyboardPopupButton.cs.meta new file mode 100644 index 0000000000..61dd96f588 --- /dev/null +++ b/Assets/Scripts/GUI/KeyboardPopupButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68ab65faed9850448927b196242878d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GUI/MenuPopUpWindow.cs b/Assets/Scripts/GUI/MenuPopUpWindow.cs index a8a4e89333..260876d58a 100644 --- a/Assets/Scripts/GUI/MenuPopUpWindow.cs +++ b/Assets/Scripts/GUI/MenuPopUpWindow.cs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +using System.IO; +using UnityEngine; namespace TiltBrush { @@ -25,6 +27,27 @@ public override void SetPopupCommandParameters(int iCommandParam, int iCommandPa { button.SetCommandParameters(iCommandParam, iCommandParam2); } + + // The rename button should only be enabled for categories that support renaming + var renameButton = GetComponentInChildren(); + SketchSetType sketchSetType = (SketchSetType)iCommandParam2; + renameButton.SetButtonAvailable(sketchSetType == SketchSetType.User); + } + + // This code is specific to the "Rename" button in the Sketchbook menu + // This popup class is currently only used for the Sketchbook menu + // If that changes then this probably belongs in a subclass + public void SetInitialKeyboardText(KeyboardPopupButton btn) + { + SketchSetType sketchSetType = (SketchSetType)btn.m_CommandParam2; + var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User) as FileSketchSet; + var sceneFileInfo = sketchSet.GetSketchSceneFileInfo(btn.m_CommandParam); + var currentName = Path.GetFileName(sceneFileInfo.FullPath); + if (currentName.EndsWith(SaveLoadScript.TILT_SUFFIX)) + { + currentName = currentName.Substring(0, currentName.Length - SaveLoadScript.TILT_SUFFIX.Length); + } + KeyboardPopUpWindow.m_InitialText = currentName; } } diff --git a/Assets/Scripts/GUI/OptionButton.cs b/Assets/Scripts/GUI/OptionButton.cs index b46651c6ff..a6de535b12 100644 --- a/Assets/Scripts/GUI/OptionButton.cs +++ b/Assets/Scripts/GUI/OptionButton.cs @@ -22,7 +22,7 @@ public class OptionButton : BaseButton { [SerializeField] public SketchControlsScript.GlobalCommands m_Command; [SerializeField] public int m_CommandParam = -1; - [SerializeField] protected int m_CommandParam2 = -1; + [SerializeField] public int m_CommandParam2 = -1; [SerializeField] protected bool m_RequiresPopup = false; [SerializeField] protected bool m_CenterPopupOnButton = false; [SerializeField] protected Vector3 m_PopupOffset; diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 1cb0c07c16..3255118764 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -4523,7 +4523,10 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, { var sketchSetType = (SketchSetType)iParam2; SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); - sketchSet.RenameSketch(iParam1, KeyboardPopUpWindow.m_LastInput); + if (sketchSetType == SketchSetType.User) + { + sketchSet.RenameSketch(iParam1, KeyboardPopUpWindow.m_LastInput); + } DismissPopupOnCurrentGazeObject(false); break; } From 4b0f1acc32f318d161027be3d3272101fa63bd39 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Fri, 14 Jul 2023 17:19:36 +0100 Subject: [PATCH 28/38] Ensure m_LastInput has a sane value to start with --- Assets/Scripts/GUI/KeyboardPopUpWindow.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Assets/Scripts/GUI/KeyboardPopUpWindow.cs b/Assets/Scripts/GUI/KeyboardPopUpWindow.cs index 287fabd70a..5297a6a5d0 100644 --- a/Assets/Scripts/GUI/KeyboardPopUpWindow.cs +++ b/Assets/Scripts/GUI/KeyboardPopUpWindow.cs @@ -36,6 +36,7 @@ override public void Init(GameObject rParent, string sText) { base.Init(rParent, sText); m_KeyboardUI.AddConsoleContent(m_InitialText); + m_LastInput = m_InitialText; } private void OnDestroy() @@ -48,6 +49,7 @@ private void KeyPressed(object sender, KeyboardKeyEventArgs e) switch (e.Key.KeyType) { case KeyboardKeyType.Enter: + // Logic will been to be updated if we ever have a multi-line keyboard m_LastInput = m_KeyboardUI.ConsoleContent; if (m_ParentPanel) { From de48257d0119992aa3bdea12692976e95825aaf2 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Fri, 14 Jul 2023 17:20:21 +0100 Subject: [PATCH 29/38] The sketchbook wasn't updating with the renamed sketch --- Assets/Scripts/Save/DiskSceneFileInfo.cs | 11 ++++++----- Assets/Scripts/Save/FileSketchSet.cs | 5 ++++- Assets/Scripts/Save/SceneFileInfo.cs | 2 +- Assets/Scripts/Sharing/GoogleDriveSketchSet.cs | 2 +- Assets/Scripts/Sharing/PolySketchSet.cs | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Assets/Scripts/Save/DiskSceneFileInfo.cs b/Assets/Scripts/Save/DiskSceneFileInfo.cs index 6544eb3fd7..a9169fb0b7 100644 --- a/Assets/Scripts/Save/DiskSceneFileInfo.cs +++ b/Assets/Scripts/Save/DiskSceneFileInfo.cs @@ -235,12 +235,10 @@ public void Delete() } } - public void Rename(string newName) + public string Rename(string newName) { - if (!Valid) { return; } - - //look to delete the file version first - if (File.Exists(m_fullpath)) + // Look to delete the file version first + if (Valid && File.Exists(m_fullpath)) { string dirPath = Path.GetDirectoryName(m_fullpath); string newPath = Path.Combine(dirPath, $"{newName}{SaveLoadScript.TILT_SUFFIX}"); @@ -261,7 +259,10 @@ public void Rename(string newName) { Debug.LogFormat("IO Exception: Can't Rename {0}", m_fullpath); } + + return newPath; } + return m_fullpath; } /// Returns a readable stream to a pre-existing subfile, diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 8ebe5fa471..eea1d40fbd 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -354,7 +354,10 @@ public virtual void RenameSketch(int toRename, string newName) driveSet.NotifySketchChanged(m_Sketches[toRename].SceneFileInfo.FullPath); } - m_Sketches[toRename].SceneFileInfo.Rename(newName); + var newPath = m_Sketches[toRename].SceneFileInfo.Rename(newName); + + m_FileWatcher.NotifyCreated(newPath); + } public virtual void Init() diff --git a/Assets/Scripts/Save/SceneFileInfo.cs b/Assets/Scripts/Save/SceneFileInfo.cs index 2c9b396b87..20aa7ac747 100644 --- a/Assets/Scripts/Save/SceneFileInfo.cs +++ b/Assets/Scripts/Save/SceneFileInfo.cs @@ -60,7 +60,7 @@ public interface SceneFileInfo void Delete(); - void Rename(string newName); + string Rename(string newName); bool IsHeaderValid(); diff --git a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs index 61d0eb1c82..520238f3a6 100644 --- a/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs +++ b/Assets/Scripts/Sharing/GoogleDriveSketchSet.cs @@ -114,7 +114,7 @@ public void Delete() throw new NotImplementedException(); } - public void Rename(string newName) + public string Rename(string newName) { throw new NotImplementedException(); } diff --git a/Assets/Scripts/Sharing/PolySketchSet.cs b/Assets/Scripts/Sharing/PolySketchSet.cs index aa876d4bf5..e13f13a06b 100644 --- a/Assets/Scripts/Sharing/PolySketchSet.cs +++ b/Assets/Scripts/Sharing/PolySketchSet.cs @@ -841,7 +841,7 @@ public void Delete() throw new NotImplementedException(); } - public void Rename(string newName) + public string Rename(string newName) { throw new NotImplementedException(); } From 3558485b1c5da84ae65a478553ef91052a6f5184 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Tue, 18 Jul 2023 13:03:05 +0100 Subject: [PATCH 30/38] Fixes after merging Sketch Renaming and No Headset --- Assets/Scripts/GUI/MenuPopUpWindow.cs | 8 ++++---- Assets/Scripts/InitNoHeadsetMode.cs | 8 ++++---- .../ResourceSystem/ResourceCollectionSketchSet.cs | 5 +++++ Assets/Scripts/ResourceSystem/ResourceFileInfo.cs | 4 ++++ Assets/Scripts/Save/FileSketchSet.cs | 2 +- Assets/Scripts/Sharing/RemoteFileInfo.cs | 4 ++++ Assets/Scripts/SketchControlsScript.cs | 10 +++------- 7 files changed, 25 insertions(+), 16 deletions(-) diff --git a/Assets/Scripts/GUI/MenuPopUpWindow.cs b/Assets/Scripts/GUI/MenuPopUpWindow.cs index 260876d58a..cb4dc18c9b 100644 --- a/Assets/Scripts/GUI/MenuPopUpWindow.cs +++ b/Assets/Scripts/GUI/MenuPopUpWindow.cs @@ -30,8 +30,8 @@ public override void SetPopupCommandParameters(int iCommandParam, int iCommandPa // The rename button should only be enabled for categories that support renaming var renameButton = GetComponentInChildren(); - SketchSetType sketchSetType = (SketchSetType)iCommandParam2; - renameButton.SetButtonAvailable(sketchSetType == SketchSetType.User); + var sketchSetType = (SketchbookPanel.RootSet)iCommandParam2; + renameButton.SetButtonAvailable(sketchSetType == SketchbookPanel.RootSet.Local); } // This code is specific to the "Rename" button in the Sketchbook menu @@ -39,8 +39,8 @@ public override void SetPopupCommandParameters(int iCommandParam, int iCommandPa // If that changes then this probably belongs in a subclass public void SetInitialKeyboardText(KeyboardPopupButton btn) { - SketchSetType sketchSetType = (SketchSetType)btn.m_CommandParam2; - var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User) as FileSketchSet; + var sketchSetType = (SketchbookPanel.RootSet)btn.m_CommandParam2; + var sketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local) as FileSketchSet; var sceneFileInfo = sketchSet.GetSketchSceneFileInfo(btn.m_CommandParam); var currentName = Path.GetFileName(sceneFileInfo.FullPath); if (currentName.EndsWith(SaveLoadScript.TILT_SUFFIX)) diff --git a/Assets/Scripts/InitNoHeadsetMode.cs b/Assets/Scripts/InitNoHeadsetMode.cs index 1c5ff27bbb..a05be5b322 100644 --- a/Assets/Scripts/InitNoHeadsetMode.cs +++ b/Assets/Scripts/InitNoHeadsetMode.cs @@ -26,13 +26,13 @@ void Start() { var dropdown = GetComponentInChildren(); dropdown.ClearOptions(); - var userSketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User); + var userSketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local); for (int i = 0; i < userSketchSet.NumSketches; i++) { var sketchName = userSketchSet.GetSketchName(i); dropdown.options.Add(new TMP_Dropdown.OptionData(sketchName)); } - var curatedSketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Curated); + var curatedSketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Remote); for (int i = 0; i < curatedSketchSet.NumSketches; i++) { var sketchName = curatedSketchSet.GetSketchName(i); @@ -48,7 +48,7 @@ public void Init() var dropdown = GetComponentInChildren(); var index = dropdown.value; - var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User); + var sketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local); if (index < sketchSet.NumSketches) { SceneFileInfo rInfo = sketchSet.GetSketchSceneFileInfo(index); @@ -60,7 +60,7 @@ public void Init() else { index -= sketchSet.NumSketches; - sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Curated); + sketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Remote); var rInfo = sketchSet.GetSketchSceneFileInfo(index); if (rInfo != null) { diff --git a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs index e83c227d74..28652f5264 100644 --- a/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs +++ b/Assets/Scripts/ResourceSystem/ResourceCollectionSketchSet.cs @@ -187,6 +187,11 @@ public void DeleteSketch(int index) } } + public void RenameSketch(int toRename, string newName) + { + throw new NotImplementedException(); + } + public void PrecacheSketchModels(int index) { // TODO: Later, my friend - later. diff --git a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs index 6563129ff6..922a0f1c59 100644 --- a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs +++ b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs @@ -28,6 +28,10 @@ public void Delete() { throw new System.NotImplementedException(); } + public string Rename(string newName) + { + throw new System.NotImplementedException(); + } public bool IsHeaderValid() { return true; // TODO : FAAAEEEEKE diff --git a/Assets/Scripts/Save/FileSketchSet.cs b/Assets/Scripts/Save/FileSketchSet.cs index 2939784786..e6790a89d1 100644 --- a/Assets/Scripts/Save/FileSketchSet.cs +++ b/Assets/Scripts/Save/FileSketchSet.cs @@ -348,7 +348,7 @@ public virtual void RenameSketch(int toRename, string newName) m_FileWatcher.NotifyDelete(m_Sketches[toRename].SceneFileInfo.FullPath); // Notify the drive sketchset as the deleted file may now be visible there. - var driveSet = SketchCatalog.m_Instance.GetSet(SketchSetType.Drive); + var driveSet = SketchCatalog.m_Instance.GetSketchSet(GoogleDriveSketchSet.UriString); if (driveSet != null) { driveSet.NotifySketchChanged(m_Sketches[toRename].SceneFileInfo.FullPath); diff --git a/Assets/Scripts/Sharing/RemoteFileInfo.cs b/Assets/Scripts/Sharing/RemoteFileInfo.cs index d70d517d4b..9d61bb805a 100644 --- a/Assets/Scripts/Sharing/RemoteFileInfo.cs +++ b/Assets/Scripts/Sharing/RemoteFileInfo.cs @@ -38,6 +38,10 @@ public void Delete() { throw new System.NotImplementedException(); } + public string Rename(string newName) + { + throw new NotImplementedException(); + } public bool IsHeaderValid() { return true; diff --git a/Assets/Scripts/SketchControlsScript.cs b/Assets/Scripts/SketchControlsScript.cs index 7221fdf2ca..e04a805766 100644 --- a/Assets/Scripts/SketchControlsScript.cs +++ b/Assets/Scripts/SketchControlsScript.cs @@ -4138,7 +4138,7 @@ private IEnumerator LoadSketchCoroutine(SceneFileInfo fileInfo, bool quickload, m_WidgetManager.ValidateCurrentCameraPath(); } - private void LoadSketch(SceneFileInfo fileInfo, bool quickload = false, bool additive = false) + public void LoadSketch(SceneFileInfo fileInfo, bool quickload = false, bool additive = false) { LightsControlScript.m_Instance.DiscoMode = false; m_WidgetManager.FollowingPath = false; @@ -4546,12 +4546,8 @@ public void IssueGlobalCommand(GlobalCommands rEnum, int iParam1 = -1, } case GlobalCommands.RenameSketch: { - var sketchSetType = (SketchSetType)iParam2; - SketchSet sketchSet = SketchCatalog.m_Instance.GetSet(sketchSetType); - if (sketchSetType == SketchSetType.User) - { - sketchSet.RenameSketch(iParam1, KeyboardPopUpWindow.m_LastInput); - } + ISketchSet sketchSet = SketchbookPanel.Instance.GetSketchSet((SketchbookPanel.RootSet)iParam2); + sketchSet.RenameSketch(iParam1, KeyboardPopUpWindow.m_LastInput); DismissPopupOnCurrentGazeObject(false); break; } From f9468ee9b5f9b4e7b14f9696a6c09b6088c39174 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Tue, 25 Jul 2023 18:22:06 +0100 Subject: [PATCH 31/38] Unused import --- Assets/Scripts/ResourceSystem/ResourceFileInfo.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs index 922a0f1c59..d430dd9b5e 100644 --- a/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs +++ b/Assets/Scripts/ResourceSystem/ResourceFileInfo.cs @@ -1,6 +1,6 @@ using System.IO; using System.Threading.Tasks; -using USD.NET; + namespace TiltBrush { public class ResourceFileInfo : SceneFileInfo From a2eff70c5750bdb8678e1fff7a466088a650f1d6 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Thu, 7 Sep 2023 10:28:14 +0100 Subject: [PATCH 32/38] Post-merge fixes --- Assets/Scripts/GUI/MenuPopUpWindow.cs | 30 ------------------- .../Scripts/GUI/SketchbookMenuPopUpWindow.cs | 21 +++++-------- 2 files changed, 8 insertions(+), 43 deletions(-) diff --git a/Assets/Scripts/GUI/MenuPopUpWindow.cs b/Assets/Scripts/GUI/MenuPopUpWindow.cs index ccdbb89c5e..f0ebd17fd4 100644 --- a/Assets/Scripts/GUI/MenuPopUpWindow.cs +++ b/Assets/Scripts/GUI/MenuPopUpWindow.cs @@ -20,36 +20,6 @@ namespace TiltBrush class MenuPopUpWindow : PopUpWindow { - public override void SetPopupCommandParameters(int iCommandParam, int iCommandParam2) - { - // TODO : Fix this hangnail. - OptionButton[] optionButtons = GetComponentsInChildren(); - foreach (OptionButton button in optionButtons) - { - button.SetCommandParameters(iCommandParam, iCommandParam2); - } - - // The rename button should only be enabled for categories that support renaming - var renameButton = GetComponentInChildren(); - var sketchSetType = (SketchbookPanel.RootSet)iCommandParam2; - renameButton.SetButtonAvailable(sketchSetType == SketchbookPanel.RootSet.Local); - } - - // This code is specific to the "Rename" button in the Sketchbook menu - // This popup class is currently only used for the Sketchbook menu - // If that changes then this probably belongs in a subclass - public void SetInitialKeyboardText(KeyboardPopupButton btn) - { - var sketchSetType = (SketchbookPanel.RootSet)btn.m_CommandParam2; - var sketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local) as FileSketchSet; - var sceneFileInfo = sketchSet.GetSketchSceneFileInfo(btn.m_CommandParam); - var currentName = Path.GetFileName(sceneFileInfo.FullPath); - if (currentName.EndsWith(SaveLoadScript.TILT_SUFFIX)) - { - currentName = currentName.Substring(0, currentName.Length - SaveLoadScript.TILT_SUFFIX.Length); - } - KeyboardPopUpWindow.m_InitialText = currentName; - } } } // namespace TiltBrush diff --git a/Assets/Scripts/GUI/SketchbookMenuPopUpWindow.cs b/Assets/Scripts/GUI/SketchbookMenuPopUpWindow.cs index e006fac62d..8f0ea91784 100644 --- a/Assets/Scripts/GUI/SketchbookMenuPopUpWindow.cs +++ b/Assets/Scripts/GUI/SketchbookMenuPopUpWindow.cs @@ -17,7 +17,6 @@ namespace TiltBrush { - class SketchbookMenuPopUpWindow : MenuPopUpWindow { public override void SetPopupCommandParameters(int iCommandParam, int iCommandParam2) @@ -26,26 +25,22 @@ public override void SetPopupCommandParameters(int iCommandParam, int iCommandPa OptionButton[] optionButtons = GetComponentsInChildren(); foreach (OptionButton button in optionButtons) { - if (iCommandParam == 0) - { - button.SetButtonAvailable(false); - } - else - { - button.SetCommandParameters(iCommandParam, iCommandParam2); - } + button.SetCommandParameters(iCommandParam, iCommandParam2); } // The rename button should only be enabled for categories that support renaming var renameButton = GetComponentInChildren(); - SketchSetType sketchSetType = (SketchSetType)iCommandParam2; - renameButton.SetButtonAvailable(sketchSetType == SketchSetType.User); + var sketchSetType = (SketchbookPanel.RootSet)iCommandParam2; + renameButton.SetButtonAvailable(sketchSetType == SketchbookPanel.RootSet.Local); } + // This code is specific to the "Rename" button in the Sketchbook menu + // This popup class is currently only used for the Sketchbook menu + // If that changes then this probably belongs in a subclass public void SetInitialKeyboardText(KeyboardPopupButton btn) { - SketchSetType sketchSetType = (SketchSetType)btn.m_CommandParam2; - var sketchSet = SketchCatalog.m_Instance.GetSet(SketchSetType.User) as FileSketchSet; + var sketchSetType = (SketchbookPanel.RootSet)btn.m_CommandParam2; + var sketchSet = SketchbookPanel.Instance.GetSketchSet(SketchbookPanel.RootSet.Local) as FileSketchSet; var sceneFileInfo = sketchSet.GetSketchSceneFileInfo(btn.m_CommandParam); var currentName = Path.GetFileName(sceneFileInfo.FullPath); if (currentName.EndsWith(SaveLoadScript.TILT_SUFFIX)) From 36fbb21803a173fd2ae17c30c019bb76bbf9627d Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Fri, 3 Nov 2023 18:22:26 -0700 Subject: [PATCH 33/38] Remove 'OriginalStream' - I don't remember why it was there and it was breaking the sketchbook. --- Assets/Scripts/ResourceSystem/DotTiltFile.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Assets/Scripts/ResourceSystem/DotTiltFile.cs b/Assets/Scripts/ResourceSystem/DotTiltFile.cs index 8d4a341bfd..540fb65cea 100644 --- a/Assets/Scripts/ResourceSystem/DotTiltFile.cs +++ b/Assets/Scripts/ResourceSystem/DotTiltFile.cs @@ -13,7 +13,6 @@ public class DotTiltFile { public class SubFileStream : Stream { - private Stream m_OriginalStream; private SubStream m_SubStream; private ZipArchive m_Archive; private ZipArchiveEntry m_Entry; @@ -31,7 +30,6 @@ public override async ValueTask DisposeAsync() await m_Stream.DisposeAsync(); m_Archive.Dispose(); await m_SubStream.DisposeAsync(); - await m_OriginalStream.DisposeAsync(); } public override void Flush() { From 3dd2229fdeeebeecf3c958a0efa1c5966c3444a0 Mon Sep 17 00:00:00 2001 From: Tim Aidley Date: Fri, 3 Nov 2023 18:26:34 -0700 Subject: [PATCH 34/38] Merge sketchbook panel --- Assets/Prefabs/Panels/SketchbookPanel.prefab | 3762 +++++++++++++---- .../Panels/SketchbookPanel.prefab.meta | 2 +- Assets/Scenes/Main.unity | 2 +- 3 files changed, 2936 insertions(+), 830 deletions(-) diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab b/Assets/Prefabs/Panels/SketchbookPanel.prefab index 51af689cea..5baca72231 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab @@ -113,7 +113,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: f74f6eac3e3e3c640b1a343ec46ba2dd, type: 3} @@ -130,6 +148,9 @@ MonoBehaviour: m_ButtonType: 1 m_GotoPage: 0 m_InactiveColor: {r: 0, g: 0, b: 0, a: 0} + references: + version: 2 + RefIds: [] --- !u!1 &109144 GameObject: m_ObjectHideFlags: 0 @@ -300,6 +321,15 @@ MonoBehaviour: type: 3} m_Command: 5200 m_PanelDescription: + m_LocalizedPanelDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_PanelDescriptionPrefab: {fileID: 0} m_PanelDescriptionOffset: {x: 2.25, y: 0, z: 0} m_PanelDescriptionColor: {r: 1, g: 1, b: 1, a: 1} @@ -313,7 +343,7 @@ MonoBehaviour: m_Decor: - {fileID: 1718400279081948} - {fileID: 1336920247228296} - - {fileID: 1165898094550002} + - {fileID: 6764173967791837319} - {fileID: 148956} - {fileID: 135162} - {fileID: 175552} @@ -323,7 +353,7 @@ MonoBehaviour: - {fileID: 178916} - {fileID: 195798} - {fileID: 192230} - - {fileID: 1000013652916002} + - {fileID: 7091369650102597356} - {fileID: 1000010358450346} - {fileID: 1000010567837980} - {fileID: 1000012616600414} @@ -334,7 +364,7 @@ MonoBehaviour: - {fileID: 1000013456164478} - {fileID: 1637582873204310} - {fileID: 1227842993942742} - - {fileID: 1367255127373718} + - {fileID: 7809439681076855981} - {fileID: 1838418458797118} - {fileID: 1041581295466488} - {fileID: 1178598216715188} @@ -370,14 +400,45 @@ MonoBehaviour: type: 3} m_UnknownImageTexture: {fileID: 2800000, guid: b68201fa2e266264089f97700761a547, type: 3} - m_PanelText: {fileID: 102610625472293180} - m_PanelTextPro: {fileID: 0} - m_PanelTextStandard: Your Sketches - m_PanelTextShowcase: Featured Sketches - m_PanelTextLiked: Liked Sketches - m_PanelTextDrive: Backed-up Sketches - m_NoSketchesMessage: {fileID: 1000013652916002} - m_NoDriveSketchesMessage: {fileID: 3543571790462569700} + m_PanelTextPro: {fileID: 4976050102289928667} + m_PanelTextStandard: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8042722189090816 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PanelTextShowcase: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8043915934146560 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PanelTextLiked: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8044071635099648 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PanelTextDrive: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8044139993866240 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_NoSketchesMessage: {fileID: 7091369650102597356} + m_NoDriveSketchesMessage: {fileID: 8945951863336520500} m_NoLikesMessage: {fileID: 1000010821915206} m_NotLoggedInMessage: {fileID: 1676764474539712} m_NotLoggedInDriveMessage: {fileID: 6839353153389732464} @@ -421,6 +482,9 @@ MonoBehaviour: m_DriveFullIcon: {fileID: 894190226255371916} m_SketchIconUvScale: {x: 0.7, y: 0.7} m_ReadOnlyPopupOffset: {x: 0.2, y: 0, z: 0} + references: + version: 2 + RefIds: [] m_FolderIcon: {fileID: 2800000, guid: ee2622d6ec17a3640a40234981c65bff, type: 3} --- !u!114 &114513666115880546 MonoBehaviour: @@ -774,8 +838,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Your Sketches - m_DescriptionTextExtra: From This Computer + m_DescriptionText: SKETCHBOOK_PANEL_LOCALGALLERY_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8051469124870144 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: SKETCHBOOK_PANEL_LOCALGALLERY_BUTTON_DESCRIPTION_EXTRA + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8051592198332416 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 8e9ef71c6619e4d4faf5027d2e486124, type: 3} @@ -789,6 +871,9 @@ MonoBehaviour: m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 m_ButtonType: 6 + references: + version: 2 + RefIds: [] --- !u!1 &129824 GameObject: m_ObjectHideFlags: 0 @@ -903,7 +988,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} @@ -920,6 +1023,9 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + references: + version: 2 + RefIds: [] --- !u!1 &130496 GameObject: m_ObjectHideFlags: 0 @@ -1382,7 +1488,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} @@ -1399,6 +1523,9 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + references: + version: 2 + RefIds: [] --- !u!1 &138864 GameObject: m_ObjectHideFlags: 0 @@ -1428,7 +1555,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4653590090589872} - - {fileID: 4393356585195150} + - {fileID: 1427454329584301013} - {fileID: 400022} - {fileID: 7926938724112014635} - {fileID: 5835854812254485208} @@ -1450,8 +1577,8 @@ Transform: - {fileID: 3686855872783221364} - {fileID: 4080001203028523953} - {fileID: 1119913004652199461} - - {fileID: 4000012873944384} - - {fileID: 2539730209626117130} + - {fileID: 7854805381944268023} + - {fileID: 1308720329717664990} - {fileID: 4000013760615668} - {fileID: 4000012758470188} - {fileID: 4405002968423422} @@ -1578,7 +1705,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} @@ -1595,6 +1740,9 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + references: + version: 2 + RefIds: [] --- !u!1 &148956 GameObject: m_ObjectHideFlags: 0 @@ -1795,8 +1943,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Favorite Sketches - m_DescriptionTextExtra: That you have liked + m_DescriptionText: SKETCHBOOK_PANEL_LIKED_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8052141249503232 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: SKETCHBOOK_PANEL_LIKED_BUTTON_DESCRIPTION_EXTRA + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8052215190888448 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 0cdb2feeef1898445b0f54660acd59d8, type: 3} @@ -1810,6 +1976,9 @@ MonoBehaviour: m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 m_ButtonType: 3 + references: + version: 2 + RefIds: [] --- !u!1 &162048 GameObject: m_ObjectHideFlags: 0 @@ -2201,7 +2370,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} @@ -2218,6 +2405,9 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + references: + version: 2 + RefIds: [] --- !u!1 &172220 GameObject: m_ObjectHideFlags: 0 @@ -2498,7 +2688,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 6f4bc4516de64ce4e81679185dcd5d54, type: 3} @@ -2515,6 +2723,9 @@ MonoBehaviour: m_ButtonType: 2 m_GotoPage: 0 m_InactiveColor: {r: 0.3529412, g: 0.3529412, b: 0.3529412, a: 1} + references: + version: 2 + RefIds: [] --- !u!1 &175552 GameObject: m_ObjectHideFlags: 0 @@ -3442,7 +3653,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: ab8b9a0b96b6cb74ca1e518f3c56b425, type: 3} @@ -3459,6 +3688,9 @@ MonoBehaviour: m_ButtonType: 0 m_GotoPage: 0 m_InactiveColor: {r: 0, g: 0, b: 0, a: 0} + references: + version: 2 + RefIds: [] --- !u!1 &197350 GameObject: m_ObjectHideFlags: 0 @@ -3718,9 +3950,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012892386556} - - component: {fileID: 23000013296900752} - - component: {fileID: 102000013715634272} + - component: {fileID: 7167905894172160717} + - component: {fileID: 1003378931634643767} + - component: {fileID: 6108010066904554372} + - component: {fileID: 3128470258508561836} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -3728,22 +3961,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000012892386556 -Transform: +--- !u!224 &7167905894172160717 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000010358450346} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.02} + m_LocalPosition: {x: 0, y: 0, z: -0.02} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000013760615668} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000013296900752 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.236} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &1003378931634643767 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3756,14 +3994,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3775,7 +4013,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -3785,32 +4023,142 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000013715634272 -TextMesh: - serializedVersion: 3 +--- !u!114 &6108010066904554372 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000010358450346} - m_Text: 'Like sketches + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Like sketches on Poly to see them here' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: serializedVersion: 2 rgba: 4294967295 + m_fontSize: 1.45 + m_fontSizeBase: 1.45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -40 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1003378931634643767} + m_maskType: 0 +--- !u!114 &3128470258508561836 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000010358450346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098564 + references: + version: 2 + RefIds: + - rid: 8021623547164098564 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 6108010066904554372} + m_TrackedProperties: + items: + - rid: 8021623547164098565 + m_UpdateType: 0 + - rid: 8021623547164098565 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10133179773722624 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1000010365406468 GameObject: m_ObjectHideFlags: 0 @@ -4172,7 +4520,25 @@ MonoBehaviour: m_DescriptionType: 0 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} @@ -4192,13 +4558,52 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} m_AnonymousTexture: {fileID: 2800000, guid: edd2e08d6f610b840828462609546014, type: 3} - m_LoggedInText: Accounts - m_LogInText: Accounts + m_LoggedInText: ADMIN_PANEL_PROFILE_BUTTON_LOGGEDIN + m_LocalizedLoggedInText: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 5065459298443264 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_LogInText: ADMIN_PANEL_PROFILE_BUTTON_LOGIN + m_LocalizedLogInText: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 5065626072358912 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + references: + version: 2 + RefIds: [] --- !u!1 &1000010744527238 GameObject: m_ObjectHideFlags: 0 @@ -4311,7 +4716,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4000012892386556} + - {fileID: 7167905894172160717} - {fileID: 4000010586237508} - {fileID: 4000012999227018} - {fileID: 4000013454894384} @@ -4724,8 +5129,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Featured Sketches - m_DescriptionTextExtra: From the Internet + m_DescriptionText: SKETCHBOOK_PANEL_SHOWCASE_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8051847228792832 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: SKETCHBOOK_PANEL_SHOWCASE_BUTTON_DESCRIPTION_EXTRA + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8052065399709696 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: 78bb99e2fe13ca44d9d0b4ab7882f4ce, type: 3} @@ -4739,6 +5162,9 @@ MonoBehaviour: m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 m_ButtonType: 5 + references: + version: 2 + RefIds: [] --- !u!1 &1000011692107830 GameObject: m_ObjectHideFlags: 0 @@ -5212,7 +5638,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4032955052552346} + - {fileID: 6005845494309965052} - {fileID: 4000013868811186} m_Father: {fileID: 473678} m_RootOrder: 30 @@ -5267,9 +5693,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000011602742270} - - component: {fileID: 23000012840096384} - - component: {fileID: 102000012064194272} + - component: {fileID: 2996170910482353195} + - component: {fileID: 8682248057598384132} + - component: {fileID: 1274468167522291073} + - component: {fileID: 3203423596149443903} m_Layer: 16 m_Name: Ok m_TagString: Untagged @@ -5277,22 +5704,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4000011602742270 -Transform: +--- !u!224 &2996170910482353195 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012616600414} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.277, y: 0, z: -0.02933333} - m_LocalScale: {x: 5.905732, y: 5.905732, z: 2.952866} + m_LocalPosition: {x: 0, y: 0, z: -0.02933333} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4000010586237508} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000012840096384 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.277, y: 0} + m_SizeDelta: {x: 0.85, y: 0.67} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8682248057598384132 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5305,14 +5737,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -5324,7 +5756,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -5334,28 +5766,138 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000012064194272 -TextMesh: - serializedVersion: 3 +--- !u!114 &1274468167522291073 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012616600414} - m_Text: OPEN - m_OffsetZ: 0 - m_CharacterSize: 0.01 - m_LineSpacing: 0.75 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: OPEN + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: serializedVersion: 2 rgba: 4294967295 + m_fontSize: 3.8 + m_fontSizeBase: 3.8 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8682248057598384132} + m_maskType: 0 +--- !u!114 &3203423596149443903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012616600414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098566 + references: + version: 2 + RefIds: + - rid: 8021623547164098566 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 1274468167522291073} + m_TrackedProperties: + items: + - rid: 8021623547164098567 + m_UpdateType: 0 + - rid: 8021623547164098567 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10133306584309760 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1000012741200280 GameObject: m_ObjectHideFlags: 0 @@ -5549,6 +6091,7 @@ GameObject: - component: {fileID: 33000011988818744} - component: {fileID: 114000010157185962} - component: {fileID: 222469015342790522} + - component: {fileID: 8486748147559205864} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -5646,7 +6189,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: 'Retrieving + m_text: 'Retrieving sketches... @@ -5660,7 +6203,7 @@ MonoBehaviour: m_fontColor32: serializedVersion: 2 rgba: 4288059030 - m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + m_fontColor: {r: 1, g: 1, b: 1, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -5716,12 +6259,12 @@ MonoBehaviour: m_margin: {x: 0, y: 0, z: 0, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 23000014001274338} m_maskType: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 --- !u!222 &222469015342790522 CanvasRenderer: m_ObjectHideFlags: 0 @@ -5730,6 +6273,46 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1000012918130662} m_CullTransparentMesh: 0 +--- !u!114 &8486748147559205864 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000012918130662} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098568 + references: + version: 2 + RefIds: + - rid: 8021623547164098568 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 114000010157185962} + m_TrackedProperties: + items: + - rid: 8021623547164098569 + m_UpdateType: 0 + - rid: 8021623547164098569 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10133516949626880 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1000013171469736 GameObject: m_ObjectHideFlags: 0 @@ -6195,7 +6778,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1000013652916002 +--- !u!1 &1000013782811050 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6203,143 +6786,44 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4000012873944384} - - component: {fileID: 23000012533341368} - - component: {fileID: 102000012815524228} + - component: {fileID: 4000010586237508} + - component: {fileID: 33000013863582604} + - component: {fileID: 23000010413877198} + - component: {fileID: 65000013112234484} + - component: {fileID: 114000010491166222} m_Layer: 16 - m_Name: NoSketchesMessage + m_Name: PopUpButton_GotIt m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &4000012873944384 + m_IsActive: 1 +--- !u!4 &4000010586237508 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.24, y: 0, z: -0.05} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1000013782811050} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.44, z: -0.054} + m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 23 + m_Children: + - {fileID: 2996170910482353195} + - {fileID: 4000012865260200} + m_Father: {fileID: 4000013760615668} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000012533341368 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102000012815524228 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013652916002} - m_Text: 'No saved - - sketches' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1000013782811050 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4000010586237508} - - component: {fileID: 33000013863582604} - - component: {fileID: 23000010413877198} - - component: {fileID: 65000013112234484} - - component: {fileID: 114000010491166222} - m_Layer: 16 - m_Name: PopUpButton_GotIt - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000010586237508 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -0.44, z: -0.054} - m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4000011602742270} - - {fileID: 4000012865260200} - m_Father: {fileID: 4000013760615668} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &33000013863582604 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1000013782811050} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &23000010413877198 +--- !u!33 &33000013863582604 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013782811050} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &23000010413877198 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6409,7 +6893,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -6429,10 +6931,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!1 &1000013804988808 GameObject: m_ObjectHideFlags: 0 @@ -6690,9 +7213,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4522282957815948} - - component: {fileID: 23073115017278414} - - component: {fileID: 102499556142731132} + - component: {fileID: 2142495054287846962} + - component: {fileID: 2064203719937744199} + - component: {fileID: 9136033323389140514} + - component: {fileID: 7516585634794017388} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -6700,22 +7224,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4522282957815948 -Transform: +--- !u!224 &2142495054287846962 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1041581295466488} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 4405259647245308} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23073115017278414 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.236} + m_SizeDelta: {x: 20, y: 5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &2064203719937744199 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6728,14 +7257,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6747,7 +7276,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -6757,30 +7286,140 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102499556142731132 -TextMesh: - serializedVersion: 3 +--- !u!114 &9136033323389140514 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1041581295466488} - m_Text: 'Sign in to access + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Sign in to access Poly sketches' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.85 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: serializedVersion: 2 rgba: 4294967295 + m_fontSize: 1.45 + m_fontSizeBase: 1.45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -20 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2064203719937744199} + m_maskType: 0 +--- !u!114 &7516585634794017388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1041581295466488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098572 + references: + version: 2 + RefIds: + - rid: 8021623547164098572 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 9136033323389140514} + m_TrackedProperties: + items: + - rid: 8021623547164098573 + m_UpdateType: 0 + - rid: 8021623547164098573 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10134539248312320 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1147890328312932 GameObject: m_ObjectHideFlags: 0 @@ -6940,7 +7579,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1165898094550002 +--- !u!1 &1178598216715188 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6948,52 +7587,58 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4393356585195150} - - component: {fileID: 23886380444155872} - - component: {fileID: 102610625472293180} + - component: {fileID: 8468573391107282333} + - component: {fileID: 7586735930857361305} + - component: {fileID: 5001175044127519160} + - component: {fileID: 1305351789429505216} m_Layer: 16 - m_Name: TextLine + m_Name: Signin m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4393356585195150 -Transform: +--- !u!224 &8468573391107282333 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.509, y: 1.084, z: -0.002} + m_GameObject: {fileID: 1178598216715188} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.009999996} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 1 + m_Father: {fileID: 4227232315394708} + m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23886380444155872 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.092, y: -0.251} + m_SizeDelta: {x: 1, y: 0.5} + m_Pivot: {x: 0, y: 0} +--- !u!23 &7586735930857361305 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} + m_GameObject: {fileID: 1178598216715188} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7005,7 +7650,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -7015,125 +7660,138 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102610625472293180 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1165898094550002} - m_Text: Your Sketches - m_OffsetZ: 0 - m_CharacterSize: 0.025 - m_LineSpacing: 1 - m_Anchor: 0 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 56 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 ---- !u!1 &1178598216715188 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4757857785376650} - - component: {fileID: 23872249293856394} - - component: {fileID: 102911170989384496} - m_Layer: 16 - m_Name: Signin - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4757857785376650 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1178598216715188} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} - m_LocalScale: {x: 4, y: 4, z: 2.857143} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4227232315394708} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23872249293856394 -MeshRenderer: +--- !u!114 &5001175044127519160 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1178598216715188} m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102911170989384496 -TextMesh: - serializedVersion: 3 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: SIGN IN + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 3.43 + m_fontSizeBase: 3.43 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 7586735930857361305} + m_maskType: 0 +--- !u!114 &1305351789429505216 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1178598216715188} - m_Text: SIGN IN - m_OffsetZ: 0 - m_CharacterSize: 0.02 - m_LineSpacing: 1 - m_Anchor: 6 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 43 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098580 + references: + version: 2 + RefIds: + - rid: 8021623547164098580 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 5001175044127519160} + m_TrackedProperties: + items: + - rid: 8021623547164098581 + m_UpdateType: 0 + - rid: 8021623547164098581 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10137717402476544 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1227842993942742 GameObject: m_ObjectHideFlags: 0 @@ -7166,7 +7824,7 @@ Transform: m_LocalScale: {x: 1.05, y: 2.5, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4834806845115958} + - {fileID: 6874271134819684725} - {fileID: 4252546109650552} - {fileID: 4160166080439610} - {fileID: 4088058456074744} @@ -7251,7 +7909,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -7271,12 +7947,33 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} m_AdjustDistanceAmount: 1 m_NewSketchButtonBG: {fileID: 23829150869085828} + references: + version: 2 + RefIds: [] --- !u!1 &1329085538968134 GameObject: m_ObjectHideFlags: 0 @@ -7609,103 +8306,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &1367255127373718 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4834806845115958} - - component: {fileID: 23314464775903874} - - component: {fileID: 102373028218004392} - m_Layer: 16 - m_Name: TextLine - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4834806845115958 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.46000004, z: -0.002} - m_LocalScale: {x: 0.95238096, y: 0.4, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4604395735417884} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23314464775903874 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102373028218004392 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1367255127373718} - m_Text: New Sketch - m_OffsetZ: 0 - m_CharacterSize: 0.027 - m_LineSpacing: 1 - m_Anchor: 1 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 --- !u!1 &1398843787414576 GameObject: m_ObjectHideFlags: 0 @@ -7716,9 +8316,9 @@ GameObject: m_Component: - component: {fileID: 224259994149328172} - component: {fileID: 23402643382222860} - - component: {fileID: 33829677418357686} - component: {fileID: 114268548082608368} - component: {fileID: 222820159282912654} + - component: {fileID: 3231409004927178707} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -7788,14 +8388,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &33829677418357686 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1398843787414576} - m_Mesh: {fileID: 0} --- !u!114 &114268548082608368 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7816,7 +8408,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: 'Error gathering sketches from Poly + m_text: 'Error gathering sketches from Poly @@ -7829,8 +8421,8 @@ MonoBehaviour: m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4288059030 - m_fontColor: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1} + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -7842,7 +8434,7 @@ MonoBehaviour: m_spriteAsset: {fileID: 0} m_tintAllSprites: 0 m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: 0 + m_TextStyleHashCode: -1183493901 m_overrideHtmlColors: 0 m_faceColor: serializedVersion: 2 @@ -7854,9 +8446,9 @@ MonoBehaviour: m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 514 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 m_characterSpacing: 0 m_wordSpacing: 0 m_lineSpacing: -30 @@ -7886,12 +8478,12 @@ MonoBehaviour: m_margin: {x: 0, y: 0, z: 0, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 - _SortingLayer: 0 - _SortingLayerID: 0 - _SortingOrder: 0 m_hasFontAssetChanged: 0 m_renderer: {fileID: 23402643382222860} m_maskType: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 --- !u!222 &222820159282912654 CanvasRenderer: m_ObjectHideFlags: 0 @@ -7900,6 +8492,46 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1398843787414576} m_CullTransparentMesh: 0 +--- !u!114 &3231409004927178707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398843787414576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098570 + references: + version: 2 + RefIds: + - rid: 8021623547164098570 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 114268548082608368} + m_TrackedProperties: + items: + - rid: 8021623547164098571 + m_UpdateType: 0 + - rid: 8021623547164098571 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10134247853236224 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1585279513007384 GameObject: m_ObjectHideFlags: 0 @@ -8098,7 +8730,7 @@ Transform: m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4757857785376650} + - {fileID: 8468573391107282333} - {fileID: 4483479252455118} m_Father: {fileID: 4405259647245308} m_RootOrder: 1 @@ -8168,7 +8800,25 @@ MonoBehaviour: m_DescriptionType: -1 m_DescriptionYOffset: 0 m_DescriptionText: Sign out of Poly + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -8188,10 +8838,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0.24, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!65 &65396808301261166 BoxCollider: m_ObjectHideFlags: 0 @@ -8447,7 +9118,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 4522282957815948} + - {fileID: 2142495054287846962} - {fileID: 4227232315394708} - {fileID: 4572210679967688} m_Father: {fileID: 473678} @@ -8503,9 +9174,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4032955052552346} - - component: {fileID: 23917627250300364} - - component: {fileID: 102687011017508858} + - component: {fileID: 6005845494309965052} + - component: {fileID: 9049876669720987612} + - component: {fileID: 7239510848270997148} + - component: {fileID: 8723754006570149718} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -8513,8 +9185,8 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4032955052552346 -Transform: +--- !u!224 &6005845494309965052 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -8528,7 +9200,12 @@ Transform: m_Father: {fileID: 4000011114460008} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23917627250300364 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1.2, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &9049876669720987612 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8541,14 +9218,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -8560,7 +9237,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -8570,15 +9247,27 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &102687011017508858 -TextMesh: - serializedVersion: 3 +--- !u!114 &7239510848270997148 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1685631667352684} - m_Text: 'Poly was shut down + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Poly was shut down on 2021/06/30 @@ -8586,19 +9275,117 @@ TextMesh: Icosa Gallery support coming soon!' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: serializedVersion: 2 rgba: 4294967295 + m_fontSize: 1.45 + m_fontSizeBase: 1.45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -40 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 9049876669720987612} + m_maskType: 0 +--- !u!114 &8723754006570149718 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685631667352684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098576 + references: + version: 2 + RefIds: + - rid: 8021623547164098576 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 7239510848270997148} + m_TrackedProperties: + items: + - rid: 8021623547164098577 + m_UpdateType: 0 + - rid: 8021623547164098577 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10134789291745280 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &1718400279081948 GameObject: m_ObjectHideFlags: 0 @@ -8829,8 +9616,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Close Sketchbook + m_DescriptionText: SKETCHBOOK_PANEL_CLOSE_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8044507112906752 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -8850,10 +9655,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!1 &894190226255371916 GameObject: m_ObjectHideFlags: 0 @@ -8966,8 +9792,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Full + m_DescriptionText: SKETCHBOOK_PANEL_DRIVEFULL_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8054220533768192 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -8987,10 +9831,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!1 &915226954648437342 GameObject: m_ObjectHideFlags: 0 @@ -9115,9 +9980,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8692506305276691177} - - component: {fileID: 2293314450001802957} - - component: {fileID: 690590041796884266} + - component: {fileID: 7177981414213611291} + - component: {fileID: 2110186084386238975} + - component: {fileID: 5243513803786386481} + - component: {fileID: 812241305398734641} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -9125,22 +9991,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8692506305276691177 -Transform: +--- !u!224 &7177981414213611291 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2017844286305016362} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.236, z: -0.019999996} + m_LocalPosition: {x: 0, y: 0, z: -0.019999996} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1524240171334712824} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2293314450001802957 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.236} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &2110186084386238975 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9153,14 +10024,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9172,7 +10043,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -9182,30 +10053,140 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &690590041796884266 -TextMesh: - serializedVersion: 3 +--- !u!114 &5243513803786386481 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2017844286305016362} - m_Text: 'Sign in to access + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Sign in to access Google Drive' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.85 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: serializedVersion: 2 rgba: 4294967295 + m_fontSize: 1.5 + m_fontSizeBase: 1.5 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -20 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2110186084386238975} + m_maskType: 0 +--- !u!114 &812241305398734641 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017844286305016362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098574 + references: + version: 2 + RefIds: + - rid: 8021623547164098574 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 5243513803786386481} + m_TrackedProperties: + items: + - rid: 8021623547164098575 + m_UpdateType: 0 + - rid: 8021623547164098575 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10134688972382208 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &2158335996185070942 GameObject: m_ObjectHideFlags: 0 @@ -9415,9 +10396,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2713655870301875666} - - component: {fileID: 6245471826573932768} - - component: {fileID: 3337417126575594132} + - component: {fileID: 5273980064973361335} + - component: {fileID: 4762585448244091789} + - component: {fileID: 1256995886722923176} + - component: {fileID: 4757651513490608912} m_Layer: 16 m_Name: Text m_TagString: Untagged @@ -9425,8 +10407,8 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2713655870301875666 -Transform: +--- !u!224 &5273980064973361335 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -9440,7 +10422,12 @@ Transform: m_Father: {fileID: 9117108218266893509} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &6245471826573932768 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &4762585448244091789 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9453,14 +10440,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9472,7 +10459,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -9482,43 +10469,153 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &3337417126575594132 -TextMesh: - serializedVersion: 3 +--- !u!114 &1256995886722923176 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2703159376926440640} - m_Text: 'Error Connecting + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Error Connecting to Poly' - m_OffsetZ: 0 - m_CharacterSize: 0.04 - m_LineSpacing: 0.72 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 36 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: serializedVersion: 2 rgba: 4294967295 ---- !u!1 &3489518439063806035 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 550194924522150295} - - component: {fileID: 3710666160644817266} - - component: {fileID: 254053543371224220} - m_Layer: 16 - m_Name: Background + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.45 + m_fontSizeBase: 1.45 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -40 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 4762585448244091789} + m_maskType: 0 +--- !u!114 &4757651513490608912 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2703159376926440640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098578 + references: + version: 2 + RefIds: + - rid: 8021623547164098578 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 1256995886722923176} + m_TrackedProperties: + items: + - rid: 8021623547164098579 + m_UpdateType: 0 + - rid: 8021623547164098579 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10134947404423168 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text +--- !u!1 &3489518439063806035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 550194924522150295} + - component: {fileID: 3710666160644817266} + - component: {fileID: 254053543371224220} + m_Layer: 16 + m_Name: Background m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -9591,107 +10688,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &3543571790462569700 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2539730209626117130} - - component: {fileID: 3584797028731175384} - - component: {fileID: 5005226965739046984} - m_Layer: 16 - m_Name: NoDriveSketchesMessage - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &2539730209626117130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.05} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 473678} - m_RootOrder: 24 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &3584797028731175384 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &5005226965739046984 -TextMesh: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3543571790462569700} - m_Text: 'No Google Drive - - sketches - - available' - m_OffsetZ: 0 - m_CharacterSize: 0.03 - m_LineSpacing: 0.9 - m_Anchor: 4 - m_Alignment: 1 - m_TabSize: 4 - m_FontSize: 64 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: - serializedVersion: 2 - rgba: 4294967295 --- !u!1 &3711792098476514597 GameObject: m_ObjectHideFlags: 0 @@ -9845,7 +10841,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 2713655870301875666} + - {fileID: 5273980064973361335} - {fileID: 6471389067300543686} m_Father: {fileID: 473678} m_RootOrder: 31 @@ -9900,9 +10896,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1976086882343299162} - - component: {fileID: 7756061003300770718} - - component: {fileID: 7372446237649626914} + - component: {fileID: 863212687757741380} + - component: {fileID: 2010546171685424227} + - component: {fileID: 7028602326230417099} + - component: {fileID: 519748339835701176} m_Layer: 16 m_Name: Signin m_TagString: Untagged @@ -9910,22 +10907,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1976086882343299162 -Transform: +--- !u!224 &863212687757741380 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4611120767845027921} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.092, y: -0.251, z: -0.01} - m_LocalScale: {x: 4, y: 4, z: 2.857143} + m_LocalPosition: {x: 0, y: 0, z: -0.009999996} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3702262655533381092} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &7756061003300770718 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.092, y: -0.251} + m_SizeDelta: {x: 1, y: 0.5} + m_Pivot: {x: 0, y: 0} +--- !u!23 &2010546171685424227 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9938,14 +10940,14 @@ MeshRenderer: m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -9957,7 +10959,7 @@ MeshRenderer: m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_StitchLightmapSeams: 0 + m_StitchLightmapSeams: 1 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -9967,83 +10969,193 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!102 &7372446237649626914 -TextMesh: - serializedVersion: 3 +--- !u!114 &7028602326230417099 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4611120767845027921} - m_Text: SIGN IN - m_OffsetZ: 0 - m_CharacterSize: 0.02 - m_LineSpacing: 1 - m_Anchor: 6 - m_Alignment: 0 - m_TabSize: 4 - m_FontSize: 43 - m_FontStyle: 0 - m_RichText: 1 - m_Font: {fileID: 12800000, guid: aa94fec06c672f74d86409a6979db921, type: 3} - m_Color: + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: SIGN IN + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: serializedVersion: 2 rgba: 4294967295 ---- !u!1 &4778719595247149710 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 321097991674213930} - - component: {fileID: 6533685272076450346} - - component: {fileID: 8511952729671633760} - m_Layer: 16 - m_Name: TopBorder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &321097991674213930 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} - m_LocalScale: {x: 1, y: 0.028571434, z: 2} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 550194924522150295} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &6533685272076450346 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8511952729671633760 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4778719595247149710} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 3.43 + m_fontSizeBase: 3.43 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 1024 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 2010546171685424227} + m_maskType: 0 +--- !u!114 &519748339835701176 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4611120767845027921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098583 + references: + version: 2 + RefIds: + - rid: 8021623547164098583 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 7028602326230417099} + m_TrackedProperties: + items: + - rid: 8021623547164098584 + m_UpdateType: 0 + - rid: 8021623547164098584 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10137908562075648 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text +--- !u!1 &4778719595247149710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 321097991674213930} + - component: {fileID: 6533685272076450346} + - component: {fileID: 8511952729671633760} + m_Layer: 16 + m_Name: TopBorder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &321097991674213930 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4778719595247149710} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.49999997, z: -0.002} + m_LocalScale: {x: 1, y: 0.028571434, z: 2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 550194924522150295} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6533685272076450346 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4778719595247149710} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8511952729671633760 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4778719595247149710} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 @@ -10251,7 +11363,7 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6839353153389732464 +--- !u!1 &6764173967791837319 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10259,54 +11371,57 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1524240171334712824} - - component: {fileID: 2320526944858906914} + - component: {fileID: 1427454329584301013} + - component: {fileID: 8318070951826257655} + - component: {fileID: 4976050102289928667} m_Layer: 16 - m_Name: NotLoggedInDriveMessage + m_Name: Panel Text m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!4 &1524240171334712824 -Transform: + m_IsActive: 1 +--- !u!224 &1427454329584301013 +RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6839353153389732464} + m_GameObject: {fileID: 6764173967791837319} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} + m_LocalPosition: {x: 0, y: 0, z: -0.002} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8692506305276691177} - - {fileID: 3702262655533381092} - - {fileID: 1817565260503090077} + m_Children: [] m_Father: {fileID: 473678} - m_RootOrder: 29 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &2320526944858906914 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.518, y: 1.122} + m_SizeDelta: {x: 0.24, y: 0.22} + m_Pivot: {x: 0, y: 1} +--- !u!23 &8318070951826257655 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6839353153389732464} + m_GameObject: {fileID: 6764173967791837319} m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 m_MotionVectors: 1 - m_LightProbeUsage: 0 + m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_RayTracingMode: 2 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10328,7 +11443,99 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!1 &6937020573975178444 +--- !u!114 &4976050102289928667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6764173967791837319} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Your Sketches + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.6 + m_fontSizeBase: 1.6 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 1 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: -0.5816542, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8318070951826257655} + m_maskType: 0 +--- !u!1 &6839353153389732464 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10336,35 +11543,112 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3686855872783221364} - - component: {fileID: 2502232274484467176} - - component: {fileID: 7736865385011264558} - - component: {fileID: 2017034342578135502} - - component: {fileID: 6670325552642882511} + - component: {fileID: 1524240171334712824} + - component: {fileID: 2320526944858906914} m_Layer: 16 - m_Name: DriveEnabledButton + m_Name: NotLoggedInDriveMessage m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3686855872783221364 + m_IsActive: 0 +--- !u!4 &1524240171334712824 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6937020573975178444} + m_GameObject: {fileID: 6839353153389732464} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} - m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_LocalPosition: {x: 0.24000001, y: 0, z: -0.1} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 7177981414213611291} + - {fileID: 3702262655533381092} + - {fileID: 1817565260503090077} m_Father: {fileID: 473678} - m_RootOrder: 20 + m_RootOrder: 29 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2502232274484467176 -MeshFilter: +--- !u!23 &2320526944858906914 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6839353153389732464} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 543b312efaeb6aa4aa25a9e07e815953, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &6937020573975178444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3686855872783221364} + - component: {fileID: 2502232274484467176} + - component: {fileID: 7736865385011264558} + - component: {fileID: 2017034342578135502} + - component: {fileID: 6670325552642882511} + m_Layer: 16 + m_Name: DriveEnabledButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3686855872783221364 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6937020573975178444} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.875, y: 1.03, z: -0.025} + m_LocalScale: {x: 0.175, y: 0.175, z: 0.175} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 20 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2502232274484467176 +MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -10440,8 +11724,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Complete + m_DescriptionText: SKETCHBOOK_PANEL_DRIVEENABLED_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8054034549940224 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -10461,10 +11763,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!1 &6967533768856939298 GameObject: m_ObjectHideFlags: 0 @@ -10660,8 +11983,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Drive Backup Disabled + m_DescriptionText: SKETCHBOOK_PANEL_DRIVEDISABLED_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8054126757519360 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -10681,10 +12022,246 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] +--- !u!1 &7091369650102597356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7854805381944268023} + - component: {fileID: 8359635418679280357} + - component: {fileID: 6753750304303413682} + - component: {fileID: 506523503681912987} + m_Layer: 16 + m_Name: NoSketchesMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7854805381944268023 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7091369650102597356} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 32 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.24, y: 0} + m_SizeDelta: {x: 1.5, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8359635418679280357 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7091369650102597356} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &6753750304303413682 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7091369650102597356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'No saved + + sketches' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 2.56 + m_fontSizeBase: 2.56 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -40 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8359635418679280357} + m_maskType: 0 +--- !u!114 &506523503681912987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7091369650102597356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098560 + references: + version: 2 + RefIds: + - rid: 8021623547164098560 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 6753750304303413682} + m_TrackedProperties: + items: + - rid: 8021623547164098561 + m_UpdateType: 0 + - rid: 8021623547164098561 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10132688213876736 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &7514244858002170337 GameObject: m_ObjectHideFlags: 0 @@ -10800,7 +12377,7 @@ Transform: m_LocalScale: {x: 0.29999998, y: 0.29999998, z: 0.29999998} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1976086882343299162} + - {fileID: 863212687757741380} - {fileID: 6818748104769445831} m_Father: {fileID: 1524240171334712824} m_RootOrder: 1 @@ -10861,52 +12438,304 @@ MonoBehaviour: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} + m_GameObject: {fileID: 7675354702135526188} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Name: + m_EditorClassIdentifier: + m_DescriptionType: -1 + m_DescriptionYOffset: 0 + m_DescriptionText: Sign out of Poly + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionActivateSpeed: 12 + m_DescriptionZScale: 1 + m_ButtonTexture: {fileID: 0} + m_AtlasTexture: 1 + m_ToggleButton: 0 + m_LongPressReleaseButton: 0 + m_ButtonHasPressedAudio: 1 + m_ZAdjustHover: -0.02 + m_ZAdjustClick: 0.05 + m_HoverScale: 1.1 + m_HoverBoxColliderGrow: 0.2 + m_AddOverlay: 0 + m_Command: 95 + m_CommandParam: 1 + m_CommandParam2: -1 + m_RequiresPopup: 1 + m_CenterPopupOnButton: 0 + m_PopupOffset: {x: 0.24, y: 0, z: 0} + m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_ToggleOnTexture: {fileID: 0} + m_AllowUnavailable: 0 + m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] +--- !u!65 &8252809422751876693 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7675354702135526188} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 2, y: 1.0000001, z: 0.1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &7809439681076855981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6874271134819684725} + - component: {fileID: 1265338661447812158} + - component: {fileID: 1272413844241449823} + - component: {fileID: 1716677189564584255} + m_Layer: 16 + m_Name: TextLine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6874271134819684725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7809439681076855981} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.002} + m_LocalScale: {x: 0.952381, y: 0.4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4604395735417884} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0.46} + m_SizeDelta: {x: 1, y: 0.25} + m_Pivot: {x: 0.5, y: 1} +--- !u!23 &1265338661447812158 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7809439681076855981} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1272413844241449823 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7809439681076855981} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Sketch + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.73 + m_fontSizeBase: 1.73 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 1265338661447812158} + m_maskType: 0 +--- !u!114 &1716677189564584255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7809439681076855981} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6c6859eec74651247968d56b594ac313, type: 3} + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} m_Name: m_EditorClassIdentifier: - m_DescriptionType: -1 - m_DescriptionYOffset: 0 - m_DescriptionText: Sign out of Poly - m_DescriptionTextExtra: - m_DescriptionActivateSpeed: 12 - m_DescriptionZScale: 1 - m_ButtonTexture: {fileID: 0} - m_AtlasTexture: 1 - m_ToggleButton: 0 - m_LongPressReleaseButton: 0 - m_ButtonHasPressedAudio: 1 - m_ZAdjustHover: -0.02 - m_ZAdjustClick: 0.05 - m_HoverScale: 1.1 - m_HoverBoxColliderGrow: 0.2 - m_AddOverlay: 0 - m_Command: 95 - m_CommandParam: 1 - m_CommandParam2: -1 - m_RequiresPopup: 1 - m_CenterPopupOnButton: 0 - m_PopupOffset: {x: 0.24, y: 0, z: 0} - m_PopupText: - m_ToggleOnDescription: - m_ToggleOnTexture: {fileID: 0} - m_AllowUnavailable: 0 - m_LinkedUIObject: {fileID: 0} ---- !u!65 &8252809422751876693 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7675354702135526188} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 2, y: 1.0000001, z: 0.1} - m_Center: {x: 0, y: 0, z: 0} + m_TrackedObjects: + - rid: 8021623547164098585 + references: + version: 2 + RefIds: + - rid: 8021623547164098585 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 1272413844241449823} + m_TrackedProperties: + items: + - rid: 8021623547164098586 + m_UpdateType: 0 + - rid: 8021623547164098586 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10138131262840832 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &8051552516459751659 GameObject: m_ObjectHideFlags: 0 @@ -11022,8 +12851,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0 - m_DescriptionText: Backed-up Sketches - m_DescriptionTextExtra: On Google Drive + m_DescriptionText: SKETCHBOOK_PANEL_DRIVE_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8052288863838208 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_DescriptionTextExtra: SKETCHBOOK_PANEL_DRIVE_BUTTON_DESCRIPTION_EXTRA + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8052489070551040 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 2800000, guid: f05641d311b7c1a43bd473bd4eea43c9, type: 3} @@ -11037,6 +12884,9 @@ MonoBehaviour: m_HoverBoxColliderGrow: 0.2 m_AddOverlay: 0 m_ButtonType: 7 + references: + version: 2 + RefIds: [] --- !u!1 &8156343948566993514 GameObject: m_ObjectHideFlags: 0 @@ -11398,8 +13248,26 @@ MonoBehaviour: m_EditorClassIdentifier: m_DescriptionType: 0 m_DescriptionYOffset: 0.5 - m_DescriptionText: Backing up on Drive + m_DescriptionText: SKETCHBOOK_PANEL_DRIVESYNCING_BUTTON_DESCRIPTION + m_LocalizedDescription: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 8053860821868544 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionTextExtra: + m_LocalizedDescriptionExtra: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_DescriptionActivateSpeed: 12 m_DescriptionZScale: 1 m_ButtonTexture: {fileID: 0} @@ -11419,10 +13287,31 @@ MonoBehaviour: m_CenterPopupOnButton: 0 m_PopupOffset: {x: 0, y: 0, z: 0} m_PopupText: + m_LocalizedPopup: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnDescription: + m_LocalizedToggleOnDescription: + m_TableReference: + m_TableCollectionName: + m_TableEntryReference: + m_KeyId: 0 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] m_ToggleOnTexture: {fileID: 0} m_AllowUnavailable: 0 m_LinkedUIObject: {fileID: 0} + references: + version: 2 + RefIds: [] --- !u!1 &8643510522094066947 GameObject: m_ObjectHideFlags: 0 @@ -11508,6 +13397,223 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8945951863336520500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1308720329717664990} + - component: {fileID: 8426433499102863966} + - component: {fileID: 1377100825483841254} + - component: {fileID: 3549194331481935549} + m_Layer: 16 + m_Name: NoDriveSketchesMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1308720329717664990 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8945951863336520500} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.05} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 473678} + m_RootOrder: 33 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.24, y: 0} + m_SizeDelta: {x: 1.5, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!23 &8426433499102863966 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8945951863336520500} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!114 &1377100825483841254 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8945951863336520500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9541d86e2fd84c1d9990edf0852d74ab, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'No Google Drive + + sketches + + available' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_sharedMaterial: {fileID: 2133298, guid: fce54057bad3d2d4cb3c36ee394be518, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 1.93 + m_fontSizeBase: 1.93 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: -15.62 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 0 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + _SortingLayer: 0 + _SortingLayerID: 0 + _SortingOrder: 0 + m_hasFontAssetChanged: 0 + m_renderer: {fileID: 8426433499102863966} + m_maskType: 0 +--- !u!114 &3549194331481935549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8945951863336520500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 69beb381e244f92449b8c4cf954630e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackedObjects: + - rid: 8021623547164098562 + references: + version: 2 + RefIds: + - rid: 8021623547164098562 + type: {class: TrackedUGuiGraphic, ns: UnityEngine.Localization.PropertyVariants.TrackedObjects, + asm: Unity.Localization} + data: + m_Target: {fileID: 1377100825483841254} + m_TrackedProperties: + items: + - rid: 8021623547164098563 + m_UpdateType: 0 + - rid: 8021623547164098563 + type: {class: LocalizedStringProperty, ns: UnityEngine.Localization.PropertyVariants.TrackedProperties, + asm: Unity.Localization} + data: + m_Localized: + m_TableReference: + m_TableCollectionName: GUID:c84355079ab3f3e4f8f3812258805f86 + m_TableEntryReference: + m_KeyId: 10132930728534016 + m_Key: + m_FallbackState: 0 + m_WaitForCompletion: 0 + m_LocalVariables: [] + m_PropertyPath: m_text --- !u!1 &8955674742366199644 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Panels/SketchbookPanel.prefab.meta b/Assets/Prefabs/Panels/SketchbookPanel.prefab.meta index fa63e3a8f9..800ae4bb80 100644 --- a/Assets/Prefabs/Panels/SketchbookPanel.prefab.meta +++ b/Assets/Prefabs/Panels/SketchbookPanel.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 11a71a8b70e19254abe00d5e569f428c +guid: 7f00a9fcfe2432246a4fea4c944dfe58 PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index d7768a70ac..b122a8c972 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -29727,7 +29727,7 @@ MonoBehaviour: m_ModeGvr: 0 m_Basic: 0 m_Advanced: 1 - - m_PanelPrefab: {fileID: 109932, guid: 11a71a8b70e19254abe00d5e569f428c, type: 3} + - m_PanelPrefab: {fileID: 109932, guid: 7f00a9fcfe2432246a4fea4c944dfe58, type: 3} m_ModeVr: 1 m_ModeVrExperimental: 1 m_ModeMono: 1 From b83d4a6373e3f2015c7c3d0d9b606f942121fe34 Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Thu, 7 Dec 2023 13:08:08 +0000 Subject: [PATCH 35/38] formatting --- Assets/Scripts/Save/SaveLoadScript.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index c36396c6cb..a04599a96c 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -651,11 +651,11 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false environment, forceTransition: true, keepSceneTransform: true, hasCustomLights: jsonData.Lights != null ); - // This will have been overwritten by Set - if (jsonData.Environment != null && jsonData.Environment.Skybox != null) - { - SceneSettings.m_Instance.LoadCustomSkybox(jsonData.Environment.Skybox); - } + // This will have been overwritten by Set + if (jsonData.Environment != null && jsonData.Environment.Skybox != null) + { + SceneSettings.m_Instance.LoadCustomSkybox(jsonData.Environment.Skybox); + } } else { From 9ec2c700b2bd7e8bd5b063c635ffae21e9e5359f Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Wed, 28 Feb 2024 15:05:58 +0000 Subject: [PATCH 36/38] Unused import was causing build failures --- Assets/Editor/Tests/TestDownloadingCache.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Editor/Tests/TestDownloadingCache.cs b/Assets/Editor/Tests/TestDownloadingCache.cs index 196ccf4f91..faff994727 100644 --- a/Assets/Editor/Tests/TestDownloadingCache.cs +++ b/Assets/Editor/Tests/TestDownloadingCache.cs @@ -1,7 +1,7 @@ using System.IO; using System.Linq; -using Assets.Oculus.VR.Editor; using NUnit.Framework; + namespace TiltBrush { [TestFixture] From 79d965525b47a1cc0b271d1b2b36c2a4fe915ecc Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Sun, 7 Apr 2024 11:15:23 +0100 Subject: [PATCH 37/38] dotnet-format --- Assets/Scripts/Save/SaveLoadScript.cs | 72 +++++++++++++-------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 83a3cd4868..a5c44698b8 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -636,49 +636,49 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false } } - if (!bAdditive) + if (!bAdditive) + { + var environment = EnvironmentCatalog.m_Instance + .GetEnvironment(new Guid(jsonData.EnvironmentPreset)); + if (environment != null) { - var environment = EnvironmentCatalog.m_Instance - .GetEnvironment(new Guid(jsonData.EnvironmentPreset)); - if (environment != null) + SceneSettings.m_Instance.RecordSkyColorsForFading(); + if (jsonData.Environment != null) { - SceneSettings.m_Instance.RecordSkyColorsForFading(); - if (jsonData.Environment != null) - { - SceneSettings.m_Instance.SetCustomEnvironment(jsonData.Environment, environment); - } - SceneSettings.m_Instance.SetDesiredPreset( - environment, forceTransition: true, - keepSceneTransform: true, hasCustomLights: jsonData.Lights != null - ); - // This will have been overwritten by Set - if (jsonData.Environment != null && jsonData.Environment.Skybox != null) - { - SceneSettings.m_Instance.LoadCustomSkybox(jsonData.Environment.Skybox); - } + SceneSettings.m_Instance.SetCustomEnvironment(jsonData.Environment, environment); } - else + SceneSettings.m_Instance.SetDesiredPreset( + environment, forceTransition: true, + keepSceneTransform: true, hasCustomLights: jsonData.Lights != null + ); + // This will have been overwritten by Set + if (jsonData.Environment != null && jsonData.Environment.Skybox != null) { - Debug.LogWarningFormat("Unknown environment preset {0}", - jsonData.EnvironmentPreset); + SceneSettings.m_Instance.LoadCustomSkybox(jsonData.Environment.Skybox); } - App.Instance.SetOdsCameraTransforms(jsonData.ThumbnailCameraTransformInRoomSpace, - jsonData.SceneTransformInRoomSpace); - App.Scene.Pose = jsonData.SceneTransformInRoomSpace; - App.Scene.ResetLayers(true); - Coords.CanvasLocalPose = TrTransform.identity; - if (jsonData.CanvasTransformInSceneSpace != TrTransform.identity) + } + else + { + Debug.LogWarningFormat("Unknown environment preset {0}", + jsonData.EnvironmentPreset); + } + App.Instance.SetOdsCameraTransforms(jsonData.ThumbnailCameraTransformInRoomSpace, + jsonData.SceneTransformInRoomSpace); + App.Scene.Pose = jsonData.SceneTransformInRoomSpace; + App.Scene.ResetLayers(true); + Coords.CanvasLocalPose = TrTransform.identity; + if (jsonData.CanvasTransformInSceneSpace != TrTransform.identity) + { + Debug.LogWarning("This file has an unsupported, experimental Canvas Transform specified."); + // Was experimental mode. Needs testing. + // Saves sketches are unlikely to trigger this under normal usage + if (false) { - Debug.LogWarning("This file has an unsupported, experimental Canvas Transform specified."); - // Was experimental mode. Needs testing. - // Saves sketches are unlikely to trigger this under normal usage - if (false) - { - Coords.CanvasLocalPose = jsonData.CanvasTransformInSceneSpace; - } + Coords.CanvasLocalPose = jsonData.CanvasTransformInSceneSpace; } - LastThumbnail_SS = App.Scene.Pose.inverse * - jsonData.ThumbnailCameraTransformInRoomSpace; + } + LastThumbnail_SS = App.Scene.Pose.inverse * + jsonData.ThumbnailCameraTransformInRoomSpace; } From 5b8ba28b7dfca5cd180a8bdf54d0d69eb1ebd34d Mon Sep 17 00:00:00 2001 From: Andy Baker Date: Sun, 5 May 2024 13:05:16 +0100 Subject: [PATCH 38/38] Post-merge fixes (WIP) --- Assets/Scripts/Save/SaveLoadScript.cs | 100 +++++++++++++------------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/Assets/Scripts/Save/SaveLoadScript.cs b/Assets/Scripts/Save/SaveLoadScript.cs index 9aeafe3ed9..7b594c4185 100644 --- a/Assets/Scripts/Save/SaveLoadScript.cs +++ b/Assets/Scripts/Save/SaveLoadScript.cs @@ -738,65 +738,65 @@ public async Task LoadAsync(SceneFileInfo fileInfo, bool bAdditive = false WidgetManager.m_Instance.SetDataFromTilt(jsonData.ModelIndex); } - if (jsonData.ModelIndex != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.ModelIndex); - } + if (jsonData.ModelIndex != null) + { + WidgetManager.m_Instance.SetDataFromTilt(jsonData.ModelIndex); + } - if (jsonData.LightIndex != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.LightIndex); - } + if (jsonData.LightIndex != null) + { + WidgetManager.m_Instance.SetDataFromTilt(jsonData.LightIndex); + } - if (jsonData.GuideIndex != null) - { - foreach (Guides guides in jsonData.GuideIndex) - { - StencilWidget.FromGuideIndex(guides); - } - } - if (jsonData.Lights != null) - { - LightsControlScript.m_Instance.CustomLights = jsonData.Lights; - } - // Pass even if null; null is treated as empty - CustomColorPaletteStorage.m_Instance.SetColorsFromPalette(jsonData.Palette); - // Images are not stored on Poly either. - // TODO - will this assumption still hold with Icosa? - if (!(fileInfo is PolySceneFileInfo)) - { - if (ReferenceImageCatalog.m_Instance != null && jsonData.ImageIndex != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.ImageIndex); - } - if (VideoCatalog.Instance != null && jsonData.Videos != null) - { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.Videos); - } - } - if (jsonData.Mirror != null) - { - PointerManager.m_Instance.SymmetryWidgetFromMirror(jsonData.Mirror); - } - if (jsonData.CameraPaths != null) + if (jsonData.GuideIndex != null) + { + foreach (Guides guides in jsonData.GuideIndex) { - WidgetManager.m_Instance.SetDataFromTilt(jsonData.CameraPaths); + StencilWidget.FromGuideIndex(guides); } - if (fileInfo is GoogleDriveSketchSet.GoogleDriveFileInfo gdInfo) + } + if (jsonData.Lights != null) + { + LightsControlScript.m_Instance.CustomLights = jsonData.Lights; + } + // Pass even if null; null is treated as empty + CustomColorPaletteStorage.m_Instance.SetColorsFromPalette(jsonData.Palette); + // Images are not stored on Poly either. + // TODO - will this assumption still hold with Icosa? + if (!(fileInfo is PolySceneFileInfo)) + { + if (ReferenceImageCatalog.m_Instance != null && jsonData.ImageIndex != null) { - gdInfo.SourceId = jsonData.SourceId; + WidgetManager.m_Instance.SetDataFromTilt(jsonData.ImageIndex); } - if (WidgetManager.m_Instance.CreatingMediaWidgets) + if (VideoCatalog.Instance != null && jsonData.Videos != null) { - StartCoroutine( - OverlayManager.m_Instance.RunInCompositor( - OverlayType.LoadMedia, - WidgetManager.m_Instance.CreateMediaWidgetsFromLoadDataCoroutine(), - 0.5f)); + WidgetManager.m_Instance.SetDataFromTilt(jsonData.Videos); } - m_LastSceneFile = fileInfo; } - + if (jsonData.Mirror != null) + { + PointerManager.m_Instance.SymmetryWidgetFromMirror(jsonData.Mirror); + } + if (jsonData.CameraPaths != null) + { + WidgetManager.m_Instance.SetDataFromTilt(jsonData.CameraPaths); + } + if (fileInfo is GoogleDriveSketchSet.GoogleDriveFileInfo gdInfo) + { + gdInfo.SourceId = jsonData.SourceId; + } + if (WidgetManager.m_Instance.CreatingMediaWidgets) + { + StartCoroutine( + OverlayManager.m_Instance.RunInCompositor( + OverlayType.LoadMedia, + WidgetManager.m_Instance.CreateMediaWidgetsFromLoadDataCoroutine(), + 0.5f)); + } + m_LastSceneFile = fileInfo; + } + /* TODO unpick merge if (jsonData.GuideIndex != null) {