\d+))?" +
+ @"(\-(?[0-9A-Za-z\-\.]+))?" +
+ @"(\+(?[0-9A-Za-z\-\.]+))?$",
+#if NETSTANDARD
+ RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture);
+#else
+ RegexOptions.CultureInvariant | RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+#endif
+
+#if !NETSTANDARD
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ ///
+ ///
+ private SemVersion(SerializationInfo info, StreamingContext context)
+ {
+ if (info == null) throw new ArgumentNullException("info");
+ var semVersion = Parse(info.GetString("SemVersion"));
+ Major = semVersion.Major;
+ Minor = semVersion.Minor;
+ Patch = semVersion.Patch;
+ Prerelease = semVersion.Prerelease;
+ Build = semVersion.Build;
+ }
+#endif
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The major version.
+ /// The minor version.
+ /// The patch version.
+ /// The prerelease version (eg. "alpha").
+ /// The build eg ("nightly.232").
+ public SemVersion(int major, int minor = 0, int patch = 0, string prerelease = "", string build = "")
+ {
+ this.Major = major;
+ this.Minor = minor;
+ this.Patch = patch;
+
+ this.Prerelease = prerelease ?? "";
+ this.Build = build ?? "";
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The that is used to initialize
+ /// the Major, Minor, Patch and Build properties.
+ public SemVersion(Version version)
+ {
+ if (version == null)
+ throw new ArgumentNullException("version");
+
+ this.Major = version.Major;
+ this.Minor = version.Minor;
+
+ if (version.Revision >= 0)
+ {
+ this.Patch = version.Revision;
+ }
+
+ this.Prerelease = String.Empty;
+
+ if (version.Build > 0)
+ {
+ this.Build = version.Build.ToString();
+ }
+ else
+ {
+ this.Build = String.Empty;
+ }
+ }
+
+ ///
+ /// Parses the specified string to a semantic version.
+ ///
+ /// The version string.
+ /// If set to true minor and patch version are required, else they default to 0.
+ /// The SemVersion object.
+ /// When a invalid version string is passed.
+ public static SemVersion Parse(string version, bool strict = false)
+ {
+ var match = parseEx.Match(version);
+ if (!match.Success)
+ throw new ArgumentException("Invalid version.", "version");
+
+#if NETSTANDARD
+ var major = int.Parse(match.Groups["major"].Value);
+#else
+ var major = int.Parse(match.Groups["major"].Value, CultureInfo.InvariantCulture);
+#endif
+
+ var minorMatch = match.Groups["minor"];
+ int minor = 0;
+ if (minorMatch.Success)
+ {
+#if NETSTANDARD
+ minor = int.Parse(minorMatch.Value);
+#else
+ minor = int.Parse(minorMatch.Value, CultureInfo.InvariantCulture);
+#endif
+ }
+ else if (strict)
+ {
+ throw new InvalidOperationException("Invalid version (no minor version given in strict mode)");
+ }
+
+ var patchMatch = match.Groups["patch"];
+ int patch = 0;
+ if (patchMatch.Success)
+ {
+#if NETSTANDARD
+ patch = int.Parse(patchMatch.Value);
+#else
+ patch = int.Parse(patchMatch.Value, CultureInfo.InvariantCulture);
+#endif
+ }
+ else if (strict)
+ {
+ throw new InvalidOperationException("Invalid version (no patch version given in strict mode)");
+ }
+
+ var prerelease = match.Groups["pre"].Value;
+ var build = match.Groups["build"].Value;
+
+ return new SemVersion(major, minor, patch, prerelease, build);
+ }
+
+ ///
+ /// Parses the specified string to a semantic version.
+ ///
+ /// The version string.
+ /// When the method returns, contains a SemVersion instance equivalent
+ /// to the version string passed in, if the version string was valid, or null if the
+ /// version string was not valid.
+ /// If set to true minor and patch version are required, else they default to 0.
+ /// False when a invalid version string is passed, otherwise true.
+ public static bool TryParse(string version, out SemVersion semver, bool strict = false)
+ {
+ try
+ {
+ semver = Parse(version, strict);
+ return true;
+ }
+ catch (Exception)
+ {
+ semver = null;
+ return false;
+ }
+ }
+
+ ///
+ /// Tests the specified versions for equality.
+ ///
+ /// The first version.
+ /// The second version.
+ /// If versionA is equal to versionB true, else false.
+ public static bool Equals(SemVersion versionA, SemVersion versionB)
+ {
+ if (ReferenceEquals(versionA, null))
+ return ReferenceEquals(versionB, null);
+ return versionA.Equals(versionB);
+ }
+
+ ///
+ /// Compares the specified versions.
+ ///
+ /// The version to compare to.
+ /// The version to compare against.
+ /// If versionA < versionB < 0, if versionA > versionB > 0,
+ /// if versionA is equal to versionB 0.
+ public static int Compare(SemVersion versionA, SemVersion versionB)
+ {
+ if (ReferenceEquals(versionA, null))
+ return ReferenceEquals(versionB, null) ? 0 : -1;
+ return versionA.CompareTo(versionB);
+ }
+
+ ///
+ /// Make a copy of the current instance with optional altered fields.
+ ///
+ /// The major version.
+ /// The minor version.
+ /// The patch version.
+ /// The prerelease text.
+ /// The build text.
+ /// The new version object.
+ public SemVersion Change(int? major = null, int? minor = null, int? patch = null,
+ string prerelease = null, string build = null)
+ {
+ return new SemVersion(
+ major ?? this.Major,
+ minor ?? this.Minor,
+ patch ?? this.Patch,
+ prerelease ?? this.Prerelease,
+ build ?? this.Build);
+ }
+
+ ///
+ /// Gets the major version.
+ ///
+ ///
+ /// The major version.
+ ///
+ public int Major { get; private set; }
+
+ ///
+ /// Gets the minor version.
+ ///
+ ///
+ /// The minor version.
+ ///
+ public int Minor { get; private set; }
+
+ ///
+ /// Gets the patch version.
+ ///
+ ///
+ /// The patch version.
+ ///
+ public int Patch { get; private set; }
+
+ ///
+ /// Gets the pre-release version.
+ ///
+ ///
+ /// The pre-release version.
+ ///
+ public string Prerelease { get; private set; }
+
+ ///
+ /// Gets the build version.
+ ///
+ ///
+ /// The build version.
+ ///
+ public string Build { get; private set; }
+
+ ///
+ /// Returns a that represents this instance.
+ ///
+ ///
+ /// A that represents this instance.
+ ///
+ public override string ToString()
+ {
+ var version = "" + Major + "." + Minor + "." + Patch;
+ if (!String.IsNullOrEmpty(Prerelease))
+ version += "-" + Prerelease;
+ if (!String.IsNullOrEmpty(Build))
+ version += "+" + Build;
+ return version;
+ }
+
+ ///
+ /// Compares the current instance with another object of the same type and returns an integer that indicates
+ /// whether the current instance precedes, follows, or occurs in the same position in the sort order as the
+ /// other object.
+ ///
+ /// An object to compare with this instance.
+ ///
+ /// A value that indicates the relative order of the objects being compared.
+ /// The return value has these meanings: Value Meaning Less than zero
+ /// This instance precedes in the sort order.
+ /// Zero This instance occurs in the same position in the sort order as . i
+ /// Greater than zero This instance follows in the sort order.
+ ///
+ public int CompareTo(object obj)
+ {
+ return CompareTo((SemVersion)obj);
+ }
+
+ ///
+ /// Compares the current instance with another object of the same type and returns an integer that indicates
+ /// whether the current instance precedes, follows, or occurs in the same position in the sort order as the
+ /// other object.
+ ///
+ /// An object to compare with this instance.
+ ///
+ /// A value that indicates the relative order of the objects being compared.
+ /// The return value has these meanings: Value Meaning Less than zero
+ /// This instance precedes in the sort order.
+ /// Zero This instance occurs in the same position in the sort order as . i
+ /// Greater than zero This instance follows in the sort order.
+ ///
+ public int CompareTo(SemVersion other)
+ {
+ if (ReferenceEquals(other, null))
+ return 1;
+
+ var r = this.CompareByPrecedence(other);
+ if (r != 0)
+ return r;
+
+ r = CompareComponent(this.Build, other.Build);
+ return r;
+ }
+
+ ///
+ /// Compares to semantic versions by precedence. This does the same as a Equals, but ignores the build information.
+ ///
+ /// The semantic version.
+ /// true if the version precedence matches.
+ public bool PrecedenceMatches(SemVersion other)
+ {
+ return CompareByPrecedence(other) == 0;
+ }
+
+ ///
+ /// Compares to semantic versions by precedence. This does the same as a Equals, but ignores the build information.
+ ///
+ /// The semantic version.
+ ///
+ /// A value that indicates the relative order of the objects being compared.
+ /// The return value has these meanings: Value Meaning Less than zero
+ /// This instance precedes in the version precedence.
+ /// Zero This instance has the same precedence as . i
+ /// Greater than zero This instance has creater precedence as .
+ ///
+ public int CompareByPrecedence(SemVersion other)
+ {
+ if (ReferenceEquals(other, null))
+ return 1;
+
+ var r = this.Major.CompareTo(other.Major);
+ if (r != 0) return r;
+
+ r = this.Minor.CompareTo(other.Minor);
+ if (r != 0) return r;
+
+ r = this.Patch.CompareTo(other.Patch);
+ if (r != 0) return r;
+
+ r = CompareComponent(this.Prerelease, other.Prerelease, true);
+ return r;
+ }
+
+ static int CompareComponent(string a, string b, bool lower = false)
+ {
+ var aEmpty = String.IsNullOrEmpty(a);
+ var bEmpty = String.IsNullOrEmpty(b);
+ if (aEmpty && bEmpty)
+ return 0;
+
+ if (aEmpty)
+ return lower ? 1 : -1;
+ if (bEmpty)
+ return lower ? -1 : 1;
+
+ var aComps = a.Split('.');
+ var bComps = b.Split('.');
+
+ var minLen = Math.Min(aComps.Length, bComps.Length);
+ for (int i = 0; i < minLen; i++)
+ {
+ var ac = aComps[i];
+ var bc = bComps[i];
+ int anum, bnum;
+ var isanum = Int32.TryParse(ac, out anum);
+ var isbnum = Int32.TryParse(bc, out bnum);
+ int r;
+ if (isanum && isbnum)
+ {
+ r = anum.CompareTo(bnum);
+ if (r != 0) return anum.CompareTo(bnum);
+ }
+ else
+ {
+ if (isanum)
+ return -1;
+ if (isbnum)
+ return 1;
+ r = String.CompareOrdinal(ac, bc);
+ if (r != 0)
+ return r;
+ }
+ }
+
+ return aComps.Length.CompareTo(bComps.Length);
+ }
+
+ ///
+ /// Determines whether the specified is equal to this instance.
+ ///
+ /// The to compare with this instance.
+ ///
+ /// true if the specified is equal to this instance; otherwise, false.
+ ///
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(obj, null))
+ return false;
+
+ if (ReferenceEquals(this, obj))
+ return true;
+
+ var other = (SemVersion)obj;
+
+ return this.Major == other.Major &&
+ this.Minor == other.Minor &&
+ this.Patch == other.Patch &&
+ string.Equals(this.Prerelease, other.Prerelease, StringComparison.Ordinal) &&
+ string.Equals(this.Build, other.Build, StringComparison.Ordinal);
+ }
+
+ ///
+ /// Returns a hash code for this instance.
+ ///
+ ///
+ /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+ ///
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ int result = this.Major.GetHashCode();
+ result = result * 31 + this.Minor.GetHashCode();
+ result = result * 31 + this.Patch.GetHashCode();
+ result = result * 31 + this.Prerelease.GetHashCode();
+ result = result * 31 + this.Build.GetHashCode();
+ return result;
+ }
+ }
+
+#if !NETSTANDARD
+ [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+ public void GetObjectData(SerializationInfo info, StreamingContext context)
+ {
+ if (info == null) throw new ArgumentNullException("info");
+ info.AddValue("SemVersion", ToString());
+ }
+#endif
+
+ ///
+ /// The override of the equals operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is equal to right true, else false.
+ public static bool operator ==(SemVersion left, SemVersion right)
+ {
+ if(ReferenceEquals(right, null)) {
+ return ReferenceEquals(left, null);
+ }
+ if(ReferenceEquals(left, null)) {
+ return false;
+ }
+ return left.PrecedenceMatches(right);
+ }
+
+ ///
+ /// The override of the un-equal operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is not equal to right true, else false.
+ public static bool operator !=(SemVersion left, SemVersion right)
+ {
+ return !(left == right);
+ }
+
+ ///
+ /// The override of the greater operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is greater than right true, else false.
+ public static bool operator >(SemVersion left, SemVersion right)
+ {
+ return left.CompareByPrecedence(right) > 0;
+ }
+
+ ///
+ /// The override of the greater than or equal operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is greater than or equal to right true, else false.
+ public static bool operator >=(SemVersion left, SemVersion right)
+ {
+ return left == right || left > right;
+ }
+
+ ///
+ /// The override of the less operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is less than right true, else false.
+ public static bool operator <(SemVersion left, SemVersion right)
+ {
+ return left.CompareByPrecedence(right) < 0;
+ }
+
+ ///
+ /// The override of the less than or equal operator.
+ ///
+ /// The left value.
+ /// The right value.
+ /// If left is less than or equal to right true, else false.
+ public static bool operator <=(SemVersion left, SemVersion right)
+ {
+ return left == right || left < right;
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Versioning/SemVer.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Versioning/SemVer.cs.meta
new file mode 100644
index 000000000..b4017da8a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Versioning/SemVer.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 0b49a1188451e7745af9f636d854efc8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Versioning/SemVer.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window.meta b/Packages/com.singularitygroup.hotreload/Editor/Window.meta
new file mode 100644
index 000000000..710dd15a1
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e1826b88dea6aa446a9bc22bc0140c22
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI.meta
new file mode 100644
index 000000000..5cbd648a3
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dddc1cae3f951f84da98305ec6228f25
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons.meta
new file mode 100644
index 000000000..4d51a80f8
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 86f1446dfdbc2a94aac993437231aaa4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs
new file mode 100644
index 000000000..3ecfc201e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs
@@ -0,0 +1,42 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class OpenDialogueButton : IGUIComponent {
+ public readonly string text;
+ public readonly string url;
+ public readonly string title;
+ public readonly string message;
+ public readonly string ok;
+ public readonly string cancel;
+
+ public OpenDialogueButton(string text, string url, string title, string message, string ok, string cancel) {
+ this.text = text;
+ this.url = url;
+ this.title = title;
+ this.message = message;
+ this.ok = ok;
+ this.cancel = cancel;
+ }
+
+ public void OnGUI() {
+ Render(text, url, title, message, ok, cancel);
+ }
+
+ public static void Render(string text, string url, string title, string message, string ok, string cancel) {
+ if (GUILayout.Button(new GUIContent(text.StartsWith(" ") ? text : " " + text))) {
+ if (EditorUtility.DisplayDialog(title, message, ok, cancel)) {
+ Application.OpenURL(url);
+ }
+ }
+ }
+
+ public static void RenderRaw(Rect rect, string text, string url, string title, string message, string ok, string cancel, GUIStyle style = null) {
+ if (GUI.Button(rect, new GUIContent(text.StartsWith(" ") ? text : " " + text), style ?? GUI.skin.button)) {
+ if (EditorUtility.DisplayDialog(title, message, ok, cancel)) {
+ Application.OpenURL(url);
+ }
+ }
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs.meta
new file mode 100644
index 000000000..738e1c437
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 97ca8174f0514e8e9ee5d4be26ed8078
+timeCreated: 1674416481
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenDialogueButton.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs
new file mode 100644
index 000000000..0f1edcc90
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs
@@ -0,0 +1,29 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class OpenURLButton : IGUIComponent {
+ public readonly string text;
+ public readonly string url;
+ public OpenURLButton(string text, string url) {
+ this.text = text;
+ this.url = url;
+ }
+
+ public void OnGUI() {
+ Render(text, url);
+ }
+
+ public static void Render(string text, string url) {
+ if (GUILayout.Button(new GUIContent(text.StartsWith(" ") ? text : " " + text))) {
+ Application.OpenURL(url);
+ }
+ }
+
+ public static void RenderRaw(Rect rect, string text, string url, GUIStyle style = null) {
+ if (GUI.Button(rect, new GUIContent(text.StartsWith(" ") ? text : " " + text), style ?? GUI.skin.button)) {
+ Application.OpenURL(url);
+ }
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs.meta
new file mode 100644
index 000000000..608751c7f
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: ef12252fc9d1f9f438cbd34cf8f7364b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Buttons/OpenURLButton.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs
new file mode 100644
index 000000000..d20fae9bf
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs
@@ -0,0 +1,116 @@
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ ///
+ /// Create a new texture only once. Safe access to generated textures.
+ ///
+ ///
+ /// If
+ internal static class EditorTextures {
+ private static Texture2D black;
+ private static Texture2D white;
+ private static Texture2D lightGray225;
+ private static Texture2D lightGray235;
+ private static Texture2D darkGray17;
+ private static Texture2D darkGray30;
+
+ // Texture2D.blackTexture doesn't render properly in Editor GUI.
+ public static Texture2D Black {
+ get {
+ if (!black) {
+ black = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = black.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(0, 0, 0, byte.MaxValue);
+ }
+ black.SetPixels32(pixels);
+ black.Apply();
+ }
+ return black;
+ }
+ }
+
+ // Texture2D.whiteTexture might not render properly in Editor GUI.
+ public static Texture2D White {
+ get {
+
+ if (!white) {
+ white = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = white.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
+ }
+ white.SetPixels32(pixels);
+ white.Apply();
+ }
+ return white;
+ }
+ }
+
+ public static Texture2D DarkGray17 {
+ get {
+ if (!darkGray17) {
+ darkGray17 = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = darkGray17.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(17, 17, 17, byte.MaxValue);
+ }
+ darkGray17.SetPixels32(pixels);
+ darkGray17.Apply();
+ }
+ return darkGray17;
+ }
+ }
+
+ public static Texture2D DarkGray40 {
+ get {
+ if (!darkGray30) {
+ darkGray30 = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = darkGray30.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(40, 40, 40, byte.MaxValue);
+ }
+ darkGray30.SetPixels32(pixels);
+ darkGray30.Apply();
+ }
+ return darkGray30;
+ }
+ }
+
+ public static Texture2D LightGray238 {
+ get {
+ if (!lightGray235) {
+ lightGray235 = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = lightGray235.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(238, 238, 238, byte.MaxValue);
+ }
+ lightGray235.SetPixels32(pixels);
+ lightGray235.Apply();
+ }
+ return lightGray235;
+ }
+ }
+
+ public static Texture2D LightGray225 {
+ get {
+ if (!lightGray225) {
+ lightGray225 = new Texture2D(2, 2, TextureFormat.RGBA32, false);
+
+ var pixels = lightGray225.GetPixels32();
+ for (var i = 0; i < pixels.Length; i++) {
+ pixels[i] = new Color32(225, 225, 225, byte.MaxValue);
+ }
+ lightGray225.SetPixels32(pixels);
+ lightGray225.Apply();
+ }
+ return lightGray225;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs.meta
new file mode 100644
index 000000000..8f364a823
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 9116854180be4f2b8fcc0422bcf570a5
+timeCreated: 1674127121
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/EditorTextures.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs
new file mode 100644
index 000000000..323ce59cb
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs
@@ -0,0 +1,5 @@
+namespace SingularityGroup.HotReload.Editor {
+ internal interface IGUIComponent {
+ void OnGUI();
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs.meta
new file mode 100644
index 000000000..7cdb56e08
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 893cb208871dab94488cb988920f0ebd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/IGUIComponent.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options.meta
new file mode 100644
index 000000000..32dff3ddb
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2b3fa5ea1ed3545429de96b41801942f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs
new file mode 100644
index 000000000..bcdedf81d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs
@@ -0,0 +1,48 @@
+using UnityEditor;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class AllowAndroidAppToMakeHttpRequestsOption : ProjectOptionBase {
+ public override string ShortSummary {
+ get {
+ return "Allow app to make HTTP requests";
+ }
+ }
+
+ public override string Summary => ShortSummary;
+
+ public override bool GetValue(SerializedObject so) {
+ #if UNITY_2022_1_OR_NEWER
+ // use PlayerSettings as the source of truth
+ return PlayerSettings.insecureHttpOption != InsecureHttpOption.NotAllowed;
+ #else
+ return GetProperty(so).boolValue;
+ #endif
+ }
+
+ public override string ObjectPropertyName =>
+ nameof(HotReloadSettingsObject.AllowAndroidAppToMakeHttpRequests);
+
+ public override void SetValue(SerializedObject so, bool value) {
+ base.SetValue(so, value);
+
+ // Enabling on Unity 2022 or newer → set the Unity option to ‘Development Builds only’
+ #if UNITY_2022_1_OR_NEWER
+ var notAllowed = PlayerSettings.insecureHttpOption == InsecureHttpOption.NotAllowed;
+ if (value) {
+ // user chose to enable it
+ if (notAllowed) {
+ PlayerSettings.insecureHttpOption = InsecureHttpOption.DevelopmentOnly;
+ }
+ } else {
+ // user chose to disable it
+ PlayerSettings.insecureHttpOption = InsecureHttpOption.NotAllowed;
+ }
+ #endif
+ }
+
+ public override void InnerOnGUI(SerializedObject so) {
+ var description = "For Hot Reload to work on-device, please allow HTTP requests";
+ EditorGUILayout.LabelField(description, HotReloadWindowStyles.WrapStyle);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs.meta
new file mode 100644
index 000000000..828ae0334
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 0a7442cee510ab4498ca2a846e0c4e92
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/AllowAndroidAppToMakeHttpRequestsOption.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base.meta
new file mode 100644
index 000000000..a16bb7046
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bb8474c37f13d704d96b43e0f681680d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs
new file mode 100644
index 000000000..8cfa45772
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs
@@ -0,0 +1,57 @@
+using UnityEditor;
+
+namespace SingularityGroup.HotReload.Editor {
+ ///
+ /// An option stored inside the current Unity project.
+ ///
+ internal abstract class ProjectOptionBase : IOption, ISerializedProjectOption {
+ public abstract string ShortSummary { get; }
+ public abstract string Summary { get; }
+
+ public virtual bool GetValue(SerializedObject so) {
+ return so.FindProperty(ObjectPropertyName).boolValue;
+ }
+
+ protected SerializedProperty GetProperty(SerializedObject so) {
+ return so.FindProperty(ObjectPropertyName);
+ }
+
+ public virtual void SetValue(SerializedObject so, bool value) {
+ so.FindProperty(ObjectPropertyName).boolValue = value;
+ }
+
+ public virtual void InnerOnGUI(SerializedObject so) { }
+
+ public abstract string ObjectPropertyName { get; }
+
+ ///
+ /// Override this if your option is not needed for on-device Hot Reload to work.
+ /// (by default, a project option must be true for Hot Reload to work)
+ ///
+ public virtual bool IsRequiredForBuild() {
+ return true;
+ }
+ }
+
+ ///
+ /// An option that is stored on the user's computer (shared between Unity projects).
+ ///
+ internal abstract class ComputerOptionBase : IOption {
+ public abstract string ShortSummary { get; }
+ public abstract string Summary { get; }
+
+ public abstract bool GetValue();
+
+ /// Uses for storing the value on the user's computer.
+ public virtual void SetValue(bool value) { }
+
+ public bool GetValue(SerializedObject so) => GetValue();
+
+ public virtual void SetValue(SerializedObject so, bool value) => SetValue(value);
+
+ void IOption.InnerOnGUI(SerializedObject so) {
+ InnerOnGUI();
+ }
+ public virtual void InnerOnGUI() { }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs.meta
new file mode 100644
index 000000000..2b0907f36
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: dab8ef53c2ee30a40ab6a7e4abd1260c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/HotReloadOptionBase.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs
new file mode 100644
index 000000000..e68f3a1b2
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs
@@ -0,0 +1,34 @@
+using UnityEditor;
+
+namespace SingularityGroup.HotReload.Editor {
+ public interface IOption {
+ string ShortSummary { get; }
+ string Summary { get; }
+
+ /// The wrapped by SerializedObject
+ bool GetValue(SerializedObject so);
+
+ ///
+ /// Handle the new value.
+ ///
+ ///
+ /// Note: caller must skip calling this if value same as GetValue!
+ ///
+ /// The wrapped by SerializedObject
+ ///
+ void SetValue(SerializedObject so, bool value);
+
+ /// The wrapped by SerializedObject
+ void InnerOnGUI(SerializedObject so);
+ }
+
+ ///
+ /// An option scoped to the current Unity project.
+ ///
+ ///
+ /// These options are intended to be shared with collaborators and used by Unity Player builds.
+ ///
+ public interface ISerializedProjectOption {
+ string ObjectPropertyName { get; }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs.meta
new file mode 100644
index 000000000..a1e0d668e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 0a626aa97160471f85de4646a634bdf1
+timeCreated: 1674574633
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/Base/OptionInterfaces.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs
new file mode 100644
index 000000000..7d225e8b6
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Threading.Tasks;
+using SingularityGroup.HotReload.Editor.Cli;
+using UnityEditor;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal sealed class ExposeServerOption : ComputerOptionBase {
+
+ public override string ShortSummary => "Allow Devices to Connect";
+ public override string Summary => "Allow Devices to Connect (WiFi)";
+
+ public override void InnerOnGUI() {
+ string description;
+ if (GetValue()) {
+ description = "The HotReload server is reachable from devices on the same Wifi network";
+ } else {
+ description = "The HotReload server is available to your computer only. Other devices cannot connect to it.";
+ }
+ EditorGUILayout.LabelField(description, HotReloadWindowStyles.WrapStyle);
+ }
+
+ public override bool GetValue() {
+ return HotReloadPrefs.ExposeServerToLocalNetwork;
+ }
+
+ public override void SetValue(SerializedObject so, bool val) {
+ // AllowAndroidAppToMakeHttpRequestsOption
+ if (val == HotReloadPrefs.ExposeServerToLocalNetwork) {
+ return;
+ }
+
+ HotReloadPrefs.ExposeServerToLocalNetwork = val;
+ if (val) {
+ // they allowed this one for mobile builds, so now we allow everything else needed for player build to work with HR
+ new AllowAndroidAppToMakeHttpRequestsOption().SetValue(so, true);
+ }
+ RunTask(() => {
+ RunOnMainThreadSync(() => {
+ var isRunningResult = ServerHealthCheck.I.IsServerHealthy;
+ if (isRunningResult) {
+ var restartServer = EditorUtility.DisplayDialog("Hot Reload",
+ $"When changing '{Summary}', the Hot Reload server must be restarted for this to take effect." +
+ "\nDo you want to restart it now?",
+ "Restart server", "Don't restart");
+ if (restartServer) {
+ CodePatcher.I.ClearPatchedMethods();
+ EditorCodePatcher.RestartCodePatcher().Forget();
+ }
+ }
+ });
+ });
+ }
+
+ void RunTask(Action action) {
+ var token = HotReloadWindow.Current.cancelToken;
+ Task.Run(() => {
+ if (token.IsCancellationRequested) return;
+ try {
+ action();
+ } catch (Exception ex) {
+ ThreadUtility.LogException(ex, token);
+ }
+ }, token);
+ }
+
+ void RunOnMainThreadSync(Action action) {
+ ThreadUtility.RunOnMainThread(action, HotReloadWindow.Current.cancelToken);
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs.meta
new file mode 100644
index 000000000..659944146
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 5ab0973d3ae1275469237480381842c0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/ExposeServerOption.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs
new file mode 100644
index 000000000..3a6813436
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs
@@ -0,0 +1,24 @@
+using UnityEditor;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class IncludeInBuildOption : ProjectOptionBase, ISerializedProjectOption {
+ static IncludeInBuildOption _I;
+ public static IncludeInBuildOption I = _I ?? (_I = new IncludeInBuildOption());
+ public override string ShortSummary => "Include Hot Reload in player builds";
+ public override string Summary => ShortSummary;
+
+ public override string ObjectPropertyName =>
+ nameof(HotReloadSettingsObject.IncludeInBuild);
+
+ public override void InnerOnGUI(SerializedObject so) {
+ string description;
+ if (GetValue(so)) {
+ description = "The Hot Reload runtime is included in development builds that use the Mono scripting backend.";
+ } else {
+ description = "The Hot Reload runtime will not be included in any build. Use this option to disable HotReload without removing it from your project.";
+ }
+ description += " This option does not affect Hot Reload usage in Playmode";
+ EditorGUILayout.LabelField(description, HotReloadWindowStyles.WrapStyle);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs.meta
new file mode 100644
index 000000000..40e66fc59
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 39ed4f822bcd81340bdf7189b3bc5016
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Options/IncludeInBuildOption.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs.meta
new file mode 100644
index 000000000..b77723157
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c0f7811020465d46bcd0305e2f83e8a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base.meta
new file mode 100644
index 000000000..9cec40c97
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 58d14712b7ef14540ba4817a5ef873a6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs
new file mode 100644
index 000000000..7a648881a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs
@@ -0,0 +1,33 @@
+
+using UnityEditor;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal abstract class HotReloadTabBase : IGUIComponent {
+ protected readonly HotReloadWindow _window;
+
+ public string Title { get; }
+ public Texture Icon { get; }
+ public string Tooltip { get; }
+
+ public HotReloadTabBase(HotReloadWindow window, string title, Texture iconImage, string tooltip) {
+ _window = window;
+
+ Title = title;
+ Icon = iconImage;
+ Tooltip = tooltip;
+ }
+
+ public HotReloadTabBase(HotReloadWindow window, string title, string iconName, string tooltip) :
+ this(window, title, EditorGUIUtility.IconContent(iconName).image, tooltip) {
+ }
+
+ protected void Repaint() {
+ _window.Repaint();
+ }
+
+ public virtual void Update() { }
+
+ public abstract void OnGUI();
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs.meta
new file mode 100644
index 000000000..1f3d433e8
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: c2c79b82bd9636d499449f91f93fae2a
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Base/HotReloadTabBase.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers.meta
new file mode 100644
index 000000000..0c5c6ba69
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a089a7225d904b00b2893a34b514ad28
+timeCreated: 1689791626
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs
new file mode 100644
index 000000000..a0c841f53
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs
@@ -0,0 +1,308 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using SingularityGroup.HotReload.DTO;
+using SingularityGroup.HotReload.Newtonsoft.Json;
+using UnityEditor;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal enum RedeemStage {
+ None,
+ Registration,
+ Redeem,
+ Login
+ }
+
+ // IMPORTANT: don't rename
+ internal enum RegistrationOutcome {
+ None,
+ Indie,
+ Business,
+ }
+
+ internal class RedeemLicenseHelper {
+ public static readonly RedeemLicenseHelper I = new RedeemLicenseHelper();
+
+ private string _pendingCompanySize;
+ private string _pendingInvoiceNumber;
+ private string _pendingRedeemEmail;
+
+ private const string registerFlagPath = PackageConst.LibraryCachePath + "/registerFlag.txt";
+ public const string registerOutcomePath = PackageConst.LibraryCachePath + "/registerOutcome.txt";
+
+ public RedeemStage RedeemStage { get; private set; }
+ public RegistrationOutcome RegistrationOutcome { get; private set; }
+ public bool RegistrationRequired => RedeemStage != RedeemStage.None;
+
+ private string status;
+ private string error;
+
+ const string statusSuccess = "success";
+ const string statusAlreadyClaimed = "already redeemed by this user/device";
+ const string unknownError = "We apologize, an error happened while redeeming your license. Please reach out to customer support for assistance.";
+
+ private GUILayoutOption[] secondaryButtonLayoutOptions = new[] { GUILayout.MaxWidth(100) };
+
+ private bool requestingRedeem;
+ private HttpClient redeemClient;
+ const string redeemUrl = "https://vmhzj6jonn3qy7hk7tx7levpli0bstpj.lambda-url.us-east-1.on.aws/redeem";
+
+ public RedeemLicenseHelper() {
+ if (File.Exists(registerFlagPath)) {
+ RedeemStage = RedeemStage.Registration;
+ }
+ try {
+ if (File.Exists(registerOutcomePath)) {
+ RegistrationOutcome outcome;
+ if (Enum.TryParse(File.ReadAllText(registerOutcomePath), out outcome)) {
+ RegistrationOutcome = outcome;
+ }
+ }
+ } catch (Exception e) {
+ Log.Warning($"Failed determining registration outcome with {e.GetType().Name}: {e.Message}");
+ }
+ }
+
+ public void RenderStage(HotReloadRunTabState state) {
+ if (state.redeemStage == RedeemStage.Registration) {
+ RenderRegistration();
+ } else if (state.redeemStage == RedeemStage.Redeem) {
+ RenderRedeem();
+ } else if (state.redeemStage == RedeemStage.Login) {
+ RenderLogin(state);
+ }
+ }
+
+ private void RenderRegistration() {
+ var message = PackageConst.IsAssetStoreBuild
+ ? "Unity Pro users are required to obtain an additional license. You are eligible to redeem one if your company has ten or fewer employees. Please enter your company details below."
+ : "The licensing model for Unity Pro users varies depending on the number of employees in your company. Please enter your company details below.";
+ if (error != null) {
+ EditorGUILayout.HelpBox(error, MessageType.Warning);
+ } else {
+ EditorGUILayout.HelpBox(message, MessageType.Info);
+ }
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField("Comany size (number of employees)");
+ GUI.SetNextControlName("company_size");
+ _pendingCompanySize = EditorGUILayout.TextField(_pendingCompanySize)?.Trim();
+ EditorGUILayout.Space();
+
+ if (GUILayout.Button("Proceed")) {
+ int companySize;
+ if (!int.TryParse(_pendingCompanySize, out companySize)) {
+ error = "Please enter a number.";
+ } else {
+ error = null;
+ HandleRegistration(companySize);
+ }
+ }
+ }
+
+ void HandleRegistration(int companySize) {
+ RequestHelper.RequestEditorEvent(new Stat(StatSource.Client, StatLevel.Debug, StatFeature.Licensing, StatEventType.Register), new EditorExtraData { { StatKey.CompanySize, companySize } });
+ if (companySize > 10) {
+ FinishRegistration(RegistrationOutcome.Business);
+ EditorCodePatcher.DownloadAndRun().Forget();
+ } else if (PackageConst.IsAssetStoreBuild) {
+ SwitchToStage(RedeemStage.Redeem);
+ } else {
+ FinishRegistration(RegistrationOutcome.Indie);
+ EditorCodePatcher.DownloadAndRun().Forget();
+ }
+ }
+
+ private void RenderRedeem() {
+ if (error != null) {
+ EditorGUILayout.HelpBox(error, MessageType.Warning);
+ } else {
+ EditorGUILayout.HelpBox("To enable us to verify your purchase, please enter your invoice number/order ID. Additionally, provide the email address that you intend to use for managing your credentials.", MessageType.Info);
+ }
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField("Invoice number/Order ID");
+ GUI.SetNextControlName("invoice_number");
+ _pendingInvoiceNumber = EditorGUILayout.TextField(_pendingInvoiceNumber ?? HotReloadPrefs.RedeemLicenseInvoice)?.Trim();
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField("Email");
+ GUI.SetNextControlName("email_redeem");
+ _pendingRedeemEmail = EditorGUILayout.TextField(_pendingRedeemEmail ?? HotReloadPrefs.RedeemLicenseEmail);
+ EditorGUILayout.Space();
+
+ using (new EditorGUI.DisabledScope(requestingRedeem)) {
+ if (GUILayout.Button("Redeem", HotReloadRunTab.bigButtonHeight)) {
+ RedeemLicense(email: _pendingRedeemEmail, invoiceNumber: _pendingInvoiceNumber).Forget();
+ }
+ }
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ using (new EditorGUILayout.HorizontalScope()) {
+ GUILayout.FlexibleSpace();
+ if (GUILayout.Button("Skip", secondaryButtonLayoutOptions)) {
+ SwitchToStage(RedeemStage.Login);
+ }
+ GUILayout.FlexibleSpace();
+ }
+ }
+
+ async Task RedeemLicense(string email, string invoiceNumber) {
+ string validationError;
+ if (string.IsNullOrEmpty(invoiceNumber)) {
+ validationError = "Please enter invoice number / order ID.";
+ } else {
+ validationError = HotReloadRunTab.ValidateEmail(email);
+ }
+ if (validationError != null) {
+ error = validationError;
+ return;
+ }
+ var resp = await RequestRedeem(email: email, invoiceNumber: invoiceNumber);
+ status = resp?.status;
+ if (status != null) {
+ if (status != statusSuccess && status != statusAlreadyClaimed) {
+ Log.Error("Redeeming license failed: unknown status received");
+ error = unknownError;
+ } else {
+ HotReloadPrefs.RedeemLicenseEmail = email;
+ HotReloadPrefs.RedeemLicenseInvoice = invoiceNumber;
+ // prepare data for login screen
+ HotReloadPrefs.LicenseEmail = email;
+ HotReloadPrefs.LicensePassword = null;
+
+ SwitchToStage(RedeemStage.Login);
+ }
+ } else if (resp?.error != null) {
+ Log.Warning($"Redeeming a license failed with error: {resp.error}");
+ error = GetPrettyError(resp);
+ } else {
+ Log.Warning("Redeeming a license failed: uknown error encountered");
+ error = unknownError;
+ }
+ }
+
+ string GetPrettyError(RedeemResponse response) {
+ var err = response?.error;
+ if (err == null) {
+ return unknownError;
+ }
+ if (err.Contains("Invalid email")) {
+ return "Please enter a valid email address.";
+ } else if (err.Contains("License invoice already redeemed")) {
+ return "The invoice number/order ID you're trying to use has already been applied to redeem a license. Please enter a different invoice number/order ID. If you have already redeemed a license for another email, you may proceed to the next step.";
+ } else if (err.Contains("Different license already redeemed by given email")) {
+ return "The provided email has already been used to redeem a license. If you have previously redeemed a license, you can proceed to the next step and use your existing credentials. If not, please input a different email address.";
+ } else if (err.Contains("Invoice not found")) {
+ return "The invoice was not found. Please ensure that you've entered the correct invoice number/order ID.";
+ } else if (err.Contains("Invoice refunded")) {
+ return "The purchase has been refunded. Please enter a different invoice number/order ID.";
+ } else {
+ return unknownError;
+ }
+ }
+
+ async Task RequestRedeem(string email, string invoiceNumber) {
+ requestingRedeem = true;
+ await ThreadUtility.SwitchToThreadPool();
+ try {
+ redeemClient = redeemClient ?? (redeemClient = HttpClientUtils.CreateHttpClient());
+ var input = new Dictionary {
+ { "email", email },
+ { "invoice", invoiceNumber }
+ };
+ var content = new StringContent(JsonConvert.SerializeObject(input), Encoding.UTF8, "application/json");
+ using (var resp = await redeemClient.PostAsync(redeemUrl, content, HotReloadWindow.Current.cancelToken).ConfigureAwait(false)) {
+ if (resp.StatusCode != HttpStatusCode.OK) {
+ return new RedeemResponse(null, $"Redeem request failed. Status code: {(int)resp.StatusCode}, reason: {resp.ReasonPhrase}");
+ }
+ var str = await resp.Content.ReadAsStringAsync().ConfigureAwait(false);
+ try {
+ return JsonConvert.DeserializeObject(str);
+ } catch (Exception ex) {
+ return new RedeemResponse(null, $"Failed deserializing redeem response with exception: {ex.GetType().Name}: {ex.Message}");
+ }
+ }
+ } catch (WebException ex) {
+ return new RedeemResponse(null, $"Redeeming license failed: WebException encountered {ex.Message}");
+ } finally {
+ requestingRedeem = false;
+ }
+ }
+
+ private class RedeemResponse {
+ public string status;
+ public string error;
+
+ public RedeemResponse(string status, string error) {
+ this.status = status;
+ this.error = error;
+ }
+ }
+
+ private void RenderLogin(HotReloadRunTabState state) {
+ if (status == statusSuccess) {
+ EditorGUILayout.HelpBox("Success! You will receive an email containing your license password shortly. Once you receive it, please enter the received password in the designated field below to complete your registration.", MessageType.Info);
+ } else if (status == statusAlreadyClaimed) {
+ EditorGUILayout.HelpBox("Your license has already been redeemed. Please enter your existing password below.", MessageType.Info);
+ }
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ HotReloadRunTab.RenderLicenseInnerPanel(state, renderLogout: false);
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ using (new EditorGUILayout.HorizontalScope()) {
+ GUILayout.FlexibleSpace();
+ if (GUILayout.Button("Go Back", secondaryButtonLayoutOptions)) {
+ SwitchToStage(RedeemStage.Redeem);
+ }
+ GUILayout.FlexibleSpace();
+ }
+ }
+
+ public void StartRegistration() {
+ // ReSharper disable once AssignNullToNotNullAttribute
+ Directory.CreateDirectory(Path.GetDirectoryName(registerFlagPath));
+ using (File.Create(registerFlagPath)) {
+ }
+ RedeemStage = RedeemStage.Registration;
+ RegistrationOutcome = RegistrationOutcome.None;
+ }
+
+ public void FinishRegistration(RegistrationOutcome outcome) {
+ // ReSharper disable once AssignNullToNotNullAttribute
+ Directory.CreateDirectory(Path.GetDirectoryName(registerFlagPath));
+ File.WriteAllText(registerOutcomePath, outcome.ToString());
+ File.Delete(registerFlagPath);
+ RegistrationOutcome = outcome;
+ SwitchToStage(RedeemStage.None);
+ Cleanup();
+ }
+
+ void SwitchToStage(RedeemStage stage) {
+ // remove focus so that the input field re-renders
+ GUI.FocusControl(null);
+ RedeemStage = stage;
+ }
+
+ void Cleanup() {
+ redeemClient?.Dispose();
+ redeemClient = null;
+ _pendingCompanySize = null;
+ _pendingInvoiceNumber = null;
+ _pendingRedeemEmail = null;
+ status = null;
+ error = null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs.meta
new file mode 100644
index 000000000..1f97908ba
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: ad73f74d3c494c02aae937e2dfa305a2
+timeCreated: 1689791373
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/Helpers/RedeemLicenseHelper.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs
new file mode 100644
index 000000000..d2b6e95e8
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs
@@ -0,0 +1,310 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Globalization;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+using System.Threading.Tasks;
+using System.IO;
+using SingularityGroup.HotReload.Newtonsoft.Json;
+using SingularityGroup.HotReload.EditorDependencies;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal struct HotReloadAboutTabState {
+ public readonly bool logsFodlerExists;
+ public readonly IReadOnlyList changelog;
+ public readonly bool loginRequired;
+ public readonly bool hasTrialLicense;
+ public readonly bool hasPayedLicense;
+
+ public HotReloadAboutTabState(
+ bool logsFodlerExists,
+ IReadOnlyList changelog,
+ bool loginRequired,
+ bool hasTrialLicense,
+ bool hasPayedLicense
+ ) {
+ this.logsFodlerExists = logsFodlerExists;
+ this.changelog = changelog;
+ this.loginRequired = loginRequired;
+ this.hasTrialLicense = hasTrialLicense;
+ this.hasPayedLicense = hasPayedLicense;
+ }
+ }
+
+ internal class HotReloadAboutTab : HotReloadTabBase {
+ internal static readonly OpenURLButton seeMore = new OpenURLButton("See More", Constants.ChangelogURL);
+ internal static readonly OpenDialogueButton manageLicenseButton = new OpenDialogueButton("Manage License", Constants.ManageLicenseURL, "Manage License", "Upgrade/downgrade/edit your subscription and edit payment info.", "Open in browser", "Cancel");
+ internal static readonly OpenDialogueButton manageAccountButton = new OpenDialogueButton("Manage Account", Constants.ManageAccountURL, "Manage Account", "Login with company code 'naughtycult'. Use the email you signed up with. Your initial password was sent to you by email.", "Open in browser", "Cancel");
+ internal static readonly OpenURLButton contactButton = new OpenURLButton("Contact", Constants.ContactURL);
+ internal static readonly OpenURLButton discordButton = new OpenURLButton("Join Discord", Constants.DiscordInviteUrl);
+ internal static readonly OpenDialogueButton reportIssueButton = new OpenDialogueButton("Report issue", Constants.ReportIssueURL, "Report issue", "Report issue in our public issue tracker. Requires gitlab.com account (if you don't have one and are not willing to make it, please contact us by other means such as our website).", "Open in browser", "Cancel");
+
+ private Vector2 _changelogScroll;
+ private IReadOnlyList _changelog = new List();
+ private bool _requestedChangelog;
+ private int _changelogRequestAttempt;
+ private string _changelogDir = Path.Combine(PackageConst.LibraryCachePath, "changelog.json");
+ public static string logsPath = Path.Combine(PackageConst.LibraryCachePath, "logs");
+
+ private static bool LatestChangelogLoaded(IReadOnlyList changelog) {
+ return changelog.Any() && changelog[0].versionNum == PackageUpdateChecker.lastRemotePackageVersion;
+ }
+
+ private async Task FetchChangelog() {
+ if(!_changelog.Any()) {
+ var file = new FileInfo(_changelogDir);
+ if (file.Exists) {
+ await Task.Run(() => {
+ var bytes = File.ReadAllText(_changelogDir);
+ _changelog = JsonConvert.DeserializeObject>(bytes);
+ });
+ }
+ }
+ if (_requestedChangelog || LatestChangelogLoaded(_changelog)) {
+ return;
+ }
+ _requestedChangelog = true;
+ try {
+ do {
+ var changelogRequestTimeout = ExponentialBackoff.GetTimeout(_changelogRequestAttempt);
+ _changelog = await RequestHelper.FetchChangelog() ?? _changelog;
+ if (LatestChangelogLoaded(_changelog)) {
+ await Task.Run(() => {
+ Directory.CreateDirectory(PackageConst.LibraryCachePath);
+ File.WriteAllText(_changelogDir, JsonConvert.SerializeObject(_changelog));
+ });
+ Repaint();
+ return;
+ }
+ await Task.Delay(changelogRequestTimeout);
+ } while (_changelogRequestAttempt++ < 1000 && !LatestChangelogLoaded(_changelog));
+ } catch {
+ // ignore
+ } finally {
+ _requestedChangelog = false;
+ }
+ }
+
+ public HotReloadAboutTab(HotReloadWindow window) : base(window, "Help", "_Help", "Info and support for Hot Reload for Unity.") { }
+
+ string GetRelativeDate(DateTime givenDate) {
+ const int second = 1;
+ const int minute = 60 * second;
+ const int hour = 60 * minute;
+ const int day = 24 * hour;
+ const int month = 30 * day;
+
+ var ts = new TimeSpan(DateTime.UtcNow.Ticks - givenDate.Ticks);
+ var delta = Math.Abs(ts.TotalSeconds);
+
+ if (delta < 24 * hour)
+ return "Today";
+
+ if (delta < 48 * hour)
+ return "Yesterday";
+
+ if (delta < 30 * day)
+ return ts.Days + " days ago";
+
+ if (delta < 12 * month) {
+ var months = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
+ return months <= 1 ? "one month ago" : months + " months ago";
+ }
+ var years = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
+ return years <= 1 ? "one year ago" : years + " years ago";
+ }
+
+ void RenderVersion(ChangelogVersion version) {
+ var tempTextString = "";
+
+ //version number
+ EditorGUILayout.TextArea(version.versionNum, HotReloadWindowStyles.H1TitleStyle);
+
+ //general info
+ if (version.generalInfo != null) {
+ EditorGUILayout.TextArea(version.generalInfo, HotReloadWindowStyles.H3TitleStyle);
+ }
+
+ //features
+ if (version.features != null) {
+ EditorGUILayout.TextArea("Features:", HotReloadWindowStyles.H2TitleStyle);
+ tempTextString = "";
+ foreach (var feature in version.features) {
+ tempTextString += "• " + feature + "\n";
+ }
+ EditorGUILayout.TextArea(tempTextString, HotReloadWindowStyles.ChangelogPointerStyle);
+ }
+
+ //improvements
+ if (version.improvements != null) {
+ EditorGUILayout.TextArea("Improvements:", HotReloadWindowStyles.H2TitleStyle);
+ tempTextString = "";
+ foreach (var improvement in version.improvements) {
+ tempTextString += "• " + improvement + "\n";
+ }
+ EditorGUILayout.TextArea(tempTextString, HotReloadWindowStyles.ChangelogPointerStyle);
+ }
+
+ //fixes
+ if (version.fixes != null) {
+ EditorGUILayout.TextArea("Fixes:", HotReloadWindowStyles.H2TitleStyle);
+ tempTextString = "";
+ foreach (var fix in version.fixes) {
+ tempTextString += "• " + fix + "\n";
+ }
+ EditorGUILayout.TextArea(tempTextString, HotReloadWindowStyles.ChangelogPointerStyle);
+ }
+
+ //date
+ DateTime date;
+ if (DateTime.TryParseExact(version.date, "dd/MM/yyyy", null, DateTimeStyles.None, out date)) {
+ var relativeDate = GetRelativeDate(date);
+ GUILayout.TextArea(relativeDate, HotReloadWindowStyles.H3TitleStyle);
+ }
+ }
+
+ void RenderChangelog() {
+ FetchChangelog().Forget();
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBoxWide)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ HotReloadPrefs.ShowChangeLog = EditorGUILayout.Foldout(HotReloadPrefs.ShowChangeLog, "Changelog", true, HotReloadWindowStyles.FoldoutStyle);
+ if (!HotReloadPrefs.ShowChangeLog) {
+ return;
+ }
+ // changelog versions
+ var maxChangeLogs = 5;
+ var index = 0;
+ foreach (var version in currentState.changelog) {
+ index++;
+ if (index > maxChangeLogs) {
+ break;
+ }
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.ChangelogSectionInnerBox)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ RenderVersion(version);
+ }
+ }
+ }
+ // see more button
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.ChangelogSectionInnerBox)) {
+ seeMore.OnGUI();
+ }
+ }
+ }
+ }
+
+ private Vector2 _aboutTabScrollPos;
+
+ HotReloadAboutTabState currentState;
+ public override void OnGUI() {
+ // HotReloadAboutTabState ensures rendering is consistent between Layout and Repaint calls
+ // Without it errors like this happen:
+ // ArgumentException: Getting control 2's position in a group with only 2 controls when doing repaint
+ // See thread for more context: https://answers.unity.com/questions/17718/argumentexception-getting-control-2s-position-in-a.html
+ if (Event.current.type == EventType.Layout) {
+ currentState = new HotReloadAboutTabState(
+ logsFodlerExists: Directory.Exists(logsPath),
+ changelog: _changelog,
+ loginRequired: EditorCodePatcher.LoginNotRequired,
+ hasTrialLicense: _window.RunTab.TrialLicense,
+ hasPayedLicense: _window.RunTab.HasPayedLicense
+ );
+ }
+ using (var scope = new EditorGUILayout.ScrollViewScope(_aboutTabScrollPos, GUI.skin.horizontalScrollbar, GUI.skin.verticalScrollbar, GUILayout.MaxHeight(Math.Max(HotReloadWindowStyles.windowScreenHeight, 800)), GUILayout.MaxWidth(Math.Max(HotReloadWindowStyles.windowScreenWidth, 800)))) {
+ _aboutTabScrollPos.x = scope.scrollPosition.x;
+ _aboutTabScrollPos.y = scope.scrollPosition.y;
+
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.DynamicSectionHelpTab)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ GUILayout.Space(10);
+ RenderLogButtons();
+
+ EditorGUILayout.Space();
+ EditorGUILayout.HelpBox($" Hot Reload version {PackageConst.Version}. ", MessageType.Info);
+ EditorGUILayout.Space();
+
+ RenderHelpButtons();
+
+ GUILayout.Space(15);
+
+ try {
+ RenderChangelog();
+ } catch {
+ // ignore
+ }
+ }
+ }
+ }
+ }
+
+ void RenderHelpButtons() {
+ var labelRect = GUILayoutUtility.GetLastRect();
+ using (new EditorGUILayout.HorizontalScope()) {
+ using (new EditorGUILayout.VerticalScope()) {
+ var buttonHeight = 19;
+
+ var bigButtonRect = new Rect(labelRect.x + 3, labelRect.y + 5, labelRect.width - 6, buttonHeight);
+ OpenURLButton.RenderRaw(bigButtonRect, "Documentation", Constants.DocumentationURL, HotReloadWindowStyles.HelpTabButton);
+
+ var firstLayerX = bigButtonRect.x;
+ var firstLayerY = bigButtonRect.y + buttonHeight + 3;
+ var firstLayerWidth = (int)((bigButtonRect.width / 2) - 3);
+
+ var secondLayerX = firstLayerX + firstLayerWidth + 5;
+ var secondLayerY = firstLayerY + buttonHeight + 3;
+ var secondLayerWidth = bigButtonRect.width - firstLayerWidth - 5;
+
+ using (new EditorGUILayout.HorizontalScope()) {
+ OpenURLButton.RenderRaw(new Rect { x = firstLayerX, y = firstLayerY, width = firstLayerWidth, height = buttonHeight }, contactButton.text, contactButton.url, HotReloadWindowStyles.HelpTabButton);
+ OpenURLButton.RenderRaw(new Rect { x = secondLayerX, y = firstLayerY, width = secondLayerWidth, height = buttonHeight }, "Unity Forum", Constants.ForumURL, HotReloadWindowStyles.HelpTabButton);
+ }
+ using (new EditorGUILayout.HorizontalScope()) {
+ OpenDialogueButton.RenderRaw(rect: new Rect { x = firstLayerX, y = secondLayerY, width = firstLayerWidth, height = buttonHeight }, text: reportIssueButton.text, url: reportIssueButton.url, title: reportIssueButton.title, message: reportIssueButton.message, ok: reportIssueButton.ok, cancel: reportIssueButton.cancel, style: HotReloadWindowStyles.HelpTabButton);
+ OpenURLButton.RenderRaw(new Rect { x = secondLayerX, y = secondLayerY, width = secondLayerWidth, height = buttonHeight }, discordButton.text, discordButton.url, HotReloadWindowStyles.HelpTabButton);
+ }
+ }
+ }
+ GUILayout.Space(80);
+ }
+
+ void RenderLogButtons() {
+ if (currentState.logsFodlerExists) {
+ EditorGUILayout.Space();
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.FlexibleSpace();
+ if (GUILayout.Button("Open Log File")) {
+ var mostRecentFile = LogsHelper.FindRecentLog(logsPath);
+ if (mostRecentFile == null) {
+ Log.Info("No logs found");
+ } else {
+ try {
+ Process.Start($"\"{Path.Combine(logsPath, mostRecentFile)}\"");
+ } catch (Win32Exception e) {
+ if (e.Message.Contains("Application not found")) {
+ try {
+ Process.Start("notepad.exe", $"\"{Path.Combine(logsPath, mostRecentFile)}\"");
+ } catch {
+ // Fallback to opening folder with all logs
+ Process.Start($"\"{logsPath}\"");
+ Log.Info("Failed opening log file.");
+ }
+ }
+ } catch {
+ // Fallback to opening folder with all logs
+ Process.Start($"\"{logsPath}\"");
+ Log.Info("Failed opening log file.");
+ }
+ }
+ }
+ if (GUILayout.Button("Browse all logs")) {
+ Process.Start($"\"{logsPath}\"");
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs.meta
new file mode 100644
index 000000000..5e7723f3b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 7cf8e9ef1ab770249a4318e88e882a85
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadAboutTab.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs
new file mode 100644
index 000000000..63b5c43c3
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs
@@ -0,0 +1,49 @@
+using UnityEditor;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class HotReloadOptionsSection {
+ ///
+ /// Opening options tab does not automatically create the settings asset file.
+ /// - The Options UI shows defaults if the object asset doesn't exist.
+ /// - When a build starts, we also ensure the asset file exists.
+ ///
+ public void DrawGUI(SerializedObject so) {
+ so.Update(); // must update in-case asset was modified externally
+
+ foreach (var option in HotReloadSettingsTab.allOptions) {
+ GUILayout.Space(4f);
+ DrawOption(option, so);
+ }
+
+ // commit any changes to the underlying ScriptableObject
+ if (so.hasModifiedProperties) {
+ so.ApplyModifiedProperties();
+ // Ensure asset file exists on disk, because we initially create it in memory (to provide the default values)
+ // This does not save the asset, user has to do that by saving assets in Unity (e.g. press hotkey Ctrl + S)
+ var target = so.targetObject as HotReloadSettingsObject;
+ if (target == null) {
+ Log.Warning("Unexpected problem unable to save HotReloadSettingsObject");
+ } else {
+ // when one of the project options changed then we ensure the asset file exists.
+ HotReloadSettingsEditor.EnsureSettingsCreated(target);
+ }
+ }
+ }
+
+ static void DrawOption(IOption option, SerializedObject so) {
+ EditorGUILayout.BeginVertical(HotReloadWindowStyles.BoxStyle);
+
+ var before = option.GetValue(so);
+ var after = EditorGUILayout.BeginToggleGroup(new GUIContent(" " + option.Summary), before);
+ if (after != before) {
+ option.SetValue(so, after);
+ }
+
+ option.InnerOnGUI(so);
+
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.EndVertical();
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs.meta
new file mode 100644
index 000000000..71040330a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 24379a407eff8494eac0f7841b70e574
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadOptionsSection.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs
new file mode 100644
index 000000000..6ce934132
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs
@@ -0,0 +1,1367 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using SingularityGroup.HotReload.DTO;
+using SingularityGroup.HotReload.EditorDependencies;
+using UnityEditor;
+using UnityEditor.Compilation;
+using UnityEngine;
+using Color = UnityEngine.Color;
+using Task = System.Threading.Tasks.Task;
+#if UNITY_2019_4_OR_NEWER
+using Unity.CodeEditor;
+#endif
+
+namespace SingularityGroup.HotReload.Editor {
+ internal class ErrorData {
+ public string fileName;
+ public string error;
+ public TextAsset file;
+ public int lineNumber;
+ public string stacktrace;
+ public string linkString;
+ private static string[] supportedPaths = new[] { Path.GetFullPath("Assets"), Path.GetFullPath("Plugins") };
+
+ public static ErrorData GetErrorData(string errorString) {
+ // Get the relevant file name
+ string stackTrace = errorString;
+ string fileName = null;
+ try {
+ int csIndex = 0;
+ int attempt = 0;
+ do {
+ csIndex = errorString.IndexOf(".cs", csIndex + 1, StringComparison.Ordinal);
+ if (csIndex == -1) {
+ break;
+ }
+ int fileNameStartIndex = csIndex - 1;
+ for (; fileNameStartIndex >= 0; fileNameStartIndex--) {
+ if (!char.IsLetter(errorString[fileNameStartIndex])) {
+ if (errorString.Contains("error CS")) {
+ fileName = errorString.Substring(fileNameStartIndex + 1,
+ csIndex - fileNameStartIndex + ".cs".Length - 1);
+ } else {
+ fileName = errorString.Substring(fileNameStartIndex,
+ csIndex - fileNameStartIndex + ".cs".Length);
+ }
+ break;
+ }
+ }
+ } while (attempt++ < 100 && fileName == null);
+ } catch {
+ // ignore
+ }
+ fileName = fileName ?? "Tap to show stacktrace";
+
+ // Get the error
+ string error = (errorString.Contains("error CS")
+ ? "Compile error, "
+ : "Unsupported change detected, ") + "tap here to see more.";
+ int endOfError = errorString.IndexOf(". in ", StringComparison.Ordinal);
+ string specialChars = "\"'/\\";
+ char[] characters = specialChars.ToCharArray();
+ int specialChar = errorString.IndexOfAny(characters);
+ try {
+ if (errorString.Contains("error CS") ) {
+ error = errorString.Substring(errorString.IndexOf("error CS", StringComparison.Ordinal), errorString.Length - errorString.IndexOf("error CS", StringComparison.Ordinal)).Trim();
+ using (StringReader reader = new StringReader(error)) {
+ string line;
+ while ((line = reader.ReadLine()) != null) {
+ error = line;
+ break;
+ }
+ }
+ } else if (errorString.StartsWith("errors:", StringComparison.Ordinal) && endOfError > 0) {
+ error = errorString.Substring("errors: ".Length, endOfError - "errors: ".Length).Trim();
+ } else if (errorString.StartsWith("errors:", StringComparison.Ordinal) && specialChar > 0) {
+ error = errorString.Substring("errors: ".Length, specialChar - "errors: ".Length).Trim();
+ }
+ } catch {
+ // ignore
+ }
+
+ // Get relative path
+ TextAsset file = null;
+ foreach (var path in supportedPaths) {
+ int lastprojectIndex = 0;
+ int attempt = 0;
+ while (attempt++ < 100 && !file) {
+ lastprojectIndex = errorString.IndexOf(path, lastprojectIndex + 1, StringComparison.Ordinal);
+ if (lastprojectIndex == -1) {
+ break;
+ }
+ var fullCsIndex = errorString.IndexOf(".cs", lastprojectIndex, StringComparison.Ordinal);
+ var candidateAbsolutePath = errorString.Substring(lastprojectIndex, fullCsIndex - lastprojectIndex + ".cs".Length);
+ var candidateRelativePath = EditorCodePatcher.GetRelativePath(filespec: candidateAbsolutePath, folder: path);
+ file = AssetDatabase.LoadAssetAtPath(candidateRelativePath);
+ }
+ }
+
+ // Get the line number
+ int lineNumber = 0;
+ try {
+ int lastIndex = 0;
+ int attempt = 0;
+ do {
+ lastIndex = errorString.IndexOf(fileName, lastIndex + 1, StringComparison.Ordinal);
+ if (lastIndex == -1) {
+ break;
+ }
+ var part = errorString.Substring(lastIndex + fileName.Length);
+ if (!part.StartsWith(errorString.Contains("error CS") ? "(" : ":", StringComparison.Ordinal)
+ || part.Length == 1
+ || !char.IsDigit(part[1])
+ ) {
+ continue;
+ }
+ int y = 1;
+ for (; y < part.Length; y++) {
+ if (!char.IsDigit(part[y])) {
+ break;
+ }
+ }
+ if (int.TryParse(part.Substring(1, errorString.Contains("error CS") ? y - 1 : y), out lineNumber)) {
+ break;
+ }
+ } while (attempt++ < 100);
+ } catch {
+ //ignore
+ }
+
+ return new ErrorData() {
+ fileName = fileName,
+ error = error,
+ file = file,
+ lineNumber = lineNumber,
+ stacktrace = stackTrace,
+ linkString = lineNumber > 0 ? fileName + ":" + lineNumber : fileName
+ };
+ }
+
+ }
+
+ internal struct HotReloadRunTabState {
+ public readonly bool spinnerActive;
+ public readonly string indicationIconPath;
+ public readonly bool requestingDownloadAndRun;
+ public readonly bool starting;
+ public readonly bool stopping;
+ public readonly bool running;
+ public readonly Tuple startupProgress;
+ public readonly string indicationStatusText;
+ public readonly LoginStatusResponse loginStatus;
+ public readonly bool downloadRequired;
+ public readonly bool downloadStarted;
+ public readonly bool requestingLoginInfo;
+ public readonly RedeemStage redeemStage;
+ public readonly int suggestionCount;
+
+ public HotReloadRunTabState(
+ bool spinnerActive,
+ string indicationIconPath,
+ bool requestingDownloadAndRun,
+ bool starting,
+ bool stopping,
+ bool running,
+ Tuple startupProgress,
+ string indicationStatusText,
+ LoginStatusResponse loginStatus,
+ bool downloadRequired,
+ bool downloadStarted,
+ bool requestingLoginInfo,
+ RedeemStage redeemStage,
+ int suggestionCount
+ ) {
+ this.spinnerActive = spinnerActive;
+ this.indicationIconPath = indicationIconPath;
+ this.requestingDownloadAndRun = requestingDownloadAndRun;
+ this.starting = starting;
+ this.stopping = stopping;
+ this.running = running;
+ this.startupProgress = startupProgress;
+ this.indicationStatusText = indicationStatusText;
+ this.loginStatus = loginStatus;
+ this.downloadRequired = downloadRequired;
+ this.downloadStarted = downloadStarted;
+ this.requestingLoginInfo = requestingLoginInfo;
+ this.redeemStage = redeemStage;
+ this.suggestionCount = suggestionCount;
+ }
+
+ public static HotReloadRunTabState Current => new HotReloadRunTabState(
+ spinnerActive: EditorIndicationState.SpinnerActive,
+ indicationIconPath: EditorIndicationState.IndicationIconPath,
+ requestingDownloadAndRun: EditorCodePatcher.RequestingDownloadAndRun,
+ starting: EditorCodePatcher.Starting,
+ stopping: EditorCodePatcher.Stopping,
+ running: EditorCodePatcher.Running,
+ startupProgress: EditorCodePatcher.StartupProgress,
+ indicationStatusText: EditorIndicationState.IndicationStatusText,
+ loginStatus: EditorCodePatcher.Status,
+ downloadRequired: EditorCodePatcher.DownloadRequired,
+ downloadStarted: EditorCodePatcher.DownloadStarted,
+ requestingLoginInfo: EditorCodePatcher.RequestingLoginInfo,
+ redeemStage: RedeemLicenseHelper.I.RedeemStage,
+ suggestionCount: HotReloadTimelineHelper.Suggestions.Count
+ );
+ }
+
+ internal struct LicenseErrorData {
+ public readonly string description;
+ public bool showBuyButton;
+ public string buyButtonText;
+ public readonly bool showLoginButton;
+ public readonly string loginButtonText;
+ public readonly bool showSupportButton;
+ public readonly string supportButtonText;
+ public readonly bool showManageLicenseButton;
+ public readonly string manageLicenseButtonText;
+
+ public LicenseErrorData(string description, bool showManageLicenseButton = false, string manageLicenseButtonText = "", string loginButtonText = "", bool showSupportButton = false, string supportButtonText = "", bool showBuyButton = false, string buyButtonText = "", bool showLoginButton = false) {
+ this.description = description;
+ this.showManageLicenseButton = showManageLicenseButton;
+ this.manageLicenseButtonText = manageLicenseButtonText;
+ this.loginButtonText = loginButtonText;
+ this.showSupportButton = showSupportButton;
+ this.supportButtonText = supportButtonText;
+ this.showBuyButton = showBuyButton;
+ this.buyButtonText = buyButtonText;
+ this.showLoginButton = showLoginButton;
+ }
+ }
+
+ internal class HotReloadRunTab : HotReloadTabBase {
+ private static string _pendingEmail;
+ private static string _pendingPassword;
+ private string _pendingPromoCode;
+ private bool _requestingActivatePromoCode;
+
+ private static Tuple _activateInfoMessage;
+
+ private HotReloadRunTabState currentState => _window.RunTabState;
+ // Has Indie or Pro license (even if not currenctly active)
+ public bool HasPayedLicense => currentState.loginStatus != null && (currentState.loginStatus.isIndieLicense || currentState.loginStatus.isBusinessLicense);
+ public bool TrialLicense => currentState.loginStatus != null && (currentState.loginStatus?.isTrial == true);
+
+ private Vector2 _patchedMethodsScrollPos;
+ private Vector2 _runTabScrollPos;
+
+ private string promoCodeError;
+ private MessageType promoCodeErrorType;
+ private bool promoCodeActivatedThisSession;
+
+ public HotReloadRunTab(HotReloadWindow window) : base(window, "Run", "forward", "Run and monitor the current Hot Reload session.") { }
+
+ public override void OnGUI() {
+ using(new EditorGUILayout.VerticalScope()) {
+ OnGUICore();
+ }
+ }
+
+ internal static bool ShouldRenderConsumption(HotReloadRunTabState currentState) => (currentState.running && !currentState.starting && !currentState.stopping && currentState.loginStatus?.isLicensed != true && currentState.loginStatus?.isFree != true && !EditorCodePatcher.LoginNotRequired) && !(currentState.loginStatus == null || currentState.loginStatus.isFree);
+
+ void OnGUICore() {
+ using (var scope = new EditorGUILayout.ScrollViewScope(_runTabScrollPos, GUI.skin.horizontalScrollbar, GUI.skin.verticalScrollbar, GUILayout.MaxHeight(Math.Max(HotReloadWindowStyles.windowScreenHeight, 800)), GUILayout.MaxWidth(Math.Max(HotReloadWindowStyles.windowScreenWidth, 800)))) {
+ _runTabScrollPos.x = scope.scrollPosition.x;
+ _runTabScrollPos.y = scope.scrollPosition.y;
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.DynamiSection)) {
+ if (HotReloadWindowStyles.windowScreenWidth > Constants.UpgradeLicenseNoteHideWidth
+ && HotReloadWindowStyles.windowScreenHeight > Constants.UpgradeLicenseNoteHideHeight
+ ) {
+ RenderUpgradeLicenseNote(currentState, HotReloadWindowStyles.UpgradeLicenseButtonStyle);
+ }
+
+ RenderIndicationPanel();
+
+ if (CanRenderBars(currentState)) {
+ RenderBars(currentState);
+ // clear red dot next time button shows
+ HotReloadState.ShowingRedDot = false;
+ }
+ }
+ }
+
+ // At the end to not fuck up rendering https://answers.unity.com/questions/400454/argumentexception-getting-control-0s-position-in-a-1.html
+ var renderStart = !EditorCodePatcher.Running && !EditorCodePatcher.Starting && !currentState.requestingDownloadAndRun && currentState.redeemStage == RedeemStage.None;
+ var e = Event.current;
+ if (renderStart && e.type == EventType.KeyUp
+ && (e.keyCode == KeyCode.Return
+ || e.keyCode == KeyCode.KeypadEnter)
+ ) {
+ EditorCodePatcher.DownloadAndRun().Forget();
+ }
+ }
+
+ internal static void RenderUpgradeLicenseNote(HotReloadRunTabState currentState, GUIStyle style) {
+ var isIndie = RedeemLicenseHelper.I.RegistrationOutcome == RegistrationOutcome.Indie
+ || EditorCodePatcher.licenseType == UnityLicenseType.UnityPersonalPlus;
+
+ if (RedeemLicenseHelper.I.RegistrationOutcome == RegistrationOutcome.Business
+ && currentState.loginStatus?.isBusinessLicense != true
+ && EditorCodePatcher.Running
+ && (PackageConst.IsAssetStoreBuild || HotReloadPrefs.RateAppShown)
+ ) {
+ // Warn asset store users they need to buy a business license
+ // Website users get reminded after using Hot Reload for 5+ days
+ RenderBusinessLicenseInfo(style);
+ } else if (isIndie
+ && HotReloadPrefs.RateAppShown
+ && !PackageConst.IsAssetStoreBuild
+ && EditorCodePatcher.Running
+ && currentState.loginStatus?.isBusinessLicense != true
+ && currentState.loginStatus?.isIndieLicense != true
+ ) {
+ // Reminder users they need to buy an indie license
+ RenderIndieLicenseInfo(style);
+ }
+ }
+
+ internal static bool CanRenderBars(HotReloadRunTabState currentState) {
+ return HotReloadWindowStyles.windowScreenHeight > Constants.EventsListHideHeight
+ && HotReloadWindowStyles.windowScreenWidth > Constants.EventsListHideWidth
+ && !currentState.starting
+ && !currentState.stopping
+ && !currentState.requestingDownloadAndRun
+ ;
+ }
+
+ static Texture2D GetFoldoutIcon(AlertEntry alertEntry) {
+ InvertibleIcon alertIcon = InvertibleIcon.FoldoutClosed;
+ if (HotReloadTimelineHelper.expandedEntries.Contains(alertEntry)) {
+ alertIcon = InvertibleIcon.FoldoutOpen;
+ }
+ return GUIHelper.GetInvertibleIcon(alertIcon);
+ }
+
+ static void ToggleEntry(AlertEntry alertEntry) {
+ if (HotReloadTimelineHelper.expandedEntries.Contains(alertEntry)) {
+ HotReloadTimelineHelper.expandedEntries.Remove(alertEntry);
+ } else {
+ HotReloadTimelineHelper.expandedEntries.Add(alertEntry);
+ }
+ }
+
+ static void RenderEntries(TimelineType timelineType) {
+ List alertEntries;
+
+ alertEntries = timelineType == TimelineType.Suggestions ? HotReloadTimelineHelper.Suggestions : HotReloadTimelineHelper.EventsTimeline;
+
+ bool skipChildren = false;
+ for (int i = 0; i < alertEntries.Count; i++) {
+ var alertEntry = alertEntries[i];
+ if (i > HotReloadTimelineHelper.maxVisibleEntries && alertEntry.entryType != EntryType.Child) {
+ break;
+ }
+ if (timelineType != TimelineType.Suggestions) {
+ if (alertEntry.entryType != EntryType.Child
+ && !enabledFilters.Contains(alertEntry.alertType)
+ ) {
+ skipChildren = true;
+ continue;
+ } else if (alertEntry.entryType == EntryType.Child && skipChildren) {
+ continue;
+ } else {
+ skipChildren = false;
+ }
+ }
+
+ EntryType entryType = alertEntry.entryType;
+
+ string title = $" {alertEntry.title}{(!string.IsNullOrEmpty(alertEntry.shortDescription) ? $": {alertEntry.shortDescription}": "")}";
+ Texture2D icon = null;
+ GUIStyle style;
+ if (entryType != EntryType.Child) {
+ icon = GUIHelper.GetLocalIcon(HotReloadTimelineHelper.alertIconString[alertEntry.iconType]);
+ }
+ if (entryType == EntryType.Child) {
+ style = HotReloadWindowStyles.ChildBarStyle;
+ } else if (entryType == EntryType.Foldout) {
+ style = HotReloadWindowStyles.FoldoutBarStyle;
+ } else {
+ style = HotReloadWindowStyles.BarStyle;
+ }
+
+ Rect startRect;
+ using (new EditorGUILayout.HorizontalScope()) {
+ GUILayout.Space(0);
+ Rect spaceRect = GUILayoutUtility.GetLastRect();
+ // entry header foldout arrow
+ if (entryType == EntryType.Foldout) {
+ GUI.Label(new Rect(spaceRect.x + 3, spaceRect.y, 20, 20), new GUIContent(GetFoldoutIcon(alertEntry)));
+ } else if (entryType == EntryType.Child) {
+ GUI.Label(new Rect(spaceRect.x + 26, spaceRect.y + 2, 20, 20), new GUIContent(GetFoldoutIcon(alertEntry)));
+ }
+ // a workaround to limit the width of the label
+ GUILayout.Label(new GUIContent(""), style);
+ startRect = GUILayoutUtility.GetLastRect();
+ GUI.Label(startRect, new GUIContent(title, icon), style);
+ }
+
+ bool clickableDescription = alertEntry.title == "Unsupported change" || alertEntry.title == "Compile error" || alertEntry.title == "Failed applying patch to method";
+
+ if (HotReloadTimelineHelper.expandedEntries.Contains(alertEntry) || alertEntry.alertType == AlertType.CompileError) {
+ using (new EditorGUILayout.VerticalScope()) {
+ using (new EditorGUILayout.HorizontalScope()) {
+ using (new EditorGUILayout.VerticalScope(entryType == EntryType.Child ? HotReloadWindowStyles.ChildEntryBoxStyle : HotReloadWindowStyles.EntryBoxStyle)) {
+ if (alertEntry.alertType == AlertType.Suggestion) {
+ GUILayout.Label(alertEntry.description, HotReloadWindowStyles.LabelStyle);
+ } else if (!clickableDescription) {
+ string text = alertEntry.description;
+ GUILayout.TextArea(text, HotReloadWindowStyles.StacktraceTextAreaStyle);
+ }
+ if (alertEntry.actionData != null) {
+ alertEntry.actionData.Invoke();
+ }
+ GUILayout.Space(5f);
+ }
+ }
+ }
+ }
+
+ // remove button
+ if (timelineType == TimelineType.Suggestions && alertEntry.hasExitButton) {
+ var isClick = GUI.Button(new Rect(startRect.x + startRect.width - 20, startRect.y + 2, 20, 20), new GUIContent(GUIHelper.GetInvertibleIcon(InvertibleIcon.Close)), HotReloadWindowStyles.RemoveIconStyle);
+ if (isClick) {
+ HotReloadTimelineHelper.EventsTimeline.Remove(alertEntry);
+ var kind = HotReloadSuggestionsHelper.FindSuggestionKind(alertEntry);
+ if (kind != null) {
+ HotReloadSuggestionsHelper.SetSuggestionInactive((HotReloadSuggestionKind)kind);
+ }
+ _instantRepaint = true;
+ }
+ }
+
+ // Extend background to whole entry
+ var endRect = GUILayoutUtility.GetLastRect();
+ if (GUI.Button(new Rect(startRect) { height = endRect.y - startRect.y + endRect.height}, new GUIContent(""), HotReloadWindowStyles.BarBackgroundStyle) && (entryType == EntryType.Child || entryType == EntryType.Foldout)) {
+ ToggleEntry(alertEntry);
+ }
+
+ if (alertEntry.alertType != AlertType.Suggestion && HotReloadWindowStyles.windowScreenWidth > 400 && entryType != EntryType.Child) {
+ using (new EditorGUILayout.HorizontalScope()) {
+ GUI.Label(new Rect(startRect.x + startRect.width - 60, startRect.y, 80, 20), $"{alertEntry.timestamp.Hour:D2}:{alertEntry.timestamp.Minute:D2}:{alertEntry.timestamp.Second:D2}", HotReloadWindowStyles.TimestampStyle);
+ }
+ }
+
+ GUILayout.Space(1f);
+ }
+ if (timelineType != TimelineType.Suggestions && HotReloadTimelineHelper.GetRunTabTimelineEventCount() > 40) {
+ GUILayout.Space(3f);
+ GUILayout.Label(Constants.Only40EntriesShown, HotReloadWindowStyles.EmptyListText);
+ }
+ }
+
+ private static List _enabledFilters;
+ private static List enabledFilters {
+ get {
+ if (_enabledFilters == null) {
+ _enabledFilters = new List();
+ }
+
+ if (HotReloadPrefs.RunTabUnsupportedChangesFilter && !_enabledFilters.Contains(AlertType.UnsupportedChange))
+ _enabledFilters.Add(AlertType.UnsupportedChange);
+ if (!HotReloadPrefs.RunTabUnsupportedChangesFilter && _enabledFilters.Contains(AlertType.UnsupportedChange))
+ _enabledFilters.Remove(AlertType.UnsupportedChange);
+
+ if (HotReloadPrefs.RunTabCompileErrorFilter && !_enabledFilters.Contains(AlertType.CompileError))
+ _enabledFilters.Add(AlertType.CompileError);
+ if (!HotReloadPrefs.RunTabCompileErrorFilter && _enabledFilters.Contains(AlertType.CompileError))
+ _enabledFilters.Remove(AlertType.CompileError);
+
+ if (HotReloadPrefs.RunTabPartiallyAppliedPatchesFilter && !_enabledFilters.Contains(AlertType.PartiallySupportedChange))
+ _enabledFilters.Add(AlertType.PartiallySupportedChange);
+ if (!HotReloadPrefs.RunTabPartiallyAppliedPatchesFilter && _enabledFilters.Contains(AlertType.PartiallySupportedChange))
+ _enabledFilters.Remove(AlertType.PartiallySupportedChange);
+
+ if (HotReloadPrefs.RunTabAppliedPatchesFilter && !_enabledFilters.Contains(AlertType.AppliedChange))
+ _enabledFilters.Add(AlertType.AppliedChange);
+ if (!HotReloadPrefs.RunTabAppliedPatchesFilter && _enabledFilters.Contains(AlertType.AppliedChange))
+ _enabledFilters.Remove(AlertType.AppliedChange);
+
+ return _enabledFilters;
+ }
+ }
+
+ private Vector2 suggestionsScroll;
+ static GUILayoutOption[] timelineButtonOptions = new[] { GUILayout.Height(27), GUILayout.Width(100) };
+
+ internal static void RenderBars(HotReloadRunTabState currentState) {
+ if (currentState.suggestionCount > 0) {
+ GUILayout.Space(5f);
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.Section)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ HotReloadPrefs.RunTabEventsSuggestionsFoldout = EditorGUILayout.Foldout(HotReloadPrefs.RunTabEventsSuggestionsFoldout, "", true, HotReloadWindowStyles.CustomFoldoutStyle);
+ GUILayout.Space(-23);
+ if (GUILayout.Button($"Suggestions ({currentState.suggestionCount.ToString()})", HotReloadWindowStyles.ClickableLabelBoldStyle, GUILayout.Height(27))) {
+ HotReloadPrefs.RunTabEventsSuggestionsFoldout = !HotReloadPrefs.RunTabEventsSuggestionsFoldout;
+ }
+ if (HotReloadPrefs.RunTabEventsSuggestionsFoldout) {
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.Scroll)) {
+ RenderEntries(TimelineType.Suggestions);
+ }
+ }
+ }
+ }
+ }
+ GUILayout.Space(5f);
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.Section)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ HotReloadPrefs.RunTabEventsTimelineFoldout = EditorGUILayout.Foldout(HotReloadPrefs.RunTabEventsTimelineFoldout, "", true, HotReloadWindowStyles.CustomFoldoutStyle);
+ GUILayout.Space(-23);
+ if (GUILayout.Button("Timeline", HotReloadWindowStyles.ClickableLabelBoldStyle, timelineButtonOptions)) {
+ HotReloadPrefs.RunTabEventsTimelineFoldout = !HotReloadPrefs.RunTabEventsTimelineFoldout;
+ }
+ if (HotReloadPrefs.RunTabEventsTimelineFoldout) {
+ GUILayout.Space(-10);
+ var noteShown = HotReloadTimelineHelper.GetRunTabTimelineEventCount() == 0 || !currentState.running;
+ using (new EditorGUILayout.HorizontalScope()) {
+ if (noteShown) {
+ GUILayout.Space(2f);
+ using (new EditorGUILayout.VerticalScope()) {
+ GUILayout.Space(2f);
+ string text;
+ if (currentState.redeemStage != RedeemStage.None) {
+ text = "Complete registration before using Hot Reload";
+ } else if (!currentState.running) {
+ text = "Use the Start button to activate Hot Reload";
+ } else if (enabledFilters.Count < 4 && HotReloadTimelineHelper.EventsTimeline.Count != 0) {
+ text = "Enable filters to see events";
+ } else {
+ text = "Make code changes to see events";
+ }
+ GUILayout.Label(text, HotReloadWindowStyles.EmptyListText);
+ }
+ GUILayout.FlexibleSpace();
+ } else {
+ GUILayout.FlexibleSpace();
+ if (HotReloadTimelineHelper.EventsTimeline.Count > 0 && GUILayout.Button("Clear")) {
+ HotReloadTimelineHelper.ClearEntries();
+ if (HotReloadWindow.Current) {
+ HotReloadWindow.Current.Repaint();
+ }
+ }
+ GUILayout.Space(3);
+ }
+ }
+ if (!noteShown) {
+ GUILayout.Space(2f);
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.Scroll)) {
+ RenderEntries(TimelineType.Timeline);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ internal static void RenderConsumption(LoginStatusResponse loginStatus) {
+ if (loginStatus == null) {
+ return;
+ }
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField($"Hot Reload Limited", HotReloadWindowStyles.H3CenteredTitleStyle);
+ EditorGUILayout.Space();
+ if (loginStatus.consumptionsUnavailableReason == ConsumptionsUnavailableReason.NetworkUnreachable) {
+ EditorGUILayout.HelpBox("Something went wrong. Please check your internet connection.", MessageType.Warning);
+ } else if (loginStatus.consumptionsUnavailableReason == ConsumptionsUnavailableReason.UnrecoverableError) {
+ EditorGUILayout.HelpBox("Something went wrong. Please contact support if the issue persists.", MessageType.Error);
+ } else if (loginStatus.freeSessionFinished) {
+ var now = DateTime.UtcNow;
+ var sessionRefreshesAt = (now.AddDays(1).Date - now).Add(TimeSpan.FromMinutes(5));
+ var sessionRefreshString = $"Next Session: {(sessionRefreshesAt.Hours > 0 ? $"{sessionRefreshesAt.Hours}h " : "")}{sessionRefreshesAt.Minutes}min";
+ HotReloadGUIHelper.HelpBox(sessionRefreshString, MessageType.Warning, fontSize: 11);
+ } else if (loginStatus.freeSessionRunning && loginStatus.freeSessionEndTime != null) {
+ var sessionEndsAt = loginStatus.freeSessionEndTime.Value - DateTime.Now;
+ var sessionString = $"Daily Session: {(sessionEndsAt.Hours > 0 ? $"{sessionEndsAt.Hours}h " : "")}{sessionEndsAt.Minutes}min Left";
+ HotReloadGUIHelper.HelpBox(sessionString, MessageType.Info, fontSize: 11);
+ } else if (loginStatus.freeSessionEndTime == null) {
+ HotReloadGUIHelper.HelpBox("Daily Session: Make code changes to start", MessageType.Info, fontSize: 11);
+ }
+ }
+
+ static bool _repaint;
+ static bool _instantRepaint;
+ static DateTime _lastRepaint;
+ private EditorIndicationState.IndicationStatus _lastStatus;
+ public override void Update() {
+ if (EditorIndicationState.SpinnerActive) {
+ _repaint = true;
+ }
+ if (EditorCodePatcher.DownloadRequired) {
+ _repaint = true;
+ }
+ if (EditorIndicationState.IndicationIconPath == Spinner.SpinnerIconPath) {
+ _repaint = true;
+ }
+ try {
+ // workaround: hovering over non-buttons doesn't repain by default
+ if (EditorWindow.mouseOverWindow == HotReloadWindow.Current) {
+ _repaint = true;
+ }
+ if (EditorWindow.mouseOverWindow
+ && EditorWindow.mouseOverWindow?.GetType() == typeof(PopupWindow)
+ && HotReloadEventPopup.I.open
+ ) {
+ _repaint = true;
+ }
+ } catch (NullReferenceException) {
+ // Unity randomly throws nullrefs when EditorWindow.mouseOverWindow gets accessed
+ }
+ if (_repaint && DateTime.UtcNow - _lastRepaint > TimeSpan.FromMilliseconds(33)) {
+ _repaint = false;
+ _instantRepaint = true;
+ }
+ // repaint on status change
+ var status = EditorIndicationState.CurrentIndicationStatus;
+ if (_lastStatus != status) {
+ _lastStatus = status;
+ _instantRepaint = true;
+ }
+ if (_instantRepaint) {
+ Repaint();
+ HotReloadEventPopup.I.Repaint();
+ _instantRepaint = false;
+ _repaint = false;
+ _lastRepaint = DateTime.UtcNow;
+ }
+ }
+
+ public static void RepaintInstant() {
+ _instantRepaint = true;
+ }
+
+ private void RenderRecompileButton() {
+ string recompileText = HotReloadWindowStyles.windowScreenWidth > Constants.RecompileButtonTextHideWidth ? " Recompile" : "";
+ var recompileButton = new GUIContent(recompileText, GUIHelper.GetInvertibleIcon(InvertibleIcon.Recompile));
+ if (!GUILayout.Button(recompileButton, HotReloadWindowStyles.RecompileButton)) {
+ return;
+ }
+ RecompileWithChecks();
+ }
+
+ public static void RecompileWithChecks() {
+ var firstDialoguePass = HotReloadPrefs.RecompileDialogueShown
+ || EditorUtility.DisplayDialog(
+ title: "Hot Reload auto-applies changes",
+ message: "Using the Recompile button is only necessary when Hot Reload fails to apply your changes. \n\nDo you wish to proceed?",
+ ok: "Recompile",
+ cancel: "Not now");
+ HotReloadPrefs.RecompileDialogueShown = true;
+ if (!firstDialoguePass) {
+ return;
+ }
+ var secondDialoguePass = !Application.isPlaying
+ || EditorUtility.DisplayDialog(
+ title: "Stop Play Mode and Recompile?",
+ message: "Using the Recompile button will stop Play Mode.\n\nDo you wish to proceed?",
+ ok: "Stop and Recompile",
+ cancel: "Cancel");
+ if (!secondDialoguePass) {
+ return;
+ }
+ Recompile();
+ }
+
+ public static bool recompiling;
+ public static void Recompile() {
+ recompiling = true;
+ EditorApplication.isPlaying = false;
+
+ CompileMethodDetourer.Reset();
+ AssetDatabase.Refresh();
+ // This forces the recompilation if no changes were made.
+ // This is better UX because otherwise the recompile button is unresponsive
+ // which can be extra annoying if there are compile error entries in the list
+ if (!EditorApplication.isCompiling) {
+ CompilationPipeline.RequestScriptCompilation();
+ }
+ }
+
+ private void RenderIndicationButtons() {
+ if (currentState.requestingDownloadAndRun || currentState.starting || currentState.stopping || currentState.redeemStage != RedeemStage.None) {
+ return;
+ }
+
+ if (!currentState.running && (currentState.startupProgress?.Item1 ?? 0) == 0) {
+ string startText = HotReloadWindowStyles.windowScreenWidth > Constants.StartButtonTextHideWidth ? " Start" : "";
+ if (GUILayout.Button(new GUIContent(startText, GUIHelper.GetInvertibleIcon(InvertibleIcon.Start)), HotReloadWindowStyles.StartButton)) {
+ EditorCodePatcher.DownloadAndRun().Forget();
+ }
+ } else if (currentState.running && !currentState.starting) {
+ if (HotReloadWindowStyles.windowScreenWidth > 150 && HotReloadTimelineHelper.CompileErrorsCount == 0) {
+ RenderRecompileButton();
+ }
+ string stopText = HotReloadWindowStyles.windowScreenWidth > Constants.StartButtonTextHideWidth ? " Stop" : "";
+ if (GUILayout.Button(new GUIContent(stopText, GUIHelper.GetInvertibleIcon(InvertibleIcon.Stop)), HotReloadWindowStyles.StopButton)) {
+ if (!EditorCodePatcher.StoppedServerRecently()) {
+ EditorCodePatcher.StopCodePatcher().Forget();
+ }
+ }
+ }
+ }
+
+ void RenderIndicationPanel() {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBox)) {
+ RenderIndication();
+ if (HotReloadWindowStyles.windowScreenWidth > Constants.IndicationTextHideWidth) {
+ GUILayout.FlexibleSpace();
+ }
+ RenderIndicationButtons();
+ if (HotReloadWindowStyles.windowScreenWidth <= Constants.IndicationTextHideWidth) {
+ GUILayout.FlexibleSpace();
+ }
+ }
+ if (currentState.requestingDownloadAndRun || currentState.starting) {
+ RenderProgressBar();
+ }
+ if (HotReloadWindowStyles.windowScreenWidth > Constants.ConsumptionsHideWidth
+ && HotReloadWindowStyles.windowScreenHeight > Constants.ConsumptionsHideHeight
+ ) {
+ RenderLicenseInfo(currentState);
+ }
+ }
+
+ internal static void RenderLicenseInfo(HotReloadRunTabState currentState) {
+ var showRedeem = currentState.redeemStage != RedeemStage.None;
+ var showConsumptions = ShouldRenderConsumption(currentState);
+ if (!showConsumptions && !showRedeem) {
+ return;
+ }
+ using (new EditorGUILayout.VerticalScope()) {
+ // space needed only for consumptions because of Stop/Start button's margin
+ if (showConsumptions) {
+ GUILayout.Space(6);
+ }
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.Section)) {
+ if (showRedeem) {
+ RedeemLicenseHelper.I.RenderStage(currentState);
+ } else {
+ RenderConsumption(currentState.loginStatus);
+ GUILayout.Space(10);
+ RenderLicenseInfo(currentState, currentState.loginStatus);
+ RenderLicenseButtons(currentState);
+ GUILayout.Space(10);
+ }
+ }
+ GUILayout.Space(6);
+ }
+ }
+
+ private Spinner _spinner = new Spinner(85);
+ private void RenderIndication() {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.IndicationBox)) {
+ // icon box
+ if (HotReloadWindowStyles.windowScreenWidth <= Constants.IndicationTextHideWidth) {
+ GUILayout.FlexibleSpace();
+ }
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.IndicationHelpBox)) {
+ var text = HotReloadWindowStyles.windowScreenWidth > Constants.IndicationTextHideWidth ? $" {currentState.indicationStatusText}" : "";
+ if (currentState.indicationIconPath == Spinner.SpinnerIconPath) {
+ GUILayout.Label(new GUIContent(text, _spinner.GetIcon()), style: HotReloadWindowStyles.IndicationIcon);
+ } else if (currentState.indicationIconPath != null) {
+ var style = HotReloadWindowStyles.IndicationIcon;
+ if (HotReloadTimelineHelper.alertIconString.ContainsValue(currentState.indicationIconPath)) {
+ style = HotReloadWindowStyles.IndicationAlertIcon;
+ }
+ GUILayout.Label(new GUIContent(text, GUIHelper.GetLocalIcon(currentState.indicationIconPath)), style);
+ }
+ }
+ }
+ }
+
+ static GUIStyle _openSettingsStyle;
+ static GUIStyle openSettingsStyle => _openSettingsStyle ?? (_openSettingsStyle = new GUIStyle(GUI.skin.button) {
+ fontStyle = FontStyle.Normal,
+ fixedHeight = 25,
+ });
+
+ static GUILayoutOption[] _bigButtonHeight;
+ public static GUILayoutOption[] bigButtonHeight => _bigButtonHeight ?? (_bigButtonHeight = new [] {GUILayout.Height(25)});
+
+ private static GUIContent indieLicenseContent;
+ private static GUIContent businessLicenseContent;
+
+ internal static void RenderLicenseStatusInfo(HotReloadRunTabState currentState, LoginStatusResponse loginStatus, bool allowHide = true, bool verbose = false) {
+ string message = null;
+ MessageType messageType = default(MessageType);
+ Action customGUI = null;
+ GUIContent content = null;
+ if (loginStatus == null) {
+ // no info
+ } else if (loginStatus.lastLicenseError != null) {
+ messageType = !loginStatus.freeSessionFinished ? MessageType.Warning : MessageType.Error;
+ message = GetMessageFromError(currentState, loginStatus.lastLicenseError);
+ } else if (loginStatus.isTrial && !PackageConst.IsAssetStoreBuild) {
+ message = $"Using Trial license, valid until {loginStatus.licenseExpiresAt.ToShortDateString()}";
+ messageType = MessageType.Info;
+ } else if (loginStatus.isIndieLicense) {
+ if (verbose) {
+ message = " Indie license active";
+ messageType = MessageType.Info;
+ customGUI = () => {
+ if (loginStatus.licenseExpiresAt.Date != DateTime.MaxValue.Date) {
+ EditorGUILayout.LabelField($"License will renew on {loginStatus.licenseExpiresAt.ToShortDateString()}.");
+ EditorGUILayout.Space();
+ }
+ using (new GUILayout.HorizontalScope()) {
+ HotReloadAboutTab.manageLicenseButton.OnGUI();
+ HotReloadAboutTab.manageAccountButton.OnGUI();
+ }
+ EditorGUILayout.Space();
+ };
+ if (indieLicenseContent == null) {
+ indieLicenseContent = new GUIContent(message, EditorGUIUtility.FindTexture("TestPassed"));
+ }
+ content = indieLicenseContent;
+ }
+ } else if (loginStatus.isBusinessLicense) {
+ if (verbose) {
+ message = " Business license active";
+ messageType = MessageType.Info;
+ if (businessLicenseContent == null) {
+ businessLicenseContent = new GUIContent(message, EditorGUIUtility.FindTexture("TestPassed"));
+ }
+ content = businessLicenseContent;
+ customGUI = () => {
+ using (new GUILayout.HorizontalScope()) {
+ HotReloadAboutTab.manageLicenseButton.OnGUI();
+ HotReloadAboutTab.manageAccountButton.OnGUI();
+ }
+ EditorGUILayout.Space();
+ };
+ }
+ }
+
+ if (messageType != MessageType.Info && HotReloadPrefs.ErrorHidden && allowHide) {
+ return;
+ }
+ if (message != null) {
+ if (messageType != MessageType.Info) {
+ using(new EditorGUILayout.HorizontalScope()) {
+ EditorGUILayout.HelpBox(message, messageType);
+ var style = HotReloadWindowStyles.HideButtonStyle;
+ if (Event.current.type == EventType.Repaint) {
+ style.fixedHeight = GUILayoutUtility.GetLastRect().height;
+ }
+ if (allowHide) {
+ if (GUILayout.Button("Hide", style)) {
+ HotReloadPrefs.ErrorHidden = true;
+ }
+ }
+ }
+ } else if (content != null) {
+ EditorGUILayout.LabelField(content);
+ EditorGUILayout.Space();
+ } else {
+ EditorGUILayout.LabelField(message);
+ EditorGUILayout.Space();
+ }
+ customGUI?.Invoke();
+ }
+ }
+
+ const string assetStoreProInfo = "Unity Pro/Enterprise users from company with your number of employees require a Business license. Please upgrade your license on our website.";
+ internal static void RenderBusinessLicenseInfo(GUIStyle style) {
+ GUILayout.Space(8);
+ using (new EditorGUILayout.HorizontalScope()) {
+ EditorGUILayout.HelpBox(assetStoreProInfo, MessageType.Info);
+ if (Event.current.type == EventType.Repaint) {
+ style.fixedHeight = GUILayoutUtility.GetLastRect().height;
+ }
+ if (GUILayout.Button("Upgrade", style)) {
+ Application.OpenURL(Constants.ProductPurchaseBusinessURL);
+ }
+ }
+ }
+
+ internal static void RenderIndieLicenseInfo(GUIStyle style) {
+ string message;
+ if (EditorCodePatcher.licenseType == UnityLicenseType.UnityPersonalPlus) {
+ message = "Unity Plus users require an Indie license. Please upgrade your license on our website.";
+ } else if (EditorCodePatcher.licenseType == UnityLicenseType.UnityPro) {
+ message = "Unity Pro/Enterprise users from company with your number of employees require an Indie license. Please upgrade your license on our website.";
+ } else {
+ return;
+ }
+ GUILayout.Space(8);
+ using (new EditorGUILayout.HorizontalScope()) {
+ EditorGUILayout.HelpBox(message, MessageType.Info);
+ if (Event.current.type == EventType.Repaint) {
+ style.fixedHeight = GUILayoutUtility.GetLastRect().height;
+ }
+ if (GUILayout.Button("Upgrade", style)) {
+ Application.OpenURL(Constants.ProductPurchaseURL);
+ }
+ }
+ }
+
+ const string GetLicense = "Get License";
+ const string ContactSupport = "Contact Support";
+ const string UpgradeLicense = "Upgrade License";
+ const string ManageLicense = "Manage License";
+ internal static Dictionary _licenseErrorData;
+ internal static Dictionary LicenseErrorData => _licenseErrorData ?? (_licenseErrorData = new Dictionary {
+ { "DeviceNotLicensedException", new LicenseErrorData(description: "Another device is using your license. Please reach out to customer support for assistance.", showSupportButton: true, supportButtonText: ContactSupport) },
+ { "DeviceBlacklistedException", new LicenseErrorData(description: "You device has been blacklisted.") },
+ { "DateHeaderInvalidException", new LicenseErrorData(description: $"Your license is not working because your computer's clock is incorrect. Please set the clock to the correct time to restore your license.") },
+ { "DateTimeCheatingException", new LicenseErrorData(description: $"Your license is not working because your computer's clock is incorrect. Please set the clock to the correct time to restore your license.") },
+ { "LicenseActivationException", new LicenseErrorData(description: "An error has occured while activating your license. Please contact customer support for assistance.", showSupportButton: true, supportButtonText: ContactSupport) },
+ { "LicenseDeletedException", new LicenseErrorData(description: $"Your license has been deleted. Please contact customer support for assistance.", showBuyButton: true, buyButtonText: GetLicense, showSupportButton: true, supportButtonText: ContactSupport) },
+ { "LicenseDisabledException", new LicenseErrorData(description: $"Your license has been disabled. Please contact customer support for assistance.", showBuyButton: true, buyButtonText: GetLicense, showSupportButton: true, supportButtonText: ContactSupport) },
+ { "LicenseExpiredException", new LicenseErrorData(description: $"Your license has expired. Please renew your license subscription using the 'Upgrade License' button below and login with your email/password to activate your license.", showBuyButton: true, buyButtonText: UpgradeLicense, showManageLicenseButton: true, manageLicenseButtonText: ManageLicense) },
+ { "LicenseInactiveException", new LicenseErrorData(description: $"Your license is currenty inactive. Please login with your email/password to activate your license.") },
+ { "LocalLicenseException", new LicenseErrorData(description: $"Your license file was damaged or corrupted. Please login with your email/password to refresh your license file.") },
+ // Note: obsolete
+ { "MissingParametersException", new LicenseErrorData(description: "An account already exists for this device. Please login with your existing email/password.", showBuyButton: true, buyButtonText: GetLicense) },
+ { "NetworkException", new LicenseErrorData(description: "There is an issue connecting to our servers. Please check your internet connection or contact customer support if the issue persists.", showSupportButton: true, supportButtonText: ContactSupport) },
+ { "TrialLicenseExpiredException", new LicenseErrorData(description: $"Your trial has expired. Activate a license with unlimited usage or continue using the Free version. View available plans on our website.", showBuyButton: true, buyButtonText: UpgradeLicense) },
+ { "InvalidCredentialException", new LicenseErrorData(description: "Incorrect email/password. You can find your initial password in the sign-up email.") },
+ // Note: activating free trial with email is not supported anymore. This error shouldn't happen which is why we should rather user the fallback
+ // { "LicenseNotFoundException", new LicenseErrorData(description: "The account you're trying to access doesn't seem to exist yet. Please enter your email address to create a new account and receive a trial license.", showLoginButton: true, loginButtonText: CreateAccount) },
+ { "LicenseIncompatibleException", new LicenseErrorData(description: "Please upgrade your license to continue using hotreload with Unity Pro.", showManageLicenseButton: true, manageLicenseButtonText: ManageLicense) },
+ });
+ internal static LicenseErrorData defaultLicenseErrorData = new LicenseErrorData(description: "We apologize, an error happened while verifying your license. Please reach out to customer support for assistance.", showSupportButton: true, supportButtonText: ContactSupport);
+
+ internal static string GetMessageFromError(HotReloadRunTabState currentState, string error) {
+ if (PackageConst.IsAssetStoreBuild && error == "TrialLicenseExpiredException") {
+ return assetStoreProInfo;
+ }
+ return GetLicenseErrorDataOrDefault(currentState, error).description;
+ }
+
+ internal static LicenseErrorData GetLicenseErrorDataOrDefault(HotReloadRunTabState currentState, string error) {
+ if (currentState.loginStatus?.isFree == true) {
+ return default(LicenseErrorData);
+ }
+ if (currentState.loginStatus == null || string.IsNullOrEmpty(error) && (!currentState.loginStatus.isLicensed || currentState.loginStatus.isTrial)) {
+ return new LicenseErrorData(null, showBuyButton: true, buyButtonText: GetLicense);
+ }
+ if (string.IsNullOrEmpty(error)) {
+ return default(LicenseErrorData);
+ }
+ if (!LicenseErrorData.ContainsKey(error)) {
+ return defaultLicenseErrorData;
+ }
+ return LicenseErrorData[error];
+ }
+
+ internal static void RenderBuyLicenseButton(string buyLicenseButton) {
+ OpenURLButton.Render(buyLicenseButton, Constants.ProductPurchaseURL);
+ }
+
+ static void RenderLicenseActionButtons(HotReloadRunTabState currentState) {
+ var errInfo = GetLicenseErrorDataOrDefault(currentState, currentState.loginStatus?.lastLicenseError);
+ if (errInfo.showBuyButton || errInfo.showManageLicenseButton) {
+ using(new EditorGUILayout.HorizontalScope()) {
+ if (errInfo.showBuyButton) {
+ RenderBuyLicenseButton(errInfo.buyButtonText);
+ }
+ if (errInfo.showManageLicenseButton && !HotReloadPrefs.ErrorHidden) {
+ OpenURLButton.Render(errInfo.manageLicenseButtonText, Constants.ManageLicenseURL);
+ }
+ }
+ }
+ if (errInfo.showLoginButton && GUILayout.Button(errInfo.loginButtonText, openSettingsStyle)) {
+ // show license section
+ HotReloadWindow.Current.SelectTab(typeof(HotReloadSettingsTab));
+ HotReloadWindow.Current.SettingsTab.FocusLicenseFoldout();
+ }
+ if (errInfo.showSupportButton && !HotReloadPrefs.ErrorHidden) {
+ OpenURLButton.Render(errInfo.supportButtonText, Constants.ContactURL);
+ }
+ if (currentState.loginStatus?.lastLicenseError != null) {
+ HotReloadAboutTab.reportIssueButton.OnGUI();
+ }
+ }
+
+ internal static void RenderLicenseInfo(HotReloadRunTabState currentState, LoginStatusResponse loginStatus, bool verbose = false, bool allowHide = true, string overrideActionButton = null, bool showConsumptions = false) {
+ HotReloadPrefs.ShowLogin = EditorGUILayout.Foldout(HotReloadPrefs.ShowLogin, "Hot Reload License", true, HotReloadWindowStyles.FoldoutStyle);
+ if (HotReloadPrefs.ShowLogin) {
+ EditorGUILayout.Space();
+ if ((loginStatus?.isLicensed != true && showConsumptions) && !(loginStatus == null || loginStatus.isFree)) {
+ RenderConsumption(loginStatus);
+ }
+ RenderLicenseStatusInfo(currentState, loginStatus: loginStatus, allowHide: allowHide, verbose: verbose);
+
+ RenderLicenseInnerPanel(currentState, overrideActionButton: overrideActionButton);
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+ }
+ }
+
+ internal void RenderPromoCodes() {
+ HotReloadPrefs.ShowPromoCodes = EditorGUILayout.Foldout(HotReloadPrefs.ShowPromoCodes, "Promo Codes", true, HotReloadWindowStyles.FoldoutStyle);
+ if (!HotReloadPrefs.ShowPromoCodes) {
+ return;
+ }
+ if (promoCodeActivatedThisSession) {
+ EditorGUILayout.HelpBox($"Your promo code has been successfully activated. Free trial has been extended by 3 months.", MessageType.Info);
+ } else {
+ if (promoCodeError != null && promoCodeErrorType != MessageType.None) {
+ EditorGUILayout.HelpBox(promoCodeError, promoCodeErrorType);
+ }
+ EditorGUILayout.LabelField("Promo code");
+ _pendingPromoCode = EditorGUILayout.TextField(_pendingPromoCode);
+ EditorGUILayout.Space();
+
+ using (new EditorGUI.DisabledScope(_requestingActivatePromoCode)) {
+ if (GUILayout.Button("Activate promo code", HotReloadRunTab.bigButtonHeight)) {
+ RequestActivatePromoCode().Forget();
+ }
+ }
+ }
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+ }
+
+ private async Task RequestActivatePromoCode() {
+ _requestingActivatePromoCode = true;
+ try {
+ var resp = await RequestHelper.RequestActivatePromoCode(_pendingPromoCode);
+ if (resp != null && resp.error == null) {
+ promoCodeActivatedThisSession = true;
+ } else {
+ var requestError = resp?.error ?? "Network error";
+ var errorType = ToErrorType(requestError);
+ promoCodeError = ToPrettyErrorMessage(errorType);
+ promoCodeErrorType = ToMessageType(errorType);
+ }
+ } finally {
+ _requestingActivatePromoCode = false;
+ }
+ }
+
+ PromoCodeErrorType ToErrorType(string error) {
+ switch (error) {
+ case "Input is missing": return PromoCodeErrorType.MISSING_INPUT;
+ case "only POST is supported": return PromoCodeErrorType.INVALID_HTTP_METHOD;
+ case "body is not a valid json": return PromoCodeErrorType.BODY_INVALID;
+ case "Promo code is not found": return PromoCodeErrorType.PROMO_CODE_NOT_FOUND;
+ case "Promo code already claimed": return PromoCodeErrorType.PROMO_CODE_CLAIMED;
+ case "Promo code expired": return PromoCodeErrorType.PROMO_CODE_EXPIRED;
+ case "License not found": return PromoCodeErrorType.LICENSE_NOT_FOUND;
+ case "License is not a trial": return PromoCodeErrorType.LICENSE_NOT_TRIAL;
+ case "License already extended": return PromoCodeErrorType.LICENSE_ALREADY_EXTENDED;
+ case "conditionalCheckFailed": return PromoCodeErrorType.CONDITIONAL_CHECK_FAILED;
+ }
+ if (error.Contains("Updating License Failed with error")) {
+ return PromoCodeErrorType.UPDATING_LICENSE_FAILED;
+ } else if (error.Contains("Unknown exception")) {
+ return PromoCodeErrorType.UNKNOWN_EXCEPTION;
+ } else if (error.Contains("Unsupported path")) {
+ return PromoCodeErrorType.UNSUPPORTED_PATH;
+ }
+ return PromoCodeErrorType.NONE;
+ }
+
+ string ToPrettyErrorMessage(PromoCodeErrorType errorType) {
+ var defaultMsg = "We apologize, an error happened while activating your promo code. Please reach out to customer support for assistance.";
+ switch (errorType) {
+ case PromoCodeErrorType.MISSING_INPUT:
+ case PromoCodeErrorType.INVALID_HTTP_METHOD:
+ case PromoCodeErrorType.BODY_INVALID:
+ case PromoCodeErrorType.UNKNOWN_EXCEPTION:
+ case PromoCodeErrorType.UNSUPPORTED_PATH:
+ case PromoCodeErrorType.LICENSE_NOT_FOUND:
+ case PromoCodeErrorType.UPDATING_LICENSE_FAILED:
+ case PromoCodeErrorType.LICENSE_NOT_TRIAL:
+ return defaultMsg;
+ case PromoCodeErrorType.PROMO_CODE_NOT_FOUND: return "Your promo code is invalid. Please ensure that you have entered the correct promo code.";
+ case PromoCodeErrorType.PROMO_CODE_CLAIMED: return "Your promo code has already been used.";
+ case PromoCodeErrorType.PROMO_CODE_EXPIRED: return "Your promo code has expired.";
+ case PromoCodeErrorType.LICENSE_ALREADY_EXTENDED: return "Your license has already been activated with a promo code. Only one promo code activation per license is allowed.";
+ case PromoCodeErrorType.CONDITIONAL_CHECK_FAILED: return "We encountered an error while activating your promo code. Please try again. If the issue persists, please contact our customer support team for assistance.";
+ case PromoCodeErrorType.NONE: return "There is an issue connecting to our servers. Please check your internet connection or contact customer support if the issue persists.";
+ default: return defaultMsg;
+ }
+ }
+
+ MessageType ToMessageType(PromoCodeErrorType errorType) {
+ switch (errorType) {
+ case PromoCodeErrorType.MISSING_INPUT: return MessageType.Error;
+ case PromoCodeErrorType.INVALID_HTTP_METHOD: return MessageType.Error;
+ case PromoCodeErrorType.BODY_INVALID: return MessageType.Error;
+ case PromoCodeErrorType.PROMO_CODE_NOT_FOUND: return MessageType.Warning;
+ case PromoCodeErrorType.PROMO_CODE_CLAIMED: return MessageType.Warning;
+ case PromoCodeErrorType.PROMO_CODE_EXPIRED: return MessageType.Warning;
+ case PromoCodeErrorType.LICENSE_NOT_FOUND: return MessageType.Error;
+ case PromoCodeErrorType.LICENSE_NOT_TRIAL: return MessageType.Error;
+ case PromoCodeErrorType.LICENSE_ALREADY_EXTENDED: return MessageType.Warning;
+ case PromoCodeErrorType.UPDATING_LICENSE_FAILED: return MessageType.Error;
+ case PromoCodeErrorType.CONDITIONAL_CHECK_FAILED: return MessageType.Error;
+ case PromoCodeErrorType.UNKNOWN_EXCEPTION: return MessageType.Error;
+ case PromoCodeErrorType.UNSUPPORTED_PATH: return MessageType.Error;
+ case PromoCodeErrorType.NONE: return MessageType.Error;
+ default: return MessageType.Error;
+ }
+ }
+
+ public static void RenderLicenseButtons(HotReloadRunTabState currentState) {
+ RenderLicenseActionButtons(currentState);
+ }
+
+ internal static void RenderLicenseInnerPanel(HotReloadRunTabState currentState, string overrideActionButton = null, bool renderLogout = true) {
+ EditorGUILayout.LabelField("Email");
+ GUI.SetNextControlName("email");
+ _pendingEmail = EditorGUILayout.TextField(string.IsNullOrEmpty(_pendingEmail) ? HotReloadPrefs.LicenseEmail : _pendingEmail);
+ _pendingEmail = _pendingEmail.Trim();
+
+ EditorGUILayout.LabelField("Password");
+ GUI.SetNextControlName("password");
+ _pendingPassword = EditorGUILayout.PasswordField(string.IsNullOrEmpty(_pendingPassword) ? HotReloadPrefs.LicensePassword : _pendingPassword);
+
+ RenderSwitchAuthMode();
+
+ var e = Event.current;
+ using(new EditorGUI.DisabledScope(currentState.requestingLoginInfo)) {
+ var btnLabel = overrideActionButton;
+ if (String.IsNullOrEmpty(overrideActionButton)) {
+ btnLabel = "Login";
+ }
+ using (new EditorGUILayout.HorizontalScope()) {
+ var focusedControl = GUI.GetNameOfFocusedControl();
+ if (GUILayout.Button(btnLabel, bigButtonHeight)
+ || (focusedControl == "email"
+ || focusedControl == "password")
+ && e.type == EventType.KeyUp
+ && (e.keyCode == KeyCode.Return
+ || e.keyCode == KeyCode.KeypadEnter)
+ ) {
+ var error = ValidateEmail(_pendingEmail);
+ if (!string.IsNullOrEmpty(error)) {
+ _activateInfoMessage = new Tuple(error, MessageType.Warning);
+ } else if (string.IsNullOrEmpty(_pendingPassword)) {
+ _activateInfoMessage = new Tuple("Please enter your password.", MessageType.Warning);
+ } else {
+ HotReloadWindow.Current.SelectTab(typeof(HotReloadRunTab));
+
+ _activateInfoMessage = null;
+ if (RedeemLicenseHelper.I.RedeemStage == RedeemStage.Login) {
+ RedeemLicenseHelper.I.FinishRegistration(RegistrationOutcome.Indie);
+ }
+ if (!EditorCodePatcher.RequestingDownloadAndRun && !EditorCodePatcher.Running) {
+ LoginOnDownloadAndRun(new LoginData(email: _pendingEmail, password: _pendingPassword)).Forget();
+ } else {
+ EditorCodePatcher.RequestLogin(_pendingEmail, _pendingPassword).Forget();
+ }
+ }
+ }
+ if (renderLogout) {
+ RenderLogout(currentState);
+ }
+ }
+ }
+ if (_activateInfoMessage != null && (e.type == EventType.Layout || e.type == EventType.Repaint)) {
+ EditorGUILayout.HelpBox(_activateInfoMessage.Item1, _activateInfoMessage.Item2);
+ }
+ }
+
+ public static string ValidateEmail(string email) {
+ if (string.IsNullOrEmpty(email)) {
+ return "Please enter your email address.";
+ } else if (!EditorWindowHelper.IsValidEmailAddress(email)) {
+ return "Please enter a valid email address.";
+ } else if (email.Contains("+")) {
+ return "Mail extensions (in a form of 'username+suffix@example.com') are not supported yet. Please provide your original email address (such as 'username@example.com' without '+suffix' part) as we're working on resolving this issue.";
+ }
+ return null;
+ }
+
+ public static void RenderLogout(HotReloadRunTabState currentState) {
+ if (currentState.loginStatus?.isLicensed != true) {
+ return;
+ }
+ if (GUILayout.Button("Logout", bigButtonHeight)) {
+ HotReloadWindow.Current.SelectTab(typeof(HotReloadRunTab));
+ if (!EditorCodePatcher.RequestingDownloadAndRun && !EditorCodePatcher.Running) {
+ LogoutOnDownloadAndRun().Forget();
+ } else {
+ RequestLogout().Forget();
+ }
+ }
+ }
+
+ async static Task LoginOnDownloadAndRun(LoginData loginData = null) {
+ var ok = await EditorCodePatcher.DownloadAndRun(loginData);
+ if (ok && loginData != null) {
+ HotReloadPrefs.ErrorHidden = false;
+ HotReloadPrefs.LicenseEmail = loginData.email;
+ HotReloadPrefs.LicensePassword = loginData.password;
+ }
+ }
+
+ async static Task LogoutOnDownloadAndRun() {
+ var ok = await EditorCodePatcher.DownloadAndRun();
+ if (!ok) {
+ return;
+ }
+ await RequestLogout();
+ }
+
+ private async static Task RequestLogout() {
+ int i = 0;
+ while (!EditorCodePatcher.Running && i < 100) {
+ await Task.Delay(100);
+ i++;
+ }
+ var resp = await RequestHelper.RequestLogout();
+ if (!EditorCodePatcher.RequestingLoginInfo && resp != null) {
+ EditorCodePatcher.HandleStatus(resp);
+ }
+ }
+
+ private static void RenderSwitchAuthMode() {
+ var color = EditorGUIUtility.isProSkin ? new Color32(0x3F, 0x9F, 0xFF, 0xFF) : new Color32(0x0F, 0x52, 0xD7, 0xFF);
+ if (HotReloadGUIHelper.LinkLabel("Forgot password?", 12, FontStyle.Normal, TextAnchor.MiddleLeft, color)) {
+ if (EditorUtility.DisplayDialog("Recover password", "Use company code 'naughtycult' and the email you signed up with in order to recover your account.", "Open in browser", "Cancel")) {
+ Application.OpenURL(Constants.ForgotPasswordURL);
+ }
+ }
+ }
+
+ Texture2D _greenTextureLight;
+ Texture2D _greenTextureDark;
+ Texture2D GreenTexture => EditorGUIUtility.isProSkin
+ ? _greenTextureDark ? _greenTextureDark : (_greenTextureDark = MakeTexture(0.5f))
+ : _greenTextureLight ? _greenTextureLight : (_greenTextureLight = MakeTexture(0.85f));
+
+ private void RenderProgressBar() {
+ if (currentState.downloadRequired && !currentState.downloadStarted) {
+ return;
+ }
+
+ using(var scope = new EditorGUILayout.VerticalScope(HotReloadWindowStyles.MiddleCenterStyle)) {
+ float progress;
+ var bg = HotReloadWindowStyles.ProgressBarBarStyle.normal.background;
+ try {
+ HotReloadWindowStyles.ProgressBarBarStyle.normal.background = GreenTexture;
+ var barRect = scope.rect;
+
+ barRect.height = 25;
+ if (currentState.downloadRequired) {
+ barRect.width = barRect.width - 65;
+ using (new EditorGUILayout.HorizontalScope()) {
+ progress = EditorCodePatcher.DownloadProgress;
+ EditorGUI.ProgressBar(barRect, Mathf.Clamp(progress, 0f, 1f), "");
+ if (GUI.Button(new Rect(barRect) { x = barRect.x + barRect.width + 5, height = barRect.height, width = 60 }, new GUIContent(" Info", GUIHelper.GetLocalIcon("alert_info")))) {
+ Application.OpenURL(Constants.AdditionalContentURL);
+ }
+ }
+ } else {
+ progress = EditorCodePatcher.Stopping ? 1 : Mathf.Clamp(EditorCodePatcher.StartupProgress?.Item1 ?? 0f, 0f, 1f);
+ EditorGUI.ProgressBar(barRect, progress, "");
+ }
+ GUILayout.Space(barRect.height);
+ } finally {
+ HotReloadWindowStyles.ProgressBarBarStyle.normal.background = bg;
+ }
+ }
+ }
+
+ private Texture2D MakeTexture(float maxHue) {
+ var width = 11;
+ var height = 11;
+ Color[] pix = new Color[width * height];
+ for (int y = 0; y < height; y++) {
+ var middle = Math.Ceiling(height / (double)2);
+ var maxGreen = maxHue;
+ var yCoord = y + 1;
+ var green = maxGreen - Math.Abs(yCoord - middle) * 0.02;
+ for (int x = 0; x < width; x++) {
+ pix[y * width + x] = new Color(0.1f, (float)green, 0.1f, 1.0f);
+ }
+ }
+ var result = new Texture2D(width, height);
+ result.SetPixels(pix);
+ result.Apply();
+ return result;
+ }
+
+
+ /*
+ [MenuItem("codepatcher/restart")]
+ public static void TestRestart() {
+ CodePatcherCLI.Restart(Application.dataPath, false);
+ }
+ */
+
+ }
+
+ internal static class HotReloadGUIHelper {
+ public static bool LinkLabel(string labelText, int fontSize, FontStyle fontStyle, TextAnchor alignment, Color? color = null) {
+ var stl = EditorStyles.label;
+
+ // copy
+ var origSize = stl.fontSize;
+ var origStyle = stl.fontStyle;
+ var origAnchor = stl.alignment;
+ var origColor = stl.normal.textColor;
+
+ // temporarily modify the built-in style
+ stl.fontSize = fontSize;
+ stl.fontStyle = fontStyle;
+ stl.alignment = alignment;
+ stl.normal.textColor = color ?? origColor;
+ stl.active.textColor = color ?? origColor;
+ stl.focused.textColor = color ?? origColor;
+ stl.hover.textColor = color ?? origColor;
+
+ try {
+ return GUILayout.Button(labelText, stl);
+ } finally{
+ // set the editor style (stl) back to normal
+ stl.fontSize = origSize;
+ stl.fontStyle = origStyle;
+ stl.alignment = origAnchor;
+ stl.normal.textColor = origColor;
+ stl.active.textColor = origColor;
+ stl.focused.textColor = origColor;
+ stl.hover.textColor = origColor;
+ }
+ }
+
+ public static void HelpBox(string message, MessageType type, int fontSize) {
+ var _fontSize = EditorStyles.helpBox.fontSize;
+ try {
+ EditorStyles.helpBox.fontSize = fontSize;
+ EditorGUILayout.HelpBox(message, type);
+ } finally {
+ EditorStyles.helpBox.fontSize = _fontSize;
+ }
+ }
+ }
+
+ internal enum PromoCodeErrorType {
+ NONE,
+ MISSING_INPUT,
+ INVALID_HTTP_METHOD,
+ BODY_INVALID,
+ PROMO_CODE_NOT_FOUND,
+ PROMO_CODE_CLAIMED,
+ PROMO_CODE_EXPIRED,
+ LICENSE_NOT_FOUND,
+ LICENSE_NOT_TRIAL,
+ LICENSE_ALREADY_EXTENDED,
+ UPDATING_LICENSE_FAILED,
+ CONDITIONAL_CHECK_FAILED,
+ UNKNOWN_EXCEPTION,
+ UNSUPPORTED_PATH,
+ }
+
+ internal class LoginData {
+ public readonly string email;
+ public readonly string password;
+
+ public LoginData(string email, string password) {
+ this.email = email;
+ this.password = password;
+ }
+ }
+}
+
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs.meta
new file mode 100644
index 000000000..051b5e6b3
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 38d0877009d34a9458f7d169d7f1b6a7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadRunTab.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs
new file mode 100644
index 000000000..0675d9139
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs
@@ -0,0 +1,697 @@
+using System;
+using System.Diagnostics.CodeAnalysis;
+using SingularityGroup.HotReload.DTO;
+using SingularityGroup.HotReload.Editor.Cli;
+using UnityEditor;
+using UnityEngine;
+using EditorGUI = UnityEditor.EditorGUI;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal struct HotReloadSettingsTabState {
+ public readonly bool running;
+ public readonly bool trialLicense;
+ public readonly LoginStatusResponse loginStatus;
+ public readonly bool isServerHealthy;
+ public readonly bool registrationRequired;
+
+ public HotReloadSettingsTabState(
+ bool running,
+ bool trialLicense,
+ LoginStatusResponse loginStatus,
+ bool isServerHealthy,
+ bool registrationRequired
+ ) {
+ this.running = running;
+ this.trialLicense = trialLicense;
+ this.loginStatus = loginStatus;
+ this.isServerHealthy = isServerHealthy;
+ this.registrationRequired = registrationRequired;
+ }
+ }
+
+ internal class HotReloadSettingsTab : HotReloadTabBase {
+ private readonly HotReloadOptionsSection optionsSection;
+
+ // cached because changing built target triggers C# domain reload
+ // Also I suspect selectedBuildTargetGroup has chance to freeze Unity for several seconds (unconfirmed).
+ private readonly Lazy currentBuildTarget = new Lazy(
+ () => BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget));
+
+ private readonly Lazy isCurrentBuildTargetSupported = new Lazy(() => {
+ var target = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
+ return HotReloadBuildHelper.IsMonoSupported(target);
+ });
+
+ // Resources.Load uses cache, so it's safe to call it every frame.
+ // Retrying Load every time fixes an issue where you import the package and constructor runs, but resources aren't loadable yet.
+ private Texture iconCheck => Resources.Load("icon_check_circle");
+ private Texture iconWarning => Resources.Load("icon_warning_circle");
+
+ [SuppressMessage("ReSharper", "Unity.UnknownResource")] // Rider doesn't check packages
+ public HotReloadSettingsTab(HotReloadWindow window) : base(window,
+ "Settings",
+ "_Popup",
+ "Make changes to a build running on-device.") {
+ optionsSection = new HotReloadOptionsSection();
+ }
+
+ private GUIStyle headlineStyle;
+ private GUIStyle paddedStyle;
+
+ private Vector2 _settingsTabScrollPos;
+
+ HotReloadSettingsTabState currentState;
+ public override void OnGUI() {
+ // HotReloadAboutTabState ensures rendering is consistent between Layout and Repaint calls
+ // Without it errors like this happen:
+ // ArgumentException: Getting control 2's position in a group with only 2 controls when doing repaint
+ // See thread for more context: https://answers.unity.com/questions/17718/argumentexception-getting-control-2s-position-in-a.html
+ if (Event.current.type == EventType.Layout) {
+ currentState = new HotReloadSettingsTabState(
+ running: EditorCodePatcher.Running,
+ trialLicense: EditorCodePatcher.Status != null && (EditorCodePatcher.Status?.isTrial == true),
+ loginStatus: EditorCodePatcher.Status,
+ isServerHealthy: ServerHealthCheck.I.IsServerHealthy,
+ registrationRequired: RedeemLicenseHelper.I.RegistrationRequired
+ );
+ }
+ using (var scope = new EditorGUILayout.ScrollViewScope(_settingsTabScrollPos, GUI.skin.horizontalScrollbar, GUI.skin.verticalScrollbar, GUILayout.MaxHeight(Math.Max(HotReloadWindowStyles.windowScreenHeight, 800)), GUILayout.MaxWidth(Math.Max(HotReloadWindowStyles.windowScreenWidth, 800)))) {
+ _settingsTabScrollPos.x = scope.scrollPosition.x;
+ _settingsTabScrollPos.y = scope.scrollPosition.y;
+ using (new EditorGUILayout.VerticalScope(HotReloadWindowStyles.DynamicSectionHelpTab)) {
+ GUILayout.Space(10);
+ if (!EditorCodePatcher.LoginNotRequired
+ && !currentState.registrationRequired
+ // Delay showing login in settings to not confuse users that they need to login to use Free trial
+ && (HotReloadPrefs.RateAppShown
+ || PackageConst.IsAssetStoreBuild)
+ ) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionOuterBoxCompact)) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBoxWide)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ RenderLicenseInfoSection();
+ }
+ }
+ }
+ }
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionOuterBoxCompact)) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBoxWide)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ HotReloadPrefs.ShowConfiguration = EditorGUILayout.Foldout(HotReloadPrefs.ShowConfiguration, "Configuration", true, HotReloadWindowStyles.FoldoutStyle);
+ if (HotReloadPrefs.ShowConfiguration) {
+ EditorGUILayout.Space();
+ RenderUnityAutoRefresh();
+ RenderAssetRefresh();
+ if (HotReloadPrefs.AllAssetChanges) {
+ using (new EditorGUILayout.VerticalScope(paddedStyle ?? (paddedStyle = new GUIStyle { padding = new RectOffset(20, 0, 0, 0) }))) {
+ RenderIncludeShaderChanges();
+ }
+
+ EditorGUILayout.Space();
+ }
+ using (new EditorGUI.DisabledScope(!EditorCodePatcher.autoRecompileUnsupportedChangesSupported)) {
+ RenderAutoRecompileUnsupportedChanges();
+ if (HotReloadPrefs.AutoRecompileUnsupportedChanges && EditorCodePatcher.autoRecompileUnsupportedChangesSupported) {
+ using (new EditorGUILayout.VerticalScope(paddedStyle ?? (paddedStyle = new GUIStyle { padding = new RectOffset(20, 0, 0, 0) }))) {
+ RenderAutoRecompileUnsupportedChangesImmediately();
+ RenderAutoRecompileUnsupportedChangesOnExitPlayMode();
+ RenderAutoRecompileUnsupportedChangesInPlayMode();
+ RenderAutoRecompilePartiallyUnsupportedChanges();
+ }
+ }
+ EditorGUILayout.Space();
+ }
+ RenderConsoleWindow();
+ RenderAutostart();
+
+ if (EditorWindowHelper.supportsNotifications) {
+ RenderShowNotifications();
+ using (new EditorGUILayout.VerticalScope(paddedStyle ?? (paddedStyle = new GUIStyle { padding = new RectOffset(20, 0, 0, 0) }))) {
+ RenderShowPatchingNotifications();
+ RenderShowCompilingUnsupportedNotifications();
+ }
+
+ EditorGUILayout.Space();
+ }
+ EditorGUILayout.Space();
+ using (new EditorGUILayout.HorizontalScope()) {
+ GUILayout.FlexibleSpace();
+ HotReloadWindow.RenderShowOnStartup();
+ }
+ }
+ }
+ }
+ }
+
+ if (!EditorCodePatcher.LoginNotRequired && currentState.trialLicense && currentState.running) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionOuterBoxCompact)) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBoxWide)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ RenderPromoCodeSection();
+ }
+ }
+ }
+ }
+
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionOuterBoxCompact)) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.SectionInnerBoxWide)) {
+ using (new EditorGUILayout.VerticalScope()) {
+ RenderOnDevice();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ void RenderUnityAutoRefresh() {
+ var newSettings = EditorGUILayout.BeginToggleGroup(new GUIContent("Allow to manage Unity's Auto Compile settings (recommended)"), HotReloadPrefs.AllowDisableUnityAutoRefresh);
+ if (newSettings != HotReloadPrefs.AllowDisableUnityAutoRefresh) {
+ HotReloadPrefs.AllowDisableUnityAutoRefresh = newSettings;
+ }
+ string toggleDescription;
+ if (HotReloadPrefs.AllowDisableUnityAutoRefresh) {
+ toggleDescription = "Hot Reload will manage Unity's Auto Refresh and Script Compilation settings when it's running. Previous settings will be restored when Hot Reload is stopped.";
+ } else {
+ toggleDescription = "Enable to allow Hot Reload to manage Unity's Auto Refresh and Script Compilation settings when it's running. If enabled, previous settings will be restored when Hot Reload is stopped.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.Space(3f);
+ }
+
+ void RenderAssetRefresh() {
+ var newSettings = EditorGUILayout.BeginToggleGroup(new GUIContent("Asset refresh (recommended)"), HotReloadPrefs.AllAssetChanges);
+ if (newSettings != HotReloadPrefs.AllAssetChanges) {
+ HotReloadPrefs.AllAssetChanges = newSettings;
+ // restart when setting changes
+ if (ServerHealthCheck.I.IsServerHealthy) {
+ var restartServer = EditorUtility.DisplayDialog("Hot Reload",
+ $"When changing 'Asset refresh', the Hot Reload server must be restarted for this to take effect." +
+ "\nDo you want to restart it now?",
+ "Restart server", "Don't restart");
+ if (restartServer) {
+ EditorCodePatcher.RestartCodePatcher().Forget();
+ }
+ }
+ }
+ string toggleDescription;
+ if (HotReloadPrefs.AllAssetChanges) {
+ toggleDescription = "Hot Reload will refresh changed assets in the project.";
+ } else {
+ toggleDescription = "Enable to allow Hot Reload to refresh changed assets in the project. All asset types are supported including sprites, prefabs, shaders etc.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.Space(3f);
+ }
+
+ void RenderIncludeShaderChanges() {
+ HotReloadPrefs.IncludeShaderChanges = EditorGUILayout.BeginToggleGroup(new GUIContent("Refresh shaders"), HotReloadPrefs.IncludeShaderChanges);
+ string toggleDescription;
+ if (HotReloadPrefs.IncludeShaderChanges) {
+ toggleDescription = "Hot Reload will auto refresh shaders. Note that enabling this setting might impact performance.";
+ } else {
+ toggleDescription = "Enable to auto-refresh shaders. Note that enabling this setting might impact performance";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderConsoleWindow() {
+ if (!HotReloadCli.CanOpenInBackground) {
+ return;
+ }
+ var newSettings = EditorGUILayout.BeginToggleGroup(new GUIContent("Hide console window on start"), HotReloadPrefs.DisableConsoleWindow);
+ if (newSettings != HotReloadPrefs.DisableConsoleWindow) {
+ HotReloadPrefs.DisableConsoleWindow = newSettings;
+ // restart when setting changes
+ if (ServerHealthCheck.I.IsServerHealthy) {
+ var restartServer = EditorUtility.DisplayDialog("Hot Reload",
+ $"When changing 'Hide console window on start', the Hot Reload server must be restarted for this to take effect." +
+ "\nDo you want to restart it now?",
+ "Restart server", "Don't restart");
+ if (restartServer) {
+ EditorCodePatcher.RestartCodePatcher().Forget();
+ }
+ }
+ }
+ string toggleDescription;
+ if (HotReloadPrefs.DisableConsoleWindow) {
+ toggleDescription = "Hot Reload will start without creating a console window. Logs can be accessed through \"Help\" tab.";
+ } else {
+ toggleDescription = "Enable to start Hot Reload without creating a console window.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.Space(3f);
+ }
+
+ void RenderAutostart() {
+ var newSettings = EditorGUILayout.BeginToggleGroup(new GUIContent("Autostart on Unity open"), HotReloadPrefs.LaunchOnEditorStart);
+ if (newSettings != HotReloadPrefs.LaunchOnEditorStart) {
+ HotReloadPrefs.LaunchOnEditorStart = newSettings;
+ }
+ string toggleDescription;
+ if (HotReloadPrefs.LaunchOnEditorStart) {
+ toggleDescription = "Hot Reload will be launched when Unity project opens.";
+ } else {
+ toggleDescription = "Enable to launch Hot Reload when Unity project opens.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ EditorGUILayout.Space();
+ }
+
+ void RenderShowNotifications() {
+ GUILayout.Label("Indications", HotReloadWindowStyles.NotificationsTitleStyle);
+
+ string toggleDescription;
+ if (!EditorWindowHelper.supportsNotifications && !UnitySettingsHelper.I.playmodeTintSupported) {
+ toggleDescription = "Indications are not supported in the Unity version you use.";
+ } else {
+ toggleDescription = "Chosen indications are enabled:";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ }
+
+ void RenderShowPatchingNotifications() {
+ HotReloadPrefs.ShowPatchingNotifications = EditorGUILayout.BeginToggleGroup(new GUIContent("Patching Indication"), HotReloadPrefs.ShowPatchingNotifications);
+ string toggleDescription;
+ if (!EditorWindowHelper.supportsNotifications) {
+ toggleDescription = "Patching Notification is not supported in the Unity version you use.";
+ } else if (!HotReloadPrefs.ShowPatchingNotifications) {
+ toggleDescription = "Enable to show GameView and SceneView indications when Patching.";
+ } else {
+ toggleDescription = "Indications will be shown in GameView and SceneView when Patching.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderShowCompilingUnsupportedNotifications() {
+ HotReloadPrefs.ShowCompilingUnsupportedNotifications = EditorGUILayout.BeginToggleGroup(new GUIContent("Compiling Unsupported Changes Indication"), HotReloadPrefs.ShowCompilingUnsupportedNotifications);
+ string toggleDescription;
+ if (!EditorWindowHelper.supportsNotifications) {
+ toggleDescription = "Compiling Unsupported Changes Notification is not supported in the Unity version you use.";
+ } else if (!HotReloadPrefs.ShowCompilingUnsupportedNotifications) {
+ toggleDescription = "Enable to show GameView and SceneView indications when compiling unsupported changes.";
+ } else {
+ toggleDescription = "Indications will be shown in GameView and SceneView when compiling unsupported changes.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderAutoRecompileUnsupportedChanges() {
+ HotReloadPrefs.AutoRecompileUnsupportedChanges = EditorGUILayout.BeginToggleGroup(new GUIContent("Auto recompile unsupported changes (recommended)"), HotReloadPrefs.AutoRecompileUnsupportedChanges && EditorCodePatcher.autoRecompileUnsupportedChangesSupported);
+ string toggleDescription;
+ if (!EditorCodePatcher.autoRecompileUnsupportedChangesSupported) {
+ toggleDescription = "Auto recompiling unsupported changes is not supported in the Unity version you use.";
+ } else if (HotReloadPrefs.AutoRecompileUnsupportedChanges) {
+ toggleDescription = "Hot Reload will recompile when unsupported changes are detected.";
+ } else {
+ toggleDescription = "Enable to recompile when unsupported changes are detected.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderAutoRecompilePartiallyUnsupportedChanges() {
+ HotReloadPrefs.AutoRecompilePartiallyUnsupportedChanges = EditorGUILayout.BeginToggleGroup(new GUIContent("Include partially unsupported changes"), HotReloadPrefs.AutoRecompilePartiallyUnsupportedChanges);
+ string toggleDescription;
+ if (HotReloadPrefs.AutoRecompilePartiallyUnsupportedChanges) {
+ toggleDescription = "Hot Reload will recompile partially unsupported changes.";
+ } else {
+ toggleDescription = "Enable to recompile partially unsupported changes.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderAutoRecompileUnsupportedChangesImmediately() {
+ HotReloadPrefs.AutoRecompileUnsupportedChangesImmediately = EditorGUILayout.BeginToggleGroup(new GUIContent("Recompile immediately"), HotReloadPrefs.AutoRecompileUnsupportedChangesImmediately);
+ string toggleDescription;
+ if (HotReloadPrefs.AutoRecompileUnsupportedChangesImmediately) {
+ toggleDescription = "Unsupported changes will be recompiled immediately.";
+ } else {
+ toggleDescription = "Unsupported changes will be recompiled when editor is focused. Enable to recompile immediately.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderAutoRecompileUnsupportedChangesInPlayMode() {
+ HotReloadPrefs.AutoRecompileUnsupportedChangesInPlayMode = EditorGUILayout.BeginToggleGroup(new GUIContent("Recompile in Play Mode"), HotReloadPrefs.AutoRecompileUnsupportedChangesInPlayMode);
+ string toggleDescription;
+ if (HotReloadPrefs.AutoRecompileUnsupportedChangesInPlayMode) {
+ toggleDescription = "Hot Reload will exit Play Mode to recompile unsupported changes.";
+ } else {
+ toggleDescription = "Enable to auto exit Play Mode to recompile unsupported changes.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderAutoRecompileUnsupportedChangesOnExitPlayMode() {
+ HotReloadPrefs.AutoRecompileUnsupportedChangesOnExitPlayMode = EditorGUILayout.BeginToggleGroup(new GUIContent("Recompile on exit Play Mode"), HotReloadPrefs.AutoRecompileUnsupportedChangesOnExitPlayMode);
+ string toggleDescription;
+ if (HotReloadPrefs.AutoRecompileUnsupportedChangesOnExitPlayMode) {
+ toggleDescription = "Hot Reload will recompile unsupported changes when exiting Play Mode.";
+ } else {
+ toggleDescription = "Enable to recompile unsupported changes when exiting Play Mode.";
+ }
+ EditorGUILayout.LabelField(toggleDescription, HotReloadWindowStyles.WrapStyle);
+ EditorGUILayout.EndToggleGroup();
+ }
+
+ void RenderOnDevice() {
+ HotReloadPrefs.ShowOnDevice = EditorGUILayout.Foldout(HotReloadPrefs.ShowOnDevice, "On-Device", true, HotReloadWindowStyles.FoldoutStyle);
+ if (!HotReloadPrefs.ShowOnDevice) {
+ return;
+ }
+ // header with explainer image
+ {
+ if (headlineStyle == null) {
+ // start with textArea for the background and border colors
+ headlineStyle = new GUIStyle(GUI.skin.label) {
+ fontStyle = FontStyle.Bold,
+ alignment = TextAnchor.MiddleLeft
+ };
+ headlineStyle.normal.textColor = HotReloadWindowStyles.H2TitleStyle.normal.textColor;
+
+ // bg color
+ if (HotReloadWindowStyles.IsDarkMode) {
+ headlineStyle.normal.background = EditorTextures.DarkGray40;
+ } else {
+ headlineStyle.normal.background = EditorTextures.LightGray225;
+ }
+ // layout
+ headlineStyle.padding = new RectOffset(8, 8, 0, 0);
+ headlineStyle.margin = new RectOffset(6, 6, 6, 6);
+ }
+ GUILayout.Space(9f); // space between logo and headline
+
+ GUILayout.Label("Make changes to a build running on-device",
+ headlineStyle, GUILayout.MinHeight(EditorGUIUtility.singleLineHeight * 1.4f));
+ // image showing how Hot Reload works with a phone
+ // var bannerBox = GUILayoutUtility.GetRect(flowchart.width * 0.6f, flowchart.height * 0.6f);
+ // GUI.DrawTexture(bannerBox, flowchart, ScaleMode.ScaleToFit);
+ }
+
+ GUILayout.Space(16f);
+
+ //ButtonToOpenBuildSettings();
+
+ {
+ GUILayout.Label("Manual connect", HotReloadWindowStyles.H3TitleStyle);
+ EditorGUILayout.Space();
+
+ GUILayout.BeginHorizontal();
+
+ // indent all controls (this works with non-labels)
+ GUILayout.Space(16f);
+ GUILayout.BeginVertical();
+
+ string text;
+ var ip = IpHelper.GetIpAddressCached();
+ if (string.IsNullOrEmpty(ip)) {
+ text = $"If auto-pair fails, find your local IP in OS settings, and use this format to connect: '{{ip}}:{RequestHelper.port}'";
+ } else {
+ text = $"If auto-pair fails, use this IP and port to connect: {ip}:{RequestHelper.port}" +
+ "\nMake sure you are on the same LAN/WiFi network";
+ }
+ GUILayout.Label(text, HotReloadWindowStyles.H3TitleWrapStyle);
+
+ if (!currentState.isServerHealthy) {
+ DrawHorizontalCheck(ServerHealthCheck.I.IsServerHealthy,
+ "Hot Reload is running",
+ "Hot Reload is not running",
+ hasFix: false);
+ }
+
+ if (!HotReloadPrefs.ExposeServerToLocalNetwork) {
+ var summary = $"Enable '{new ExposeServerOption().ShortSummary}'";
+ DrawHorizontalCheck(HotReloadPrefs.ExposeServerToLocalNetwork,
+ summary,
+ summary);
+ }
+
+ // explainer image that shows phone needs same wifi to auto connect ?
+
+ GUILayout.EndVertical();
+ GUILayout.EndHorizontal();
+ }
+
+ GUILayout.Space(16f);
+
+ // loading again is smooth, pretty sure AssetDatabase.LoadAssetAtPath is caching -Troy
+ var settingsObject = HotReloadSettingsEditor.LoadSettingsOrDefault();
+ var so = new SerializedObject(settingsObject);
+
+ // if you build for Android now, will Hot Reload work?
+ {
+
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Label("Build Settings Checklist", HotReloadWindowStyles.H3TitleStyle);
+ EditorGUI.BeginDisabledGroup(isSupported);
+ // One-click to change each setting to the supported value
+ if (GUILayout.Button("Fix All", GUILayout.MaxWidth(90f))) {
+ FixAllUnsupportedSettings(so);
+ }
+ EditorGUI.EndDisabledGroup();
+ EditorGUILayout.EndHorizontal();
+
+
+ // NOTE: After user changed some build settings, window may not immediately repaint
+ // (e.g. toggle Development Build in Build Settings window)
+ // We could show a refresh button (to encourage the user to click the window which makes it repaint).
+ DrawSectionCheckBuildSupport(so);
+ }
+
+
+ GUILayout.Space(16f);
+
+ // Settings checkboxes (Hot Reload options)
+ {
+ GUILayout.Label("Options", HotReloadWindowStyles.H3TitleStyle);
+ if (settingsObject) {
+ optionsSection.DrawGUI(so);
+ }
+ }
+ GUILayout.FlexibleSpace(); // needed otherwise vertical scrollbar is appearing for no reason (Unity 2021 glitch perhaps)
+ }
+
+ private void RenderLicenseInfoSection() {
+ HotReloadRunTab.RenderLicenseInfo(
+ _window.RunTabState,
+ currentState.loginStatus,
+ verbose: true,
+ allowHide: false,
+ overrideActionButton: "Activate License",
+ showConsumptions: true
+ );
+ }
+
+ private void RenderPromoCodeSection() {
+ _window.RunTab.RenderPromoCodes();
+ }
+
+ public void FocusLicenseFoldout() {
+ HotReloadPrefs.ShowLogin = true;
+ }
+
+ // note: changing scripting backend does not force Unity to recreate the GUI, so need to check it when drawing.
+ private ScriptingImplementation ScriptingBackend => HotReloadBuildHelper.GetCurrentScriptingBackend();
+ private ManagedStrippingLevel StrippingLevel => HotReloadBuildHelper.GetCurrentStrippingLevel();
+ public bool isSupported = true;
+
+ ///
+ /// These options are drawn in the On-device tab
+ ///
+ // new on-device options should be added here
+ public static readonly IOption[] allOptions = new IOption[] {
+ new ExposeServerOption(),
+ IncludeInBuildOption.I,
+ new AllowAndroidAppToMakeHttpRequestsOption(),
+ };
+
+ ///
+ /// Change each setting to the value supported by Hot Reload
+ ///
+ private void FixAllUnsupportedSettings(SerializedObject so) {
+ if (!isCurrentBuildTargetSupported.Value) {
+ // try switch to Android platform
+ // (we also support Standalone but HotReload on mobile is a better selling point)
+ if (!TrySwitchToStandalone()) {
+ // skip changing other options (user won't readthe gray text) - user has to click Fix All again
+ return;
+ }
+ }
+
+ foreach (var buildOption in allOptions) {
+ if (!buildOption.GetValue(so)) {
+ buildOption.SetValue(so, true);
+ }
+ }
+ so.ApplyModifiedProperties();
+ var settingsObject = so.targetObject as HotReloadSettingsObject;
+ if (settingsObject) {
+ // when you click fix all, make sure to save the settings, otherwise ui does not update
+ HotReloadSettingsEditor.EnsureSettingsCreated(settingsObject);
+ }
+
+ if (!EditorUserBuildSettings.development) {
+ EditorUserBuildSettings.development = true;
+ }
+
+ HotReloadBuildHelper.SetCurrentScriptingBackend(ScriptingImplementation.Mono2x);
+ HotReloadBuildHelper.SetCurrentStrippingLevel(ManagedStrippingLevel.Disabled);
+ }
+
+ public static bool TrySwitchToStandalone() {
+ BuildTarget buildTarget;
+ if (Application.platform == RuntimePlatform.LinuxEditor) {
+ buildTarget = BuildTarget.StandaloneLinux64;
+ } else if (Application.platform == RuntimePlatform.WindowsEditor) {
+ buildTarget = BuildTarget.StandaloneWindows64;
+ } else if (Application.platform == RuntimePlatform.OSXEditor) {
+ buildTarget = BuildTarget.StandaloneOSX;
+ } else {
+ return false;
+ }
+ var current = EditorUserBuildSettings.activeBuildTarget;
+ if (current == buildTarget) {
+ return true;
+ }
+ var confirmed = EditorUtility.DisplayDialog("Switch Build Target",
+ "Switching the build target can take a while depending on project size.",
+ $"Switch to Standalone", "Cancel");
+ if (confirmed) {
+ EditorUserBuildSettings.SwitchActiveBuildTargetAsync(BuildTargetGroup.Standalone, buildTarget);
+ Log.Info($"Build target is switching to {buildTarget}.");
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ ///
+ /// Section that user can check before making a Unity Player build.
+ ///
+ ///
+ ///
+ /// This section is for confirming your build will work with Hot Reload.
+ /// Options that can be changed after the build is made should be drawn elsewhere.
+ ///
+ public void DrawSectionCheckBuildSupport(SerializedObject so) {
+ isSupported = true;
+ var selectedPlatform = currentBuildTarget.Value;
+ DrawHorizontalCheck(isCurrentBuildTargetSupported.Value,
+ $"The {selectedPlatform.ToString()} platform is selected",
+ $"The current platform is {selectedPlatform.ToString()} which is not supported");
+
+ using (new EditorGUI.DisabledScope(!isCurrentBuildTargetSupported.Value)) {
+ foreach (var option in allOptions) {
+ DrawHorizontalCheck(option.GetValue(so),
+ $"Enable \"{option.ShortSummary}\"",
+ $"Enable \"{option.ShortSummary}\"");
+ }
+
+ DrawHorizontalCheck(EditorUserBuildSettings.development,
+ "Development Build is enabled",
+ "Enable \"Development Build\"");
+
+ DrawHorizontalCheck(ScriptingBackend == ScriptingImplementation.Mono2x,
+ $"Scripting Backend is set to Mono",
+ $"Set Scripting Backend to Mono");
+
+ DrawHorizontalCheck(StrippingLevel == ManagedStrippingLevel.Disabled,
+ $"Stripping Level = {StrippingLevel}",
+ $"Stripping Level = {StrippingLevel}",
+ suggestedSolutionText: "Code stripping needs to be disabled to ensure that all methods are available for patching."
+ );
+ }
+ }
+
+ ///
+ /// Draw a box with a tick or warning icon on the left, with text describing the tick or warning
+ ///
+ /// The condition to check. True to show a tick icon, False to show a warning.
+ /// Shown when condition is true
+ /// Shown when condition is false
+ /// Shown when is false
+ void DrawHorizontalCheck(bool condition, string okText, string notOkText = null, string suggestedSolutionText = null, bool hasFix = true) {
+ if (okText == null) {
+ throw new ArgumentNullException(nameof(okText));
+ }
+ if (notOkText == null) {
+ notOkText = okText;
+ }
+
+ // include some horizontal space around the icon
+ var boxWidth = GUILayout.Width(EditorGUIUtility.singleLineHeight * 1.31f);
+ var height = GUILayout.Height(EditorGUIUtility.singleLineHeight * 1.01f);
+ GUILayout.BeginHorizontal(HotReloadWindowStyles.BoxStyle, height, GUILayout.ExpandWidth(true));
+ var style = HotReloadWindowStyles.NoPaddingMiddleLeftStyle;
+ var iconRect = GUILayoutUtility.GetRect(
+ Mathf.Round(EditorGUIUtility.singleLineHeight * 1.31f),
+ Mathf.Round(EditorGUIUtility.singleLineHeight * 1.01f),
+ style, boxWidth, height, GUILayout.ExpandWidth(false));
+ // rounded so we can have pixel perfect black circle bg
+ iconRect.Set(Mathf.Round(iconRect.x), Mathf.Round(iconRect.y), Mathf.CeilToInt(iconRect.width),
+ Mathf.CeilToInt(iconRect.height));
+ var text = condition ? okText : notOkText;
+ var icon = condition ? iconCheck : iconWarning;
+ if (GUI.enabled) {
+ DrawBlackCircle(iconRect);
+ // resource can be null when building player (Editor Resources not available)
+ if (icon) {
+ GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit);
+ }
+ } else {
+ // show something (instead of hiding) so that layout stays same size
+ DrawDisabledCircle(iconRect);
+ }
+ GUILayout.Space(4f);
+ GUILayout.Label(text, style, height);
+
+ if (!condition && hasFix) {
+ isSupported = false;
+ }
+
+ GUILayout.EndHorizontal();
+ if (!condition && !String.IsNullOrEmpty(suggestedSolutionText)) {
+ // suggest to the user how they can resolve the issue
+ EditorGUI.indentLevel++;
+ GUILayout.Label(suggestedSolutionText, HotReloadWindowStyles.WrapStyle);
+ EditorGUI.indentLevel--;
+ }
+ }
+
+ void DrawDisabledCircle(Rect rect) => DrawCircleIcon(rect,
+ Resources.Load("icon_circle_gray"),
+ Color.clear); // smaller circle draws less attention
+
+ void DrawBlackCircle(Rect rect) => DrawCircleIcon(rect,
+ Resources.Load("icon_circle_black"),
+ new Color(0.14f, 0.14f, 0.14f)); // black is too dark in unity light theme
+
+ void DrawCircleIcon(Rect rect, Texture circleIcon, Color borderColor) {
+ // Note: drawing texture from resources is pixelated on the edges, so it has some transperancy around the edges.
+ // While building for Android, Resources.Load returns null for our editor Resources.
+ if (circleIcon != null) {
+ GUI.DrawTexture(rect, circleIcon, ScaleMode.ScaleToFit);
+ }
+
+ // Draw smooth circle border
+ const float borderWidth = 2f;
+ GUI.DrawTexture(rect, EditorTextures.White, ScaleMode.ScaleToFit, true,
+ 0f,
+ borderColor,
+ new Vector4(borderWidth, borderWidth, borderWidth, borderWidth),
+ Mathf.Min(rect.height, rect.width) / 2f);
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs.meta
new file mode 100644
index 000000000..c5f3cf430
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: fff71bd159424bf2978e2e99eacba9b4
+timeCreated: 1674057842
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/GUI/Tabs/HotReloadSettingsTab.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs
new file mode 100644
index 000000000..4f16b2b3c
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs
@@ -0,0 +1,372 @@
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text.RegularExpressions;
+using System.Threading;
+using SingularityGroup.HotReload.DTO;
+using SingularityGroup.HotReload.Editor.Cli;
+using SingularityGroup.HotReload.Editor.Semver;
+using UnityEditor;
+using UnityEditor.Compilation;
+using UnityEngine;
+
+[assembly: InternalsVisibleTo("SingularityGroup.HotReload.EditorSamples")]
+
+namespace SingularityGroup.HotReload.Editor {
+ class HotReloadWindow : EditorWindow {
+ public static HotReloadWindow Current { get; private set; }
+
+ List tabs;
+ List Tabs => tabs ?? (tabs = new List {
+ RunTab,
+ SettingsTab,
+ AboutTab,
+ });
+ int selectedTab;
+
+ internal static Vector2 scrollPos;
+
+
+ HotReloadRunTab runTab;
+ internal HotReloadRunTab RunTab => runTab ?? (runTab = new HotReloadRunTab(this));
+ HotReloadSettingsTab settingsTab;
+ internal HotReloadSettingsTab SettingsTab => settingsTab ?? (settingsTab = new HotReloadSettingsTab(this));
+ HotReloadAboutTab aboutTab;
+ internal HotReloadAboutTab AboutTab => aboutTab ?? (aboutTab = new HotReloadAboutTab(this));
+
+ static ShowOnStartupEnum _showOnStartupOption;
+
+ ///
+ /// This token is cancelled when the EditorWindow is disabled.
+ ///
+ ///
+ /// Use it for all tasks.
+ /// When token is cancelled, scripts are about to be recompiled and this will cause tasks to fail for weird reasons.
+ ///
+ public CancellationToken cancelToken;
+ CancellationTokenSource cancelTokenSource;
+
+ static readonly PackageUpdateChecker packageUpdateChecker = new PackageUpdateChecker();
+
+ [MenuItem("Window/Hot Reload H")]
+ internal static void Open() {
+ // opening the window on CI systems was keeping Unity open indefinitely
+ if (EditorWindowHelper.IsHumanControllingUs()) {
+ if (Current) {
+ Current.Show();
+ Current.Focus();
+ } else {
+ Current = GetWindow();
+ }
+ }
+ }
+
+ void OnEnable() {
+ Current = this;
+ if (cancelTokenSource != null) {
+ cancelTokenSource.Cancel();
+ }
+ // Set min size initially so that full UI is visible
+ if (!HotReloadPrefs.OpenedWindowAtLeastOnce) {
+ this.minSize = new Vector2(Constants.RecompileButtonTextHideWidth + 1, Constants.EventsListHideHeight + 70);
+ HotReloadPrefs.OpenedWindowAtLeastOnce = true;
+ }
+ cancelTokenSource = new CancellationTokenSource();
+ cancelToken = cancelTokenSource.Token;
+
+ this.titleContent = new GUIContent(" Hot Reload", GUIHelper.GetInvertibleIcon(InvertibleIcon.Logo));
+ _showOnStartupOption = HotReloadPrefs.ShowOnStartup;
+
+ packageUpdateChecker.StartCheckingForNewVersion();
+ }
+
+ void Update() {
+ foreach (var tab in Tabs) {
+ tab.Update();
+ }
+ }
+
+ void OnDisable() {
+ if (cancelTokenSource != null) {
+ cancelTokenSource.Cancel();
+ cancelTokenSource = null;
+ }
+
+ if (Current == this) {
+ Current = null;
+ }
+ }
+
+ internal void SelectTab(Type tabType) {
+ selectedTab = Tabs.FindIndex(x => x.GetType() == tabType);
+ }
+
+ public HotReloadRunTabState RunTabState { get; private set; }
+ void OnGUI() {
+ // TabState ensures rendering is consistent between Layout and Repaint calls
+ // Without it errors like this happen:
+ // ArgumentException: Getting control 2's position in a group with only 2 controls when doing repaint
+ // See thread for more context: https://answers.unity.com/questions/17718/argumentexception-getting-control-2s-position-in-a.html
+ if (Event.current.type == EventType.Layout) {
+ RunTabState = HotReloadRunTabState.Current;
+ }
+ using(var scope = new EditorGUILayout.ScrollViewScope(scrollPos, false, false)) {
+ scrollPos = scope.scrollPosition;
+ // RenderDebug();
+ RenderTabs();
+ }
+ GUILayout.FlexibleSpace(); // GUI below will be rendered on the bottom
+ if (HotReloadWindowStyles.windowScreenHeight > 90)
+ RenderBottomBar();
+ }
+
+ void RenderDebug() {
+ if (GUILayout.Button("RESET WINDOW")) {
+ OnDisable();
+
+ RequestHelper.RequestLogin("test", "test", 1).Forget();
+
+ HotReloadPrefs.LicenseEmail = null;
+ HotReloadPrefs.ExposeServerToLocalNetwork = true;
+ HotReloadPrefs.LicensePassword = null;
+ HotReloadPrefs.LoggedBurstHint = false;
+ HotReloadPrefs.DontShowPromptForDownload = false;
+ HotReloadPrefs.RateAppShown = false;
+ HotReloadPrefs.ActiveDays = string.Empty;
+ HotReloadPrefs.LaunchOnEditorStart = false;
+ HotReloadPrefs.ShowUnsupportedChanges = true;
+ HotReloadPrefs.RedeemLicenseEmail = null;
+ HotReloadPrefs.RedeemLicenseInvoice = null;
+ OnEnable();
+ File.Delete(EditorCodePatcher.serverDownloader.GetExecutablePath(HotReloadCli.controller));
+ InstallUtility.DebugClearInstallState();
+ InstallUtility.CheckForNewInstall();
+ EditorPrefs.DeleteKey(Attribution.LastLoginKey);
+ File.Delete(RedeemLicenseHelper.registerOutcomePath);
+
+ CompileMethodDetourer.Reset();
+ AssetDatabase.Refresh();
+ }
+ }
+
+ internal static void RenderLogo(int width = 243) {
+ var isDarkMode = HotReloadWindowStyles.IsDarkMode;
+ var tex = Resources.Load(isDarkMode ? "Logo_HotReload_DarkMode" : "Logo_HotReload_LightMode");
+ //Can happen during player builds where Editor Resources are unavailable
+ if(tex == null) {
+ return;
+ }
+ var targetWidth = width;
+ var targetHeight = 44;
+ GUILayout.Space(4f);
+ // background padding top and bottom
+ float padding = 5f;
+ // reserve layout space for the texture
+ var backgroundRect = GUILayoutUtility.GetRect(targetWidth + padding, targetHeight + padding, HotReloadWindowStyles.LogoStyle);
+ // draw the texture into that reserved space. First the bg then the logo.
+ if (isDarkMode) {
+ GUI.DrawTexture(backgroundRect, EditorTextures.DarkGray17, ScaleMode.StretchToFill);
+ } else {
+ GUI.DrawTexture(backgroundRect, EditorTextures.LightGray238, ScaleMode.StretchToFill);
+ }
+
+ var foregroundRect = backgroundRect;
+ foregroundRect.yMin += padding;
+ foregroundRect.yMax -= padding;
+ // during player build (EditorWindow still visible), Resources.Load returns null
+ if (tex) {
+ GUI.DrawTexture(foregroundRect, tex, ScaleMode.ScaleToFit);
+ }
+ }
+
+ int? collapsedTab;
+ void RenderTabs() {
+ using(new EditorGUILayout.VerticalScope(HotReloadWindowStyles.BoxStyle)) {
+ if (HotReloadWindowStyles.windowScreenHeight > 210 && HotReloadWindowStyles.windowScreenWidth > 375) {
+ selectedTab = GUILayout.Toolbar(
+ selectedTab,
+ Tabs.Select(t =>
+ new GUIContent(t.Title.StartsWith(" ", StringComparison.Ordinal) ? t.Title : " " + t.Title,
+ t.Icon, t.Tooltip)).ToArray(),
+ GUILayout.Height(22f) // required, otherwise largest icon height determines toolbar height
+ );
+ if (collapsedTab != null) {
+ selectedTab = collapsedTab.Value;
+ collapsedTab = null;
+ }
+ } else {
+ if (collapsedTab == null) {
+ collapsedTab = selectedTab;
+ }
+ // When window is super small, we pretty much can only show run tab
+ SelectTab(typeof(HotReloadRunTab));
+ }
+
+ if (HotReloadWindowStyles.windowScreenHeight > 250 && HotReloadWindowStyles.windowScreenWidth > 275) {
+ RenderLogo();
+ }
+
+ Tabs[selectedTab].OnGUI();
+ }
+ }
+
+ void RenderBottomBar() {
+ SemVersion newVersion;
+ var updateAvailable = packageUpdateChecker.TryGetNewVersion(out newVersion);
+
+ if (HotReloadWindowStyles.windowScreenWidth > Constants.RateAppHideWidth
+ && HotReloadWindowStyles.windowScreenHeight > Constants.RateAppHideHeight
+ ) {
+ RenderRateApp();
+ }
+
+ if (updateAvailable) {
+ RenderUpdateButton(newVersion);
+ }
+
+ using(new EditorGUILayout.HorizontalScope("ProjectBrowserBottomBarBg", GUILayout.ExpandWidth(true), GUILayout.Height(25f))) {
+ RenderBottomBarCore();
+ }
+ }
+
+ static GUIStyle _renderAppBoxStyle;
+ static GUIStyle renderAppBoxStyle => _renderAppBoxStyle ?? (_renderAppBoxStyle = new GUIStyle(GUI.skin.box) {
+ padding = new RectOffset(10, 10, 0, 0)
+ });
+
+ static GUILayoutOption[] _nonExpandable;
+ public static GUILayoutOption[] NonExpandableLayout => _nonExpandable ?? (_nonExpandable = new [] {GUILayout.ExpandWidth(false), GUILayout.ExpandHeight(true)});
+
+ internal static void RenderRateApp() {
+ if (!ShouldShowRateApp()) {
+ return;
+ }
+ using (new EditorGUILayout.VerticalScope(renderAppBoxStyle)) {
+ using (new EditorGUILayout.HorizontalScope()) {
+ HotReloadGUIHelper.HelpBox("Are you enjoying using Hot Reload?", MessageType.Info, 11);
+ if (GUILayout.Button("Hide", NonExpandableLayout)) {
+ RequestHelper.RequestEditorEventWithRetry(new Stat(StatSource.Client, StatLevel.Debug, StatFeature.RateApp), new EditorExtraData { { "dismissed", true } }).Forget();
+ HotReloadPrefs.RateAppShown = true;
+ }
+ }
+ using (new EditorGUILayout.HorizontalScope()) {
+ if (GUILayout.Button("Yes")) {
+ var openedUrl = PackageConst.IsAssetStoreBuild && EditorUtility.DisplayDialog("Rate Hot Reload", "Thank you for using Hot Reload!\n\nPlease consider leaving a review on the Asset Store to support us.", "Open in browser", "Cancel");
+ if (openedUrl) {
+ Application.OpenURL(Constants.UnityStoreRateAppURL);
+ }
+ HotReloadPrefs.RateAppShown = true;
+ var data = new EditorExtraData();
+ if (PackageConst.IsAssetStoreBuild) {
+ data.Add("opened_url", openedUrl);
+ }
+ data.Add("enjoy_app", true);
+ RequestHelper.RequestEditorEventWithRetry(new Stat(StatSource.Client, StatLevel.Debug, StatFeature.RateApp), data).Forget();
+ }
+ if (GUILayout.Button("No")) {
+ HotReloadPrefs.RateAppShown = true;
+ var data = new EditorExtraData();
+ data.Add("enjoy_app", false);
+ RequestHelper.RequestEditorEventWithRetry(new Stat(StatSource.Client, StatLevel.Debug, StatFeature.RateApp), data).Forget();
+ }
+ }
+ }
+ }
+
+ internal static bool ShouldShowRateApp() {
+ if (HotReloadPrefs.RateAppShown) {
+ return false;
+ }
+ var activeDays = EditorCodePatcher.GetActiveDaysForRateApp();
+ if (activeDays.Count < Constants.DaysToRateApp) {
+ return false;
+ }
+ return true;
+ }
+
+ void RenderUpdateButton(SemVersion newVersion) {
+ if (GUILayout.Button($"Update To v{newVersion}", HotReloadWindowStyles.UpgradeButtonStyle)) {
+ packageUpdateChecker.UpdatePackageAsync(newVersion).Forget(CancellationToken.None);
+ }
+ }
+
+ internal static void RenderShowOnStartup() {
+ var prevLabelWidth = EditorGUIUtility.labelWidth;
+ try {
+ EditorGUIUtility.labelWidth = 105f;
+ using (new GUILayout.VerticalScope()) {
+ using (new GUILayout.HorizontalScope()) {
+ GUILayout.Label("Show On Startup");
+ Rect buttonRect = GUILayoutUtility.GetLastRect();
+ if (EditorGUILayout.DropdownButton(new GUIContent(Regex.Replace(_showOnStartupOption.ToString(), "([a-z])([A-Z])", "$1 $2")), FocusType.Passive, GUILayout.Width(110f))) {
+ GenericMenu menu = new GenericMenu();
+ foreach (ShowOnStartupEnum option in Enum.GetValues(typeof(ShowOnStartupEnum))) {
+ menu.AddItem(new GUIContent(Regex.Replace(option.ToString(), "([a-z])([A-Z])", "$1 $2")), false, () => {
+ if (_showOnStartupOption != option) {
+ _showOnStartupOption = option;
+ HotReloadPrefs.ShowOnStartup = _showOnStartupOption;
+ }
+ });
+ }
+ menu.DropDown(new Rect(buttonRect.x, buttonRect.y, 100, 0));
+ }
+ }
+ }
+ } finally {
+ EditorGUIUtility.labelWidth = prevLabelWidth;
+ }
+ }
+
+ internal static readonly OpenURLButton autoRefreshTroubleshootingBtn = new OpenURLButton("Troubleshooting", Constants.TroubleshootingURL);
+ void RenderBottomBarCore() {
+ bool troubleshootingShown = EditorCodePatcher.Started && HotReloadWindowStyles.windowScreenWidth >= 400;
+ bool alertsShown = EditorCodePatcher.Started && HotReloadWindowStyles.windowScreenWidth > Constants.EventFiltersShownHideWidth;
+ using (new EditorGUILayout.VerticalScope()) {
+ using (new EditorGUILayout.HorizontalScope(HotReloadWindowStyles.FooterStyle)) {
+ if (!troubleshootingShown) {
+ GUILayout.FlexibleSpace();
+ if (alertsShown) {
+ GUILayout.Space(-20);
+ }
+ } else {
+ GUILayout.Space(21);
+ }
+ GUILayout.Space(0);
+ var lastRect = GUILayoutUtility.GetLastRect();
+ // show events button when scrolls are hidden
+ if (!HotReloadRunTab.CanRenderBars(RunTabState) && !RunTabState.starting) {
+ using (new EditorGUILayout.VerticalScope()) {
+ GUILayout.FlexibleSpace();
+ var icon = HotReloadState.ShowingRedDot ? InvertibleIcon.EventsNew : InvertibleIcon.Events;
+ if (GUILayout.Button(new GUIContent("", GUIHelper.GetInvertibleIcon(icon)))) {
+ PopupWindow.Show(new Rect(lastRect.x, lastRect.y, 0, 0), HotReloadEventPopup.I);
+ }
+ GUILayout.FlexibleSpace();
+ }
+ GUILayout.Space(3f);
+ }
+ if (alertsShown) {
+ using (new EditorGUILayout.VerticalScope()) {
+ GUILayout.FlexibleSpace();
+ HotReloadTimelineHelper.RenderAlertFilters();
+ GUILayout.FlexibleSpace();
+ }
+ }
+
+ GUILayout.FlexibleSpace();
+ if (troubleshootingShown) {
+ using (new EditorGUILayout.VerticalScope()) {
+ GUILayout.FlexibleSpace();
+ autoRefreshTroubleshootingBtn.OnGUI();
+ GUILayout.FlexibleSpace();
+ }
+ GUILayout.Space(21);
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs.meta
new file mode 100644
index 000000000..8bd703d2e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: f62a84c0b148b0a4582bdd9f1a69e6d3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/HotReloadWindow.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs
new file mode 100644
index 000000000..17f2f503e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs
@@ -0,0 +1,7 @@
+namespace SingularityGroup.HotReload.Editor {
+ enum ShowOnStartupEnum {
+ Always,
+ OnNewVersion,
+ Never,
+ }
+}
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs.meta
new file mode 100644
index 000000000..e9f95215b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 809f47245f717ad41996974be2443feb
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/ShowOnStartupEnum.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/Styles.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles.meta
new file mode 100644
index 000000000..48002b63e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 83e25ceea0bb7cd4ebf04b724bb0584c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs
new file mode 100644
index 000000000..4f4ede9c1
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs
@@ -0,0 +1,777 @@
+using UnityEditor;
+using UnityEngine;
+using System.Reflection;
+
+namespace SingularityGroup.HotReload.Editor {
+ internal static class HotReloadWindowStyles {
+ private static GUIStyle h1TitleStyle;
+ private static GUIStyle h1TitleCenteredStyle;
+ private static GUIStyle h2TitleStyle;
+ private static GUIStyle h3TitleStyle;
+ private static GUIStyle h3TitleWrapStyle;
+ private static GUIStyle h4TitleStyle;
+ private static GUIStyle h5TitleStyle;
+ private static GUIStyle boxStyle;
+ private static GUIStyle wrapStyle;
+ private static GUIStyle noPaddingMiddleLeftStyle;
+ private static GUIStyle middleLeftStyle;
+ private static GUIStyle middleCenterStyle;
+ private static GUIStyle mediumMiddleCenterStyle;
+ private static GUIStyle textFieldWrapStyle;
+ private static GUIStyle foldoutStyle;
+ private static GUIStyle h3CenterTitleStyle;
+ private static GUIStyle logoStyle;
+ private static GUIStyle changelogPointersStyle;
+ private static GUIStyle recompileButtonStyle;
+ private static GUIStyle indicationIconStyle;
+ private static GUIStyle indicationAlertIconStyle;
+ private static GUIStyle startButtonStyle;
+ private static GUIStyle stopButtonStyle;
+ private static GUIStyle eventFilters;
+ private static GUIStyle sectionOuterBoxCompactStyle;
+ private static GUIStyle sectionInnerBoxStyle;
+ private static GUIStyle sectionInnerBoxWideStyle;
+ private static GUIStyle changelogSectionInnerBoxStyle;
+ private static GUIStyle indicationBoxStyle;
+ private static GUIStyle linkStyle;
+ private static GUIStyle labelStyle;
+ private static GUIStyle progressBarBarStyle;
+ private static GUIStyle section;
+ private static GUIStyle scroll;
+ private static GUIStyle barStyle;
+ private static GUIStyle barBgStyle;
+ private static GUIStyle barChildStyle;
+ private static GUIStyle barFoldoutStyle;
+ private static GUIStyle timestampStyle;
+ private static GUIStyle clickableLabelBoldStyle;
+ private static GUIStyle _footerStyle;
+ private static GUIStyle _emptyListText;
+ private static GUIStyle _stacktraceTextAreaStyle;
+ private static GUIStyle _customFoldoutStyle;
+ private static GUIStyle _entryBoxStyle;
+ private static GUIStyle _childEntryBoxStyle;
+ private static GUIStyle _removeIconStyle;
+ private static GUIStyle upgradeLicenseButtonStyle;
+ private static GUIStyle upgradeLicenseButtonOverlayStyle;
+ private static GUIStyle upgradeButtonStyle;
+ private static GUIStyle hideButtonStyle;
+ private static GUIStyle dynamicSection;
+ private static GUIStyle dynamicSectionHelpTab;
+ private static GUIStyle helpTabButton;
+ private static GUIStyle indicationHelpBox;
+ private static GUIStyle notificationsTitleStyle;
+
+ private static Color32? darkModeLinkColor;
+ private static Color32? lightModeModeLinkColor;
+
+ public static bool IsDarkMode => EditorGUIUtility.isProSkin;
+ public static int windowScreenWidth => HotReloadWindow.Current ? (int)HotReloadWindow.Current.position.width : Screen.width;
+ public static int windowScreenHeight => HotReloadWindow.Current ? (int)HotReloadWindow.Current.position.height : Screen.height;
+ public static GUIStyle H1TitleStyle {
+ get {
+ if (h1TitleStyle == null) {
+ h1TitleStyle = new GUIStyle(EditorStyles.label);
+ h1TitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h1TitleStyle.fontStyle = FontStyle.Bold;
+ h1TitleStyle.fontSize = 16;
+ h1TitleStyle.padding.top = 5;
+ h1TitleStyle.padding.bottom = 5;
+ }
+ return h1TitleStyle;
+ }
+ }
+
+ public static GUIStyle FooterStyle {
+ get {
+ if (_footerStyle == null) {
+ _footerStyle = new GUIStyle();
+ _footerStyle.fixedHeight = 28;
+ }
+ return _footerStyle;
+ }
+ }
+
+ public static GUIStyle H1TitleCenteredStyle {
+ get {
+ if (h1TitleCenteredStyle == null) {
+ h1TitleCenteredStyle = new GUIStyle(H1TitleStyle);
+ h1TitleCenteredStyle.alignment = TextAnchor.MiddleCenter;
+ }
+ return h1TitleCenteredStyle;
+ }
+ }
+
+ public static GUIStyle H2TitleStyle {
+ get {
+ if (h2TitleStyle == null) {
+ h2TitleStyle = new GUIStyle(EditorStyles.label);
+ h2TitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h2TitleStyle.fontStyle = FontStyle.Bold;
+ h2TitleStyle.fontSize = 14;
+ h2TitleStyle.padding.top = 5;
+ h2TitleStyle.padding.bottom = 5;
+ }
+ return h2TitleStyle;
+ }
+ }
+
+ public static GUIStyle H3TitleStyle {
+ get {
+ if (h3TitleStyle == null) {
+ h3TitleStyle = new GUIStyle(EditorStyles.label);
+ h3TitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h3TitleStyle.fontStyle = FontStyle.Bold;
+ h3TitleStyle.fontSize = 12;
+ h3TitleStyle.padding.top = 5;
+ h3TitleStyle.padding.bottom = 5;
+ }
+ return h3TitleStyle;
+ }
+ }
+
+ public static GUIStyle NotificationsTitleStyle {
+ get {
+ if (notificationsTitleStyle == null) {
+ notificationsTitleStyle = new GUIStyle(HotReloadWindowStyles.H3TitleStyle);
+ notificationsTitleStyle.padding.bottom = 0;
+ notificationsTitleStyle.padding.top = 0;
+ }
+ return notificationsTitleStyle;
+ }
+ }
+
+ public static GUIStyle H3TitleWrapStyle {
+ get {
+ if (h3TitleWrapStyle == null) {
+ h3TitleWrapStyle = new GUIStyle(H3TitleStyle);
+ h3TitleWrapStyle.wordWrap = true;
+ }
+ return h3TitleWrapStyle;
+ }
+ }
+
+ public static GUIStyle H3CenteredTitleStyle {
+ get {
+ if (h3CenterTitleStyle == null) {
+ h3CenterTitleStyle = new GUIStyle(EditorStyles.label);
+ h3CenterTitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h3CenterTitleStyle.fontStyle = FontStyle.Bold;
+ h3CenterTitleStyle.alignment = TextAnchor.MiddleCenter;
+ h3CenterTitleStyle.fontSize = 12;
+ }
+ return h3CenterTitleStyle;
+ }
+ }
+
+ public static GUIStyle H4TitleStyle {
+ get {
+ if (h4TitleStyle == null) {
+ h4TitleStyle = new GUIStyle(EditorStyles.label);
+ h4TitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h4TitleStyle.fontStyle = FontStyle.Bold;
+ h4TitleStyle.fontSize = 11;
+ }
+ return h4TitleStyle;
+ }
+ }
+
+ public static GUIStyle H5TitleStyle {
+ get {
+ if (h5TitleStyle == null) {
+ h5TitleStyle = new GUIStyle(EditorStyles.label);
+ h5TitleStyle.normal.textColor = EditorStyles.label.normal.textColor;
+ h5TitleStyle.fontStyle = FontStyle.Bold;
+ h5TitleStyle.fontSize = 10;
+ }
+ return h5TitleStyle;
+ }
+ }
+
+ public static GUIStyle LabelStyle {
+ get {
+ if (labelStyle == null) {
+ labelStyle = new GUIStyle(EditorStyles.label);
+ labelStyle.fontSize = 12;
+ labelStyle.clipping = TextClipping.Clip;
+ labelStyle.wordWrap = true;
+ }
+ return labelStyle;
+ }
+ }
+
+ public static GUIStyle BoxStyle {
+ get {
+ if (boxStyle == null) {
+ boxStyle = new GUIStyle(EditorStyles.helpBox);
+ boxStyle.normal.textColor = GUI.skin.label.normal.textColor;
+ boxStyle.fontStyle = FontStyle.Bold;
+ boxStyle.alignment = TextAnchor.UpperLeft;
+ }
+ if (!IsDarkMode) {
+ boxStyle.normal.background = Texture2D.blackTexture;
+ }
+ return boxStyle;
+ }
+ }
+
+ public static GUIStyle WrapStyle {
+ get {
+ if (wrapStyle == null) {
+ wrapStyle = new GUIStyle(EditorStyles.label);
+ wrapStyle.fontStyle = FontStyle.Normal;
+ wrapStyle.wordWrap = true;
+ }
+ return wrapStyle;
+ }
+ }
+
+ public static GUIStyle NoPaddingMiddleLeftStyle {
+ get {
+ if (noPaddingMiddleLeftStyle == null) {
+ noPaddingMiddleLeftStyle = new GUIStyle(EditorStyles.label);
+ noPaddingMiddleLeftStyle.normal.textColor = GUI.skin.label.normal.textColor;
+ noPaddingMiddleLeftStyle.padding = new RectOffset();
+ noPaddingMiddleLeftStyle.margin = new RectOffset();
+ noPaddingMiddleLeftStyle.alignment = TextAnchor.MiddleLeft;
+ }
+ return noPaddingMiddleLeftStyle;
+ }
+ }
+
+ public static GUIStyle MiddleLeftStyle {
+ get {
+ if (middleLeftStyle == null) {
+ middleLeftStyle = new GUIStyle(EditorStyles.label);
+ middleLeftStyle.fontStyle = FontStyle.Normal;
+ middleLeftStyle.alignment = TextAnchor.MiddleLeft;
+ }
+
+ return middleLeftStyle;
+ }
+ }
+
+ public static GUIStyle MiddleCenterStyle {
+ get {
+ if (middleCenterStyle == null) {
+ middleCenterStyle = new GUIStyle(EditorStyles.label);
+ middleCenterStyle.fontStyle = FontStyle.Normal;
+ middleCenterStyle.alignment = TextAnchor.MiddleCenter;
+ }
+ return middleCenterStyle;
+ }
+ }
+
+ public static GUIStyle MediumMiddleCenterStyle {
+ get {
+ if (mediumMiddleCenterStyle == null) {
+ mediumMiddleCenterStyle = new GUIStyle(EditorStyles.label);
+ mediumMiddleCenterStyle.fontStyle = FontStyle.Normal;
+ mediumMiddleCenterStyle.fontSize = 12;
+ mediumMiddleCenterStyle.alignment = TextAnchor.MiddleCenter;
+ }
+ return mediumMiddleCenterStyle;
+ }
+ }
+
+ public static GUIStyle TextFieldWrapStyle {
+ get {
+ if (textFieldWrapStyle == null) {
+ textFieldWrapStyle = new GUIStyle(EditorStyles.textField);
+ textFieldWrapStyle.wordWrap = true;
+ }
+ return textFieldWrapStyle;
+ }
+ }
+
+ public static GUIStyle FoldoutStyle {
+ get {
+ if (foldoutStyle == null) {
+ foldoutStyle = new GUIStyle(EditorStyles.foldout);
+ foldoutStyle.normal.textColor = GUI.skin.label.normal.textColor;
+ foldoutStyle.alignment = TextAnchor.MiddleLeft;
+ foldoutStyle.fontStyle = FontStyle.Bold;
+ foldoutStyle.fontSize = 12;
+ }
+ return foldoutStyle;
+ }
+ }
+
+ public static GUIStyle LogoStyle {
+ get {
+ if (logoStyle == null) {
+ logoStyle = new GUIStyle();
+ logoStyle.margin = new RectOffset(6, 6, 0, 0);
+ logoStyle.padding = new RectOffset(16, 16, 0, 0);
+ }
+ return logoStyle;
+ }
+ }
+
+ public static GUIStyle ChangelogPointerStyle {
+ get {
+ if (changelogPointersStyle == null) {
+ changelogPointersStyle = new GUIStyle(EditorStyles.label);
+ changelogPointersStyle.wordWrap = true;
+ changelogPointersStyle.fontSize = 12;
+ changelogPointersStyle.padding.left = 20;
+ }
+ return changelogPointersStyle;
+ }
+ }
+
+ public static GUIStyle IndicationIcon {
+ get {
+ if (indicationIconStyle == null) {
+ indicationIconStyle = new GUIStyle(H2TitleStyle);
+ indicationIconStyle.fixedHeight = 20;
+ }
+ indicationIconStyle.padding = new RectOffset(left: windowScreenWidth > Constants.IndicationTextHideWidth ? 7 : 5, right: windowScreenWidth > Constants.IndicationTextHideWidth ? 0 : -10, top: 1, bottom: 1);
+ return indicationIconStyle;
+ }
+ }
+
+ public static GUIStyle IndicationAlertIcon {
+ get {
+ if (indicationAlertIconStyle == null) {
+ indicationAlertIconStyle = new GUIStyle(H2TitleStyle);
+ indicationAlertIconStyle.padding = new RectOffset(left: 5, right: -7, top: 1, bottom: 1);
+ indicationAlertIconStyle.fixedHeight = 20;
+ }
+ return indicationAlertIconStyle;
+ }
+ }
+
+ public static GUIStyle RecompileButton {
+ get {
+ if (recompileButtonStyle == null) {
+ recompileButtonStyle = new GUIStyle(EditorStyles.miniButton);
+ recompileButtonStyle.margin.top = 17;
+ recompileButtonStyle.fixedHeight = 25;
+ recompileButtonStyle.margin.right = 5;
+ }
+ recompileButtonStyle.fixedWidth = windowScreenWidth > Constants.RecompileButtonTextHideWidth ? 95 : 30;
+ return recompileButtonStyle;
+ }
+ }
+
+ public static GUIStyle StartButton {
+ get {
+ if (startButtonStyle == null) {
+ startButtonStyle = new GUIStyle(EditorStyles.miniButton);
+ startButtonStyle.fixedHeight = 25;
+ startButtonStyle.padding.top = 6;
+ startButtonStyle.padding.bottom = 6;
+ startButtonStyle.margin.top = 17;
+ }
+ startButtonStyle.fixedWidth = windowScreenWidth > Constants.StartButtonTextHideWidth ? 70 : 30;
+ return startButtonStyle;
+ }
+ }
+
+ public static GUIStyle StopButton {
+ get {
+ if (stopButtonStyle == null) {
+ stopButtonStyle = new GUIStyle(EditorStyles.miniButton);
+ stopButtonStyle.fixedHeight = 25;
+ stopButtonStyle.margin.top = 17;
+ }
+ stopButtonStyle.fixedWidth = HotReloadWindowStyles.windowScreenWidth > Constants.StartButtonTextHideWidth ? 70 : 30;
+ return stopButtonStyle;
+ }
+ }
+
+ internal static GUIStyle EventFiltersStyle {
+ get {
+ if (eventFilters == null) {
+ eventFilters = new GUIStyle(EditorStyles.toolbarButton);
+ eventFilters.fontSize = 13;
+ // gets overwritten to content size
+ eventFilters.fixedHeight = 26;
+ eventFilters.fixedWidth = 50;
+ eventFilters.margin = new RectOffset(0, 0, 0, 0);
+ eventFilters.padding = new RectOffset(0, 0, 6, 6);
+ }
+ return eventFilters;
+ }
+ }
+
+ private static Texture2D _clearBackground;
+ private static Texture2D clearBackground {
+ get {
+ if (_clearBackground == null) {
+ _clearBackground = new Texture2D(1, 1);
+ _clearBackground.SetPixel(0, 0, Color.clear);
+ _clearBackground.Apply();
+ }
+ return _clearBackground;
+
+ }
+ }
+
+ public static GUIStyle SectionOuterBoxCompact {
+ get {
+ if (sectionOuterBoxCompactStyle == null) {
+ sectionOuterBoxCompactStyle = new GUIStyle();
+ sectionOuterBoxCompactStyle.padding.top = 10;
+ sectionOuterBoxCompactStyle.padding.bottom = 10;
+ }
+ // Looks better without a background
+ sectionOuterBoxCompactStyle.normal.background = clearBackground;
+ return sectionOuterBoxCompactStyle;
+ }
+ }
+
+ public static GUIStyle SectionInnerBox {
+ get {
+ if (sectionInnerBoxStyle == null) {
+ sectionInnerBoxStyle = new GUIStyle();
+ }
+ sectionInnerBoxStyle.padding = new RectOffset(left: 0, right: 0, top: 15, bottom: 0);
+ return sectionInnerBoxStyle;
+ }
+ }
+
+ public static GUIStyle SectionInnerBoxWide {
+ get {
+ if (sectionInnerBoxWideStyle == null) {
+ sectionInnerBoxWideStyle = new GUIStyle(EditorStyles.helpBox);
+ sectionInnerBoxWideStyle.padding.top = 15;
+ sectionInnerBoxWideStyle.padding.bottom = 15;
+ sectionInnerBoxWideStyle.padding.left = 10;
+ sectionInnerBoxWideStyle.padding.right = 10;
+ }
+ return sectionInnerBoxWideStyle;
+ }
+ }
+
+ public static GUIStyle DynamiSection {
+ get {
+ if (dynamicSection == null) {
+ dynamicSection = new GUIStyle();
+ }
+ var defaultPadding = 13;
+ if (windowScreenWidth > 600) {
+ var dynamicPadding = (windowScreenWidth - 600) / 2;
+ dynamicSection.padding.left = defaultPadding + dynamicPadding;
+ dynamicSection.padding.right = defaultPadding + dynamicPadding;
+ } else if (windowScreenWidth < Constants.IndicationTextHideWidth) {
+ dynamicSection.padding.left = 0;
+ dynamicSection.padding.right = 0;
+ } else {
+ dynamicSection.padding.left = 13;
+ dynamicSection.padding.right = 13;
+ }
+ return dynamicSection;
+ }
+ }
+
+ public static GUIStyle DynamicSectionHelpTab {
+ get {
+ if (dynamicSectionHelpTab == null) {
+ dynamicSectionHelpTab = new GUIStyle(DynamiSection);
+ }
+ dynamicSectionHelpTab.padding.left = DynamiSection.padding.left - 3;
+ dynamicSectionHelpTab.padding.right = DynamiSection.padding.right - 3;
+ return dynamicSectionHelpTab;
+ }
+ }
+
+ public static GUIStyle ChangelogSectionInnerBox {
+ get {
+ if (changelogSectionInnerBoxStyle == null) {
+ changelogSectionInnerBoxStyle = new GUIStyle(EditorStyles.helpBox);
+ changelogSectionInnerBoxStyle.margin.bottom = 10;
+ changelogSectionInnerBoxStyle.margin.top = 10;
+ }
+ return changelogSectionInnerBoxStyle;
+ }
+ }
+
+ public static GUIStyle IndicationBox {
+ get {
+ if (indicationBoxStyle == null) {
+ indicationBoxStyle = new GUIStyle();
+ }
+ indicationBoxStyle.margin.bottom = windowScreenWidth < 141 ? 0 : 10;
+ return indicationBoxStyle;
+ }
+ }
+
+
+ public static GUIStyle LinkStyle {
+ get {
+ if (linkStyle == null) {
+ linkStyle = new GUIStyle(EditorStyles.label);
+ linkStyle.fontStyle = FontStyle.Bold;
+ }
+ var color = IsDarkMode ? DarkModeLinkColor : LightModeModeLinkColor;
+ linkStyle.normal.textColor = color;
+ return linkStyle;
+ }
+ }
+
+ private static Color32 DarkModeLinkColor {
+ get {
+ if (darkModeLinkColor == null) {
+ darkModeLinkColor = new Color32(0x3F, 0x9F, 0xFF, 0xFF);
+ }
+ return darkModeLinkColor.Value;
+ }
+ }
+
+
+ private static Color32 LightModeModeLinkColor {
+ get {
+ if (lightModeModeLinkColor == null) {
+ lightModeModeLinkColor = new Color32(0x0F, 0x52, 0xD7, 0xFF);
+ }
+ return lightModeModeLinkColor.Value;
+ }
+ }
+ public static GUIStyle ProgressBarBarStyle {
+ get {
+ if (progressBarBarStyle != null) {
+ return progressBarBarStyle;
+ }
+ var styles = (EditorStyles)typeof(EditorStyles)
+ .GetField("s_Current", BindingFlags.Static | BindingFlags.NonPublic)
+ ?.GetValue(null);
+ var style = styles?.GetType()
+ .GetField("m_ProgressBarBar", BindingFlags.NonPublic | BindingFlags.Instance)
+ ?.GetValue(styles);
+ progressBarBarStyle = style != null ? (GUIStyle)style : GUIStyle.none;
+ return progressBarBarStyle;
+ }
+ }
+
+ internal static GUIStyle Section {
+ get {
+ if (section == null) {
+ section = new GUIStyle(EditorStyles.helpBox);
+ section.padding = new RectOffset(left: 10, right: 10, top: 10, bottom: 10);
+ section.margin = new RectOffset(left: 0, right: 0, top: 0, bottom: 0);
+ }
+ return section;
+ }
+ }
+ internal static GUIStyle Scroll {
+ get {
+ if (scroll == null) {
+ scroll = new GUIStyle(EditorStyles.helpBox);
+ }
+ if (IsDarkMode) {
+ scroll.normal.background = GUIHelper.ConvertTextureToColor(new Color(0,0,0,0.05f));
+ } else {
+ scroll.normal.background = GUIHelper.ConvertTextureToColor(new Color(0,0,0,0.03f));
+ }
+ return scroll;
+ }
+ }
+
+ internal static GUIStyle BarStyle {
+ get {
+ if (barStyle == null) {
+ barStyle = new GUIStyle(GUI.skin.label);
+ barStyle.fontSize = 12;
+ barStyle.alignment = TextAnchor.MiddleLeft;
+ barStyle.fixedHeight = 20;
+ barStyle.padding = new RectOffset(10, 5, 2, 2);
+ }
+ return barStyle;
+ }
+ }
+
+ internal static GUIStyle BarBackgroundStyle {
+ get {
+ if (barBgStyle == null) {
+ barBgStyle = new GUIStyle();
+ }
+ barBgStyle.normal.background = GUIHelper.ConvertTextureToColor(Color.clear);
+ barBgStyle.hover.background = GUIHelper.ConvertTextureToColor(new Color(0, 0, 0, 0.1f));
+ barBgStyle.focused.background = GUIHelper.ConvertTextureToColor(Color.clear);
+ barBgStyle.active.background = null;
+ return barBgStyle;
+ }
+ }
+
+ internal static GUIStyle ChildBarStyle {
+ get {
+ if (barChildStyle == null) {
+ barChildStyle = new GUIStyle(BarStyle);
+ barChildStyle.padding = new RectOffset(43, barChildStyle.padding.right, barChildStyle.padding.top, barChildStyle.padding.bottom);
+ }
+ return barChildStyle;
+ }
+ }
+
+ internal static GUIStyle FoldoutBarStyle {
+ get {
+ if (barFoldoutStyle == null) {
+ barFoldoutStyle = new GUIStyle(BarStyle);
+ barFoldoutStyle.padding = new RectOffset(23, barFoldoutStyle.padding.right, barFoldoutStyle.padding.top, barFoldoutStyle.padding.bottom);
+ }
+ return barFoldoutStyle;
+ }
+ }
+
+ public static GUIStyle TimestampStyle {
+ get {
+ if (timestampStyle == null) {
+ timestampStyle = new GUIStyle(GUI.skin.label);
+ }
+ if (IsDarkMode) {
+ timestampStyle.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
+ } else {
+ timestampStyle.normal.textColor = new Color(0.5f, 0.5f, 0.5f);
+ }
+ timestampStyle.hover = timestampStyle.normal;
+ return timestampStyle;
+ }
+ }
+
+ internal static GUIStyle ClickableLabelBoldStyle {
+ get {
+ if (clickableLabelBoldStyle == null) {
+ clickableLabelBoldStyle = new GUIStyle(LabelStyle);
+ clickableLabelBoldStyle.fontStyle = FontStyle.Bold;
+ clickableLabelBoldStyle.fontSize = 14;
+ clickableLabelBoldStyle.margin.left = 17;
+ clickableLabelBoldStyle.active.textColor = clickableLabelBoldStyle.normal.textColor;
+ }
+ return clickableLabelBoldStyle;
+ }
+ }
+
+ internal static GUIStyle EmptyListText {
+ get {
+ if (_emptyListText == null) {
+ _emptyListText = new GUIStyle();
+ _emptyListText.fontSize = 11;
+ _emptyListText.padding.left = 15;
+ _emptyListText.padding.top = 10;
+ _emptyListText.alignment = TextAnchor.MiddleCenter;
+ _emptyListText.normal.textColor = Color.gray;
+ }
+
+ return _emptyListText;
+ }
+ }
+
+ internal static GUIStyle StacktraceTextAreaStyle {
+ get {
+ if (_stacktraceTextAreaStyle == null) {
+ _stacktraceTextAreaStyle = new GUIStyle(EditorStyles.textArea);
+ _stacktraceTextAreaStyle.border = new RectOffset(0, 0, 0, 0);
+ }
+ return _stacktraceTextAreaStyle;
+ }
+ }
+
+ internal static GUIStyle EntryBoxStyle {
+ get {
+ if (_entryBoxStyle == null) {
+ _entryBoxStyle = new GUIStyle();
+ _entryBoxStyle.margin.left = 30;
+ }
+ return _entryBoxStyle;
+ }
+ }
+
+ internal static GUIStyle ChildEntryBoxStyle {
+ get {
+ if (_childEntryBoxStyle == null) {
+ _childEntryBoxStyle = new GUIStyle();
+ _childEntryBoxStyle.margin.left = 45;
+ }
+ return _childEntryBoxStyle;
+ }
+ }
+
+ internal static GUIStyle CustomFoldoutStyle {
+ get {
+ if (_customFoldoutStyle == null) {
+ _customFoldoutStyle = new GUIStyle(EditorStyles.foldout);
+ _customFoldoutStyle.margin.top = 4;
+ _customFoldoutStyle.margin.left = 0;
+ _customFoldoutStyle.padding.left = 0;
+ _customFoldoutStyle.fixedWidth = 100;
+ }
+ return _customFoldoutStyle;
+ }
+ }
+
+ internal static GUIStyle RemoveIconStyle {
+ get {
+ if (_removeIconStyle == null) {
+ _removeIconStyle = new GUIStyle();
+ _removeIconStyle.margin.top = 5;
+ _removeIconStyle.fixedWidth = 17;
+ _removeIconStyle.fixedHeight = 17;
+ }
+ return _removeIconStyle;
+ }
+ }
+
+ internal static GUIStyle UpgradeLicenseButtonStyle {
+ get {
+ if (upgradeLicenseButtonStyle == null) {
+ upgradeLicenseButtonStyle = new GUIStyle(GUI.skin.button);
+ upgradeLicenseButtonStyle.padding = new RectOffset(5, 5, 0, 0);
+ }
+ return upgradeLicenseButtonStyle;
+ }
+ }
+
+ internal static GUIStyle UpgradeLicenseButtonOverlayStyle {
+ get {
+ if (upgradeLicenseButtonOverlayStyle == null) {
+ upgradeLicenseButtonOverlayStyle = new GUIStyle(UpgradeLicenseButtonStyle);
+ }
+ return upgradeLicenseButtonOverlayStyle;
+ }
+ }
+
+ internal static GUIStyle UpgradeButtonStyle {
+ get {
+ if (upgradeButtonStyle == null) {
+ upgradeButtonStyle = new GUIStyle(EditorStyles.miniButton);
+ upgradeButtonStyle.fontStyle = FontStyle.Bold;
+ upgradeButtonStyle.fontSize = 14;
+ upgradeButtonStyle.fixedHeight = 24;
+ }
+ return upgradeButtonStyle;
+ }
+ }
+
+ internal static GUIStyle HideButtonStyle {
+ get {
+ if (hideButtonStyle == null) {
+ hideButtonStyle = new GUIStyle(GUI.skin.button);
+ }
+ return hideButtonStyle;
+ }
+ }
+
+ internal static GUIStyle HelpTabButton {
+ get {
+ if (helpTabButton == null) {
+ helpTabButton = new GUIStyle(GUI.skin.button);
+ helpTabButton.alignment = TextAnchor.MiddleLeft;
+ helpTabButton.padding.left = 10;
+ }
+ return helpTabButton;
+ }
+ }
+
+ internal static GUIStyle IndicationHelpBox {
+ get {
+ if (indicationHelpBox == null) {
+ indicationHelpBox = new GUIStyle(EditorStyles.helpBox);
+ indicationHelpBox.margin.right = 0;
+ indicationHelpBox.margin.left = 0;
+ }
+ return indicationHelpBox;
+ }
+ }
+ }
+}
diff --git a/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs.meta b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs.meta
new file mode 100644
index 000000000..5911603f9
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: c06a986e9e8c3874f9578f0002ff3a2d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Editor/Window/Styles/HotReloadWindowStyles.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/LICENSE.md b/Packages/com.singularitygroup.hotreload/LICENSE.md
new file mode 100644
index 000000000..b9eb62e5e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/LICENSE.md
@@ -0,0 +1,45 @@
+End User License Agreement (“EULA”) for Hot Reload for Unity (“Software”)
+Please read this End-User License Agreement ("Agreement") carefully before purchasing, downloading, or using Hot Reload for Unity ("Software").
+
+By purchasing, downloading or using the Software, you, the individual or entity (“End-User”), agree to be bound by this EULA as well as by our Terms and Conditions.
+
+If End-User does not agree to the terms of this Agreement, do not purchase, download or use the Software.
+
+The subject matter of this EULA is the licensing of the Software to End-User. The Software is licensed, not sold.
+
+License
+
+The Naughty Cult Ltd. (“Licensor”) grants End-User a revocable, non-exclusive, worldwide, non-transferable, limited license to download, install and use the Software for personal and commercial purposes in accordance with the terms of this Agreement and the terms set out in the Terms and Conditions.
+
+The Software is owned and copyrighted by The Naughty Cult Ltd.. Your license confers no title or ownership in the Software and should not be construed as a sale of any right in the Software.
+
+The Software is protected by copyright law and international treaty provisions. You acknowledge that no ownership of the intellectual property in the Software is transferred to you. You further acknowledge that The Naughty Cult Ltd. retains full ownership rights to the Software, and you will not acquire any rights to the Software except as outlined in this license. You agree that any copies of the Software will include the same proprietary notices found on and within the original Software.
+
+End-User's Rights and Obligations
+
+End-User may use the licensed Software only for its intended purpose. End-User may not modify, reproduce, distribute, sublicense, rent, lease or lend the Software.
+Each active license allows End-User to install and use the Software on a maximum of two devices associated with one specific Unity seat. End-User may not share the Software or the license key with any third party.
+
+You may not modify the Software or disable any licensing or control features of the Software without express permission from the Licensor. You agree that you will not attempt to reverse compile, modify, translate, or disassemble the Software in whole or in part.
+
+Once End-User's active license is terminated, End-User will not receive any new updates to the Software, and may not download, install, integrate or otherwise use versions of the Software released at any time hereafter, unless a license is activated.
+
+Termination
+This EULA will terminate automatically if End-User fails to comply with any of the terms and conditions of this Agreement. In such event, End-User must immediately stop using the Software and destroy all copies of the Software in End-User's possession.
+
+Governing Law
+This EULA shall be governed by the laws of the country in which the Licensor is headquartered without regard to its conflict of law provisions. We reserve the right to terminate or suspend your account, without notice or liability, for any reason, including breach of the Terms and Conditions and/or EULA.
+
+Limitation of Liability
+The Naughty Cult Ltd. and its affiliates shall not be held liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your use of or inability to use the Service, any conduct or content of any third party on the Service, any content obtained from the Service, or unauthorized access or alteration of your transmissions or content. This limitation applies regardless of whether the damages are based on warranty, contract, tort (including negligence), or any other legal theory, and even if we have been advised of the possibility of such damages.
+
+
+Disclaimer of Warranties
+
+The Service is provided on an "as is" and "as available" basis without any warranties of any kind, either express or implied. We do not warrant that the Service will be uninterrupted or error-free, or that any defects will be corrected. We also do not guarantee that the Service will meet your requirements.
+
+Waiver and Severability
+Our failure to enforce any right or provision of this EULA will not be deemed a waiver of such right or provision. In the event that any provision of these EULA is held to be invalid or unenforceable, the remaining provisions will remain in full force and effect.
+
+Entire Agreement
+This EULA constitutes the entire agreement between End-User and Licensor regarding the use of the Software and supersedes all prior agreements and understandings, whether written or oral.
diff --git a/Packages/com.singularitygroup.hotreload/LICENSE.md.meta b/Packages/com.singularitygroup.hotreload/LICENSE.md.meta
new file mode 100644
index 000000000..741a47def
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/LICENSE.md.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 0f0ed454ae8a66041bea966cdcee0f2e
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/LICENSE.md
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/README.md b/Packages/com.singularitygroup.hotreload/README.md
new file mode 100644
index 000000000..1c3096748
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/README.md
@@ -0,0 +1,9 @@
+
+
+# Hot Reload for Unity
+
+Edit **any C# function** and get immediate updates in your game. Hot Reload works with your existing project, no code changes required.
+
+Install instructions on https://hotreload.net/
+
+
diff --git a/Packages/com.singularitygroup.hotreload/README.md.meta b/Packages/com.singularitygroup.hotreload/README.md.meta
new file mode 100644
index 000000000..a5858a865
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/README.md.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: bdb53603710c4ae3b491b7885e5ff702
+timeCreated: 1674514875
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/README.md
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime.meta b/Packages/com.singularitygroup.hotreload/Runtime.meta
new file mode 100644
index 000000000..2b0c28248
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8026562867072c3409c904654ec3c17f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs b/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs
new file mode 100644
index 000000000..bad45db38
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs
@@ -0,0 +1,55 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System;
+using System.Collections;
+using UnityEngine;
+
+namespace SingularityGroup.HotReload {
+ class AppCallbackListener : MonoBehaviour {
+ ///
+ /// Reliable on Android and in the editor.
+ ///
+ ///
+ /// On iOS, OnApplicationPause is not called at expected moments
+ /// if the app has some background modes enabled in PlayerSettings -Troy.
+ ///
+ public static event Action onApplicationPause;
+
+ ///
+ /// Reliable on Android, iOS and in the editor.
+ ///
+ public static event Action onApplicationFocus;
+
+ static AppCallbackListener instance;
+ public static AppCallbackListener I => instance;
+
+ // Must be called early from Unity main thread (before any usages of the singleton I).
+ public static AppCallbackListener Init() {
+ if(instance) return instance;
+ var go = new GameObject("AppCallbackListener");
+ go.hideFlags |= HideFlags.HideInHierarchy;
+ DontDestroyOnLoad(go);
+ return instance = go.AddComponent();
+ }
+
+ public bool Paused { get; private set; } = false;
+
+ public void DelayedQuit(float seconds) {
+ StartCoroutine(delayedQuitRoutine(seconds));
+ }
+
+ IEnumerator delayedQuitRoutine(float seconds) {
+ yield return new WaitForSeconds(seconds);
+ Application.Quit();
+ }
+
+ void OnApplicationPause(bool paused) {
+ Paused = paused;
+ onApplicationPause?.Invoke(paused);
+ }
+
+ void OnApplicationFocus(bool playing) {
+ onApplicationFocus?.Invoke(playing);
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs.meta
new file mode 100644
index 000000000..815fab523
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: a989a17330b04c6fb8f91aa41ac14471
+timeCreated: 1674216227
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/AppCallbackListener.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs b/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs
new file mode 100644
index 000000000..c8a2d874b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs
@@ -0,0 +1,171 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System;
+using System.Collections.Generic;
+using System.IO;
+using JetBrains.Annotations;
+using SingularityGroup.HotReload.Newtonsoft.Json;
+using UnityEngine;
+using UnityEngine.Serialization;
+
+namespace SingularityGroup.HotReload {
+ ///
+ /// Information about the Unity Player build.
+ ///
+ ///
+ ///
+ /// This info is used by the HotReload Server to compile your project in the same way that the Unity Player build was compiled.
+ /// For example, when building for Android, Unity sets a bunch of define symbols like UNITY_ANDROID.
+ ///
+ ///
+ /// Information that changes between builds is generated at build-time and put in StreamingAssets/.
+ /// This approach means that builds do not need to modify a project file (making file dirty in git). For example,
+ /// whenever user makes a mono build, the CommitHash changes and we need to regenerate the BuildInfo.
+ ///
+ ///
+ [Serializable]
+ class BuildInfo {
+ ///
+ /// Uniquely identifies the Unity project.
+ ///
+ ///
+ /// Used on-device to check if Hot Reload server is compatible with the Unity project (same project).
+ /// When your computer has multiple Unity projects open, each project should provide a different value.
+ /// This identifier must also be the same between two different computers that are collaborating on the same project.
+ ///
+ ///
+ /// Edge-case: when a user copy pastes an entire Unity project and has both open at once,
+ /// then it's fine for this identifier to be the same.
+ ///
+ ///
+ public string projectIdentifier;
+
+ ///
+ /// Git commit hash
+ ///
+ ///
+ /// Used to detect that your code is different to when the build was made.
+ ///
+ public string commitHash;
+
+ ///
+ /// List of define symbols that were active when this build was made.
+ ///
+ ///
+ /// Separate the symbols with a semi-colon character ';'
+ ///
+ public string defineSymbols;
+
+ ///
+ /// A regex of C# project names (*.csproj) to be omitted from compilation.
+ ///
+ ///
+ /// "MyTests|MyEditorAssembly"
+ ///
+ [FormerlySerializedAs("projectExclusionRegex")]
+ public string projectOmissionRegex;
+
+ ///
+ /// The computer that made the Android (or Standalone etc) build.
+ /// The hostname (ip address) where Hot Reload server would be listening.
+ ///
+ public string buildMachineHostName;
+
+ ///
+ /// The computer that made the Android (or Standalone etc) build.
+ /// The port where Hot Reload server would be listening.
+ ///
+ public int buildMachinePort;
+
+ ///
+ /// Selected build target in Unity Editor.
+ ///
+ public string activeBuildTarget;
+
+ ///
+ /// Used to pass in the origin onto the phone which is used to identify the correct server.
+ ///
+ public string buildMachineRequestOrigin;
+
+ [JsonIgnore]
+ public HashSet DefineSymbolsAsHashSet {
+ get {
+ var symbols = defineSymbols.Trim().Split(';');
+ // split on an empty string produces 1 empty string
+ if (symbols.Length == 1 && symbols[0] == string.Empty) {
+ return new HashSet();
+ }
+ return new HashSet(symbols);
+ }
+ }
+
+ [JsonIgnore]
+ public PatchServerInfo BuildMachineServer {
+ get {
+ if (buildMachineHostName == null || buildMachinePort == 0) {
+ return null;
+ }
+ return new PatchServerInfo(buildMachineHostName, buildMachinePort, commitHash, null, customRequestOrigin: buildMachineRequestOrigin);
+ }
+ }
+
+ public string ToJson() {
+ return JsonConvert.SerializeObject(this);
+ }
+
+ [CanBeNull]
+ public static BuildInfo FromJson(string json) {
+ if (string.IsNullOrEmpty(json)) {
+ return null;
+ }
+ return JsonConvert.DeserializeObject(json);
+ }
+
+ ///
+ /// Path to read/write the json file to.
+ ///
+ /// A filepath that is inside the player build
+ public static string GetStoredPath() {
+ return Path.Combine(Application.streamingAssetsPath, GetStoredName());
+ }
+
+ public static string GetStoredName() {
+ return "HotReload_BuildInfo.json";
+ }
+
+ /// True if the commit hashes are definately different, otherwise False
+ public bool IsDifferentCommit(string remoteCommit) {
+ if (commitHash == PatchServerInfo.UnknownCommitHash) {
+ return false;
+ }
+
+ return !SameCommit(commitHash, remoteCommit);
+ }
+
+ ///
+ /// Checks whether the commits are equivalent.
+ ///
+ ///
+ ///
+ /// False if the commit hashes are definately different, otherwise True
+ public static bool SameCommit(string commitA, string commitB) {
+ if (commitA == null) {
+ // unknown commit hash, so approve anything
+ return true;
+ }
+
+ if (commitA.Length == commitB.Length) {
+ return commitA == commitB;
+ } else if (commitA.Length >= 6 && commitB.Length >= 6) {
+ // depending on OS, the git log pretty output has different length (7 or 8 chars)
+ // if the longer hash starts with the shorter hash, return true
+ // Assumption: commits have different length.
+ var longer = commitA.Length > commitB.Length ? commitA : commitB;
+ var shorter = commitA.Length > commitB.Length ? commitB : commitA;
+
+ return longer.StartsWith(shorter);
+ }
+ return false;
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs.meta
new file mode 100644
index 000000000..15c30e2c4
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 39bb7d4cd9324f31b1882354b1cde762
+timeCreated: 1673776105
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/BuildInfo.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Burst.meta b/Packages/com.singularitygroup.hotreload/Runtime/Burst.meta
new file mode 100644
index 000000000..f58389b1d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Burst.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d10d24dc13744197a80f50ac50f5d1a1
+timeCreated: 1675449699
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs b/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs
new file mode 100644
index 000000000..344095d8c
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs
@@ -0,0 +1,24 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System.Reflection;
+using SingularityGroup.HotReload.DTO;
+
+namespace SingularityGroup.HotReload.Burst {
+ public static class JobHotReloadUtility {
+ public static void HotReloadBurstCompiledJobs(CodePatch patch, Module module) {
+ JobPatchUtility.PatchBurstCompiledJobs(patch, module, unityMajorVersion:
+ #if UNITY_2022_2_OR_NEWER
+ 2022
+ #elif UNITY_2021_3_OR_NEWER
+ 2021
+ #elif UNITY_2020_3_OR_NEWER
+ 2020
+ #elif UNITY_2019_4_OR_NEWER
+ 2019
+ #else
+ 2018
+ #endif
+ );
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs.meta
new file mode 100644
index 000000000..766dc0c13
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b9980b40e3ff447b94e71de238a37fb7
+timeCreated: 1676825622
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Burst/JobHotReloadUtility.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs b/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs
new file mode 100644
index 000000000..af648737e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs
@@ -0,0 +1,41 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace SingularityGroup.HotReload {
+ static class BurstChecker {
+ //Use names instead of the types directly for compat with older unity versions
+ const string whitelistAttrName = "BurstCompileAttribute";
+ const string blacklistAttrName = "BurstDiscardAttribute";
+
+ public static bool IsBurstCompiled(MethodBase method) {
+ //blacklist has precedence over whitelist
+ if(HasAttr(method.GetCustomAttributes(), blacklistAttrName)) {
+ return false;
+ }
+ if(HasAttr(method.GetCustomAttributes(), whitelistAttrName)) {
+ return true;
+ }
+ //Static methods inside a [BurstCompile] type are not burst compiled by default
+ if(method.DeclaringType == null || method.IsStatic) {
+ return false;
+ }
+ if(HasAttr(method.DeclaringType.GetCustomAttributes(), whitelistAttrName)) {
+ return true;
+ }
+ //No matching attributes
+ return false;
+ }
+
+ static bool HasAttr(IEnumerable attributes, string name) {
+ foreach (var attr in attributes) {
+ if(attr.GetType().Name == name) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs.meta
new file mode 100644
index 000000000..81f2cd52e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 20dfd902e9fc4485aeef90b9add39c0a
+timeCreated: 1675404225
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/BurstChecker.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs b/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs
new file mode 100644
index 000000000..e97a499f6
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs
@@ -0,0 +1,423 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Threading;
+using System.Threading.Tasks;
+using SingularityGroup.HotReload.DTO;
+using JetBrains.Annotations;
+using SingularityGroup.HotReload.Burst;
+using SingularityGroup.HotReload.HarmonyLib;
+using SingularityGroup.HotReload.JsonConverters;
+using SingularityGroup.HotReload.Newtonsoft.Json;
+using SingularityGroup.HotReload.RuntimeDependencies;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+
+[assembly: InternalsVisibleTo("SingularityGroup.HotReload.Editor")]
+
+namespace SingularityGroup.HotReload {
+ class RegisterPatchesResult {
+ public readonly List patchedMethods = new List();
+ public readonly List addedMethods = new List();
+ public readonly List> patchFailures = new List>();
+ }
+
+ class CodePatcher {
+ public static readonly CodePatcher I = new CodePatcher();
+ /// Tag for use in Debug.Log.
+ public const string TAG = "HotReload";
+
+ internal int PatchesApplied { get; private set; }
+ string PersistencePath {get;}
+
+ List pendingPatches;
+ readonly List patchHistory;
+ readonly HashSet seenResponses = new HashSet();
+ string[] assemblySearchPaths;
+ SymbolResolver symbolResolver;
+ readonly string tmpDir;
+
+ CodePatcher() {
+ pendingPatches = new List();
+ patchHistory = new List();
+ if(UnityHelper.IsEditor) {
+ tmpDir = PackageConst.LibraryCachePath;
+ } else {
+ tmpDir = UnityHelper.TemporaryCachePath;
+ }
+ if(!UnityHelper.IsEditor) {
+ PersistencePath = Path.Combine(UnityHelper.PersistentDataPath, "HotReload", "patches.json");
+ try {
+ LoadPatches(PersistencePath);
+ } catch(Exception ex) {
+ Log.Error("Encountered exception when loading patches from disk:\n{0}", ex);
+ }
+ }
+ }
+
+ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
+ static void InitializeUnityEvents() {
+ UnityEventHelper.Initialize();
+ }
+
+
+ void LoadPatches(string filePath) {
+ PlayerLog("Loading patches from file {0}", filePath);
+ var file = new FileInfo(filePath);
+ if(file.Exists) {
+ var bytes = File.ReadAllText(filePath);
+ var patches = JsonConvert.DeserializeObject>(bytes);
+ PlayerLog("Loaded {0} patches from disk", patches.Count.ToString());
+ foreach (var patch in patches) {
+ RegisterPatches(patch, persist: false);
+ }
+ }
+ }
+
+
+ internal IReadOnlyList PendingPatches => pendingPatches;
+ internal SymbolResolver SymbolResolver => symbolResolver;
+
+
+ internal string[] GetAssemblySearchPaths() {
+ EnsureSymbolResolver();
+ return assemblySearchPaths;
+ }
+
+ internal RegisterPatchesResult RegisterPatches(MethodPatchResponse patches, bool persist) {
+ PlayerLog("Register patches.\nWarnings: {0} \nMethods:\n{1}", string.Join("\n", patches.failures), string.Join("\n", patches.patches.SelectMany(p => p.modifiedMethods).Select(m => m.displayName)));
+ pendingPatches.Add(patches);
+ return ApplyPatches(persist);
+ }
+
+ RegisterPatchesResult ApplyPatches(bool persist) {
+ PlayerLog("ApplyPatches. {0} patches pending.", pendingPatches.Count);
+ EnsureSymbolResolver();
+
+ var result = new RegisterPatchesResult();
+
+ try {
+ int count = 0;
+ foreach(var response in pendingPatches) {
+ if (seenResponses.Contains(response.id)) {
+ continue;
+ }
+ HandleMethodPatchResponse(response, result);
+ patchHistory.Add(response);
+
+ seenResponses.Add(response.id);
+ count += response.patches.Length;
+ }
+ if (count > 0) {
+ Dispatch.OnHotReload().Forget();
+ }
+ } catch(Exception ex) {
+ Log.Warning("Exception occured when handling method patch. Exception:\n{0}", ex);
+ } finally {
+ pendingPatches.Clear();
+ }
+
+ if(PersistencePath != null && persist) {
+ SaveAppliedPatches(PersistencePath).Forget();
+ }
+
+ PatchesApplied++;
+ return result;
+ }
+
+ internal void ClearPatchedMethods() {
+ PatchesApplied = 0;
+ }
+
+ static bool didLog;
+ [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
+ static void WarnOnSceneLoad() {
+ SceneManager.sceneLoaded += (_, __) => {
+ if (didLog || !UnityEventHelper.UnityMethodsAdded()) {
+ return;
+ }
+ Log.Warning("A new Scene was loaded while new unity event methods were added at runtime. MonoBehaviours in the Scene will not trigger these new events.");
+ didLog = true;
+ };
+ }
+
+ void HandleMethodPatchResponse(MethodPatchResponse response, RegisterPatchesResult result) {
+ EnsureSymbolResolver();
+
+ foreach(var patch in response.patches) {
+ try {
+ var asm = Assembly.Load(patch.patchAssembly, patch.patchPdb);
+
+ var module = asm.GetLoadedModules()[0];
+ foreach(var sMethod in patch.newMethods) {
+ var newMethod = module.ResolveMethod(sMethod.metadataToken);
+ try {
+ UnityEventHelper.EnsureUnityEventMethod(newMethod);
+ } catch(Exception ex) {
+ Log.Warning("Encountered exception in EnsureUnityEventMethod: {0} {1}", ex.GetType().Name, ex.Message);
+ }
+ MethodUtils.DisableVisibilityChecks(newMethod);
+ if (!patch.patchMethods.Any(m => m.metadataToken == sMethod.metadataToken)) {
+ result.addedMethods.Add(sMethod);
+ }
+ }
+
+ symbolResolver.AddAssembly(asm);
+ for (int i = 0; i < patch.modifiedMethods.Length; i++) {
+ var sOriginalMethod = patch.modifiedMethods[i];
+ var sPatchMethod = patch.patchMethods[i];
+ var err = PatchMethod(module: module, sOriginalMethod: sOriginalMethod, sPatchMethod: sPatchMethod, containsBurstJobs: patch.unityJobs.Length > 0, patchesResult: result);
+ if (!string.IsNullOrEmpty(err)) {
+ result.patchFailures.Add(Tuple.Create(sOriginalMethod, err));
+ }
+ }
+ JobHotReloadUtility.HotReloadBurstCompiledJobs(patch, module);
+ } catch(Exception ex) {
+ Log.Warning("Failed to apply patch with id: {0}\n{1}", patch.patchId, ex);
+ }
+ }
+ }
+
+ string PatchMethod(Module module, SMethod sOriginalMethod, SMethod sPatchMethod, bool containsBurstJobs, RegisterPatchesResult patchesResult) {
+ try {
+ var patchMethod = module.ResolveMethod(sPatchMethod.metadataToken);
+ var start = DateTime.UtcNow;
+ var state = TryResolveMethod(sOriginalMethod, patchMethod);
+
+ if (DateTime.UtcNow - start > TimeSpan.FromMilliseconds(500)) {
+ Log.Info("Hot Reload apply took {0}", (DateTime.UtcNow - start).TotalMilliseconds);
+ }
+
+ if(state.match == null) {
+ var error =
+ "Method mismatch: {0}, patch: {1}. This can have multiple reasons:\n"
+ + "1. You are running the Editor multiple times for the same project using symlinks, and are making changes from the symlink project\n"
+ + "2. A bug in Hot Reload. Please send us a reproduce (code before/after), and we'll get it fixed for you\n"
+ ;
+ Log.Warning(error, sOriginalMethod.simpleName, patchMethod.Name);
+
+ return string.Format(error, sOriginalMethod.simpleName, patchMethod.Name);
+ }
+
+ PlayerLog("Detour method {0:X8} {1}, offset: {2}", sOriginalMethod.metadataToken, patchMethod.Name, state.offset);
+ DetourResult result;
+ DetourApi.DetourMethod(state.match, patchMethod, out result);
+ if (result.success) {
+ patchesResult.patchedMethods.Add(sOriginalMethod);
+ try {
+ Dispatch.OnHotReloadLocal(state.match, patchMethod);
+ } catch {
+ // best effort
+ }
+ return null;
+ } else {
+ if(result.exception is InvalidProgramException && containsBurstJobs) {
+ //ignore. The method is likely burst compiled and can't be patched
+ return null;
+ } else {
+ return HandleMethodPatchFailure(sOriginalMethod, result.exception);
+ }
+ }
+ } catch(Exception ex) {
+ return HandleMethodPatchFailure(sOriginalMethod, ex);
+ }
+ }
+
+ struct ResolveMethodState {
+ public readonly SMethod originalMethod;
+ public readonly int offset;
+ public readonly bool tryLowerTokens;
+ public readonly bool tryHigherTokens;
+ public readonly MethodBase match;
+ public ResolveMethodState(SMethod originalMethod, int offset, bool tryLowerTokens, bool tryHigherTokens, MethodBase match) {
+ this.originalMethod = originalMethod;
+ this.offset = offset;
+ this.tryLowerTokens = tryLowerTokens;
+ this.tryHigherTokens = tryHigherTokens;
+ this.match = match;
+ }
+
+ public ResolveMethodState With(bool? tryLowerTokens = null, bool? tryHigherTokens = null, MethodBase match = null, int? offset = null) {
+ return new ResolveMethodState(
+ originalMethod,
+ offset ?? this.offset,
+ tryLowerTokens ?? this.tryLowerTokens,
+ tryHigherTokens ?? this.tryHigherTokens,
+ match ?? this.match);
+ }
+ }
+
+ struct ResolveMethodResult {
+ public readonly MethodBase resolvedMethod;
+ public readonly bool tokenOutOfRange;
+ public ResolveMethodResult(MethodBase resolvedMethod, bool tokenOutOfRange) {
+ this.resolvedMethod = resolvedMethod;
+ this.tokenOutOfRange = tokenOutOfRange;
+ }
+ }
+
+ ResolveMethodState TryResolveMethod(SMethod originalMethod, MethodBase patchMethod) {
+ var state = new ResolveMethodState(originalMethod, offset: 0, tryLowerTokens: true, tryHigherTokens: true, match: null);
+ var result = TryResolveMethodCore(state.originalMethod, patchMethod, 0);
+ if(result.resolvedMethod != null) {
+ return state.With(match: result.resolvedMethod);
+ }
+ state = state.With(offset: 1);
+ const int tries = 100000;
+ while(state.offset <= tries && (state.tryHigherTokens || state.tryLowerTokens)) {
+ if(state.tryHigherTokens) {
+ result = TryResolveMethodCore(originalMethod, patchMethod, state.offset);
+ if(result.resolvedMethod != null) {
+ return state.With(match: result.resolvedMethod);
+ } else if(result.tokenOutOfRange) {
+ state = state.With(tryHigherTokens: false);
+ }
+ }
+ if(state.tryLowerTokens) {
+ result = TryResolveMethodCore(originalMethod, patchMethod, -state.offset);
+ if(result.resolvedMethod != null) {
+ return state.With(match: result.resolvedMethod);
+ } else if(result.tokenOutOfRange) {
+ state = state.With(tryLowerTokens: false);
+ }
+ }
+ state = state.With(offset: state.offset + 1);
+ }
+ return state;
+ }
+
+
+ ResolveMethodResult TryResolveMethodCore(SMethod methodToResolve, MethodBase patchMethod, int offset) {
+ bool tokenOutOfRange = false;
+ MethodBase resolvedMethod = null;
+ try {
+ resolvedMethod = TryGetMethodBaseWithRelativeToken(methodToResolve, offset);
+ if(!MethodCompatiblity.AreMethodsCompatible(resolvedMethod, patchMethod)) {
+ resolvedMethod = null;
+ }
+ } catch (SymbolResolvingFailedException ex) when(ex.InnerException is ArgumentOutOfRangeException) {
+ tokenOutOfRange = true;
+ } catch (ArgumentOutOfRangeException) {
+ tokenOutOfRange = true;
+ }
+ return new ResolveMethodResult(resolvedMethod, tokenOutOfRange);
+ }
+
+ MethodBase TryGetMethodBaseWithRelativeToken(SMethod sOriginalMethod, int offset) {
+ return symbolResolver.Resolve(new SMethod(sOriginalMethod.assemblyName,
+ sOriginalMethod.displayName,
+ sOriginalMethod.metadataToken + offset,
+ sOriginalMethod.genericTypeArguments,
+ sOriginalMethod.genericTypeArguments,
+ sOriginalMethod.simpleName));
+ }
+
+ string HandleMethodPatchFailure(SMethod method, Exception exception) {
+ var err = $"Failed to apply patch for method {method.displayName} in assembly {method.assemblyName}\n{exception}";
+ Log.Warning(err);
+ return err;
+ }
+
+ void EnsureSymbolResolver() {
+ if (symbolResolver == null) {
+ var searchPaths = new HashSet();
+ var assemblies = AppDomain.CurrentDomain.GetAssemblies();
+ var assembliesByName = new Dictionary>();
+ for (var i = 0; i < assemblies.Length; i++) {
+ var name = assemblies[i].GetNameSafe();
+ List list;
+ if (!assembliesByName.TryGetValue(name, out list)) {
+ assembliesByName.Add(name, list = new List());
+ }
+ list.Add(assemblies[i]);
+
+ if(assemblies[i].IsDynamic) continue;
+
+ var location = assemblies[i].Location;
+ if(File.Exists(location)) {
+ searchPaths.Add(Path.GetDirectoryName(Path.GetFullPath(location)));
+ }
+ }
+ symbolResolver = new SymbolResolver(assembliesByName);
+ assemblySearchPaths = searchPaths.ToArray();
+ }
+ }
+
+
+ //Allow one save operation at a time.
+ readonly SemaphoreSlim gate = new SemaphoreSlim(1);
+ public async Task SaveAppliedPatches(string filePath) {
+ await gate.WaitAsync();
+ try {
+ await SaveAppliedPatchesNoLock(filePath);
+ } finally {
+ gate.Release();
+ }
+ }
+
+ async Task SaveAppliedPatchesNoLock(string filePath) {
+ if (filePath == null) {
+ throw new ArgumentNullException(nameof(filePath));
+ }
+ filePath = Path.GetFullPath(filePath);
+ var dir = Path.GetDirectoryName(filePath);
+ if(string.IsNullOrEmpty(dir)) {
+ throw new ArgumentException("Invalid path: " + filePath, nameof(filePath));
+ }
+ Directory.CreateDirectory(dir);
+ var history = patchHistory.ToList();
+
+ PlayerLog("Saving {0} applied patches to {1}", history.Count, filePath);
+
+ await Task.Run(() => {
+ using (FileStream fs = File.Create(filePath))
+ using (StreamWriter sw = new StreamWriter(fs))
+ using (JsonWriter writer = new JsonTextWriter(sw)) {
+ JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings {
+ Converters = new List { new MethodPatchResponsesConverter() }
+ });
+ serializer.Serialize(writer, history);
+ }
+ });
+ }
+
+ public void InitPatchesBlocked(string filePath) {
+ seenResponses.Clear();
+ var file = new FileInfo(filePath);
+ if (file.Exists) {
+ using(var fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.SequentialScan))
+ using (StreamReader sr = new StreamReader(fs))
+ using (JsonReader reader = new JsonTextReader(sr)) {
+ JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings {
+ Converters = new List { new MethodPatchResponsesConverter() }
+ });
+ pendingPatches = serializer.Deserialize>(reader);
+ }
+ ApplyPatches(persist: false);
+ }
+ }
+
+
+ [StringFormatMethod("format")]
+ static void PlayerLog(string format, params object[] args) {
+#if !UNITY_EDITOR
+ HotReload.Log.Info(format, args);
+#endif //!UNITY_EDITOR
+ }
+
+ class SimpleMethodComparer : IEqualityComparer {
+ public static readonly SimpleMethodComparer I = new SimpleMethodComparer();
+ SimpleMethodComparer() { }
+ public bool Equals(SMethod x, SMethod y) => x.metadataToken == y.metadataToken;
+ public int GetHashCode(SMethod x) {
+ return x.metadataToken;
+ }
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs.meta
new file mode 100644
index 000000000..17d975b6b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: b6c8477b90c3f384f8124d62a5dc6e74
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/CodePatcher.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo.meta
new file mode 100644
index 000000000..d67b17944
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 55206f9d10104e838249bf8ac177e332
+timeCreated: 1677091847
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes.meta
new file mode 100644
index 000000000..a16c17b2f
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c895e9065d763824f9211fa8054f7c2e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity
new file mode 100644
index 000000000..a967bee59
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity
@@ -0,0 +1,1121 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 463b4a464af955e4d8d6b0a2923d94d0, type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &19295889
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 19295893}
+ - component: {fileID: 19295892}
+ - component: {fileID: 19295891}
+ - component: {fileID: 19295890}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &19295890
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &19295891
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &19295892
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &19295893
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ 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: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &249270788
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 249270791}
+ - component: {fileID: 249270790}
+ - component: {fileID: 249270789}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &249270789
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_Enabled: 1
+--- !u!20 &249270790
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &249270791
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &460271676
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 460271677}
+ - component: {fileID: 460271679}
+ - component: {fileID: 460271678}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &460271677
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ 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: 511172213}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -28.681885, y: -20.492146}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &460271678
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 48
+ m_FontStyle: 0
+ m_BestFit: 1
+ m_MinSize: 24
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Open Script
+--- !u!222 &460271679
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ m_CullTransparentMesh: 0
+--- !u!1 &511172212
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 511172213}
+ - component: {fileID: 511172216}
+ - component: {fileID: 511172215}
+ - component: {fileID: 511172214}
+ m_Layer: 5
+ m_Name: Button open script
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &511172213
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ 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: 460271677}
+ m_Father: {fileID: 649153321}
+ 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: -256.6, y: 118}
+ m_SizeDelta: {x: 392.12805, y: 72.27574}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &511172214
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 511172215}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &511172215
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &511172216
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_CullTransparentMesh: 0
+--- !u!1 &649153317
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 649153321}
+ - component: {fileID: 649153320}
+ - component: {fileID: 649153319}
+ - component: {fileID: 649153318}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &649153318
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &649153319
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 1
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 1280, y: 720}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &649153320
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 1
+ m_Camera: {fileID: 249270790}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &649153321
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1537524790}
+ - {fileID: 1847025553}
+ - {fileID: 511172213}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &700195177
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 700195180}
+ - component: {fileID: 700195179}
+ - component: {fileID: 700195178}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &700195178
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &700195179
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &700195180
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ 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: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &965437870
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 965437872}
+ - component: {fileID: 965437871}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &965437871
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 965437870}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &965437872
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 965437870}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1101930858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1101930859}
+ - component: {fileID: 1101930861}
+ - component: {fileID: 1101930860}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1101930859
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ 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: 1847025553}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -28.681885, y: -20.492146}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1101930860
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 48
+ m_FontStyle: 0
+ m_BestFit: 1
+ m_MinSize: 24
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Open Editor tab
+--- !u!222 &1101930861
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ m_CullTransparentMesh: 0
+--- !u!1 &1537524789
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1537524790}
+ - component: {fileID: 1537524792}
+ - component: {fileID: 1537524791}
+ m_Layer: 5
+ m_Name: InformationText
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1537524790
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ 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: 649153321}
+ 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.00000095367, y: 215.4}
+ m_SizeDelta: {x: 861.9848, y: 122.55513}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1537524791
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0, b: 0, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 64
+ m_FontStyle: 1
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Hot Reload is not running yet
+--- !u!222 &1537524792
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ m_CullTransparentMesh: 0
+--- !u!1 &1847025552
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1847025553}
+ - component: {fileID: 1847025556}
+ - component: {fileID: 1847025555}
+ - component: {fileID: 1847025554}
+ m_Layer: 5
+ m_Name: Button open editor tab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1847025553
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ 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: 1101930859}
+ m_Father: {fileID: 649153321}
+ m_RootOrder: 1
+ 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: 218.9, y: 118}
+ m_SizeDelta: {x: 392.12805, y: 72.27574}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1847025554
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1847025555}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &1847025555
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1847025556
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_CullTransparentMesh: 0
+--- !u!1 &2132145875
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2132145876}
+ - component: {fileID: 2132145877}
+ m_Layer: 0
+ m_Name: HotReloadDemo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2132145876
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2132145875}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 18.716805, y: 53.419094, z: 92.546875}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2132145877
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2132145875}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5a2e4d3f095a9441688c70278068eee0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ cube: {fileID: 19295889}
+ informationText: {fileID: 1537524791}
+ openWindowButton: {fileID: 1847025554}
+ openScriptButton: {fileID: 511172214}
+ thisScript: {fileID: 11500000, guid: 5a2e4d3f095a9441688c70278068eee0, type: 3}
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity.meta
new file mode 100644
index 000000000..505e36218
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: ae744488364b34fcf8c80218eadc721c
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBasicDemo.unity
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity
new file mode 100644
index 000000000..9ad180f2c
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity
@@ -0,0 +1,9607 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 961e97ae3d4011b47a1198a930f5c30d, type: 2}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &19295889
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 19295893}
+ - component: {fileID: 19295892}
+ - component: {fileID: 19295891}
+ - component: {fileID: 19295890}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &19295890
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &19295891
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &19295892
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &19295893
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 19295889}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 0.8224261, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &40618803
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 40618804}
+ - component: {fileID: 40618807}
+ - component: {fileID: 40618806}
+ - component: {fileID: 40618805}
+ m_Layer: 0
+ m_Name: Cube (48)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &40618804
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 40618803}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 2.4375737, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &40618805
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 40618803}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &40618806
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 40618803}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &40618807
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 40618803}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &53988356
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 53988357}
+ - component: {fileID: 53988360}
+ - component: {fileID: 53988359}
+ - component: {fileID: 53988358}
+ m_Layer: 0
+ m_Name: Cube (75)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &53988357
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 53988356}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 2.427574, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &53988358
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 53988356}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &53988359
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 53988356}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &53988360
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 53988356}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &69029314
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 69029315}
+ - component: {fileID: 69029318}
+ - component: {fileID: 69029317}
+ - component: {fileID: 69029316}
+ m_Layer: 0
+ m_Name: Cube (16)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &69029315
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69029314}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: -1.6699998, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &69029316
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69029314}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &69029317
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69029314}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &69029318
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69029314}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &121342030
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 121342031}
+ - component: {fileID: 121342034}
+ - component: {fileID: 121342033}
+ - component: {fileID: 121342032}
+ m_Layer: 0
+ m_Name: Cube (43)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &121342031
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 121342030}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 4.92, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &121342032
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 121342030}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &121342033
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 121342030}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &121342034
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 121342030}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &127719937
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 127719938}
+ - component: {fileID: 127719941}
+ - component: {fileID: 127719940}
+ - component: {fileID: 127719939}
+ m_Layer: 0
+ m_Name: Cube (67)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &127719938
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 127719937}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 2.4375737, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &127719939
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 127719937}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &127719940
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 127719937}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &127719941
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 127719937}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &128004585
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 128004586}
+ - component: {fileID: 128004589}
+ - component: {fileID: 128004588}
+ - component: {fileID: 128004587}
+ m_Layer: 0
+ m_Name: Cube (56)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &128004586
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 128004585}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 2.427574, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &128004587
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 128004585}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &128004588
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 128004585}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &128004589
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 128004585}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &132063619
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 132063620}
+ - component: {fileID: 132063623}
+ - component: {fileID: 132063622}
+ - component: {fileID: 132063621}
+ m_Layer: 0
+ m_Name: Cube (4)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &132063620
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 132063619}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 0.8224261, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &132063621
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 132063619}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &132063622
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 132063619}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &132063623
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 132063619}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &133838188
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 133838189}
+ - component: {fileID: 133838192}
+ - component: {fileID: 133838191}
+ - component: {fileID: 133838190}
+ m_Layer: 0
+ m_Name: Cube (62)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &133838189
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 133838188}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 4.92, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &133838190
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 133838188}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &133838191
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 133838188}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &133838192
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 133838188}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &181686442
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 181686443}
+ - component: {fileID: 181686446}
+ - component: {fileID: 181686445}
+ - component: {fileID: 181686444}
+ m_Layer: 0
+ m_Name: Cube (13)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &181686443
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 181686442}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 0.8124263, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &181686444
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 181686442}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &181686445
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 181686442}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &181686446
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 181686442}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &218081520
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 218081521}
+ - component: {fileID: 218081524}
+ - component: {fileID: 218081523}
+ - component: {fileID: 218081522}
+ m_Layer: 0
+ m_Name: Cube (66)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &218081521
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 218081520}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 2.4375737, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &218081522
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 218081520}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &218081523
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 218081520}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &218081524
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 218081520}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &249270788
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 249270791}
+ - component: {fileID: 249270790}
+ - component: {fileID: 249270789}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &249270789
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_Enabled: 1
+--- !u!20 &249270790
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &249270791
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249270788}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &249919994
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 249919995}
+ - component: {fileID: 249919998}
+ - component: {fileID: 249919997}
+ - component: {fileID: 249919996}
+ m_Layer: 0
+ m_Name: Cube (50)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &249919995
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249919994}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 4.91, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &249919996
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249919994}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &249919997
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249919994}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &249919998
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 249919994}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &262969854
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 262969855}
+ - component: {fileID: 262969858}
+ - component: {fileID: 262969857}
+ - component: {fileID: 262969856}
+ m_Layer: 0
+ m_Name: Cube (30)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &262969855
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 262969854}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 0.8124263, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &262969856
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 262969854}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &262969857
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 262969854}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &262969858
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 262969854}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &266848583
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 266848584}
+ - component: {fileID: 266848587}
+ - component: {fileID: 266848586}
+ - component: {fileID: 266848585}
+ m_Layer: 0
+ m_Name: Cube (21)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &266848584
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 266848583}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 0.8224261, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &266848585
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 266848583}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &266848586
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 266848583}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &266848587
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 266848583}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &280025523
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 280025524}
+ - component: {fileID: 280025527}
+ - component: {fileID: 280025526}
+ - component: {fileID: 280025525}
+ m_Layer: 0
+ m_Name: Cube (8)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &280025524
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 280025523}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: -1.6600001, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &280025525
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 280025523}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &280025526
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 280025523}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &280025527
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 280025523}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &282541332
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 282541333}
+ - component: {fileID: 282541336}
+ - component: {fileID: 282541335}
+ - component: {fileID: 282541334}
+ m_Layer: 0
+ m_Name: Cube (52)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &282541333
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 282541332}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 4.91, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &282541334
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 282541332}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &282541335
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 282541332}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &282541336
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 282541332}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &297017159
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 297017160}
+ - component: {fileID: 297017163}
+ - component: {fileID: 297017162}
+ - component: {fileID: 297017161}
+ m_Layer: 0
+ m_Name: Cube (5)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &297017160
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297017159}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: -1.66, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &297017161
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297017159}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &297017162
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297017159}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &297017163
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297017159}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &297623418
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 297623419}
+ - component: {fileID: 297623422}
+ - component: {fileID: 297623421}
+ - component: {fileID: 297623420}
+ m_Layer: 0
+ m_Name: Cube (76)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &297623419
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297623418}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 2.427574, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &297623420
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297623418}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &297623421
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297623418}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &297623422
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 297623418}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &315895885
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 315895886}
+ - component: {fileID: 315895889}
+ - component: {fileID: 315895888}
+ - component: {fileID: 315895887}
+ m_Layer: 0
+ m_Name: Cube (72)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &315895886
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 315895885}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 4.91, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &315895887
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 315895885}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &315895888
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 315895885}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &315895889
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 315895885}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &321495839
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 321495840}
+ m_Layer: 0
+ m_Name: Cubes
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &321495840
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 321495839}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.908883, y: -0.8224261, z: -0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 19295893}
+ - {fileID: 323745810}
+ - {fileID: 582255912}
+ - {fileID: 1893598706}
+ - {fileID: 132063620}
+ - {fileID: 297017160}
+ - {fileID: 768601852}
+ - {fileID: 1931512540}
+ - {fileID: 280025524}
+ - {fileID: 1281233703}
+ - {fileID: 1927368435}
+ - {fileID: 2042268981}
+ - {fileID: 1682534256}
+ - {fileID: 181686443}
+ - {fileID: 351532142}
+ - {fileID: 1500025043}
+ - {fileID: 69029315}
+ - {fileID: 667369431}
+ - {fileID: 375087532}
+ - {fileID: 1124320615}
+ - {fileID: 927111012}
+ - {fileID: 266848584}
+ - {fileID: 2063974669}
+ - {fileID: 1010368909}
+ - {fileID: 1343033883}
+ - {fileID: 781926843}
+ - {fileID: 341472300}
+ - {fileID: 2136109399}
+ - {fileID: 677037662}
+ - {fileID: 1973025879}
+ - {fileID: 262969855}
+ - {fileID: 1399883246}
+ - {fileID: 743324179}
+ - {fileID: 1586797431}
+ - {fileID: 1123278460}
+ - {fileID: 928584462}
+ - {fileID: 1069134373}
+ - {fileID: 2014093030}
+ - {fileID: 792419466}
+ - {fileID: 1855770257}
+ - {fileID: 893274498}
+ - {fileID: 500782909}
+ - {fileID: 443249060}
+ - {fileID: 121342031}
+ - {fileID: 1130193477}
+ - {fileID: 523436227}
+ - {fileID: 1600668863}
+ - {fileID: 2053621922}
+ - {fileID: 40618804}
+ - {fileID: 738032838}
+ - {fileID: 249919995}
+ - {fileID: 835270569}
+ - {fileID: 282541333}
+ - {fileID: 519530843}
+ - {fileID: 1774902065}
+ - {fileID: 1019461522}
+ - {fileID: 128004586}
+ - {fileID: 1231537575}
+ - {fileID: 1965297415}
+ - {fileID: 589500252}
+ - {fileID: 1218495767}
+ - {fileID: 778191808}
+ - {fileID: 133838189}
+ - {fileID: 1983101811}
+ - {fileID: 387856195}
+ - {fileID: 2102038396}
+ - {fileID: 218081521}
+ - {fileID: 127719938}
+ - {fileID: 1555484938}
+ - {fileID: 1876148967}
+ - {fileID: 1228425737}
+ - {fileID: 801020416}
+ - {fileID: 315895886}
+ - {fileID: 1768551574}
+ - {fileID: 1850807847}
+ - {fileID: 53988357}
+ - {fileID: 297623419}
+ - {fileID: 1946060858}
+ - {fileID: 1380444550}
+ - {fileID: 643205569}
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &323745809
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 323745810}
+ - component: {fileID: 323745813}
+ - component: {fileID: 323745812}
+ - component: {fileID: 323745811}
+ m_Layer: 0
+ m_Name: Cube (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &323745810
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 323745809}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 0.8224261, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &323745811
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 323745809}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &323745812
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 323745809}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &323745813
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 323745809}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &341472299
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 341472300}
+ - component: {fileID: 341472303}
+ - component: {fileID: 341472302}
+ - component: {fileID: 341472301}
+ m_Layer: 0
+ m_Name: Cube (26)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &341472300
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 341472299}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: -1.6600001, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &341472301
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 341472299}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &341472302
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 341472299}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &341472303
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 341472299}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &351532141
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 351532142}
+ - component: {fileID: 351532145}
+ - component: {fileID: 351532144}
+ - component: {fileID: 351532143}
+ m_Layer: 0
+ m_Name: Cube (14)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &351532142
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 351532141}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 0.8124263, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &351532143
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 351532141}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &351532144
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 351532141}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &351532145
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 351532141}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &375087531
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 375087532}
+ - component: {fileID: 375087535}
+ - component: {fileID: 375087534}
+ - component: {fileID: 375087533}
+ m_Layer: 0
+ m_Name: Cube (18)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &375087532
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375087531}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: -1.67, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &375087533
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375087531}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &375087534
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375087531}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &375087535
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 375087531}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &387856194
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 387856195}
+ - component: {fileID: 387856198}
+ - component: {fileID: 387856197}
+ - component: {fileID: 387856196}
+ m_Layer: 0
+ m_Name: Cube (64)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &387856195
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 387856194}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 4.92, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &387856196
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 387856194}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &387856197
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 387856194}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &387856198
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 387856194}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &443249059
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 443249060}
+ - component: {fileID: 443249063}
+ - component: {fileID: 443249062}
+ - component: {fileID: 443249061}
+ m_Layer: 0
+ m_Name: Cube (42)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &443249060
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 443249059}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 4.92, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &443249061
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 443249059}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &443249062
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 443249059}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &443249063
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 443249059}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &460271676
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 460271677}
+ - component: {fileID: 460271679}
+ - component: {fileID: 460271678}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &460271677
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ 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: 511172213}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -28.681885, y: -20.492146}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &460271678
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 48
+ m_FontStyle: 0
+ m_BestFit: 1
+ m_MinSize: 24
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Open Script
+--- !u!222 &460271679
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 460271676}
+ m_CullTransparentMesh: 0
+--- !u!1 &500782908
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 500782909}
+ - component: {fileID: 500782912}
+ - component: {fileID: 500782911}
+ - component: {fileID: 500782910}
+ m_Layer: 0
+ m_Name: Cube (41)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &500782909
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500782908}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 4.92, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &500782910
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500782908}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &500782911
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500782908}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &500782912
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 500782908}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &511172212
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 511172213}
+ - component: {fileID: 511172216}
+ - component: {fileID: 511172215}
+ - component: {fileID: 511172214}
+ m_Layer: 5
+ m_Name: Button open script
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &511172213
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.6553401, y: 0.6553401, z: 0.6553401}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 460271677}
+ m_Father: {fileID: 649153321}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 159, y: 36}
+ m_SizeDelta: {x: 392.12805, y: 72.27574}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &511172214
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 511172215}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &511172215
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &511172216
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511172212}
+ m_CullTransparentMesh: 0
+--- !u!1 &519530842
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 519530843}
+ - component: {fileID: 519530846}
+ - component: {fileID: 519530845}
+ - component: {fileID: 519530844}
+ m_Layer: 0
+ m_Name: Cube (53)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &519530843
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519530842}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 4.91, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &519530844
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519530842}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &519530845
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519530842}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &519530846
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 519530842}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &523436226
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 523436227}
+ - component: {fileID: 523436230}
+ - component: {fileID: 523436229}
+ - component: {fileID: 523436228}
+ m_Layer: 0
+ m_Name: Cube (45)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &523436227
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 523436226}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 2.437574, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &523436228
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 523436226}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &523436229
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 523436226}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &523436230
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 523436226}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &582255911
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 582255912}
+ - component: {fileID: 582255915}
+ - component: {fileID: 582255914}
+ - component: {fileID: 582255913}
+ m_Layer: 0
+ m_Name: Cube (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &582255912
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 582255911}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 0.8224261, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &582255913
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 582255911}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &582255914
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 582255911}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &582255915
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 582255911}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &589500251
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 589500252}
+ - component: {fileID: 589500255}
+ - component: {fileID: 589500254}
+ - component: {fileID: 589500253}
+ m_Layer: 0
+ m_Name: Cube (59)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &589500252
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 589500251}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 2.427574, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &589500253
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 589500251}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &589500254
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 589500251}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &589500255
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 589500251}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &643205568
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 643205569}
+ - component: {fileID: 643205572}
+ - component: {fileID: 643205571}
+ - component: {fileID: 643205570}
+ m_Layer: 0
+ m_Name: Cube (79)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &643205569
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 643205568}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 2.427574, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &643205570
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 643205568}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &643205571
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 643205568}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &643205572
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 643205568}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &649153317
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 649153321}
+ - component: {fileID: 649153320}
+ - component: {fileID: 649153319}
+ - component: {fileID: 649153318}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &649153318
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &649153319
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 1
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 1000, y: 557}
+ m_ScreenMatchMode: 1
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &649153320
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &649153321
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 649153317}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1537524790}
+ - {fileID: 511172213}
+ - {fileID: 1847025553}
+ m_Father: {fileID: 0}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &667369430
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 667369431}
+ - component: {fileID: 667369434}
+ - component: {fileID: 667369433}
+ - component: {fileID: 667369432}
+ m_Layer: 0
+ m_Name: Cube (17)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &667369431
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 667369430}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: -1.6699998, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &667369432
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 667369430}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &667369433
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 667369430}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &667369434
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 667369430}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &677037661
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 677037662}
+ - component: {fileID: 677037665}
+ - component: {fileID: 677037664}
+ - component: {fileID: 677037663}
+ m_Layer: 0
+ m_Name: Cube (28)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &677037662
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 677037661}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: -1.6600001, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &677037663
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 677037661}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &677037664
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 677037661}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &677037665
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 677037661}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &700195177
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 700195180}
+ - component: {fileID: 700195179}
+ - component: {fileID: 700195178}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &700195178
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &700195179
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &700195180
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 700195177}
+ 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: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &738032837
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 738032838}
+ - component: {fileID: 738032841}
+ - component: {fileID: 738032840}
+ - component: {fileID: 738032839}
+ m_Layer: 0
+ m_Name: Cube (49)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &738032838
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738032837}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 2.4375737, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &738032839
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738032837}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &738032840
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738032837}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &738032841
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738032837}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &743324178
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 743324179}
+ - component: {fileID: 743324182}
+ - component: {fileID: 743324181}
+ - component: {fileID: 743324180}
+ m_Layer: 0
+ m_Name: Cube (32)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &743324179
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 743324178}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 0.8124263, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &743324180
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 743324178}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &743324181
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 743324178}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &743324182
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 743324178}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &768601851
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 768601852}
+ - component: {fileID: 768601855}
+ - component: {fileID: 768601854}
+ - component: {fileID: 768601853}
+ m_Layer: 0
+ m_Name: Cube (6)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &768601852
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 768601851}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: -1.6600001, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &768601853
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 768601851}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &768601854
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 768601851}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &768601855
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 768601851}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &778191807
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 778191808}
+ - component: {fileID: 778191811}
+ - component: {fileID: 778191810}
+ - component: {fileID: 778191809}
+ m_Layer: 0
+ m_Name: Cube (61)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &778191808
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778191807}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 4.92, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &778191809
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778191807}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &778191810
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778191807}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &778191811
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 778191807}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &781926842
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 781926843}
+ - component: {fileID: 781926846}
+ - component: {fileID: 781926845}
+ - component: {fileID: 781926844}
+ m_Layer: 0
+ m_Name: Cube (25)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &781926843
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 781926842}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: -1.66, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &781926844
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 781926842}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &781926845
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 781926842}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &781926846
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 781926842}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &792419465
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 792419466}
+ - component: {fileID: 792419469}
+ - component: {fileID: 792419468}
+ - component: {fileID: 792419467}
+ m_Layer: 0
+ m_Name: Cube (38)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &792419466
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 792419465}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: -1.67, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &792419467
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 792419465}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &792419468
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 792419465}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &792419469
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 792419465}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &801020415
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 801020416}
+ - component: {fileID: 801020419}
+ - component: {fileID: 801020418}
+ - component: {fileID: 801020417}
+ m_Layer: 0
+ m_Name: Cube (71)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &801020416
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 801020415}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 4.91, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &801020417
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 801020415}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &801020418
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 801020415}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &801020419
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 801020415}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &835270568
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 835270569}
+ - component: {fileID: 835270572}
+ - component: {fileID: 835270571}
+ - component: {fileID: 835270570}
+ m_Layer: 0
+ m_Name: Cube (51)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &835270569
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835270568}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 4.91, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &835270570
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835270568}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &835270571
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835270568}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &835270572
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 835270568}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &893274497
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 893274498}
+ - component: {fileID: 893274501}
+ - component: {fileID: 893274500}
+ - component: {fileID: 893274499}
+ m_Layer: 0
+ m_Name: Cube (40)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &893274498
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 893274497}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 4.92, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &893274499
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 893274497}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &893274500
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 893274497}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &893274501
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 893274497}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &927111011
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 927111012}
+ - component: {fileID: 927111015}
+ - component: {fileID: 927111014}
+ - component: {fileID: 927111013}
+ m_Layer: 0
+ m_Name: Cube (20)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &927111012
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 927111011}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 0.8224261, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &927111013
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 927111011}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &927111014
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 927111011}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &927111015
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 927111011}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &928584461
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 928584462}
+ - component: {fileID: 928584465}
+ - component: {fileID: 928584464}
+ - component: {fileID: 928584463}
+ m_Layer: 0
+ m_Name: Cube (35)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &928584462
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 928584461}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: -1.6699998, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &928584463
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 928584461}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &928584464
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 928584461}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &928584465
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 928584461}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &965437870
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 965437872}
+ - component: {fileID: 965437871}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &965437871
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 965437870}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &965437872
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 965437870}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1010368908
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1010368909}
+ - component: {fileID: 1010368912}
+ - component: {fileID: 1010368911}
+ - component: {fileID: 1010368910}
+ m_Layer: 0
+ m_Name: Cube (23)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1010368909
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1010368908}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 0.8224261, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1010368910
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1010368908}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1010368911
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1010368908}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1010368912
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1010368908}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1019461521
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1019461522}
+ - component: {fileID: 1019461525}
+ - component: {fileID: 1019461524}
+ - component: {fileID: 1019461523}
+ m_Layer: 0
+ m_Name: Cube (55)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1019461522
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1019461521}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 2.427574, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1019461523
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1019461521}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1019461524
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1019461521}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1019461525
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1019461521}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1069134372
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1069134373}
+ - component: {fileID: 1069134376}
+ - component: {fileID: 1069134375}
+ - component: {fileID: 1069134374}
+ m_Layer: 0
+ m_Name: Cube (36)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1069134373
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1069134372}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: -1.6699998, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1069134374
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1069134372}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1069134375
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1069134372}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1069134376
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1069134372}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1101930858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1101930859}
+ - component: {fileID: 1101930861}
+ - component: {fileID: 1101930860}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1101930859
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ 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: 1847025553}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -28.681885, y: -20.492146}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1101930860
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 48
+ m_FontStyle: 0
+ m_BestFit: 1
+ m_MinSize: 24
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Open Editor tab
+--- !u!222 &1101930861
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1101930858}
+ m_CullTransparentMesh: 0
+--- !u!1 &1123278459
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1123278460}
+ - component: {fileID: 1123278463}
+ - component: {fileID: 1123278462}
+ - component: {fileID: 1123278461}
+ m_Layer: 0
+ m_Name: Cube (34)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1123278460
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1123278459}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 0.8124263, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1123278461
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1123278459}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1123278462
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1123278459}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1123278463
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1123278459}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1124320614
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1124320615}
+ - component: {fileID: 1124320618}
+ - component: {fileID: 1124320617}
+ - component: {fileID: 1124320616}
+ m_Layer: 0
+ m_Name: Cube (19)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1124320615
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1124320614}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: -1.6699998, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1124320616
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1124320614}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1124320617
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1124320614}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1124320618
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1124320614}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1130193476
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1130193477}
+ - component: {fileID: 1130193480}
+ - component: {fileID: 1130193479}
+ - component: {fileID: 1130193478}
+ m_Layer: 0
+ m_Name: Cube (44)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1130193477
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1130193476}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 4.92, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1130193478
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1130193476}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1130193479
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1130193476}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1130193480
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1130193476}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1218495766
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1218495767}
+ - component: {fileID: 1218495770}
+ - component: {fileID: 1218495769}
+ - component: {fileID: 1218495768}
+ m_Layer: 0
+ m_Name: Cube (60)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1218495767
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1218495766}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 4.92, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1218495768
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1218495766}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1218495769
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1218495766}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1218495770
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1218495766}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1228425736
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1228425737}
+ - component: {fileID: 1228425740}
+ - component: {fileID: 1228425739}
+ - component: {fileID: 1228425738}
+ m_Layer: 0
+ m_Name: Cube (70)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1228425737
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1228425736}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 4.91, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1228425738
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1228425736}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1228425739
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1228425736}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1228425740
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1228425736}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1231537574
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1231537575}
+ - component: {fileID: 1231537578}
+ - component: {fileID: 1231537577}
+ - component: {fileID: 1231537576}
+ m_Layer: 0
+ m_Name: Cube (57)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1231537575
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1231537574}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 2.427574, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1231537576
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1231537574}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1231537577
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1231537574}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1231537578
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1231537574}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1281233702
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1281233703}
+ - component: {fileID: 1281233706}
+ - component: {fileID: 1281233705}
+ - component: {fileID: 1281233704}
+ m_Layer: 0
+ m_Name: Cube (9)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1281233703
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1281233702}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: -1.6600001, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1281233704
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1281233702}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1281233705
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1281233702}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1281233706
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1281233702}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1343033882
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1343033883}
+ - component: {fileID: 1343033886}
+ - component: {fileID: 1343033885}
+ - component: {fileID: 1343033884}
+ m_Layer: 0
+ m_Name: Cube (24)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1343033883
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1343033882}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 0.8224261, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1343033884
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1343033882}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1343033885
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1343033882}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1343033886
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1343033882}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1380444549
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1380444550}
+ - component: {fileID: 1380444553}
+ - component: {fileID: 1380444552}
+ - component: {fileID: 1380444551}
+ m_Layer: 0
+ m_Name: Cube (78)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1380444550
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1380444549}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 2.4275737, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1380444551
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1380444549}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1380444552
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1380444549}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1380444553
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1380444549}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1399883245
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1399883246}
+ - component: {fileID: 1399883249}
+ - component: {fileID: 1399883248}
+ - component: {fileID: 1399883247}
+ m_Layer: 0
+ m_Name: Cube (31)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1399883246
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1399883245}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 0.8124263, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1399883247
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1399883245}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1399883248
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1399883245}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1399883249
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1399883245}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1500025042
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1500025043}
+ - component: {fileID: 1500025046}
+ - component: {fileID: 1500025045}
+ - component: {fileID: 1500025044}
+ m_Layer: 0
+ m_Name: Cube (15)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1500025043
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1500025042}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: -1.6699998, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1500025044
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1500025042}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1500025045
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1500025042}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1500025046
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1500025042}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1537524789
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1537524790}
+ - component: {fileID: 1537524792}
+ - component: {fileID: 1537524791}
+ m_Layer: 5
+ m_Name: InformationText
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &1537524790
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ 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: 649153321}
+ 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.00000095367, y: 253}
+ m_SizeDelta: {x: 861.9848, y: 122.55513}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1537524791
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0, b: 0, 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_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 56
+ m_FontStyle: 1
+ m_BestFit: 0
+ m_MinSize: 0
+ m_MaxSize: 64
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Hot Reload is not running yet
+--- !u!222 &1537524792
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1537524789}
+ m_CullTransparentMesh: 0
+--- !u!1 &1555484937
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1555484938}
+ - component: {fileID: 1555484941}
+ - component: {fileID: 1555484940}
+ - component: {fileID: 1555484939}
+ m_Layer: 0
+ m_Name: Cube (68)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1555484938
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1555484937}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 2.4375737, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1555484939
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1555484937}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1555484940
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1555484937}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1555484941
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1555484937}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1586797430
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1586797431}
+ - component: {fileID: 1586797434}
+ - component: {fileID: 1586797433}
+ - component: {fileID: 1586797432}
+ m_Layer: 0
+ m_Name: Cube (33)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1586797431
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586797430}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 0.8124263, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1586797432
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586797430}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1586797433
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586797430}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1586797434
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1586797430}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1600668862
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1600668863}
+ - component: {fileID: 1600668866}
+ - component: {fileID: 1600668865}
+ - component: {fileID: 1600668864}
+ m_Layer: 0
+ m_Name: Cube (46)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1600668863
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1600668862}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 2.4375737, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1600668864
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1600668862}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1600668865
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1600668862}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1600668866
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1600668862}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1682534255
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1682534256}
+ - component: {fileID: 1682534259}
+ - component: {fileID: 1682534258}
+ - component: {fileID: 1682534257}
+ m_Layer: 0
+ m_Name: Cube (12)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1682534256
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1682534255}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 0.8124263, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1682534257
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1682534255}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1682534258
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1682534255}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1682534259
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1682534255}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1768551573
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1768551574}
+ - component: {fileID: 1768551577}
+ - component: {fileID: 1768551576}
+ - component: {fileID: 1768551575}
+ m_Layer: 0
+ m_Name: Cube (73)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1768551574
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1768551573}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 4.91, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1768551575
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1768551573}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1768551576
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1768551573}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1768551577
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1768551573}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1774902064
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1774902065}
+ - component: {fileID: 1774902068}
+ - component: {fileID: 1774902067}
+ - component: {fileID: 1774902066}
+ m_Layer: 0
+ m_Name: Cube (54)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1774902065
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1774902064}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 4.91, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1774902066
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1774902064}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1774902067
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1774902064}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1774902068
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1774902064}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1847025552
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1847025553}
+ - component: {fileID: 1847025556}
+ - component: {fileID: 1847025555}
+ - component: {fileID: 1847025554}
+ m_Layer: 5
+ m_Name: Button open editor tab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1847025553
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.65534, y: 0.65534, z: 0.65534}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1101930859}
+ m_Father: {fileID: 649153321}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: -153, y: 36}
+ m_SizeDelta: {x: 393.12805, y: 73.27576}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1847025554
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1847025555}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &1847025555
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, 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_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1847025556
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847025552}
+ m_CullTransparentMesh: 0
+--- !u!1 &1850807846
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1850807847}
+ - component: {fileID: 1850807850}
+ - component: {fileID: 1850807849}
+ - component: {fileID: 1850807848}
+ m_Layer: 0
+ m_Name: Cube (74)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1850807847
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1850807846}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 4.91, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1850807848
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1850807846}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1850807849
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1850807846}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1850807850
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1850807846}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1855770256
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1855770257}
+ - component: {fileID: 1855770260}
+ - component: {fileID: 1855770259}
+ - component: {fileID: 1855770258}
+ m_Layer: 0
+ m_Name: Cube (39)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1855770257
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1855770256}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: -1.6699998, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1855770258
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1855770256}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1855770259
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1855770256}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1855770260
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1855770256}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1876148966
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1876148967}
+ - component: {fileID: 1876148970}
+ - component: {fileID: 1876148969}
+ - component: {fileID: 1876148968}
+ m_Layer: 0
+ m_Name: Cube (69)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1876148967
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1876148966}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: 2.4375737, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1876148968
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1876148966}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1876148969
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1876148966}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1876148970
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1876148966}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1893598705
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1893598706}
+ - component: {fileID: 1893598709}
+ - component: {fileID: 1893598708}
+ - component: {fileID: 1893598707}
+ m_Layer: 0
+ m_Name: Cube (3)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1893598706
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893598705}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 0.8224261, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1893598707
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893598705}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1893598708
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893598705}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1893598709
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1893598705}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1927368434
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1927368435}
+ - component: {fileID: 1927368438}
+ - component: {fileID: 1927368437}
+ - component: {fileID: 1927368436}
+ m_Layer: 0
+ m_Name: Cube (10)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1927368435
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927368434}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 0.8124263, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1927368436
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927368434}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1927368437
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927368434}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1927368438
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1927368434}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1931512539
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1931512540}
+ - component: {fileID: 1931512543}
+ - component: {fileID: 1931512542}
+ - component: {fileID: 1931512541}
+ m_Layer: 0
+ m_Name: Cube (7)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1931512540
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1931512539}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: -1.6600001, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1931512541
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1931512539}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1931512542
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1931512539}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1931512543
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1931512539}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1946060857
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1946060858}
+ - component: {fileID: 1946060861}
+ - component: {fileID: 1946060860}
+ - component: {fileID: 1946060859}
+ m_Layer: 0
+ m_Name: Cube (77)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1946060858
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1946060857}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 2.427574, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1946060859
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1946060857}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1946060860
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1946060857}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1946060861
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1946060857}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1965297414
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1965297415}
+ - component: {fileID: 1965297418}
+ - component: {fileID: 1965297417}
+ - component: {fileID: 1965297416}
+ m_Layer: 0
+ m_Name: Cube (58)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1965297415
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1965297414}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 2.4275737, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1965297416
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1965297414}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1965297417
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1965297414}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1965297418
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1965297414}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1973025878
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1973025879}
+ - component: {fileID: 1973025882}
+ - component: {fileID: 1973025881}
+ - component: {fileID: 1973025880}
+ m_Layer: 0
+ m_Name: Cube (29)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1973025879
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973025878}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 5.4900002, y: -1.6600001, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1973025880
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973025878}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1973025881
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973025878}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1973025882
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1973025878}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1983101810
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1983101811}
+ - component: {fileID: 1983101814}
+ - component: {fileID: 1983101813}
+ - component: {fileID: 1983101812}
+ m_Layer: 0
+ m_Name: Cube (63)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1983101811
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1983101810}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1.73, y: 4.92, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1983101812
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1983101810}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1983101813
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1983101810}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &1983101814
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1983101810}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2014093029
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2014093030}
+ - component: {fileID: 2014093033}
+ - component: {fileID: 2014093032}
+ - component: {fileID: 2014093031}
+ m_Layer: 0
+ m_Name: Cube (37)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2014093030
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014093029}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: -1.6699998, z: 5.4483223}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2014093031
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014093029}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2014093032
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014093029}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2014093033
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014093029}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2042268980
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2042268981}
+ - component: {fileID: 2042268984}
+ - component: {fileID: 2042268983}
+ - component: {fileID: 2042268982}
+ m_Layer: 0
+ m_Name: Cube (11)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2042268981
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2042268980}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -7, y: 0.8124263, z: 1.85}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2042268982
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2042268980}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2042268983
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2042268980}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2042268984
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2042268980}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2053621921
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2053621922}
+ - component: {fileID: 2053621925}
+ - component: {fileID: 2053621924}
+ - component: {fileID: 2053621923}
+ m_Layer: 0
+ m_Name: Cube (47)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2053621922
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2053621921}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 2.4375737, z: 0.0616778}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2053621923
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2053621921}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2053621924
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2053621921}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2053621925
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2053621921}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2063974668
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2063974669}
+ - component: {fileID: 2063974672}
+ - component: {fileID: 2063974671}
+ - component: {fileID: 2063974670}
+ m_Layer: 0
+ m_Name: Cube (22)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2063974669
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2063974668}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: 0.8224261, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2063974670
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2063974668}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2063974671
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2063974668}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2063974672
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2063974668}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2102038395
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2102038396}
+ - component: {fileID: 2102038399}
+ - component: {fileID: 2102038398}
+ - component: {fileID: 2102038397}
+ m_Layer: 0
+ m_Name: Cube (65)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2102038396
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2102038395}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -4.19, y: 2.437574, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2102038397
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2102038395}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2102038398
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2102038395}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2102038399
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2102038395}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2132145875
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2132145876}
+ - component: {fileID: 2132145877}
+ m_Layer: 0
+ m_Name: HotReloadDemo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2132145876
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2132145875}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 18.716805, y: 53.419094, z: 172.31}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2132145877
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2132145875}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e09948cf1f317d04fbaf410dbfe91656, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ cubes:
+ - {fileID: 19295893}
+ - {fileID: 323745810}
+ - {fileID: 582255912}
+ - {fileID: 1893598706}
+ - {fileID: 132063620}
+ - {fileID: 297017160}
+ - {fileID: 768601852}
+ - {fileID: 1931512540}
+ - {fileID: 280025524}
+ - {fileID: 1281233703}
+ - {fileID: 1927368435}
+ - {fileID: 2042268981}
+ - {fileID: 1682534256}
+ - {fileID: 181686443}
+ - {fileID: 351532142}
+ - {fileID: 1500025043}
+ - {fileID: 69029315}
+ - {fileID: 667369431}
+ - {fileID: 375087532}
+ - {fileID: 1124320615}
+ - {fileID: 927111012}
+ - {fileID: 266848584}
+ - {fileID: 2063974669}
+ - {fileID: 1010368909}
+ - {fileID: 1343033883}
+ - {fileID: 781926843}
+ - {fileID: 341472300}
+ - {fileID: 2136109399}
+ - {fileID: 677037662}
+ - {fileID: 1973025879}
+ - {fileID: 262969855}
+ - {fileID: 1399883246}
+ - {fileID: 743324179}
+ - {fileID: 1586797431}
+ - {fileID: 1123278460}
+ - {fileID: 928584462}
+ - {fileID: 1069134373}
+ - {fileID: 2014093030}
+ - {fileID: 792419466}
+ - {fileID: 1855770257}
+ - {fileID: 893274498}
+ - {fileID: 500782909}
+ - {fileID: 443249060}
+ - {fileID: 121342031}
+ - {fileID: 1130193477}
+ - {fileID: 523436227}
+ - {fileID: 1600668863}
+ - {fileID: 2053621922}
+ - {fileID: 40618804}
+ - {fileID: 738032838}
+ - {fileID: 249919995}
+ - {fileID: 835270569}
+ - {fileID: 282541333}
+ - {fileID: 519530843}
+ - {fileID: 1774902065}
+ - {fileID: 1019461522}
+ - {fileID: 128004586}
+ - {fileID: 1231537575}
+ - {fileID: 1965297415}
+ - {fileID: 589500252}
+ - {fileID: 1218495767}
+ - {fileID: 778191808}
+ - {fileID: 133838189}
+ - {fileID: 1983101811}
+ - {fileID: 387856195}
+ - {fileID: 2102038396}
+ - {fileID: 218081521}
+ - {fileID: 127719938}
+ - {fileID: 1555484938}
+ - {fileID: 1876148967}
+ - {fileID: 1228425737}
+ - {fileID: 801020416}
+ - {fileID: 315895886}
+ - {fileID: 1768551574}
+ - {fileID: 1850807847}
+ - {fileID: 53988357}
+ - {fileID: 297623419}
+ - {fileID: 1946060858}
+ - {fileID: 1380444550}
+ - {fileID: 643205569}
+ informationText: {fileID: 1537524791}
+ openWindowButton: {fileID: 1847025554}
+ openScriptButton: {fileID: 511172214}
+ thisScript: {fileID: 11500000, guid: e09948cf1f317d04fbaf410dbfe91656, type: 3}
+--- !u!1 &2136109398
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2136109399}
+ - component: {fileID: 2136109402}
+ - component: {fileID: 2136109401}
+ - component: {fileID: 2136109400}
+ m_Layer: 0
+ m_Name: Cube (27)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2136109399
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2136109398}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1.36, y: -1.6600001, z: 3.66}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 321495840}
+ m_RootOrder: -1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2136109400
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2136109398}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &2136109401
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2136109398}
+ 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: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ 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!33 &2136109402
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2136109398}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity.meta
new file mode 100644
index 000000000..eefb3ca6b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: fad9aa54ab3335844b5a35b9eb6ae286
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemo.unity
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting
new file mode 100644
index 000000000..3c301a177
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting
@@ -0,0 +1,66 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: HotReloadBurstDemoSettings
+ serializedVersion: 6
+ m_GIWorkflowMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 1
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 1024
+ m_BakeResolution: 40
+ m_Padding: 2
+ m_LightmapCompression: 3
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVREnvironmentSampleCount: 512
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentImportanceSampling: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_PVRTiledBaking: 0
+ m_NumRaysToShootPerTexel: -1
+ m_RespectSceneVisibilityWhenBakingGI: 0
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting.meta
new file mode 100644
index 000000000..5a510378a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting.meta
@@ -0,0 +1,15 @@
+fileFormatVersion: 2
+guid: 961e97ae3d4011b47a1198a930f5c30d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 4890085278179872738
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scenes/HotReloadBurstDemoSettings.lighting
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts.meta
new file mode 100644
index 000000000..f542db884
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 30c72b28fb747184ba79468d3571dea4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs
new file mode 100644
index 000000000..724abdd5a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs
@@ -0,0 +1,179 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace SingularityGroup.HotReload.Demo {
+ class HotReloadBasicDemo : MonoBehaviour {
+
+ public GameObject cube;
+ public Text informationText;
+ public Button openWindowButton;
+ public Button openScriptButton;
+ public TextAsset thisScript;
+
+ void Start() {
+ if(Application.isEditor) {
+ openWindowButton.onClick.AddListener(Demo.I.OpenHotReloadWindow);
+ openScriptButton.onClick.AddListener(() => Demo.I.OpenScriptFile(thisScript, 31, 13));
+ } else {
+ openWindowButton.gameObject.SetActive(false);
+ openScriptButton.gameObject.SetActive(false);
+ informationText.gameObject.SetActive(false);
+ }
+ }
+
+ // Update is called once per frame
+ void Update() {
+ if (Demo.I.IsServerRunning()) {
+ informationText.text = "Hot Reload is running";
+ } else {
+ informationText.text = "Hot Reload is not running";
+ }
+
+ // // 1. Editing functions in monobehaviours, normal classes or static classes
+ // // Edit the vector to rotate the cube in the scene differently or change the speed
+ // var speed = 100;
+ // cube.transform.Rotate(new Vector3(0, 1, 0) * Time.deltaTime * speed);
+
+ // // 1. Editing functions in monobehaviours, normal classes or static classes
+ // // Uncomment this code to scale the cube
+ // cube.transform.localScale = Mathf.Sin(Time.time) * Vector3.one;
+
+ // // 1. Editing functions in monobehaviours, normal classes or static classes
+ // // Uncomment this code to make the cube move from left to right and back
+ // var newPos = cube.transform.position += (cube.transform.localScale.x < 0.5 ? Vector3.left : Vector3.right) * Time.deltaTime;
+ // if(Mathf.Abs(newPos.x) > 10) {
+ // cube.transform.position = Vector3.zero;
+ // }
+ }
+
+ // 2. Editing lambda methods
+ static Func addFunction = x => {
+ var result = x + 10;
+ Debug.Log("Add: " + result);
+ // // uncomment to change the operator to multiply and log the result
+ // result = x * 10;
+ // Debug.Log("Multiply: " + result);
+ return result;
+ };
+
+ // 3. Editing async/await methods
+ async Task AsyncMethod() {
+ // await Task.Delay(500);
+ // Debug.Log("AsyncMethod");
+
+ // // silicense warning
+ await Task.CompletedTask;
+ }
+
+ // 4. Editing properties (get/set)
+ public static string SomeString {
+ // edit the get method
+ get {
+ var someStringHere = "This is some string";
+ return someStringHere;
+ }
+ }
+
+ // 5. Editing indexers (square bracket access such as dictionaries)
+ class CustomDictionary : Dictionary {
+ public new int this[string key] {
+ get {
+ // // uncomment to change the indexer and log a different entry based on case
+ // return base[key.ToLower()];
+ return base[key.ToUpper()];
+ }
+ set {
+ base[key.ToUpper()] = value;
+ }
+ }
+ }
+ CustomDictionary randomDict = new CustomDictionary {
+ { "a", 4 },
+ { "A", 5 },
+ { "b", 9 },
+ { "B", 10 },
+ { "c", 14 },
+ { "C", 15 },
+ { "d", 19 },
+ { "D", 20 }
+ };
+
+ // 6. Editing operators methods (explicit and implicit operators)
+ public class Email {
+ public string Value { get; }
+
+ public Email(string value) {
+ Value = value;
+ }
+
+ // Define implicit operator
+ public static implicit operator string(Email value)
+ // Uncomment to change the implicit operator
+ // => value.Value + " FOO";
+ => value.Value;
+
+ // // Uncomment to change add an implicit operator
+ // public static implicit operator byte[](Email value)
+ // => Encoding.UTF8.GetBytes(value.Value);
+
+ // Define explicit operator
+ public static explicit operator Email(string value)
+ => new Email(value);
+ }
+
+ void LateUpdate() {
+ // // 2. Editing lambda methods
+ // addFunction(10);
+
+
+ // // 3. Editing async/await methods
+ // AsyncMethod().Forget();
+
+
+ // // 4. Editing properties (get/set)
+ // Debug.Log(SomeString);
+
+
+ // // 5. Editing indexers (square bracket access such as dictionaries)
+ // Debug.Log(randomDict["A"]);
+
+
+ // // 6. Editing operators methods (explicit and implicit operators)
+ Email email = new Email("example@example.com");
+ // string stringEmail = email;
+ // Debug.Log(stringEmail);
+
+ // // Uncomment new operator in Email class + Uncomment this to add byte implicit operator
+ // byte[] byteEmail = email;
+ // var hexRepresentation = BitConverter.ToString(byteEmail);
+ // Debug.Log(hexRepresentation);
+ // Debug.Log(Encoding.UTF8.GetString(byteEmail));
+
+ // // 7. Editing lambda methods with closures
+ // // Uncomment to log sorted array
+ // // Switch a and b to reverse the sorting
+ // int[] numbers = { 5, 3, 8, 1, 9 };
+ // Array.Sort(numbers, (b, a) => a.CompareTo(b));
+ // Debug.Log(string.Join(", ", numbers));
+
+ }
+
+ // This function gets invoked every time it's patched
+ [InvokeOnHotReloadLocal]
+ static void OnHotReloadMe() {
+ // change the string to see the method getting invoked
+ Debug.Log("Hello there");
+ }
+
+ // // 8. Adding event functions
+ // void OnDisable() {
+ // Debug.Log("OnDisable");
+ // }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs.meta
new file mode 100644
index 000000000..493a54afc
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: 5a2e4d3f095a9441688c70278068eee0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBasicDemo.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs
new file mode 100644
index 000000000..b7a1fe34f
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs
@@ -0,0 +1,63 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Jobs;
+using UnityEngine.UI;
+
+namespace SingularityGroup.HotReload.Demo {
+ public class HotReloadBurstJobsDemo : MonoBehaviour {
+ public Transform[] cubes;
+ public Text informationText;
+ public Button openWindowButton;
+ public Button openScriptButton;
+ public TextAsset thisScript;
+
+ TransformAccessArray cubeTransforms;
+ CubeJob job;
+ void Awake() {
+ cubeTransforms = new TransformAccessArray(cubes);
+ if(Application.isEditor) {
+ openWindowButton.onClick.AddListener(Demo.I.OpenHotReloadWindow);
+ openScriptButton.onClick.AddListener(() => Demo.I.OpenScriptFile(thisScript, 49, 17));
+ } else {
+ openWindowButton.gameObject.SetActive(false);
+ openScriptButton.gameObject.SetActive(false);
+ }
+ informationText.gameObject.SetActive(true);
+ }
+
+ void Update() {
+ job.deltaTime = Time.deltaTime;
+ job.time = Time.time;
+ var handle = job.Schedule(cubeTransforms);
+ handle.Complete();
+
+ if (Demo.I.IsServerRunning()) {
+ informationText.text = "Hot Reload is running";
+ } else {
+ informationText.text = "Hot Reload is not running";
+ }
+ }
+
+ struct CubeJob : IJobParallelForTransform {
+ public float deltaTime;
+ public float time;
+ public void Execute(int index, TransformAccess transform) {
+ transform.localRotation *= Quaternion.Euler(50 * deltaTime, 0, 0);
+
+ // Uncomment this code to scale the cubes
+ // var scale = Mathf.Abs(Mathf.Sin(time));
+ // transform.localScale = new Vector3(scale, scale, scale);
+
+ // Uncomment this code to make the cube move from left to right and back
+ // transform.position += (transform.localScale.x < 0.5 ? Vector3.left : Vector3.right) * deltaTime;
+ }
+ }
+
+ void OnDestroy() {
+ cubeTransforms.Dispose();
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs.meta
new file mode 100644
index 000000000..a698fa370
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: e09948cf1f317d04fbaf410dbfe91656
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/HotReloadBurstJobsDemo.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs
new file mode 100644
index 000000000..ca2034aea
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs
@@ -0,0 +1,29 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using UnityEngine;
+
+namespace SingularityGroup.HotReload.Demo {
+ public interface IDemo {
+ bool IsServerRunning();
+ void OpenHotReloadWindow();
+ void OpenScriptFile(TextAsset textAsset, int line, int column);
+ }
+
+ public static class Demo {
+ public static IDemo I = new PlayerDemo();
+ }
+
+ public class PlayerDemo : IDemo {
+ public bool IsServerRunning() {
+ return ServerHealthCheck.I.IsServerHealthy;
+ }
+
+ public void OpenHotReloadWindow() {
+ //no-op
+ }
+
+ public void OpenScriptFile(TextAsset textAsset, int line, int column) {
+ //no-op
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs.meta
new file mode 100644
index 000000000..c5c4cf584
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 04dccdcced0245f1830021fdcad1d28a
+timeCreated: 1677321944
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Demo/Scripts/IDemo.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab
new file mode 100644
index 000000000..85d676188
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab
@@ -0,0 +1,2942 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1013787301382345451
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3597930498506735329}
+ - component: {fileID: 5263297665501092759}
+ - component: {fileID: 8191138318542799492}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3597930498506735329
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1013787301382345451}
+ 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_Children: []
+ m_Father: {fileID: 8361365728969909008}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5263297665501092759
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1013787301382345451}
+ m_CullTransparentMesh: 0
+--- !u!114 &8191138318542799492
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1013787301382345451}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 22
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Cancel
+--- !u!1 &1057795414473985365
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8361365728969909008}
+ - component: {fileID: 9109116132926969505}
+ - component: {fileID: 6961214002816918688}
+ - component: {fileID: 5585168207715079851}
+ m_Layer: 5
+ m_Name: ButtonMoreEffort
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8361365728969909008
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1057795414473985365}
+ 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_Children:
+ - {fileID: 3597930498506735329}
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -423.1, y: -64.9}
+ m_SizeDelta: {x: 141.6914, y: 45.0679}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &9109116132926969505
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1057795414473985365}
+ m_CullTransparentMesh: 0
+--- !u!114 &6961214002816918688
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1057795414473985365}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5585168207715079851
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1057795414473985365}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 0.9622642, g: 0.9622642, b: 0.9622642, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 6961214002816918688}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &1335534115928082901
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5505278863775282652}
+ - component: {fileID: 882497356905571160}
+ - component: {fileID: 6369210938302316831}
+ m_Layer: 5
+ m_Name: TextSummary
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5505278863775282652
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1335534115928082901}
+ 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_Children: []
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 30, y: -39.233}
+ m_SizeDelta: {x: -105.96521, y: 54.542114}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &882497356905571160
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1335534115928082901}
+ m_CullTransparentMesh: 0
+--- !u!114 &6369210938302316831
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1335534115928082901}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 0
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Editor and current build are on different commits
+--- !u!1 &1390084864838268853
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1221019002237951643}
+ - component: {fileID: 8358362994993817161}
+ - component: {fileID: 1980611848569999305}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1221019002237951643
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1390084864838268853}
+ 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_Children: []
+ m_Father: {fileID: 7107734678944665722}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -35.811356, y: -12.790634}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8358362994993817161
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1390084864838268853}
+ m_CullTransparentMesh: 0
+--- !u!114 &1980611848569999305
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1390084864838268853}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.103773594, g: 0.103773594, b: 0.103773594, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 21
+ m_MaxSize: 28
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Continue
+--- !u!1 &2338911661825597671
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4216036513099635638}
+ - component: {fileID: 594918778888372109}
+ - component: {fileID: 2127224386387722146}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4216036513099635638
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2338911661825597671}
+ 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_Children: []
+ m_Father: {fileID: 4911193491485015256}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &594918778888372109
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2338911661825597671}
+ m_CullTransparentMesh: 0
+--- !u!114 &2127224386387722146
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2338911661825597671}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.103773594, g: 0.103773594, b: 0.103773594, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 20
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: More Info
+--- !u!1 &2557231470263189725
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6280529082113425347}
+ m_Layer: 5
+ m_Name: Information
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6280529082113425347
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2557231470263189725}
+ 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_Children:
+ - {fileID: 3344052376368028088}
+ - {fileID: 7593666350427564864}
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 30, y: -13.59}
+ m_SizeDelta: {x: -106.39874, y: -142.43198}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2582527480827036942
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6528462525361087078}
+ - component: {fileID: 5585154964765544786}
+ - component: {fileID: 5675038352245823804}
+ m_Layer: 5
+ m_Name: TextSuggestion
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6528462525361087078
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2582527480827036942}
+ 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_Children: []
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 30.217, y: 6.0687}
+ m_SizeDelta: {x: -106.3987, y: -145.1455}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5585154964765544786
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2582527480827036942}
+ m_CullTransparentMesh: 0
+--- !u!114 &5675038352245823804
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2582527480827036942}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 22
+ m_FontStyle: 0
+ m_BestFit: 1
+ m_MinSize: 21
+ m_MaxSize: 28
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1.17
+ m_Text: 'This can cause errors when the build was made on an old commit.
+
+'
+--- !u!1 &2945586050721362106
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7593666350427564864}
+ - component: {fileID: 4488835628498483499}
+ - component: {fileID: 6495855994796430067}
+ m_Layer: 5
+ m_Name: TextForDebugging
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &7593666350427564864
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2945586050721362106}
+ 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_Children: []
+ m_Father: {fileID: 6280529082113425347}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4488835628498483499
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2945586050721362106}
+ m_CullTransparentMesh: 0
+--- !u!114 &6495855994796430067
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2945586050721362106}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 29
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Make sure you're on the same LAN/WiFi network
+--- !u!1 &3342967049223911331
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3344052376368028088}
+ - component: {fileID: 4147603110869920048}
+ - component: {fileID: 116564040413298098}
+ m_Layer: 5
+ m_Name: TextSuggestion
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3344052376368028088
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3342967049223911331}
+ 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_Children: []
+ m_Father: {fileID: 6280529082113425347}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 5.6499987}
+ m_SizeDelta: {x: 0, y: 11.300002}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4147603110869920048
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3342967049223911331}
+ m_CullTransparentMesh: 0
+--- !u!114 &116564040413298098
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3342967049223911331}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 0
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 23
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 275
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Make sure you're on the same WiFi network and Hot Reload is running
+--- !u!1 &3751191164850618597
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3751191164850618611}
+ - component: {fileID: 3751191164850618616}
+ - component: {fileID: 3751191164850618560}
+ m_Layer: 5
+ m_Name: Logo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3751191164850618611
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618597}
+ 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_Children: []
+ m_Father: {fileID: 4967086677765351015}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 46.1, y: -43.161}
+ m_SizeDelta: {x: 54.687653, y: 54.687653}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3751191164850618616
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618597}
+ m_CullTransparentMesh: 0
+--- !u!114 &3751191164850618560
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618597}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 90cf8e542151548c6aa3cba26467e144, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &3751191164850618600
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3751191164850618614}
+ - component: {fileID: 3751191164850618595}
+ - component: {fileID: 3751191164850618571}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3751191164850618614
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618600}
+ 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_Children: []
+ m_Father: {fileID: 4967086678661718217}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3751191164850618595
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618600}
+ m_CullTransparentMesh: 0
+--- !u!114 &3751191164850618571
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618600}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 22
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Hide
+--- !u!1 &3751191164850618601
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3751191164850618615}
+ - component: {fileID: 3751191164850618620}
+ - component: {fileID: 3751191164850618564}
+ m_Layer: 5
+ m_Name: Prompts
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3751191164850618615
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618601}
+ 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_Children:
+ - {fileID: 4967086677765351015}
+ - {fileID: 4967086678334773008}
+ - {fileID: 6484505723585156786}
+ m_Father: {fileID: 4967086677379066171}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -0.00024414062, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3751191164850618620
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618601}
+ m_CullTransparentMesh: 0
+--- !u!114 &3751191164850618564
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618601}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d92cdbfacafd433ca77184c22a384a6d, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ retryPrompt: {fileID: 4967086678334773011}
+ connectedPrompt: {fileID: 4967086677765351014}
+ questionPrompt: {fileID: 6563246299181214611}
+ fallbackEventSystem: {fileID: 8054601594198067103}
+--- !u!1 &3751191164850618602
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3751191164850618608}
+ - component: {fileID: 3751191164850618621}
+ - component: {fileID: 3751191164850618565}
+ m_Layer: 5
+ m_Name: Summary
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &3751191164850618608
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618602}
+ 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_Children: []
+ m_Father: {fileID: 4967086677765351015}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 42.160004, y: -43.00023}
+ m_SizeDelta: {x: -109.740295, y: 54.366207}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3751191164850618621
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618602}
+ m_CullTransparentMesh: 0
+--- !u!114 &3751191164850618565
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3751191164850618602}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 32
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Connecting...
+--- !u!1 &4116732687138738479
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8252921096633957241}
+ - component: {fileID: 4733576179552229060}
+ - component: {fileID: 2012827545077904779}
+ - component: {fileID: 3158748587153539730}
+ m_Layer: 5
+ m_Name: ButtonMoreInfo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8252921096633957241
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4116732687138738479}
+ 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_Children:
+ - {fileID: 5758986847798381115}
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -99.72, y: -64.9}
+ m_SizeDelta: {x: 141.6914, y: 45.0679}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4733576179552229060
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4116732687138738479}
+ m_CullTransparentMesh: 0
+--- !u!114 &2012827545077904779
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4116732687138738479}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3158748587153539730
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4116732687138738479}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 0.9622642, g: 0.9622642, b: 0.9622642, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2012827545077904779}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &4279783835045373039
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8141605075363586685}
+ - component: {fileID: 1129507980982577600}
+ - component: {fileID: 3409363427364332004}
+ m_Layer: 5
+ m_Name: Text (Legacy)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8141605075363586685
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4279783835045373039}
+ 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_Children: []
+ m_Father: {fileID: 8150310283045374484}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: -0.5}
+ m_SizeDelta: {x: -20, y: -13}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1129507980982577600
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4279783835045373039}
+ m_CullTransparentMesh: 1
+--- !u!114 &3409363427364332004
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4279783835045373039}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 15
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 0
+ m_HorizontalOverflow: 1
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text:
+--- !u!1 &4471505415598507920
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6235104375140882572}
+ - component: {fileID: 4057252686040207820}
+ - component: {fileID: 3554294960250654513}
+ m_Layer: 5
+ m_Name: TextIP
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &6235104375140882572
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4471505415598507920}
+ 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_Children: []
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 6
+ 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: -248.5, y: -66.756}
+ m_SizeDelta: {x: 65, y: 61.4766}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4057252686040207820
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4471505415598507920}
+ m_CullTransparentMesh: 0
+--- !u!114 &3554294960250654513
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4471505415598507920}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 0
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'IP:'
+--- !u!1 &4803576491919660416
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8857299115396528434}
+ - component: {fileID: 2155891017074897053}
+ - component: {fileID: 462332990179851889}
+ m_Layer: 5
+ m_Name: Suggestion
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8857299115396528434
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4803576491919660416}
+ 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_Children: []
+ m_Father: {fileID: 4967086677765351015}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 42.185, y: -30.900002}
+ m_SizeDelta: {x: -109.78961, y: -97.906265}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2155891017074897053
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4803576491919660416}
+ m_CullTransparentMesh: 0
+--- !u!114 &462332990179851889
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4803576491919660416}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Edit code to see changes on device...
+--- !u!1 &4967086676766916185
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086676766916190}
+ - component: {fileID: 4967086676766916188}
+ - component: {fileID: 4967086676766916191}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086676766916190
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676766916185}
+ 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_Children: []
+ m_Father: {fileID: 4967086677112779038}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086676766916188
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676766916185}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086676766916191
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676766916185}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.103773594, g: 0.103773594, b: 0.103773594, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Reconnect
+
+'
+--- !u!1 &4967086676871555599
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086676871555596}
+ - component: {fileID: 4967086676871555698}
+ - component: {fileID: 4967086676871555597}
+ m_Layer: 5
+ m_Name: ImageLogo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086676871555596
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676871555599}
+ 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_Children: []
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 42.06, y: -39.16}
+ m_SizeDelta: {x: 54.687653, y: 54.687653}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086676871555698
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676871555599}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086676871555597
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086676871555599}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 90cf8e542151548c6aa3cba26467e144, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!1 &4967086677112779033
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086677112779038}
+ - component: {fileID: 4967086677112779037}
+ - component: {fileID: 4967086677112779036}
+ - component: {fileID: 4967086677112779039}
+ m_Layer: 5
+ m_Name: ButtonRetry
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086677112779038
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677112779033}
+ 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_Children:
+ - {fileID: 4967086676766916190}
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 45.1, y: 34.638}
+ m_SizeDelta: {x: -465.6686, y: 45.06787}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086677112779037
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677112779033}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086677112779036
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677112779033}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4967086677112779039
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677112779033}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 4967086677112779036}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &4967086677379066170
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086677379066171}
+ - component: {fileID: 3499838185132214990}
+ - component: {fileID: 3499838185132214991}
+ - component: {fileID: 3499838185132214988}
+ m_Layer: 5
+ m_Name: HotReloadPrompts
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086677379066171
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677379066170}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_Children:
+ - {fileID: 3751191164850618615}
+ - {fileID: 8564535462043123833}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!223 &3499838185132214990
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677379066170}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!114 &3499838185132214991
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677379066170}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 1
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 1280, y: 720}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0.5
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+--- !u!114 &3499838185132214988
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677379066170}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!1 &4967086677533727706
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086677533727707}
+ - component: {fileID: 4967086677533727705}
+ - component: {fileID: 4967086677533727704}
+ m_Layer: 5
+ m_Name: TextSummary
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086677533727707
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677533727706}
+ 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_Children: []
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 30, y: -42.7}
+ m_SizeDelta: {x: -105.96521, y: 61.476562}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086677533727705
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677533727706}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086677533727704
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677533727706}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 0
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 24
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Auto-pair ran into an issue
+--- !u!1 &4967086677765351014
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086677765351015}
+ - component: {fileID: 4967086677765351013}
+ - component: {fileID: 4967086677765351012}
+ - component: {fileID: 235867154863528169}
+ - component: {fileID: 7034300310699233304}
+ m_Layer: 5
+ m_Name: ConnectionDialog
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &4967086677765351015
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677765351014}
+ 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_Children:
+ - {fileID: 3751191164850618611}
+ - {fileID: 3751191164850618608}
+ - {fileID: 8857299115396528434}
+ m_Father: {fileID: 3751191164850618615}
+ 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: 8, y: 160.00003}
+ m_SizeDelta: {x: 603.4334, y: 152.50421}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086677765351013
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677765351014}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086677765351012
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677765351014}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.039215688, g: 0.039215688, b: 0.039215688, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &235867154863528169
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677765351014}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 4967086677765351012}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &7034300310699233304
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086677765351014}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: bb1cc47c374f478e861f2c3dade07e1a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ buttonHide: {fileID: 235867154863528169}
+ textSummary: {fileID: 3751191164850618565}
+ textSuggestion: {fileID: 462332990179851889}
+ pendingPatches: 0
+ patchesApplied: 0
+--- !u!1 &4967086678334773011
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086678334773008}
+ - component: {fileID: 4967086678334773014}
+ - component: {fileID: 4967086678334773009}
+ - component: {fileID: 3727107046497244783}
+ m_Layer: 5
+ m_Name: RetryDialog
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &4967086678334773008
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678334773011}
+ 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_Children:
+ - {fileID: 4967086676871555596}
+ - {fileID: 4967086677533727707}
+ - {fileID: 6280529082113425347}
+ - {fileID: 4967086678661718217}
+ - {fileID: 4967086677112779038}
+ - {fileID: 4911193491485015256}
+ - {fileID: 6235104375140882572}
+ - {fileID: 8150310283045374484}
+ m_Father: {fileID: 3751191164850618615}
+ m_RootOrder: 1
+ 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: 8, y: 160}
+ m_SizeDelta: {x: 603.4334, y: 203.0878}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086678334773014
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678334773011}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086678334773009
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678334773011}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.039215688, g: 0.039215688, b: 0.039215688, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3727107046497244783
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678334773011}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7a69f8e8e50a405a84ec22ac7c2f4bdc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ buttonHide: {fileID: 4967086678661718222}
+ buttonRetryAutoPair: {fileID: 4967086677112779039}
+ buttonTroubleshoot: {fileID: 6672458751395352801}
+ textSummary: {fileID: 4967086677533727704}
+ textSuggestion: {fileID: 116564040413298098}
+ ipInput: {fileID: 7429817927027686359}
+ textForDebugging: {fileID: 6495855994796430067}
+ enableDebugging: 0
+--- !u!1 &4967086678661718216
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967086678661718217}
+ - component: {fileID: 4967086678661718220}
+ - component: {fileID: 4967086678661718223}
+ - component: {fileID: 4967086678661718222}
+ m_Layer: 5
+ m_Name: ButtonHide
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4967086678661718217
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678661718216}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.8, y: 0.8, z: 0.5}
+ m_Children:
+ - {fileID: 3751191164850618614}
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -45.7, y: -26}
+ m_SizeDelta: {x: 95.76041, y: 46.033897}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4967086678661718220
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678661718216}
+ m_CullTransparentMesh: 0
+--- !u!114 &4967086678661718223
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678661718216}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.745283, g: 0.745283, b: 0.745283, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4967086678661718222
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4967086678661718216}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 4967086678661718223}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &5487644203504871490
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4911193491485015256}
+ - component: {fileID: 3977274743991914834}
+ - component: {fileID: 2696062604266108078}
+ - component: {fileID: 6672458751395352801}
+ m_Layer: 5
+ m_Name: ButtonTroubleshoot
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4911193491485015256
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5487644203504871490}
+ 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_Children:
+ - {fileID: 4216036513099635638}
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 200.54193, y: 34.638}
+ m_SizeDelta: {x: -447.021, y: 45.0679}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3977274743991914834
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5487644203504871490}
+ m_CullTransparentMesh: 0
+--- !u!114 &2696062604266108078
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5487644203504871490}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &6672458751395352801
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5487644203504871490}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2696062604266108078}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &6563246299181214611
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6484505723585156786}
+ - component: {fileID: 1661502203157216626}
+ - component: {fileID: 5891534192019788270}
+ - component: {fileID: 2310985356733911194}
+ m_Layer: 5
+ m_Name: ReusedQuestionDialog
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &6484505723585156786
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6563246299181214611}
+ 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_Children:
+ - {fileID: 4288889589057652595}
+ - {fileID: 5505278863775282652}
+ - {fileID: 6528462525361087078}
+ - {fileID: 8361365728969909008}
+ - {fileID: 7107734678944665722}
+ - {fileID: 8252921096633957241}
+ m_Father: {fileID: 3751191164850618615}
+ 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: 8, y: 160}
+ m_SizeDelta: {x: 603.4334, y: 203.0878}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1661502203157216626
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6563246299181214611}
+ m_CullTransparentMesh: 0
+--- !u!114 &5891534192019788270
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6563246299181214611}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.039215688, g: 0.039215688, b: 0.039215688, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &2310985356733911194
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6563246299181214611}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ef31038a0ed84685b779466bf22d53a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ textSummary: {fileID: 6369210938302316831}
+ textSuggestion: {fileID: 5675038352245823804}
+ buttonContinue: {fileID: 5265040605375167127}
+ buttonCancel: {fileID: 5585168207715079851}
+ buttonMoreInfo: {fileID: 3158748587153539730}
+--- !u!1 &6697092821899816264
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5758986847798381115}
+ - component: {fileID: 5463465806778337131}
+ - component: {fileID: 8072588694671228428}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &5758986847798381115
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6697092821899816264}
+ 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_Children: []
+ m_Father: {fileID: 8252921096633957241}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5463465806778337131
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6697092821899816264}
+ m_CullTransparentMesh: 0
+--- !u!114 &8072588694671228428
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6697092821899816264}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 20
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 2
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: More Info
+--- !u!1 &7506156204490477245
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7107734678944665722}
+ - component: {fileID: 677914236431176414}
+ - component: {fileID: 9047087872360317623}
+ - component: {fileID: 5265040605375167127}
+ m_Layer: 5
+ m_Name: ButtonContinue
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &7107734678944665722
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7506156204490477245}
+ 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_Children:
+ - {fileID: 1221019002237951643}
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0.5}
+ m_AnchorMax: {x: 1, y: 0.5}
+ m_AnchoredPosition: {x: -261.41, y: -64.89999}
+ m_SizeDelta: {x: 141.6914, y: 45.0679}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &677914236431176414
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7506156204490477245}
+ m_CullTransparentMesh: 0
+--- !u!114 &9047087872360317623
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7506156204490477245}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5265040605375167127
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7506156204490477245}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 9047087872360317623}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!1 &7769261099572506218
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8150310283045374484}
+ - component: {fileID: 5348576082586449480}
+ - component: {fileID: 6647422777320841469}
+ - component: {fileID: 7429817927027686359}
+ m_Layer: 5
+ m_Name: IpInput
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8150310283045374484
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7769261099572506218}
+ 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_Children:
+ - {fileID: 8207283617714762719}
+ - {fileID: 8141605075363586685}
+ m_Father: {fileID: 4967086678334773008}
+ m_RootOrder: 7
+ 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: -125.62808, y: -66.75602}
+ m_SizeDelta: {x: 180.7402, y: 41.1}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5348576082586449480
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7769261099572506218}
+ m_CullTransparentMesh: 1
+--- !u!114 &6647422777320841469
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7769261099572506218}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!114 &7429817927027686359
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7769261099572506218}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 6647422777320841469}
+ m_TextComponent: {fileID: 3409363427364332004}
+ m_Placeholder: {fileID: 8746367729340876900}
+ m_ContentType: 0
+ m_InputType: 0
+ m_AsteriskChar: 42
+ m_KeyboardType: 0
+ m_LineType: 0
+ m_HideMobileInput: 0
+ m_CharacterValidation: 0
+ m_CharacterLimit: 21
+ m_OnEndEdit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_CustomCaretColor: 0
+ m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+ m_Text:
+ m_CaretBlinkRate: 0.85
+ m_CaretWidth: 1
+ m_ReadOnly: 0
+--- !u!1 &8054601594198067103
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8564535462043123833}
+ - component: {fileID: 7768483217031697610}
+ - component: {fileID: 1047141224289122821}
+ m_Layer: 5
+ m_Name: FallbackInputProvider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!224 &8564535462043123833
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8054601594198067103}
+ 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_Children: []
+ m_Father: {fileID: 4967086677379066171}
+ m_RootOrder: 1
+ 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}
+ m_SizeDelta: {x: 100, y: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &7768483217031697610
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8054601594198067103}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!114 &1047141224289122821
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8054601594198067103}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!1 &8201367103125407330
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8207283617714762719}
+ - component: {fileID: 2716239957931866459}
+ - component: {fileID: 8746367729340876900}
+ m_Layer: 5
+ m_Name: Placeholder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8207283617714762719
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8201367103125407330}
+ 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_Children: []
+ m_Father: {fileID: 8150310283045374484}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: -0.5}
+ m_SizeDelta: {x: -20, y: -13}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2716239957931866459
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8201367103125407330}
+ m_CullTransparentMesh: 1
+--- !u!114 &8746367729340876900
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8201367103125407330}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 2
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Enter text...
+--- !u!1 &9029651609518542122
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4288889589057652595}
+ - component: {fileID: 1714143093284739457}
+ - component: {fileID: 3128017247211677084}
+ m_Layer: 5
+ m_Name: ImageLogo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &4288889589057652595
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9029651609518542122}
+ 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_Children: []
+ m_Father: {fileID: 6484505723585156786}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 42.06, y: -39.16}
+ m_SizeDelta: {x: 54.687653, y: 54.687653}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1714143093284739457
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9029651609518542122}
+ m_CullTransparentMesh: 0
+--- !u!114 &3128017247211677084
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9029651609518542122}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 90cf8e542151548c6aa3cba26467e144, type: 3}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab.meta b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab.meta
new file mode 100644
index 000000000..40b417e7b
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 0dc8d7047b14c44b7970c5d35665dbe1
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs
new file mode 100644
index 000000000..4a6ac9ffb
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs
@@ -0,0 +1,140 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System;
+using System.Linq;
+using JetBrains.Annotations;
+using System.IO;
+using UnityEngine;
+
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+namespace SingularityGroup.HotReload {
+ ///
+ /// HotReload runtime settings. These can be changed while the app is running.
+ ///
+ ///
+ /// ScriptableObject that may be included in Resources/ folder.
+ /// See also Editor/PrebuildIncludeResources.cs
+ ///
+ [Serializable]
+ class HotReloadSettingsObject : ScriptableObject {
+ #region singleton
+ private static HotReloadSettingsObject _I;
+ public static HotReloadSettingsObject I {
+ get {
+ if (_I == null) {
+ _I = LoadSettingsOrDefault();
+ }
+ return _I;
+ }
+ }
+
+ /// Create settings inside Assets/ because user cannot edit files that are included inside a Unity package
+ ///
+ /// You can change this in a build script if you want it created somewhere else.
+ ///
+ public static string editorAssetPath = "Assets/HotReload/Resources/HotReloadSettingsObject.asset";
+
+ private static string resourceName => Path.GetFileNameWithoutExtension(editorAssetPath);
+
+ public static bool TryLoadSettings(out HotReloadSettingsObject settings) {
+ try {
+ settings = LoadSettings();
+ return settings != null;
+ } catch(FileNotFoundException) {
+ settings = null;
+ return false;
+ }
+ }
+
+ [NotNull]
+ private static HotReloadSettingsObject LoadSettingsOrDefault() {
+ var settings = LoadSettings();
+ if (settings == null) {
+ // load defaults
+ settings = CreateInstance();
+ }
+ return settings;
+ }
+
+ [CanBeNull]
+ private static HotReloadSettingsObject LoadSettings() {
+ HotReloadSettingsObject settings;
+ if (Application.isEditor) {
+ #if UNITY_EDITOR
+ settings = AssetDatabase.LoadAssetAtPath(editorAssetPath);
+ #else
+ settings = null;
+ #endif
+ } else {
+ // load from Resources (assumes that build includes the resource)
+ settings = Resources.Load(resourceName);
+ }
+ return settings;
+ }
+ #endregion
+
+ #region settings
+
+ /// Set default values.
+ ///
+ /// This is called by the Unity editor when the ScriptableObject is first created.
+ /// This function is only called in editor mode.
+ ///
+ private void Reset() {
+ EnsurePrefabSetCorrectly();
+ }
+
+ ///
+ /// Path to the prefab asset file.
+ ///
+ const string prefabAssetPath = "Packages/com.singularitygroup.hotreload/Runtime/HotReloadPrompts.prefab";
+
+ // Call this during build, just to be sure the field is correct. (I had some issues with it while editing the prefab)
+ public void EnsurePrefabSetCorrectly() {
+#if UNITY_EDITOR
+ var prefab = AssetDatabase.LoadAssetAtPath(prefabAssetPath);
+ if (prefab == null) {
+ // when you use HotReload as a unitypackage, prefab is somewhere inside your assets folder
+ var guids = AssetDatabase.FindAssets("HotReloadPrompts t:prefab", new string[]{"Assets"});
+ var paths = guids.Select(guid => AssetDatabase.GUIDToAssetPath(guid));
+ var promptsPrefabPath = paths.FirstOrDefault(assetpath => Path.GetFileName(assetpath) == "HotReloadPrompts.prefab");
+ if (promptsPrefabPath != null) {
+ prefab = AssetDatabase.LoadAssetAtPath(promptsPrefabPath);
+ }
+ }
+ if (prefab == null) {
+ throw new Exception("Failed to find PromptsPrefab (are you using Hot Reload as a package?");
+ }
+ PromptsPrefab = prefab;
+#endif
+ }
+
+ public void EnsurePrefabNotInBuild() {
+#if UNITY_EDITOR
+ PromptsPrefab = null;
+#endif
+ }
+
+
+ // put the stored settings here
+
+ [Header("Build Settings")]
+ [Tooltip("Should the Hot Reload runtime be included in development builds? HotReload is never included in release builds.")]
+ public bool IncludeInBuild = true;
+
+ [Header("Player Settings")]
+ public bool AllowAndroidAppToMakeHttpRequests = false;
+
+ #region hidden
+
+ /// Reference to the Prefab, for loading it at runtime
+ [HideInInspector]
+ public GameObject PromptsPrefab;
+ #endregion
+
+ #endregion settings
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs.meta
new file mode 100644
index 000000000..c624eebb2
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs.meta
@@ -0,0 +1,20 @@
+fileFormatVersion: 2
+guid: 324c6fd3c103e0f418eb4b98c46bf63c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences:
+ - PromptsPrefab: {fileID: 4967086677379066170, guid: 0dc8d7047b14c44b7970c5d35665dbe1,
+ type: 3}
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/HotReloadSettingsObject.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs b/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs
new file mode 100644
index 000000000..04cf7539d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs
@@ -0,0 +1,19 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using System.Net.Http;
+
+namespace SingularityGroup.HotReload {
+
+ public class HttpClientUtils {
+ public static HttpClient CreateHttpClient() {
+ var handler = new HttpClientHandler {
+ // Without this flag HttpClients don't work for PCs with double-byte characters in the name
+ UseCookies = false
+ };
+
+ return new HttpClient(handler);
+ }
+ }
+
+}
+
+#endif
\ No newline at end of file
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs.meta
new file mode 100644
index 000000000..33da24ccb
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: b40f5d8cac104565b0aaa1d1e294ff8f
+timeCreated: 1700069330
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/HttpClientUtils.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs b/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs
new file mode 100644
index 000000000..082f41229
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs
@@ -0,0 +1,11 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+namespace SingularityGroup.HotReload {
+ public interface IServerHealthCheck {
+ bool IsServerHealthy { get; }
+ }
+
+ internal interface IServerHealthCheckInternal : IServerHealthCheck {
+ void CheckHealth();
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs.meta
new file mode 100644
index 000000000..57add06bb
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: bcb0ff221290427182643b815685ea97
+timeCreated: 1675232020
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/IServerHealthCheck.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs b/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs
new file mode 100644
index 000000000..50eda6b65
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs
@@ -0,0 +1,27 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace SingularityGroup.HotReload {
+ class InstallQRDialog : MonoBehaviour {
+ public Button buttonGo;
+ public Button buttonHide;
+
+ private void Start() {
+ buttonHide.onClick.AddListener(Hide);
+
+ // launch camera app that can scan QR-Code https://singularitygroup.atlassian.net/browse/SG-29495
+ buttonGo.onClick.AddListener(() => {
+ Hide();
+ var recommendedQrCodeApp = "com.scanteam.qrcodereader";
+ Application.OpenURL($"https://play.google.com/store/apps/details?id={recommendedQrCodeApp}");
+ });
+ }
+
+ /// hide this dialog
+ void Hide() {
+ gameObject.SetActive(false); // this should disable the Update loop?
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs.meta
new file mode 100644
index 000000000..fd7e1c02d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 03d3be3b485a4450b112f9ea3af4fb66
+timeCreated: 1674988075
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/InstallQRDialog.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs b/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs
new file mode 100644
index 000000000..2802b46d0
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs
@@ -0,0 +1,64 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+#if UNITY_ANDROID && !UNITY_EDITOR
+#define MOBILE_ANDROID
+#endif
+#if UNITY_IOS && !UNITY_EDITOR
+#define MOBILE_IOS
+#endif
+#if MOBILE_ANDROID || MOBILE_IOS
+#define MOBILE
+#endif
+
+using System;
+using System.Net.NetworkInformation;
+using System.Net.Sockets;
+
+namespace SingularityGroup.HotReload {
+ static class IpHelper {
+ // get my local ip address
+
+ static DateTime cachedAt;
+ static string ipCached;
+ public static string GetIpAddressCached() {
+ if (string.IsNullOrEmpty(ipCached) || DateTime.UtcNow - cachedAt > TimeSpan.FromSeconds(5)) {
+ ipCached = GetIpAddress();
+ cachedAt = DateTime.UtcNow;
+ }
+ return ipCached;
+ }
+
+ public static string GetIpAddress() {
+ var ip = GetLocalIPv4(NetworkInterfaceType.Wireless80211);
+
+ if (string.IsNullOrEmpty(ip)) {
+ return GetLocalIPv4(NetworkInterfaceType.Ethernet);
+ }
+ return ip;
+ }
+
+ private static string GetLocalIPv4(NetworkInterfaceType _type) {
+ string output = "";
+ foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) {
+ if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up) {
+ foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) {
+ if (ip.Address.AddressFamily == AddressFamily.InterNetwork && IsLocalIp(ip.Address.MapToIPv4().GetAddressBytes())) {
+ output = ip.Address.ToString();
+ }
+ }
+ }
+ }
+ return output;
+ }
+
+ // https://datatracker.ietf.org/doc/html/rfc1918#section-3
+ static bool IsLocalIp(byte[] ipAddress) {
+ return ipAddress[0] == 10
+ || ipAddress[0] == 172
+ && ipAddress[1] >= 16
+ && ipAddress[1] <= 31
+ || ipAddress[0] == 192
+ && ipAddress[1] == 168;
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs.meta
new file mode 100644
index 000000000..ebe4cc626
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4d3a24a25ced4eae8b7e0b9b5a0d5c9d
+timeCreated: 1674145172
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/IpHelper.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs.meta
new file mode 100644
index 000000000..192e76259
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 053fc5684eb47f54e8c877cb1ade54d6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly.meta
new file mode 100644
index 000000000..d961c6024
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 520640393141aab41bd6d6b1f43e7037
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll
new file mode 100644
index 000000000..fdea2d123
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll.meta
new file mode 100644
index 000000000..346fdef01
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll.meta
@@ -0,0 +1,99 @@
+fileFormatVersion: 2
+guid: e0277ee5c436c344a9d7720bdc0391d1
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 0
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 1
+ Exclude WebGL: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ WebGL: WebGL
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll
new file mode 100644
index 000000000..b990749c3
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta
new file mode 100644
index 000000000..c5490abf9
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta
@@ -0,0 +1,95 @@
+fileFormatVersion: 2
+guid: 49b66a954ad81dd4795e880bd63dc4c3
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - UNITY_2019_4_OR_NEWER
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 0
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 1
+ Exclude WebGL: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2019.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll
new file mode 100644
index 000000000..3c6c6a7a5
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta
new file mode 100644
index 000000000..0fc6f0002
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta
@@ -0,0 +1,95 @@
+fileFormatVersion: 2
+guid: 784812c918589424a90509ea34a51da0
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - UNITY_2020_3_OR_NEWER
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 0
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 1
+ Exclude WebGL: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2020.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll
new file mode 100644
index 000000000..11cb80c82
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta
new file mode 100644
index 000000000..6e219de9e
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta
@@ -0,0 +1,95 @@
+fileFormatVersion: 2
+guid: 8c8658e0b34ecf04ca6ca07ffa6fc846
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - UNITY_2022_2_OR_NEWER
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 0
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 1
+ Exclude WebGL: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 0
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/EditorOnly/SingularityGroup.HotReload.RuntimeDependencies2022.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice.meta
new file mode 100644
index 000000000..5c91b3fa1
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b3d6360d6d1f2c47b659f0a4960ebfe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll
new file mode 100644
index 000000000..fdea2d123
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll.meta
new file mode 100644
index 000000000..02a3234a1
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll.meta
@@ -0,0 +1,95 @@
+fileFormatVersion: 2
+guid: 15528e9db0a6c9b45a66378f0b6c4dd6
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - ENABLE_MONO
+ - DEVELOPMENT_BUILD
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux64: 0
+ Exclude OSXUniversal: 0
+ Exclude Win: 0
+ Exclude Win64: 0
+ Exclude iOS: 0
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll
new file mode 100644
index 000000000..b990749c3
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta
new file mode 100644
index 000000000..1cb5e6b9d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll.meta
@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 4febf8334e6a82f4e9faf3513c7fcc8d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - ENABLE_MONO
+ - UNITY_2019_4_OR_NEWER
+ - DEVELOPMENT_BUILD
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux64: 0
+ Exclude OSXUniversal: 0
+ Exclude Win: 0
+ Exclude Win64: 0
+ Exclude iOS: 0
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2019.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll
new file mode 100644
index 000000000..3c6c6a7a5
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta
new file mode 100644
index 000000000..e4ad8331d
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll.meta
@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 35c3cec01c5230e41bea51d3ac6fcfa1
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - ENABLE_MONO
+ - UNITY_2020_3_OR_NEWER
+ - DEVELOPMENT_BUILD
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux64: 0
+ Exclude OSXUniversal: 0
+ Exclude Win: 0
+ Exclude Win64: 0
+ Exclude iOS: 0
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2020.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll
new file mode 100644
index 000000000..11cb80c82
Binary files /dev/null and b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll differ
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta
new file mode 100644
index 000000000..4ffdd5442
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll.meta
@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: c9f10603236554c4896f310072d57f24
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints:
+ - ENABLE_MONO
+ - UNITY_2022_2_OR_NEWER
+ - DEVELOPMENT_BUILD
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 1
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux64: 0
+ Exclude OSXUniversal: 0
+ Exclude Win: 0
+ Exclude Win64: 0
+ Exclude iOS: 0
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARMv7
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ DefaultValueInitialized: true
+ OS: AnyOS
+ - first:
+ Standalone: Linux64
+ second:
+ enabled: 1
+ settings:
+ CPU: AnyCPU
+ - first:
+ Standalone: OSXUniversal
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Standalone: Win
+ second:
+ enabled: 1
+ settings:
+ CPU: x86
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 1
+ settings:
+ CPU: x86_64
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ - first:
+ iPhone: iOS
+ second:
+ enabled: 1
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/Libs/OnDevice/SingularityGroup.HotReload.RuntimeDependencies2022.dll
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs b/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs
new file mode 100644
index 000000000..7642daf70
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs
@@ -0,0 +1,110 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+
+using System;
+using System.Reflection;
+using SingularityGroup.HotReload.MonoMod.Utils;
+
+namespace SingularityGroup.HotReload {
+ static class MethodCompatiblity {
+ internal static bool AreMethodsCompatible(MethodBase previousMethod, MethodBase patchMethod) {
+ var previousConstructor = previousMethod as ConstructorInfo;
+ var patchConstructor = patchMethod as ConstructorInfo;
+ if(previousConstructor != null && !ReferenceEquals(patchConstructor, null)) {
+ return AreConstructorsCompatible(previousConstructor, patchConstructor);
+ }
+ var previousMethodInfo = previousMethod as MethodInfo;
+ var patchMethodInfo = patchMethod as MethodInfo;
+ if(!ReferenceEquals(previousMethodInfo, null) && !ReferenceEquals(patchMethodInfo, null)) {
+ return AreMethodInfosCompatible(previousMethodInfo, patchMethodInfo);
+ }
+ return false;
+ }
+
+ static bool AreMethodBasesCompatible(MethodBase previousMethod, MethodBase patchMethod) {
+ if(previousMethod.Name != patchMethod.Name) {
+ return false;
+ }
+ //Declaring type of patch method is different from the target method but their full name (namespace + name) is equal
+ if(previousMethod.DeclaringType.FullName != patchMethod.DeclaringType.FullName) {
+ return false;
+ }
+ //Check in case type parameter overloads to distinguish between: void M() { } <-> void M() { }
+ if(previousMethod.IsGenericMethodDefinition != patchMethod.IsGenericMethodDefinition) {
+ return false;
+ }
+
+ var prevParams = previousMethod.GetParameters();
+ var patchParams = patchMethod.GetParameters();
+ ArraySegment patchParamsSegment;
+ bool patchMethodHasExplicitThis;
+ if(previousMethod.IsStatic || previousMethod.Name.Contains("<") && !patchMethod.IsStatic) {
+ patchMethodHasExplicitThis = false;
+ } else {
+ patchMethodHasExplicitThis = true;
+ }
+ if(LikelyHasExplicitThis(prevParams, patchParams, previousMethod)) {
+ patchMethodHasExplicitThis = true;
+ }
+ //Special edge case: User added static keyword to method. No explicit this will be generated in that case
+ if(!previousMethod.IsStatic && patchMethod.IsStatic && !LikelyHasExplicitThis(prevParams, patchParams, previousMethod)) {
+ patchMethodHasExplicitThis = false;
+ }
+ if(patchMethodHasExplicitThis) {
+ //Special case: patch method for an instance method is static and has an explicit this parameter.
+ //If the patch method doesn't have any parameters it is not compatible.
+ if(patchParams.Length == 0) {
+ return false;
+ }
+ //this parameter has to be the declaring type
+ if(!ParamTypeMatches(patchParams[0].ParameterType, previousMethod.DeclaringType)) {
+ return false;
+ }
+ //Ignore the this parameter and compare the remaining ones.
+ patchParamsSegment = new ArraySegment(patchParams, 1, patchParams.Length - 1);
+ } else {
+ patchParamsSegment = new ArraySegment(patchParams);
+ }
+ return CompareParameters(new ArraySegment(prevParams), patchParamsSegment);
+ }
+
+ static bool LikelyHasExplicitThis(ParameterInfo[] prevParams, ParameterInfo[] patchParams, MethodBase previousMethod) {
+ if (patchParams.Length != prevParams.Length + 1) {
+ return false;
+ }
+ var patchT = patchParams[0].ParameterType;
+ if (!ParamTypeMatches(patchT, previousMethod.DeclaringType)) {
+ return false;
+ }
+ if (prevParams.Length >= 1 && prevParams[0].ParameterType == previousMethod.DeclaringType) {
+ return false;
+ }
+ return patchParams[0].Name == "this";
+ }
+
+ static bool ParamTypeMatches(Type patchT, Type originalT) {
+ return patchT == originalT || patchT.IsByRef && patchT.GetElementType() == originalT;
+ }
+
+ static bool CompareParameters(ArraySegment x, ArraySegment y) {
+ if(x.Count != y.Count) {
+ return false;
+ }
+ for (var i = 0; i < x.Count; i++) {
+ if(x.Array[i + x.Offset].ParameterType != y.Array[i + y.Offset].ParameterType) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ static bool AreConstructorsCompatible(ConstructorInfo x, ConstructorInfo y) {
+ return AreMethodBasesCompatible(x, y);
+ }
+
+ static bool AreMethodInfosCompatible(MethodInfo x, MethodInfo y) {
+ return AreMethodBasesCompatible(x, y) && x.ReturnType == y.ReturnType;
+ }
+ }
+}
+#endif
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs.meta b/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs.meta
new file mode 100644
index 000000000..f4f81366a
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs.meta
@@ -0,0 +1,18 @@
+fileFormatVersion: 2
+guid: d731e763662b98941bb06ffc6994a9a8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 254358
+ packageName: Hot Reload | Edit Code Without Compiling
+ packageVersion: 1.12.10
+ assetPath: Packages/com.singularitygroup.hotreload/Runtime/MethodCompatiblity.cs
+ uploadId: 668105
diff --git a/Packages/com.singularitygroup.hotreload/Runtime/MethodPatchResponsesConverter.cs b/Packages/com.singularitygroup.hotreload/Runtime/MethodPatchResponsesConverter.cs
new file mode 100644
index 000000000..55d56b169
--- /dev/null
+++ b/Packages/com.singularitygroup.hotreload/Runtime/MethodPatchResponsesConverter.cs
@@ -0,0 +1,500 @@
+#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
+
+using System;
+using System.Collections.Generic;
+using SingularityGroup.HotReload.DTO;
+using SingularityGroup.HotReload.Newtonsoft.Json;
+
+namespace SingularityGroup.HotReload.JsonConverters {
+ internal class MethodPatchResponsesConverter : JsonConverter {
+ public override bool CanConvert(Type objectType) {
+ return objectType == typeof(List);
+ }
+
+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
+ var list = new List();
+
+ while (reader.Read()) {
+ if (reader.TokenType == JsonToken.StartObject) {
+ list.Add(ReadMethodPatchResponse(reader));
+ } else if (reader.TokenType == JsonToken.EndArray) {
+ break; // End of the SMethod list
+ }
+ }
+
+ return list;
+ }
+
+ private MethodPatchResponse ReadMethodPatchResponse(JsonReader reader) {
+ string id = null;
+ CodePatch[] patches = null;
+ string[] failures = null;
+ SMethod[] removedMethod = null;
+
+ while (reader.Read()) {
+ if (reader.TokenType == JsonToken.EndObject) {
+ break;
+ }
+ if (reader.TokenType != JsonToken.PropertyName) {
+ continue;
+ }
+ var propertyName = (string)reader.Value;
+
+ switch (propertyName) {
+ case nameof(MethodPatchResponse.id):
+ id = reader.ReadAsString();
+ break;
+
+ case nameof(MethodPatchResponse.patches):
+ patches = ReadPatches(reader);
+ break;
+
+ case nameof(MethodPatchResponse.failures):
+ failures = ReadStringArray(reader);
+ break;
+
+ case nameof(MethodPatchResponse.removedMethod):
+ removedMethod = ReadSMethodArray(reader);
+ break;
+
+ default:
+ reader.Skip(); // Skip unknown properties
+ break;
+ }
+ }
+
+ return new MethodPatchResponse(
+ id ?? string.Empty,
+ patches ?? Array.Empty(),
+ failures ?? Array.Empty(),
+ removedMethod ?? Array.Empty(),
+ // Note: doesn't have to be persisted here
+ Array.Empty()
+ );
+ }
+
+ private CodePatch[] ReadPatches(JsonReader reader) {
+ var patches = new List();
+
+ while (reader.Read()) {
+ if (reader.TokenType == JsonToken.EndArray) {
+ break;
+ }
+ if (reader.TokenType != JsonToken.StartObject) {
+ continue;
+ }
+ string patchId = null;
+ string assemblyName = null;
+ byte[] patchAssembly = null;
+ byte[] patchPdb = null;
+ SMethod[] modifiedMethods = null;
+ SMethod[] patchMethods = null;
+ SMethod[] newMethods = null;
+ SUnityJob[] unityJobs = null;
+
+ while (reader.Read()) {
+ if (reader.TokenType == JsonToken.EndObject) {
+ break;
+ }
+ if (reader.TokenType != JsonToken.PropertyName) {
+ continue;
+ }
+ var propertyName = (string)reader.Value;
+
+ switch (propertyName) {
+ case nameof(CodePatch.patchId):
+ patchId = reader.ReadAsString();
+ break;
+
+ case nameof(CodePatch.assemblyName):
+ assemblyName = reader.ReadAsString();
+ break;
+
+ case nameof(CodePatch.patchAssembly):
+ patchAssembly = Convert.FromBase64String(reader.ReadAsString());
+ break;
+
+ case nameof(CodePatch.patchPdb):
+ patchPdb = Convert.FromBase64String(reader.ReadAsString());
+ break;
+
+ case nameof(CodePatch.modifiedMethods):
+ modifiedMethods = ReadSMethodArray(reader);
+ break;
+
+ case nameof(CodePatch.patchMethods):
+ patchMethods = ReadSMethodArray(reader);
+ break;
+
+ case nameof(CodePatch.newMethods):
+ newMethods = ReadSMethodArray(reader);
+ break;
+
+ case nameof(CodePatch.unityJobs):
+ unityJobs = ReadSUnityJobArray(reader);
+ break;
+
+ default:
+ reader.Skip(); // Skip unknown properties
+ break;
+ }
+ }
+
+ patches.Add(new CodePatch(
+ patchId: patchId ?? string.Empty,
+ assemblyName: assemblyName ?? string.Empty,
+ patchAssembly: patchAssembly ?? Array.Empty(),
+ patchPdb: patchPdb ?? Array.Empty(),
+ modifiedMethods: modifiedMethods ?? Array.Empty(),
+ patchMethods: patchMethods ?? Array.Empty