public void VerifyProperty(VerifyTarget verifyTarget) { propertyCannotBeFound.Clear(); IEnumerable <ViewSystemComponentData> targetVerifyDatas = null; //Data may changed by Component fixer so refresh again. if (verifyTarget == VerifyTarget.Override) { RefreshOverrideDatas(); targetVerifyDatas = allOverrideDatas.SelectMany(m => m.overrideDatas).Cast <ViewSystemComponentData>(); } if (verifyTarget == VerifyTarget.Event) { RefreshEventDatas(); targetVerifyDatas = allEventDatas.SelectMany(m => m.eventDatas).Cast <ViewSystemComponentData>(); } foreach (var item in targetVerifyDatas) { var t = MacacaGames.Utility.GetType(item.targetComponentType); if (t == null) { ViewSystemLog.LogError(item.targetComponentType + " still not fixed cannot be found, will ignore while verify property"); continue; } var propertyName = item.targetPropertyName; if (t.ToString().Contains("UnityEngine.")) { propertyName = ViewSystemUtilitys.ParseUnityEngineProperty(item.targetPropertyName); } if (t.GetField(item.targetPropertyName, bindingFlags) == null && t.GetProperty(propertyName, bindingFlags) == null) { ViewSystemLog.LogError($"{item.targetPropertyName} in {item.targetComponentType} cannot be found"); if (propertyCannotBeFound.Count(m => m == item.targetComponentType + "," + item.targetPropertyName) == 0) { propertyCannotBeFound.Add(item.targetComponentType + "," + item.targetPropertyName); } } } if (propertyCannotBeFound.Count > 0) { if (EditorUtility.DisplayDialog( "Something goes wrong!", "There are some override property is missing, do you want to open fixer window", "Yes, Please", "Not now")) { var window = ScriptableObject.CreateInstance <PropertyFixerWindow>(); window.SetData(propertyCannotBeFound, targetVerifyDatas, saveData, () => { //Make sure SetDirty EditorUtility.SetDirty(saveData); if (verifyTarget == VerifyTarget.Event) { VerifyEvents(); } }); window.ShowUtility(); } } else { ViewSystemLog.Log("Great, everying looks good!"); } }
public void VerifyGameObject(VerifyTarget verifyTarget = VerifyTarget.All) { if (editor == null) { ViewSystemLog.LogError("Cannot verify save data, is editor init correctlly?"); return; } if (saveData == null) { ViewSystemLog.LogError("Cannot verify save data, is editor init correctlly?"); return; } gameObjectCannotBeFound.Clear(); var overrideDatasInPages = saveData.viewPages.Select(m => m.viewPage); var overrideDatasInStates = saveData.viewStates.Select(m => m.viewState); foreach (var viewPage in overrideDatasInPages) { foreach (var viewPageItem in viewPage.viewPageItems) { List <ViewSystemComponentData> verifyTargets = new List <ViewSystemComponentData>(); if (verifyTarget == VerifyTarget.All || verifyTarget == VerifyTarget.Override) { verifyTargets.AddRange(viewPageItem.overrideDatas.Cast <ViewSystemComponentData>()); } if (verifyTarget == VerifyTarget.All || verifyTarget == VerifyTarget.Event) { verifyTargets.AddRange(viewPageItem.eventDatas.Cast <ViewSystemComponentData>()); } if (viewPageItem.viewElement == null) { ViewSystemLog.LogError("One or more viewElement is null, verify Page and State first."); return; } foreach (var verifyData in verifyTargets) { var transform = viewPageItem.viewElement.transform.Find(verifyData.targetTransformPath); if (transform == null) { gameObjectCannotBeFound.Add( new ViewSystemGameObjectMissingData { isViewState = false, viewElement = viewPageItem.viewElement, stateOrPageName = viewPage.name, viewSystemComponent = verifyData }); } } } } foreach (var viewState in overrideDatasInStates) { foreach (var viewPageItem in viewState.viewPageItems) { List <ViewSystemComponentData> verifyTargets = new List <ViewSystemComponentData>(); if (verifyTarget == VerifyTarget.All || verifyTarget == VerifyTarget.Override) { verifyTargets.AddRange(viewPageItem.overrideDatas.Cast <ViewSystemComponentData>()); } if (verifyTarget == VerifyTarget.All || verifyTarget == VerifyTarget.Event) { verifyTargets.AddRange(viewPageItem.eventDatas.Cast <ViewSystemComponentData>()); } foreach (var verifyData in verifyTargets) { var transform = viewPageItem.viewElement.transform.Find(verifyData.targetTransformPath); if (transform == null) { gameObjectCannotBeFound.Add( new ViewSystemGameObjectMissingData { isViewState = true, viewElement = viewPageItem.viewElement, stateOrPageName = viewState.name, viewSystemComponent = verifyData }); } } } } if (gameObjectCannotBeFound.Count > 0) { if (EditorUtility.DisplayDialog( "Something goes wrong!", "There are some GameObject is missing, do you want to open fixer window", "Yes, Please", "Not now")) { var window = ScriptableObject.CreateInstance <GameObjectFixerWindow>(); window.SetData(gameObjectCannotBeFound, saveData, () => { //Make sure SetDirty EditorUtility.SetDirty(saveData); }); window.ShowUtility(); } } else { ViewSystemLog.Log("GameObject looks good."); } }
public void VerifyComponent(VerifyTarget verifyTarget) { if (editor == null) { ViewSystemLog.LogError("Cannot verify save data, is editor init correctlly?"); return; } if (saveData == null) { ViewSystemLog.LogError("Cannot verify save data, is editor init correctlly?"); return; } typeNameCannotBeFound.Clear(); if (verifyTarget == VerifyTarget.Event) { RefreshEventDatas(); foreach (var vpi in allEventDatas) { foreach (var item in vpi.eventDatas) { var t = MacacaGames.Utility.GetType(item.targetComponentType); if (t == null) { ViewSystemLog.LogError(item.targetComponentType + " cannot be found"); typeNameCannotBeFound.Add(item.targetComponentType); } } } } if (verifyTarget == VerifyTarget.Override) { RefreshOverrideDatas(); foreach (var vpi in allOverrideDatas) { foreach (var item in vpi.overrideDatas) { var t = MacacaGames.Utility.GetType(item.targetComponentType); if (t == null) { ViewSystemLog.LogError(item.targetComponentType + " cannot be found"); typeNameCannotBeFound.Add(item.targetComponentType); } } } } if (typeNameCannotBeFound.Count > 0) { if (EditorUtility.DisplayDialog( "Something goes wrong!", "There are some override component is missing, do you want to open fixer window", "Yes, Please", "Not now")) { List <ViewSystemComponentData> componentDatas; if (verifyTarget == VerifyTarget.Override) { componentDatas = allOverrideDatas.Cast <ViewSystemComponentData>().ToList(); } else { componentDatas = allEventDatas.Cast <ViewSystemComponentData>().ToList(); } var window = ScriptableObject.CreateInstance <ComponentFixerWindow>(); window.SetData(typeNameCannotBeFound, componentDatas, () => { //Make sure SetDirty EditorUtility.SetDirty(saveData); VerifyProperty(verifyTarget); }); window.ShowUtility(); } } else { ViewSystemLog.Log("Components looks good, let's check properties."); VerifyProperty(verifyTarget); } }