\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)
+ {
+ return new SemVersion(0);
+ }
+
+#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
+
+ ///
+ /// Implicit conversion from string to SemVersion.
+ ///
+ /// The semantic version.
+ /// The SemVersion object.
+ public static implicit operator SemVersion(string version)
+ {
+ return SemVersion.Parse(version);
+ }
+
+ ///
+ /// 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)
+ {
+ return SemVersion.Equals(left, 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 !SemVersion.Equals(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 SemVersion.Compare(left, 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 SemVersion.Compare(left, 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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta
new file mode 100644
index 0000000..9531b85
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 5075cb5aa3254b099b11b2840d7cd46e
+timeCreated: 1503684176
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs
new file mode 100644
index 0000000..4dd8aef
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs
@@ -0,0 +1,15 @@
+namespace Semver
+{
+ internal static class SemVersionExtension
+ {
+ public static string VersionOnly(this SemVersion version)
+ {
+ return "" + version.Major + "." + version.Minor + "." + version.Patch;
+ }
+
+ public static string ShortVersion(this SemVersion version)
+ {
+ return version.Major + "." + version.Minor;
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta
new file mode 100644
index 0000000..0022e01
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9f17a0688211d476f8d8c9742bb9f992
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta
new file mode 100644
index 0000000..27cc5fd
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: afd7697844f4142f9aa91471c1fba506
+folderAsset: yes
+timeCreated: 1502224642
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta
new file mode 100644
index 0000000..15b36c7
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1067213df0c64b319bc81e73be809b1a
+timeCreated: 1505249387
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs
new file mode 100644
index 0000000..12691d3
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs
@@ -0,0 +1,17 @@
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+ class ApplicationUtil
+ {
+ public static bool IsPreReleaseVersion
+ {
+ get
+ {
+ var lastToken = Application.unityVersion.Split('.').LastOrDefault();
+ return lastToken.Contains("a") || lastToken.Contains("b");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta
new file mode 100644
index 0000000..0f1a767
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7ed48dcc992234c659018e00590315b7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs
new file mode 100644
index 0000000..512c718
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs
@@ -0,0 +1,30 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal class OperationSignal where T: IBaseOperation
+ {
+ public event Action OnOperation = delegate { };
+
+ public T Operation { get; set; }
+
+ public void SetOperation(T operation)
+ {
+ Operation = operation;
+ OnOperation(operation);
+ }
+
+ public void WhenOperation(Action callback)
+ {
+ if (Operation != null)
+ callback(Operation);
+ OnOperation += callback;
+ }
+
+ internal void ResetEvents()
+ {
+ OnOperation = delegate { };
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta
new file mode 100644
index 0000000..a58af90
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7da0c11c52b4044de81c175887699282
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs
new file mode 100644
index 0000000..f9cf6e4
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs
@@ -0,0 +1,19 @@
+using UnityEngine.Experimental.UIElements;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal static class Resources
+ {
+ private static string TemplateRoot { get { return PackageManagerWindow.ResourcesPath + "Templates"; } }
+
+ private static string TemplatePath(string filename)
+ {
+ return string.Format("{0}/{1}", TemplateRoot, filename);
+ }
+
+ public static VisualElement GetTemplate(string templateFilename)
+ {
+ return AssetDatabase.LoadAssetAtPath(TemplatePath(templateFilename)).CloneTree(null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta
new file mode 100644
index 0000000..0f999a7
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d6a708dbb74414a6dbd60e07d9513c1c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs
new file mode 100644
index 0000000..6503753
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs
@@ -0,0 +1,35 @@
+using System.Threading;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class ThreadedDelay
+ {
+ public int Length { get; set; } // In milliseconds
+ public bool IsDone { get; private set; }
+
+ public ThreadedDelay(int length = 0)
+ {
+ Length = length;
+ IsDone = false;
+ }
+
+ public void Start()
+ {
+ if (Length <= 0)
+ {
+ IsDone = true;
+ return;
+ }
+
+ IsDone = false;
+
+ Thread newThread = new Thread(() =>
+ {
+ Thread.Sleep(Length);
+ IsDone = true;
+ });
+
+ newThread.Start();
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta
new file mode 100644
index 0000000..7ca2684
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 490fe93dbc954e3ba3651b7f55eaba70
+timeCreated: 1505249395
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta
new file mode 100644
index 0000000..96397a4
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3385f7527e5be4c65b3a5294e8995ff8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs
new file mode 100644
index 0000000..40c39fd
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal interface IAddOperation : IBaseOperation
+ {
+ event Action OnOperationSuccess;
+
+ PackageInfo PackageInfo { get; }
+
+ void AddPackageAsync(PackageInfo packageInfo, Action doneCallbackAction = null, Action errorCallbackAction = null);
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta
new file mode 100644
index 0000000..183c23a
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3dcbbc060dea46168ffc09a580836240
+timeCreated: 1504191596
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs
new file mode 100644
index 0000000..4c22b28
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal interface IBaseOperation
+ {
+ event Action OnOperationError;
+ event Action OnOperationFinalized;
+
+ bool IsCompleted { get; }
+
+ void Cancel();
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta
new file mode 100644
index 0000000..073084b
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2f1849b9179b464381598f68663790d3
+timeCreated: 1507041169
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs
new file mode 100644
index 0000000..00ba1fa
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal interface IListOperation : IBaseOperation
+ {
+ bool OfflineMode { get; set; }
+ void GetPackageListAsync(Action> doneCallbackAction, Action errorCallbackAction = null);
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta
new file mode 100644
index 0000000..9bc2553
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b7e8a8fb69eacee439474914ea54bf9b
+timeCreated: 1502913188
+licenseType: Free
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs
new file mode 100644
index 0000000..1d10304
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs
@@ -0,0 +1,14 @@
+namespace UnityEditor.PackageManager.UI
+{
+ ///
+ /// This is the Interface we will use to create the facade we need for testing.
+ /// In the case of the Fake factory, we can create fake operations with doctored data we use for our tests.
+ ///
+ internal interface IOperationFactory
+ {
+ IListOperation CreateListOperation(bool offlineMode = false);
+ ISearchOperation CreateSearchOperation();
+ IAddOperation CreateAddOperation();
+ IRemoveOperation CreateRemoveOperation();
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta
new file mode 100644
index 0000000..d718f50
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 0a1161a2ab6569948a0aa7899197218c
+timeCreated: 1502915478
+licenseType: Free
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs
new file mode 100644
index 0000000..211c992
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal interface IRemoveOperation : IBaseOperation
+ {
+ event Action OnOperationSuccess;
+
+ void RemovePackageAsync(PackageInfo package, Action doneCallbackAction = null, Action errorCallbackAction = null);
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta
new file mode 100644
index 0000000..0506013
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 54e5fc61925bc4ca3b2c1e82dfb35eb5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs
new file mode 100644
index 0000000..b3b6a90
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal interface ISearchOperation : IBaseOperation
+ {
+ void GetAllPackageAsync(Action> doneCallbackAction = null, Action errorCallbackAction = null);
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta
new file mode 100644
index 0000000..f122eaf
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 85dba6b2d7204a7f9a1f976eb0a6b4d2
+timeCreated: 1508160206
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs
new file mode 100644
index 0000000..9e07fc3
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs
@@ -0,0 +1,24 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal static class OperationFactory
+ {
+ private static IOperationFactory _instance;
+
+ public static IOperationFactory Instance
+ {
+ get {
+ if (_instance == null)
+ _instance = new UpmOperationFactory ();
+ return _instance;
+ }
+ internal set {
+ _instance = value;
+ }
+ }
+
+ internal static void Reset()
+ {
+ _instance = null;
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta
new file mode 100644
index 0000000..5d7e994
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9ec5dc72125424af38a9bfaca532acc8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta
new file mode 100644
index 0000000..e2d634f
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: e53bc96d2d054b8cbc811f0d73e761eb
+timeCreated: 1504191702
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs
new file mode 100644
index 0000000..5c366dd
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs
@@ -0,0 +1,222 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+ // History of a single package
+ internal class Package : IEquatable
+ {
+ static public bool ShouldProposeLatestVersions
+ {
+ get
+ {
+ // Until we figure out a way to test this properly, alway show standard behavior
+ // return InternalEditorUtility.IsUnityBeta() && !Unsupported.IsDeveloperMode();
+ return false;
+ }
+ }
+
+ // There can only be one package add/remove operation.
+ private static IBaseOperation addRemoveOperationInstance;
+
+ public static bool AddRemoveOperationInProgress
+ {
+ get { return addRemoveOperationInstance != null && !addRemoveOperationInstance.IsCompleted; }
+ }
+
+ internal const string packageManagerUIName = "com.unity.package-manager-ui";
+ private readonly string packageName;
+ private IEnumerable source;
+
+ internal Package(string packageName, IEnumerable infos)
+ {
+ if (string.IsNullOrEmpty(packageName))
+ throw new ArgumentException("Cannot be empty or null", "packageName");
+
+ if (!infos.Any())
+ throw new ArgumentException("Cannot be empty", "infos");
+
+ this.packageName = packageName;
+ UpdateSource(infos);
+ }
+
+ internal void UpdateSource(IEnumerable source)
+ {
+ this.source = source;
+#if UNITY_2018_3_OR_NEWER
+ if (IsPackageManagerUI)
+ this.source = this.source.Where(p => p != null && p.Version.Major >= 2);
+#endif
+ }
+
+ public PackageInfo Current { get { return Versions.FirstOrDefault(package => package.IsCurrent); } }
+
+ // This is the latest verified or official release (eg: 1.3.2). Not necessarily the latest verified release (eg: 1.2.4) or that latest candidate (eg: 1.4.0-beta)
+ public PackageInfo LatestUpdate
+ {
+ get
+ {
+ // We want to show the absolute latest when in beta mode
+ if (ShouldProposeLatestVersions)
+ return Latest;
+
+ // Override with current when it's version locked
+ var current = Current;
+ if (current != null && current.IsVersionLocked)
+ return current;
+
+ // Get all the candidates versions (verified, release, preview) that are newer than current
+ var verified = Verified;
+ var latestRelease = LatestRelease;
+ var latestPreview = Versions.LastOrDefault(package => package.IsPreview);
+ var candidates = new List
+ {
+ verified,
+ latestRelease,
+ latestPreview,
+ }.Where(package => package != null && (current == null || current == package || current.Version < package.Version)).ToList();
+
+ if (candidates.Contains(verified))
+ return verified;
+ if ((current == null || !current.IsVerified ) && candidates.Contains(latestRelease))
+ return latestRelease;
+ if ((current == null || current.IsPreview) && candidates.Contains(latestPreview))
+ return latestPreview;
+
+ // Show current if it exists, otherwise latest user visible, and then otherwise show the absolute latest
+ return current ?? Latest;
+ }
+ }
+
+ public PackageInfo LatestPatch
+ {
+ get
+ {
+ if (Current == null)
+ return null;
+
+ // Get all version that have the same Major/Minor
+ var versions = Versions.Where(package => package.Version.Major == Current.Version.Major && package.Version.Minor == Current.Version.Minor);
+
+ return versions.LastOrDefault();
+ }
+ }
+
+ // This is the very latest version, including pre-releases (eg: 1.4.0-beta).
+ internal PackageInfo Latest { get { return Versions.FirstOrDefault(package => package.IsLatest) ?? Versions.LastOrDefault(); } }
+
+ // Returns the current version if it exist, otherwise returns the latest user visible version.
+ internal PackageInfo VersionToDisplay { get { return Current ?? LatestUpdate; } }
+
+ // Every version available for this package
+ internal IEnumerable Versions { get { return source.OrderBy(package => package.Version); } }
+
+ // Every version that's not a pre-release (eg: not beta/alpha/preview).
+ internal IEnumerable ReleaseVersions
+ {
+ get { return Versions.Where(package => !package.IsPreRelease); }
+ }
+
+ internal PackageInfo LatestRelease { get {return ReleaseVersions.LastOrDefault();}}
+ internal PackageInfo Verified { get {return Versions.FirstOrDefault(package => package.IsVerified);}}
+
+ internal bool IsAfterCurrentVersion(PackageInfo packageInfo) { return Current == null || (packageInfo != null && packageInfo.Version > Current.Version); }
+
+ internal bool IsBuiltIn {get { return Versions.Any() && Versions.First().IsBuiltIn; }}
+
+ public string Name { get { return packageName; } }
+
+ public bool IsPackageManagerUI
+ {
+ get { return Name == packageManagerUIName; }
+ }
+
+ public bool Equals(Package other)
+ {
+ if (other == null)
+ return false;
+
+ return packageName == other.packageName;
+ }
+
+ public override int GetHashCode()
+ {
+ return packageName.GetHashCode();
+ }
+
+ [SerializeField]
+ internal readonly OperationSignal AddSignal = new OperationSignal();
+
+ private Action OnAddOperationFinalizedEvent;
+
+ internal void Add(PackageInfo packageInfo)
+ {
+ if (packageInfo == Current || AddRemoveOperationInProgress)
+ return;
+
+ var operation = OperationFactory.Instance.CreateAddOperation();
+ addRemoveOperationInstance = operation;
+ OnAddOperationFinalizedEvent = () =>
+ {
+ AddSignal.Operation = null;
+ operation.OnOperationFinalized -= OnAddOperationFinalizedEvent;
+ PackageCollection.Instance.FetchListOfflineCache(true);
+ };
+
+ operation.OnOperationFinalized += OnAddOperationFinalizedEvent;
+
+ AddSignal.SetOperation(operation);
+ operation.AddPackageAsync(packageInfo);
+ }
+
+ internal void Update()
+ {
+ Add(Latest);
+ }
+
+ internal static void AddFromLocalDisk(string path)
+ {
+ if (AddRemoveOperationInProgress)
+ return;
+
+ var packageJson = PackageJsonHelper.Load(path);
+ if (null == packageJson)
+ {
+ Debug.LogError(string.Format("Invalid package path: cannot find \"{0}\".", path));
+ return;
+ }
+
+ var operation = OperationFactory.Instance.CreateAddOperation();
+ addRemoveOperationInstance = operation;
+ operation.AddPackageAsync(packageJson.PackageInfo);
+ }
+
+ [SerializeField]
+ internal readonly OperationSignal RemoveSignal = new OperationSignal();
+
+ private Action OnRemoveOperationFinalizedEvent;
+
+ public void Remove()
+ {
+ if (Current == null || AddRemoveOperationInProgress)
+ return;
+
+ var operation = OperationFactory.Instance.CreateRemoveOperation();
+ addRemoveOperationInstance = operation;
+ OnRemoveOperationFinalizedEvent = () =>
+ {
+ RemoveSignal.Operation = null;
+ operation.OnOperationFinalized -= OnRemoveOperationFinalizedEvent;
+ PackageCollection.Instance.FetchListOfflineCache(true);
+ };
+
+ operation.OnOperationFinalized += OnRemoveOperationFinalizedEvent;
+ RemoveSignal.SetOperation(operation);
+
+ operation.RemovePackageAsync(Current);
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta
new file mode 100644
index 0000000..2c38b4d
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f499e12eaeb145bf9022f581c0b7fa5b
+timeCreated: 1505740170
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs
new file mode 100644
index 0000000..6820ec6
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs
@@ -0,0 +1,21 @@
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class PackageAssetPostprocessor : AssetPostprocessor
+ {
+ static bool IsPackageJsonAsset(string path)
+ {
+ var pathComponents = (path ?? "").Split('/');
+ return pathComponents.Length == 3 && pathComponents[0] == "Packages" && pathComponents[2] == "package.json";
+ }
+
+ static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
+ {
+ if (PackageCollection.Instance != null && (importedAssets.Any(IsPackageJsonAsset) || deletedAssets.Any(IsPackageJsonAsset) || movedAssets.Any(IsPackageJsonAsset)))
+ {
+ PackageCollection.Instance.FetchListOfflineCache(true);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta
new file mode 100644
index 0000000..9f0fe82
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63e8a6023745e4347bb661e87a9be1d9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs
new file mode 100644
index 0000000..6401088
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs
@@ -0,0 +1,284 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal class PackageCollection
+ {
+ private static PackageCollection instance = new PackageCollection();
+ public static PackageCollection Instance { get { return instance; } }
+
+ public event Action> OnPackagesChanged = delegate { };
+ public event Action OnFilterChanged = delegate { };
+
+ private readonly Dictionary packages;
+
+ private PackageFilter filter;
+
+ private string selectedListPackage;
+ private string selectedSearchPackage;
+
+ internal string lastUpdateTime;
+ private List listPackagesOffline;
+ private List listPackages;
+ private List searchPackages;
+
+ private List packageErrors;
+
+ private int listPackagesVersion;
+ private int listPackagesOfflineVersion;
+
+ private bool searchOperationOngoing;
+ private bool listOperationOngoing;
+ private bool listOperationOfflineOngoing;
+
+ private IListOperation listOperationOffline;
+ private IListOperation listOperation;
+ private ISearchOperation searchOperation;
+
+ public readonly OperationSignal SearchSignal = new OperationSignal();
+ public readonly OperationSignal ListSignal = new OperationSignal();
+
+ public static void InitInstance(ref PackageCollection value)
+ {
+ if (value == null) // UI window opened
+ {
+ value = instance;
+
+ Instance.OnPackagesChanged = delegate { };
+ Instance.OnFilterChanged = delegate { };
+ Instance.SearchSignal.ResetEvents();
+ Instance.ListSignal.ResetEvents();
+
+ Instance.FetchListOfflineCache(true);
+ Instance.FetchListCache(true);
+ Instance.FetchSearchCache(true);
+ }
+ else // Domain reload
+ {
+ instance = value;
+
+ Instance.RebuildPackageDictionary();
+
+ // Resume operations interrupted by domain reload
+ Instance.FetchListOfflineCache(Instance.listOperationOfflineOngoing);
+ Instance.FetchListCache(Instance.listOperationOngoing);
+ Instance.FetchSearchCache(Instance.searchOperationOngoing);
+ }
+ }
+
+ public PackageFilter Filter
+ {
+ get { return filter; }
+
+ // For public usage, use SetFilter() instead
+ private set
+ {
+ var changed = value != filter;
+ filter = value;
+
+ if (changed)
+ OnFilterChanged(filter);
+ }
+ }
+
+ public List LatestListPackages
+ {
+ get { return listPackagesVersion > listPackagesOfflineVersion? listPackages : listPackagesOffline; }
+ }
+
+ public List LatestSearchPackages { get { return searchPackages; } }
+
+ public string SelectedPackage
+ {
+ get { return PackageFilter.All == Filter ? selectedSearchPackage : selectedListPackage; }
+ set
+ {
+ if (PackageFilter.All == Filter)
+ selectedSearchPackage = value;
+ else
+ selectedListPackage = value;
+ }
+ }
+
+ private PackageCollection()
+ {
+ packages = new Dictionary();
+
+ listPackagesOffline = new List();
+ listPackages = new List();
+ searchPackages = new List();
+
+ packageErrors = new List();
+
+ listPackagesVersion = 0;
+ listPackagesOfflineVersion = 0;
+
+ searchOperationOngoing = false;
+ listOperationOngoing = false;
+ listOperationOfflineOngoing = false;
+
+ Filter = PackageFilter.All;
+ }
+
+ public bool SetFilter(PackageFilter value, bool refresh = true)
+ {
+ if (value == Filter)
+ return false;
+
+ Filter = value;
+ if (refresh)
+ {
+ UpdatePackageCollection();
+ }
+ return true;
+ }
+
+ public void UpdatePackageCollection(bool rebuildDictionary = false)
+ {
+ if (rebuildDictionary)
+ {
+ lastUpdateTime = DateTime.Now.ToString("HH:mm");
+ RebuildPackageDictionary();
+ }
+ if (packages.Any())
+ OnPackagesChanged(OrderedPackages());
+ }
+
+ internal void FetchListOfflineCache(bool forceRefetch = false)
+ {
+ if (!forceRefetch && (listOperationOfflineOngoing || listPackagesOffline.Any())) return;
+ if (listOperationOffline != null)
+ listOperationOffline.Cancel();
+ listOperationOfflineOngoing = true;
+ listOperationOffline = OperationFactory.Instance.CreateListOperation(true);
+ listOperationOffline.OnOperationFinalized += () =>
+ {
+ listOperationOfflineOngoing = false;
+ UpdatePackageCollection(true);
+ };
+ listOperationOffline.GetPackageListAsync(
+ infos =>
+ {
+ var version = listPackagesVersion;
+ UpdateListPackageInfosOffline(infos, version);
+ },
+ error => { Debug.LogError("Error fetching package list (offline mode)."); });
+ }
+
+ internal void FetchListCache(bool forceRefetch = false)
+ {
+ if (!forceRefetch && (listOperationOngoing || listPackages.Any())) return;
+ if (listOperation != null)
+ listOperation.Cancel();
+ listOperationOngoing = true;
+ listOperation = OperationFactory.Instance.CreateListOperation();
+ listOperation.OnOperationFinalized += () =>
+ {
+ listOperationOngoing = false;
+ UpdatePackageCollection(true);
+ };
+ listOperation.GetPackageListAsync(UpdateListPackageInfos,
+ error => { Debug.LogError("Error fetching package list."); });
+ ListSignal.SetOperation(listOperation);
+ }
+
+ internal void FetchSearchCache(bool forceRefetch = false)
+ {
+ if (!forceRefetch && (searchOperationOngoing || searchPackages.Any())) return;
+ if (searchOperation != null)
+ searchOperation.Cancel();
+ searchOperationOngoing = true;
+ searchOperation = OperationFactory.Instance.CreateSearchOperation();
+ searchOperation.OnOperationFinalized += () =>
+ {
+ searchOperationOngoing = false;
+ UpdatePackageCollection(true);
+ };
+ searchOperation.GetAllPackageAsync(UpdateSearchPackageInfos,
+ error => { Debug.LogError("Error searching packages online."); });
+ SearchSignal.SetOperation(searchOperation);
+ }
+
+ private void UpdateListPackageInfosOffline(IEnumerable newInfos, int version)
+ {
+ listPackagesOfflineVersion = version;
+ listPackagesOffline = newInfos.Where(p => p.IsUserVisible).ToList();
+ }
+
+ private void UpdateListPackageInfos(IEnumerable newInfos)
+ {
+ // Each time we fetch list packages, the cache for offline mode will be updated
+ // We keep track of the list packages version so that we know which version of cache
+ // we are getting with the offline fetch operation.
+ listPackagesVersion++;
+ listPackages = newInfos.Where(p => p.IsUserVisible).ToList();
+ listPackagesOffline = listPackages;
+ }
+
+ private void UpdateSearchPackageInfos(IEnumerable newInfos)
+ {
+ searchPackages = newInfos.Where(p => p.IsUserVisible).ToList();
+ }
+
+ private IEnumerable OrderedPackages()
+ {
+ return packages.Values.OrderBy(pkg => pkg.Versions.LastOrDefault() == null ? pkg.Name : pkg.Versions.Last().DisplayName).AsEnumerable();
+ }
+
+ public Package GetPackageByName(string name)
+ {
+ Package package;
+ packages.TryGetValue(name, out package);
+ return package;
+ }
+
+ public Error GetPackageError(Package package)
+ {
+ if (null == package) return null;
+ var firstMatchingError = packageErrors.FirstOrDefault(p => p.PackageName == package.Name);
+ return firstMatchingError != null ? firstMatchingError.Error : null;
+ }
+
+ public void AddPackageError(Package package, Error error)
+ {
+ if (null == package || null == error) return;
+ packageErrors.Add(new PackageError(package.Name, error));
+ }
+
+ public void RemovePackageErrors(Package package)
+ {
+ if (null == package) return;
+ packageErrors.RemoveAll(p => p.PackageName == package.Name);
+ }
+
+ private void RebuildPackageDictionary()
+ {
+ // Merge list & search packages
+ var allPackageInfos = new List(LatestListPackages);
+ var installedPackageIds = new HashSet(allPackageInfos.Select(p => p.PackageId));
+ allPackageInfos.AddRange(searchPackages.Where(p => !installedPackageIds.Contains(p.PackageId)));
+
+ if (!PackageManagerPrefs.ShowPreviewPackages)
+ {
+ allPackageInfos = allPackageInfos.Where(p => !p.IsPreRelease || installedPackageIds.Contains(p.PackageId)).ToList();
+ }
+
+ // Rebuild packages dictionary
+ packages.Clear();
+ foreach (var p in allPackageInfos)
+ {
+ var packageName = p.Name;
+ if (packages.ContainsKey(packageName))
+ continue;
+
+ var packageQuery = from pkg in allPackageInfos where pkg.Name == packageName select pkg;
+ var package = new Package(packageName, packageQuery);
+ packages[packageName] = package;
+ }
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta
new file mode 100644
index 0000000..642cef2
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 61d72cb49da3040d5ade3edfd6eccfc1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs
new file mode 100644
index 0000000..dff3c13
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal class PackageError
+ {
+ public string PackageName;
+ public Error Error;
+
+ public PackageError(string packageName, Error error)
+ {
+ PackageName = packageName;
+ Error = error;
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta
new file mode 100644
index 0000000..18d4165
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b7c10e584b708734ba6141e7d4797931
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs
new file mode 100644
index 0000000..2c0e524
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal enum PackageFilter
+ {
+ None,
+ All,
+ Local,
+ Modules
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta
new file mode 100644
index 0000000..6c9e690
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 03ffb9844f8d40e8a2f59dd2aff561eb
+timeCreated: 1508251051
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs
new file mode 100644
index 0000000..6670332
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs
@@ -0,0 +1,8 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal enum PackageGroupOrigins
+ {
+ Packages,
+ BuiltInPackages
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta
new file mode 100644
index 0000000..c1c25b8
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0e372f1bbea04aa9bd68055d4105bd84
+timeCreated: 1508855779
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs
new file mode 100644
index 0000000..e038002
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs
@@ -0,0 +1,180 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Semver;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal class PackageInfo : IEquatable
+ {
+ // Module package.json files contain a documentation url embedded in the description.
+ // We parse that to have the "View Documentation" button direct to it, instead of showing
+ // the link in the description text.
+ private const string builtinPackageDocsUrlKey = "Scripting API: ";
+
+ public string Name;
+ public string DisplayName;
+ private string _PackageId;
+ public SemVersion Version;
+ public string Description;
+ public string Category;
+ public PackageState State;
+ public bool IsCurrent;
+ public bool IsLatest;
+ public string Group;
+ public PackageSource Origin;
+ public List Errors;
+ public bool IsVerified;
+ public string Author;
+
+ public PackageManager.PackageInfo Info { get; set; }
+
+ public string PackageId {
+ get
+ {
+ if (!string.IsNullOrEmpty(_PackageId ))
+ return _PackageId;
+ return string.Format("{0}@{1}", Name.ToLower(), Version);
+ }
+ set
+ {
+ _PackageId = value;
+ }
+ }
+
+ // This will always be @, even for an embedded package.
+ public string VersionId { get { return string.Format("{0}@{1}", Name.ToLower(), Version); } }
+ public string ShortVersionId { get { return string.Format("{0}@{1}", Name.ToLower(), Version.ShortVersion()); } }
+
+ public string BuiltInDescription { get {
+ if (IsBuiltIn)
+ return string.Format("This built in package controls the presence of the {0} module.", DisplayName);
+ else
+ return Description.Split(new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None)[0];
+ } }
+
+ // Method content must be matched in package-manager-doctools extension
+ public static string GetPackageUrlRedirect(string packageName)
+ {
+ var redirectUrl = "";
+ if (packageName == "com.unity.ads")
+ redirectUrl = "https://docs.unity3d.com/Manual/UnityAds.html";
+ else if (packageName == "com.unity.analytics")
+ redirectUrl = "https://docs.unity3d.com/Manual/UnityAnalytics.html";
+ else if (packageName == "com.unity.purchasing")
+ redirectUrl = "https://docs.unity3d.com/Manual/UnityIAP.html";
+ else if (packageName == "com.unity.standardevents")
+ redirectUrl = "https://docs.unity3d.com/Manual/UnityAnalyticsStandardEvents.html";
+ else if (packageName == "com.unity.xiaomi")
+ redirectUrl = "https://unity3d.com/cn/partners/xiaomi/guide";
+ else if (packageName == "com.unity.shadergraph")
+ redirectUrl = "https://github.com/Unity-Technologies/ShaderGraph/wiki";
+ else if (packageName == "com.unity.collab-proxy")
+ redirectUrl = "https://docs.unity3d.com/Manual/UnityCollaborate.html";
+
+ return redirectUrl;
+ }
+
+ public bool RedirectsToManual(PackageInfo packageInfo)
+ {
+ return !string.IsNullOrEmpty(GetPackageUrlRedirect(packageInfo.Name));
+ }
+
+ public bool HasChangelog(PackageInfo packageInfo)
+ {
+ // Packages with no docs have no third party notice
+ return !RedirectsToManual(packageInfo);
+ }
+
+ public string GetDocumentationUrl()
+ {
+ if (IsBuiltIn)
+ {
+ if (!string.IsNullOrEmpty(Description))
+ {
+ var split = Description.Split(new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None);
+ if (split.Length > 1)
+ return split[1];
+ }
+ }
+ return string.Format("http://docs.unity3d.com/Packages/{0}/index.html", ShortVersionId);
+ }
+
+ public string GetChangelogUrl()
+ {
+ return string.Format("http://docs.unity3d.com/Packages/{0}/changelog/CHANGELOG.html", ShortVersionId);
+ }
+
+ public string GetLicensesUrl()
+ {
+ var url = string.Format("http://docs.unity3d.com/Packages/{0}/license/index.html", ShortVersionId);
+ if (RedirectsToManual(this))
+ url = "https://unity3d.com/legal/licenses/Unity_Companion_License";
+
+ return url;
+ }
+
+ public bool Equals(PackageInfo other)
+ {
+ if (other == null)
+ return false;
+ if (other == this)
+ return true;
+
+ return Name == other.Name && Version == other.Version;
+ }
+
+ public override int GetHashCode()
+ {
+ return PackageId.GetHashCode();
+ }
+
+ public bool HasVersionTag(string tag)
+ {
+ if (string.IsNullOrEmpty(Version.Prerelease))
+ return false;
+
+ return String.Equals(Version.Prerelease.Split('.').First(), tag, StringComparison.CurrentCultureIgnoreCase);
+ }
+
+ public bool HasVersionTag(PackageTag tag)
+ {
+ return HasVersionTag(tag.ToString());
+ }
+
+ // Is it a pre-release (alpha/beta/experimental/preview)?
+ // Current logic is any tag is considered pre-release, except recommended
+ public bool IsPreRelease
+ {
+ get { return !string.IsNullOrEmpty(Version.Prerelease) || Version.Major == 0; }
+ }
+
+ public bool IsPreview
+ {
+ get { return HasVersionTag(PackageTag.preview) || Version.Major == 0; }
+ }
+
+ // A version is user visible if it has a supported tag (or no tag at all)
+ public bool IsUserVisible
+ {
+ get { return IsCurrent || string.IsNullOrEmpty(Version.Prerelease) || HasVersionTag(PackageTag.preview) || IsVerified; }
+ }
+
+ public bool IsInDevelopment { get { return Origin == PackageSource.Embedded; } }
+ public bool IsLocal { get { return Origin == PackageSource.Local; } }
+ public bool IsBuiltIn { get { return Origin == PackageSource.BuiltIn; } }
+
+ public string VersionWithoutTag { get { return Version.VersionOnly(); } }
+
+ public bool IsVersionLocked
+ {
+ get { return Origin == PackageSource.Embedded || Origin == PackageSource.Git || Origin == PackageSource.BuiltIn; }
+ }
+
+ public bool CanBeRemoved
+ {
+ get { return Origin == PackageSource.Registry || Origin == PackageSource.BuiltIn || Origin == PackageSource.Local; }
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta
new file mode 100644
index 0000000..e416489
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b9f324f08cd904ec986357c98dd9eaa6
+timeCreated: 1502224642
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs
new file mode 100644
index 0000000..f7b798c
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal static class PackageInfoListExtensions
+ {
+ public static IEnumerable ByName(this IEnumerable list, string name)
+ {
+ return from package in list where package.Name == name select package;
+ }
+
+ public static void SetCurrent(this IEnumerable list, bool current = true)
+ {
+ foreach (var package in list)
+ {
+ package.IsCurrent = current;
+ }
+ }
+
+ public static void SetLatest(this IEnumerable list, bool latest = true)
+ {
+ foreach (var package in list)
+ {
+ package.IsLatest = latest;
+ }
+ }
+
+ public static void SetGroup(this IEnumerable list, string group)
+ {
+ foreach (var package in list)
+ {
+ package.Group = group;
+ }
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta
new file mode 100644
index 0000000..6b025fb
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a7b89acd74e047778b42209a7a733d39
+timeCreated: 1505740214
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs
new file mode 100644
index 0000000..ec062cc
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs
@@ -0,0 +1,34 @@
+using System.IO;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class PackageJsonHelper
+ {
+ [SerializeField]
+ private string name = string.Empty;
+
+ private string path = string.Empty;
+
+ public static string GetPackagePath(string jsonPath)
+ {
+ return Path.GetDirectoryName(jsonPath).Replace("\\", "/");
+ }
+
+ public static PackageJsonHelper Load(string path)
+ {
+ // If the path is a directory, find the `package.json` file path
+ var jsonPath = Directory.Exists(path) ? Path.Combine(path, "package.json") : path;
+ if (!File.Exists(jsonPath))
+ return null;
+ var packageJson = JsonUtility.FromJson(File.ReadAllText(jsonPath));
+ packageJson.path = GetPackagePath(jsonPath);
+ return string.IsNullOrEmpty(packageJson.name) ? null : packageJson;
+ }
+
+ public PackageInfo PackageInfo
+ {
+ get { return new PackageInfo {PackageId = string.Format("{0}@file:{1}", name, path)}; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta
new file mode 100644
index 0000000..42da9eb
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b9374526debed24449d75f8cc6d0103f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs
new file mode 100644
index 0000000..caa2004
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal static class PackageListExtensions
+ {
+ public static IEnumerable Current(this IEnumerable list)
+ {
+ return (from package in list where package.Current != null select package);
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta
new file mode 100644
index 0000000..c14bafe
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7a74094b34f74992a5121c0586ccf6ea
+timeCreated: 1506458921
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs
new file mode 100644
index 0000000..14d9ac0
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs
@@ -0,0 +1,9 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal enum PackageOrigin
+ {
+ Unknown,
+ Builtin,
+ Registry
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta
new file mode 100644
index 0000000..36ef852
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a98bc92072da64d49a393088e55ce2a0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs
new file mode 100644
index 0000000..c3b5a13
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs
@@ -0,0 +1,26 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+ [Serializable]
+ internal class PackageSearchFilter
+ {
+ private static PackageSearchFilter instance = new PackageSearchFilter();
+ public static PackageSearchFilter Instance { get { return instance; } }
+
+ public string SearchText { get; set; }
+
+ public static void InitInstance(ref PackageSearchFilter value)
+ {
+ if (value == null) // UI window opened
+ value = instance;
+ else // Domain reload
+ instance = value;
+ }
+
+ public void ResetSearch()
+ {
+ SearchText = string.Empty;
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta
new file mode 100644
index 0000000..b20fdf2
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8d65a43500ec84d9186cb6d9ab681277
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs
new file mode 100644
index 0000000..f295773
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs
@@ -0,0 +1,9 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal enum PackageState {
+ UpToDate,
+ Outdated,
+ InProgress,
+ Error
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta
new file mode 100644
index 0000000..e65d32e
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0a822dba3d5c4c85b150866e5442a5ec
+timeCreated: 1505740158
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs
new file mode 100644
index 0000000..6b282f6
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs
@@ -0,0 +1,10 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal enum PackageTag
+ {
+ preview,
+ verified,
+ inDevelopment,
+ local
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta
new file mode 100644
index 0000000..5a52800
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a3f4f8c4e2df41108f55825c24ff694
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta
new file mode 100644
index 0000000..e472f44
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 669717f3193a457b9bad9665ebcae836
+timeCreated: 1504191654
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs
new file mode 100644
index 0000000..d40046f
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs
@@ -0,0 +1,34 @@
+using System;
+using UnityEditor.PackageManager.Requests;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class UpmAddOperation : UpmBaseOperation, IAddOperation
+ {
+ public PackageInfo PackageInfo { get; protected set; }
+
+ public event Action OnOperationSuccess = delegate { };
+
+ public void AddPackageAsync(PackageInfo packageInfo, Action doneCallbackAction = null, Action errorCallbackAction = null)
+ {
+ PackageInfo = packageInfo;
+ OnOperationError += errorCallbackAction;
+ OnOperationSuccess += doneCallbackAction;
+
+ Start();
+ }
+
+ protected override Request CreateRequest()
+ {
+ return Client.Add(PackageInfo.PackageId);
+ }
+
+ protected override void ProcessData()
+ {
+ var request = CurrentRequest as AddRequest;
+ var package = FromUpmPackageInfo(request.Result).First();
+ OnOperationSuccess(package);
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta
new file mode 100644
index 0000000..8fce315
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9f091dea68a1452cb6c04a6dfa73d5f5
+timeCreated: 1504190581
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs
new file mode 100644
index 0000000..ea441cd
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs
@@ -0,0 +1,229 @@
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Linq;
+using Semver;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal abstract class UpmBaseOperation : IBaseOperation
+ {
+ public static string GroupName(PackageSource origin)
+ {
+ var group = PackageGroupOrigins.Packages.ToString();
+ if (origin == PackageSource.BuiltIn)
+ group = PackageGroupOrigins.BuiltInPackages.ToString();
+
+ return group;
+ }
+
+ protected static IEnumerable FromUpmPackageInfo(PackageManager.PackageInfo info, bool isCurrent=true)
+ {
+ var packages = new List();
+ var displayName = info.displayName;
+ if (string.IsNullOrEmpty(displayName))
+ {
+ displayName = info.name.Replace("com.unity.modules.", "");
+ displayName = displayName.Replace("com.unity.", "");
+ displayName = new CultureInfo("en-US").TextInfo.ToTitleCase(displayName);
+ }
+
+ string author = info.author.name;
+ if (string.IsNullOrEmpty(info.author.name) && info.name.StartsWith("com.unity."))
+ author = "Unity Technologies Inc.";
+
+ var lastCompatible = info.versions.latestCompatible;
+ var versions = new List();
+ versions.AddRange(info.versions.compatible);
+ if (versions.FindIndex(version => version == info.version) == -1)
+ {
+ versions.Add(info.version);
+
+ versions.Sort((left, right) =>
+ {
+ if (left == null || right == null) return 0;
+
+ SemVersion leftVersion = left;
+ SemVersion righVersion = right;
+ return leftVersion.CompareByPrecedence(righVersion);
+ });
+
+ SemVersion packageVersion = info.version;
+ if (!string.IsNullOrEmpty(lastCompatible))
+ {
+ SemVersion lastCompatibleVersion =
+ string.IsNullOrEmpty(lastCompatible) ? (SemVersion) null : lastCompatible;
+ if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease) &&
+ packageVersion.CompareByPrecedence(lastCompatibleVersion) > 0)
+ lastCompatible = info.version;
+ }
+ else
+ {
+ if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease))
+ lastCompatible = info.version;
+ }
+ }
+
+ foreach(var version in versions)
+ {
+ var isVersionCurrent = version == info.version && isCurrent;
+ var isBuiltIn = info.source == PackageSource.BuiltIn;
+ var isVerified = string.IsNullOrEmpty(SemVersion.Parse(version).Prerelease) && version == info.versions.recommended;
+ var state = (isBuiltIn || info.version == lastCompatible || !isCurrent ) ? PackageState.UpToDate : PackageState.Outdated;
+
+ // Happens mostly when using a package that hasn't been in production yet.
+ if (info.versions.all.Length <= 0)
+ state = PackageState.UpToDate;
+
+ if (info.errors.Length > 0)
+ state = PackageState.Error;
+
+ var packageInfo = new PackageInfo
+ {
+ Name = info.name,
+ DisplayName = displayName,
+ PackageId = version == info.version ? info.packageId : null,
+ Version = version,
+ Description = info.description,
+ Category = info.category,
+ IsCurrent = isVersionCurrent,
+ IsLatest = version == lastCompatible,
+ IsVerified = isVerified,
+ Errors = info.errors.ToList(),
+ Group = GroupName(info.source),
+ State = state,
+ Origin = isBuiltIn || isVersionCurrent ? info.source : PackageSource.Registry,
+ Author = author,
+ Info = info
+ };
+
+ packages.Add(packageInfo);
+ }
+
+ return packages;
+ }
+
+ public static event Action OnOperationStart = delegate { };
+
+ public event Action OnOperationError = delegate { };
+ public event Action OnOperationFinalized = delegate { };
+
+ public Error ForceError { get; set; } // Allow external component to force an error on the requests (eg: testing)
+ public Error Error { get; protected set; } // Keep last error
+
+ public bool IsCompleted { get; private set; }
+
+ protected abstract Request CreateRequest();
+
+ [SerializeField]
+ protected Request CurrentRequest;
+ public readonly ThreadedDelay Delay = new ThreadedDelay();
+
+ protected abstract void ProcessData();
+
+ protected void Start()
+ {
+ Error = null;
+ OnOperationStart(this);
+
+ Delay.Start();
+
+ if (TryForcedError())
+ return;
+
+ EditorApplication.update += Progress;
+ }
+
+ // Common progress code for all classes
+ private void Progress()
+ {
+ if (!Delay.IsDone)
+ return;
+
+ // Create the request after the delay
+ if (CurrentRequest == null)
+ {
+ CurrentRequest = CreateRequest();
+ }
+
+ // Since CurrentRequest's error property is private, we need to simulate
+ // an error instead of just setting it.
+ if (TryForcedError())
+ return;
+
+ if (CurrentRequest.IsCompleted)
+ {
+ if (CurrentRequest.Status == StatusCode.Success)
+ OnDone();
+ else if (CurrentRequest.Status >= StatusCode.Failure)
+ OnError(CurrentRequest.Error);
+ else
+ Debug.LogError("Unsupported progress state " + CurrentRequest.Status);
+ }
+ }
+
+ private void OnError(Error error)
+ {
+ try
+ {
+ Error = error;
+
+ var message = "Cannot perform upm operation.";
+ if (error != null)
+ message = "Cannot perform upm operation: " + Error.message + " [" + Error.errorCode + "]";
+
+ Debug.LogError(message);
+
+ OnOperationError(Error);
+ }
+ catch (Exception exception)
+ {
+ Debug.LogError("Package Manager Window had an error while reporting an error in an operation: " + exception);
+ }
+
+ FinalizeOperation();
+ }
+
+ private void OnDone()
+ {
+ try
+ {
+ ProcessData();
+ }
+ catch (Exception error)
+ {
+ Debug.LogError("Package Manager Window had an error while completing an operation: " + error);
+ }
+
+ FinalizeOperation();
+ }
+
+ private void FinalizeOperation()
+ {
+ EditorApplication.update -= Progress;
+ OnOperationFinalized();
+ IsCompleted = true;
+ }
+
+ public void Cancel()
+ {
+ EditorApplication.update -= Progress;
+ OnOperationError = delegate { };
+ OnOperationFinalized = delegate { };
+ IsCompleted = true;
+ }
+
+ private bool TryForcedError()
+ {
+ if (ForceError != null)
+ {
+ OnError(ForceError);
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta
new file mode 100644
index 0000000..785c839
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 4e830e2dbc3315b4b97cd5311a54e4fe
+timeCreated: 1502918867
+licenseType: Free
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs
new file mode 100644
index 0000000..cebc294
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class UpmListOperation : UpmBaseOperation, IListOperation
+ {
+ [SerializeField]
+ private Action> _doneCallbackAction;
+
+ public UpmListOperation(bool offlineMode) : base()
+ {
+ OfflineMode = offlineMode;
+ }
+
+ public bool OfflineMode { get; set; }
+
+ public void GetPackageListAsync(Action> doneCallbackAction, Action errorCallbackAction = null)
+ {
+ this._doneCallbackAction = doneCallbackAction;
+ OnOperationError += errorCallbackAction;
+
+ Start();
+ }
+
+ protected override Request CreateRequest()
+ {
+ return Client.List(OfflineMode);
+ }
+
+ protected override void ProcessData()
+ {
+ var request = CurrentRequest as ListRequest;
+ var packages = new List();
+ foreach (var upmPackage in request.Result)
+ {
+ var packageInfos = FromUpmPackageInfo(upmPackage);
+ packages.AddRange(packageInfos);
+ }
+
+ _doneCallbackAction(packages);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta
new file mode 100644
index 0000000..3c49034
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 9a2c874c382e2419184b302497279dd9
+timeCreated: 1502224642
+licenseType: Pro
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs
new file mode 100644
index 0000000..9397e59
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs
@@ -0,0 +1,25 @@
+namespace UnityEditor.PackageManager.UI
+{
+ internal class UpmOperationFactory : IOperationFactory
+ {
+ public IListOperation CreateListOperation(bool offlineMode = false)
+ {
+ return new UpmListOperation(offlineMode);
+ }
+
+ public ISearchOperation CreateSearchOperation()
+ {
+ return new UpmSearchOperation();
+ }
+
+ public IAddOperation CreateAddOperation()
+ {
+ return new UpmAddOperation();
+ }
+
+ public IRemoveOperation CreateRemoveOperation()
+ {
+ return new UpmRemoveOperation();
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta
new file mode 100644
index 0000000..7911c3b
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e6925bb38494e6a43ba0921e65e424fe
+timeCreated: 1502915478
+licenseType: Free
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs
new file mode 100644
index 0000000..254c51b
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs
@@ -0,0 +1,33 @@
+using System;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class UpmRemoveOperation : UpmBaseOperation, IRemoveOperation
+ {
+ [SerializeField]
+ private PackageInfo _package;
+
+ public event Action OnOperationSuccess = delegate { };
+
+ public void RemovePackageAsync(PackageInfo package, Action doneCallbackAction = null, Action errorCallbackAction = null)
+ {
+ _package = package;
+ OnOperationError += errorCallbackAction;
+ OnOperationSuccess += doneCallbackAction;
+
+ Start();
+ }
+
+ protected override Request CreateRequest()
+ {
+ return Client.Remove(_package.Name);
+ }
+
+ protected override void ProcessData()
+ {
+ OnOperationSuccess(_package);
+ }
+ }
+}
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta
new file mode 100644
index 0000000..58430b0
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d5a61f8cc87394b28aec6b88b4083217
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs
new file mode 100644
index 0000000..7e6615f
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+ internal class UpmSearchOperation : UpmBaseOperation, ISearchOperation
+ {
+ [SerializeField]
+ private Action> _doneCallbackAction;
+
+ public void GetAllPackageAsync(Action> doneCallbackAction = null, Action errorCallbackAction = null)
+ {
+ _doneCallbackAction = doneCallbackAction;
+ OnOperationError += errorCallbackAction;
+
+ Start();
+ }
+
+ protected override Request CreateRequest()
+ {
+ return Client.SearchAll();
+ }
+
+ protected override void ProcessData()
+ {
+ var request = CurrentRequest as SearchRequest;
+ var packages = new List();
+ foreach (var upmPackage in request.Result)
+ {
+ var packageInfos = FromUpmPackageInfo(upmPackage, false);
+ packages.AddRange(packageInfos);
+ }
+ _doneCallbackAction(packages);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta
new file mode 100644
index 0000000..af4deb3
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ef5a2781610c4f12a79939f717f789cf
+timeCreated: 1508160183
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta
new file mode 100644
index 0000000..81a8a07
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 301fbaa0e62e44fd2a7383bd338a2898
+folderAsset: yes
+timeCreated: 1502224642
+licenseType: Pro
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta
new file mode 100644
index 0000000..0b43bd6
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 42064bc130be4c44b288d249a44b356f
+timeCreated: 1504191962
\ No newline at end of file
diff --git a/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs
new file mode 100644
index 0000000..1260472
--- /dev/null
+++ b/CCA_UnityGame/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs
@@ -0,0 +1,74 @@
+using System;
+using UnityEngine.Experimental.UIElements;
+
+namespace UnityEditor.PackageManager.UI
+{
+#if !UNITY_2018_3_OR_NEWER
+ internal class AlertFactory : UxmlFactory
+ {
+ protected override Alert DoCreate(IUxmlAttributes bag, CreationContext cc)
+ {
+ return new Alert();
+ }
+ }
+#endif
+
+ internal class Alert : VisualElement
+ {
+#if UNITY_2018_3_OR_NEWER
+ internal new class UxmlFactory : UxmlFactory { }
+#endif
+
+ private const string TemplatePath = PackageManagerWindow.ResourcesPath + "Templates/Alert.uxml";
+ private readonly VisualElement root;
+ private const float originalPositionRight = 5.0f;
+ private const float positionRightWithScroll = 12.0f;
+
+ public Action OnCloseError;
+
+ public Alert()
+ {
+ UIUtils.SetElementDisplay(this, false);
+
+ root = AssetDatabase.LoadAssetAtPath(TemplatePath).CloneTree(null);
+ Add(root);
+ root.StretchToParentSize();
+
+ CloseButton.clickable.clicked += () =>
+ {
+ if (null != OnCloseError)
+ OnCloseError();
+ ClearError();
+ };
+ }
+
+ public void SetError(Error error)
+ {
+ var message = "An error occured.";
+ if (error != null)
+ message = error.message ?? string.Format("An error occurred ({0})", error.errorCode.ToString());
+
+ AlertMessage.text = message;
+ UIUtils.SetElementDisplay(this, true);
+ }
+
+ public void ClearError()
+ {
+ UIUtils.SetElementDisplay(this, false);
+ AdjustSize(false);
+ AlertMessage.text = "";
+ OnCloseError = null;
+ }
+
+ public void AdjustSize(bool verticalScrollerVisible)
+ {
+ if (verticalScrollerVisible)
+ style.positionRight = originalPositionRight + positionRightWithScroll;
+ else
+ style.positionRight = originalPositionRight;
+ }
+
+ private Label AlertMessage { get { return root.Q