mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
Initial commit
This commit is contained in:
commit
3c7cc0c973
8391 changed files with 704313 additions and 0 deletions
|
@ -0,0 +1,330 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using UnityEditor.Collaboration;
|
||||
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine.UIElements;
|
||||
#else
|
||||
using UnityEditor.Experimental.UIElements;
|
||||
using UnityEngine.Experimental.UIElements;
|
||||
using UnityEngine.Experimental.UIElements.StyleEnums;
|
||||
#endif
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEditor.Connect;
|
||||
|
||||
namespace UnityEditor
|
||||
{
|
||||
internal class CollabHistoryWindow : EditorWindow, ICollabHistoryWindow
|
||||
{
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
private const string ResourcesPath = "Packages/com.unity.collab-proxy/Editor/Resources/Styles/";
|
||||
#else
|
||||
private const string ResourcesPath = "StyleSheets/";
|
||||
#endif
|
||||
|
||||
|
||||
const string kWindowTitle = "Collab History";
|
||||
const string kServiceUrl = "developer.cloud.unity3d.com";
|
||||
|
||||
[MenuItem("Window/Asset Management/Collab History", false, 1)]
|
||||
public static void ShowHistoryWindow()
|
||||
{
|
||||
EditorWindow.GetWindow<CollabHistoryWindow>(kWindowTitle);
|
||||
}
|
||||
|
||||
[MenuItem("Window/Asset Management/Collab History", true)]
|
||||
public static bool ValidateShowHistoryWindow()
|
||||
{
|
||||
return Collab.instance.IsCollabEnabledForCurrentProject();
|
||||
}
|
||||
|
||||
CollabHistoryPresenter m_Presenter;
|
||||
Dictionary<HistoryState, VisualElement> m_Views;
|
||||
List<CollabHistoryItem> m_HistoryItems = new List<CollabHistoryItem>();
|
||||
HistoryState m_State;
|
||||
VisualElement m_Container;
|
||||
PagedListView m_Pager;
|
||||
ScrollView m_HistoryView;
|
||||
int m_ItemsPerPage = 5;
|
||||
string m_InProgressRev;
|
||||
bool m_RevisionActionsEnabled;
|
||||
|
||||
public CollabHistoryWindow()
|
||||
{
|
||||
minSize = new Vector2(275, 50);
|
||||
}
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
SetupGUI();
|
||||
name = "CollabHistory";
|
||||
|
||||
if (m_Presenter == null)
|
||||
{
|
||||
m_Presenter = new CollabHistoryPresenter(this, new CollabHistoryItemFactory(), new RevisionsService(Collab.instance, UnityConnect.instance));
|
||||
}
|
||||
m_Presenter.OnWindowEnabled();
|
||||
}
|
||||
|
||||
public void OnDisable()
|
||||
{
|
||||
m_Presenter.OnWindowDisabled();
|
||||
}
|
||||
|
||||
public bool revisionActionsEnabled
|
||||
{
|
||||
get { return m_RevisionActionsEnabled; }
|
||||
set
|
||||
{
|
||||
if (m_RevisionActionsEnabled == value)
|
||||
return;
|
||||
|
||||
m_RevisionActionsEnabled = value;
|
||||
foreach (var historyItem in m_HistoryItems)
|
||||
{
|
||||
historyItem.RevisionActionsEnabled = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddStyleSheetPath(VisualElement root, string path)
|
||||
{
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
root.styleSheets.Add(EditorGUIUtility.Load(path) as StyleSheet);
|
||||
#else
|
||||
root.AddStyleSheetPath(path);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
public void SetupGUI()
|
||||
{
|
||||
#if UNITY_2019_1_OR_NEWER
|
||||
var root = this.rootVisualElement;
|
||||
#else
|
||||
var root = this.GetRootVisualContainer();
|
||||
#endif
|
||||
AddStyleSheetPath(root, ResourcesPath + "CollabHistoryCommon.uss");
|
||||
if (EditorGUIUtility.isProSkin)
|
||||
{
|
||||
AddStyleSheetPath(root, ResourcesPath + "CollabHistoryDark.uss");
|
||||
}
|
||||
else
|
||||
{
|
||||
AddStyleSheetPath(root, ResourcesPath + "CollabHistoryLight.uss");
|
||||
}
|
||||
|
||||
m_Container = new VisualElement();
|
||||
m_Container.StretchToParentSize();
|
||||
root.Add(m_Container);
|
||||
|
||||
m_Pager = new PagedListView()
|
||||
{
|
||||
name = "PagedElement",
|
||||
pageSize = m_ItemsPerPage
|
||||
};
|
||||
|
||||
var errorView = new StatusView()
|
||||
{
|
||||
message = "An Error Occurred",
|
||||
icon = EditorGUIUtility.LoadIconRequired("Collab.Warning") as Texture,
|
||||
};
|
||||
|
||||
var noInternetView = new StatusView()
|
||||
{
|
||||
message = "No Internet Connection",
|
||||
icon = EditorGUIUtility.LoadIconRequired("Collab.NoInternet") as Texture,
|
||||
};
|
||||
|
||||
var maintenanceView = new StatusView()
|
||||
{
|
||||
message = "Maintenance",
|
||||
};
|
||||
|
||||
var loginView = new StatusView()
|
||||
{
|
||||
message = "Sign in to access Collaborate",
|
||||
buttonText = "Sign in...",
|
||||
callback = SignInClick,
|
||||
};
|
||||
|
||||
var noSeatView = new StatusView()
|
||||
{
|
||||
message = "Ask your project owner for access to Unity Teams",
|
||||
buttonText = "Learn More",
|
||||
callback = NoSeatClick,
|
||||
};
|
||||
|
||||
var waitingView = new StatusView()
|
||||
{
|
||||
message = "Updating...",
|
||||
};
|
||||
|
||||
m_HistoryView = new ScrollView() { name = "HistoryContainer", showHorizontal = false};
|
||||
m_HistoryView.contentContainer.StretchToParentWidth();
|
||||
m_HistoryView.Add(m_Pager);
|
||||
|
||||
m_Views = new Dictionary<HistoryState, VisualElement>()
|
||||
{
|
||||
{HistoryState.Error, errorView},
|
||||
{HistoryState.Offline, noInternetView},
|
||||
{HistoryState.Maintenance, maintenanceView},
|
||||
{HistoryState.LoggedOut, loginView},
|
||||
{HistoryState.NoSeat, noSeatView},
|
||||
{HistoryState.Waiting, waitingView},
|
||||
{HistoryState.Ready, m_HistoryView}
|
||||
};
|
||||
}
|
||||
|
||||
public void UpdateState(HistoryState state, bool force)
|
||||
{
|
||||
if (state == m_State && !force)
|
||||
return;
|
||||
|
||||
m_State = state;
|
||||
switch (state)
|
||||
{
|
||||
case HistoryState.Ready:
|
||||
UpdateHistoryView(m_Pager);
|
||||
break;
|
||||
case HistoryState.Disabled:
|
||||
Close();
|
||||
return;
|
||||
}
|
||||
|
||||
m_Container.Clear();
|
||||
m_Container.Add(m_Views[m_State]);
|
||||
}
|
||||
|
||||
public void UpdateRevisions(IEnumerable<RevisionData> datas, string tip, int totalRevisions, int currentPage)
|
||||
{
|
||||
var elements = new List<VisualElement>();
|
||||
var isFullDateObtained = false; // Has everything from this date been obtained?
|
||||
m_HistoryItems.Clear();
|
||||
|
||||
if (datas != null)
|
||||
{
|
||||
DateTime currentDate = DateTime.MinValue;
|
||||
foreach (var data in datas)
|
||||
{
|
||||
if (data.timeStamp.Date != currentDate.Date)
|
||||
{
|
||||
elements.Add(new CollabHistoryRevisionLine(data.timeStamp, isFullDateObtained));
|
||||
currentDate = data.timeStamp;
|
||||
}
|
||||
|
||||
var item = new CollabHistoryItem(data);
|
||||
m_HistoryItems.Add(item);
|
||||
|
||||
var container = new VisualElement();
|
||||
container.style.flexDirection = FlexDirection.Row;
|
||||
if (data.current)
|
||||
{
|
||||
isFullDateObtained = true;
|
||||
container.AddToClassList("currentRevision");
|
||||
container.AddToClassList("obtainedRevision");
|
||||
}
|
||||
else if (data.obtained)
|
||||
{
|
||||
container.AddToClassList("obtainedRevision");
|
||||
}
|
||||
else
|
||||
{
|
||||
container.AddToClassList("absentRevision");
|
||||
}
|
||||
// If we use the index as-is, the latest commit will become #1, but we want it to be last
|
||||
container.Add(new CollabHistoryRevisionLine(data.index));
|
||||
container.Add(item);
|
||||
elements.Add(container);
|
||||
}
|
||||
}
|
||||
|
||||
m_HistoryView.scrollOffset = new Vector2(0, 0);
|
||||
m_Pager.totalItems = totalRevisions;
|
||||
m_Pager.curPage = currentPage;
|
||||
m_Pager.items = elements;
|
||||
}
|
||||
|
||||
public string inProgressRevision
|
||||
{
|
||||
get { return m_InProgressRev; }
|
||||
set
|
||||
{
|
||||
m_InProgressRev = value;
|
||||
foreach (var historyItem in m_HistoryItems)
|
||||
{
|
||||
historyItem.SetInProgressStatus(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int itemsPerPage
|
||||
{
|
||||
set
|
||||
{
|
||||
if (m_ItemsPerPage == value)
|
||||
return;
|
||||
m_Pager.pageSize = m_ItemsPerPage;
|
||||
}
|
||||
}
|
||||
|
||||
public PageChangeAction OnPageChangeAction
|
||||
{
|
||||
set { m_Pager.OnPageChanged = value; }
|
||||
}
|
||||
|
||||
public RevisionAction OnGoBackAction
|
||||
{
|
||||
set { CollabHistoryItem.s_OnGoBack = value; }
|
||||
}
|
||||
|
||||
public RevisionAction OnUpdateAction
|
||||
{
|
||||
set { CollabHistoryItem.s_OnUpdate = value; }
|
||||
}
|
||||
|
||||
public RevisionAction OnRestoreAction
|
||||
{
|
||||
set { CollabHistoryItem.s_OnRestore = value; }
|
||||
}
|
||||
|
||||
public ShowBuildAction OnShowBuildAction
|
||||
{
|
||||
set { CollabHistoryItem.s_OnShowBuild = value; }
|
||||
}
|
||||
|
||||
public Action OnShowServicesAction
|
||||
{
|
||||
set { CollabHistoryItem.s_OnShowServices = value; }
|
||||
}
|
||||
|
||||
void UpdateHistoryView(VisualElement history)
|
||||
{
|
||||
}
|
||||
|
||||
void NoSeatClick()
|
||||
{
|
||||
var connection = UnityConnect.instance;
|
||||
var env = connection.GetEnvironment();
|
||||
// Map environment to url - prod is special
|
||||
if (env == "production")
|
||||
env = "";
|
||||
else
|
||||
env += "-";
|
||||
|
||||
var url = "https://" + env + kServiceUrl
|
||||
+ "/orgs/" + connection.GetOrganizationId()
|
||||
+ "/projects/" + connection.GetProjectName()
|
||||
+ "/unity-teams/";
|
||||
Application.OpenURL(url);
|
||||
}
|
||||
|
||||
void SignInClick()
|
||||
{
|
||||
UnityConnect.instance.ShowLogin();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue