public static void BuildAssetBundles(BuildTarget buildTarget) { string outputPath = Path.Combine(CPlatform.ABundlesOutputPath, CPlatform.GetPlatformName()); if (Directory.Exists(outputPath)) { Directory.Delete(outputPath, true); } Directory.CreateDirectory(outputPath); Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); // BuildPipeline.BuildAssetBundles(outputPath,SelectedAsset,BuildAssetBundleOptions.None,buildTarget); // GenerateVersionConfig (outputPath); if (Directory.Exists(Application.streamingAssetsPath + "/QAB")) { Directory.Delete(Application.streamingAssetsPath + "/QAB", true); } Directory.CreateDirectory(Application.streamingAssetsPath + "/QAB"); FileUtil.ReplaceDirectory(CPlatform.ABundlesOutputPath, Application.streamingAssetsPath + "/QAB"); AssetDatabase.Refresh(); }
public override void OnInspectorGUI() { GUI.changed = false; CarbonController mapping = (CarbonController)target; EditorGUI.BeginChangeCheck(); string regex = EditorGUILayout.TextField(new GUIContent("RegEx", "Regular expression used to match joystick names."), mapping.RegEx); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Gamepad RegEx"); mapping.RegEx = regex; } EditorGUI.BeginChangeCheck(); int priority = EditorGUILayout.IntField(new GUIContent("Priority", "Lower values are checked earlier."), mapping.Priority); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Gamepad Priority"); mapping.Priority = priority; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Platform"); EditorGUI.BeginChangeCheck(); CPlatform platform = (CPlatform)EditorGUILayout.EnumMaskField(mapping.Platform); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Gamepad Platform"); mapping.Platform = platform; } EditorGUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); bool useOnce = EditorGUILayout.Toggle(new GUIContent("Use Once", "Whether this mapping should only be used for one joystick."), mapping.UseOnce); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Gamepad Use Once"); mapping.UseOnce = useOnce; } showButtons = EditorGUILayout.Foldout(showButtons, "Buttons"); if (showButtons) { EditorGUILayout.BeginVertical(); for (int i = 0; i < CarbonController.ButtonCount; i++) { ButtonMapping btn = mapping.Buttons[i]; ButtonMapping tmp = new ButtonMapping(btn); EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(((CButton)i).ToString(), GUILayout.MaxWidth(50f)); tmp.Type = (ButtonMapping.ButtonType)EditorGUILayout.EnumPopup(btn.Type, GUILayout.MaxWidth(100f)); if (btn.Type == ButtonMapping.ButtonType.Wrapper) { tmp.Key = (KeyCode)EditorGUILayout.EnumPopup(btn.Key, GUILayout.MaxWidth(100f)); } else { tmp.Button = Mathf.Clamp(EditorGUILayout.IntField(btn.Button, GUILayout.MaxWidth(100f)), 0, 19); } EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Button Mapping"); btn.CopyFrom(tmp); // copy back } } EditorGUILayout.EndVertical(); } showAxes = EditorGUILayout.Foldout(showAxes, "Axes"); if (showAxes) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Name", GUILayout.MaxWidth(50f)); EditorGUILayout.LabelField("Axis", GUILayout.MaxWidth(70f)); EditorGUILayout.LabelField("Invert", GUILayout.MaxWidth(40f)); EditorGUILayout.LabelField("Type", GUILayout.MaxWidth(80f)); EditorGUILayout.EndHorizontal(); for (int i = 0; i < CarbonController.AxisCount; i++) { AxisMapping axis = mapping.Axes[i]; AxisMapping tmp = new AxisMapping(axis); EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(((CAxis)i).ToString(), GUILayout.MaxWidth(50f)); if (axis.Type == AxisMapping.AxisType.KeyWrapper || axis.Type == AxisMapping.AxisType.ButtonWrapper2) { EditorGUILayout.LabelField("", GUILayout.MaxWidth(80f)); } else if (axis.Type == AxisMapping.AxisType.ButtonWrapper) { tmp.Axis = Mathf.Clamp(EditorGUILayout.IntField(axis.Axis, GUILayout.MaxWidth(80f)), 0, CarbonController.JoystickButtonCount - 1); } else { tmp.Axis = Mathf.Clamp(EditorGUILayout.IntField(axis.Axis, GUILayout.MaxWidth(80f)), 0, CarbonController.InputAxisCount - 1); } tmp.Invert = EditorGUILayout.Toggle(axis.Invert, GUILayout.MaxWidth(20f)); tmp.Type = (AxisMapping.AxisType)EditorGUILayout.EnumPopup(axis.Type, GUILayout.MaxWidth(100f)); EditorGUILayout.EndHorizontal(); switch (axis.Type) { case AxisMapping.AxisType.KeyWrapper: EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Negative", GUILayout.MaxWidth(60f)); tmp.Key1 = (KeyCode)EditorGUILayout.EnumPopup(axis.Key1, GUILayout.MaxWidth(80f)); EditorGUILayout.LabelField("Positive", GUILayout.MaxWidth(60f)); tmp.Key2 = (KeyCode)EditorGUILayout.EnumPopup(axis.Key2, GUILayout.MaxWidth(80f)); EditorGUILayout.EndHorizontal(); break; case AxisMapping.AxisType.ButtonWrapper: EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Released", GUILayout.MaxWidth(60f)); tmp.Min = EditorGUILayout.FloatField(axis.Min, GUILayout.MaxWidth(40f)); EditorGUILayout.LabelField("Pressed", GUILayout.MaxWidth(60f)); tmp.Max = EditorGUILayout.FloatField(axis.Max, GUILayout.MaxWidth(40f)); EditorGUILayout.EndHorizontal(); break; case AxisMapping.AxisType.ButtonWrapper2: EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Negative", GUILayout.MaxWidth(60f)); tmp.Axis = Mathf.Clamp(EditorGUILayout.IntField(axis.Axis, GUILayout.MaxWidth(40f)), 0, CarbonController.JoystickButtonCount - 1); EditorGUILayout.LabelField("Positive", GUILayout.MaxWidth(60f)); tmp.Alternative = Mathf.Clamp(EditorGUILayout.IntField(axis.Alternative, GUILayout.MaxWidth(40f)), 0, CarbonController.JoystickButtonCount - 1); EditorGUILayout.EndHorizontal(); break; case AxisMapping.AxisType.Clamped: EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Min", GUILayout.MaxWidth(40f)); tmp.Min = EditorGUILayout.FloatField(axis.Min, GUILayout.MaxWidth(40f)); EditorGUILayout.LabelField("Max", GUILayout.MaxWidth(40f)); tmp.Max = EditorGUILayout.FloatField(axis.Max, GUILayout.MaxWidth(40f)); EditorGUILayout.EndHorizontal(); break; } if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(mapping, "Changed Axis Mapping"); axis.CopyFrom(tmp); // copy back } } EditorGUILayout.EndVertical(); } if (GUI.changed) { EditorUtility.SetDirty(target); } }
void OnDestory() { s_cInstance = null; }
/// <summary> /// Checks if the given <see cref="CPlatform"/> is set in <see cref="Platform"/>. /// </summary> /// <param name="flag"></param> /// <returns></returns> private bool Has(CPlatform flag) { return((Platform & flag) == flag); }
/// <summary> /// Convert platform and game data from JSON file into the database. /// NOTE: Any existing data in the Game and Platform tables will be deleted /// </summary> /// <returns>True if in 'verify' mode or on conversion success, false on any error during verification/conversion</returns> public bool ConvertData() { bool success = true; // Open/create database and clear the Game/Platform tables if (Mode == ConvertMode.cModeApply) { success = CSqlDB.Instance.Open(true) == SQLiteErrorCode.Ok; if (!success) { CInputOutput.Log("ERROR: Could not open or create the database."); return(success); } success = CSqlDB.Instance.Execute("DELETE FROM Game; DELETE FROM Platform") == SQLiteErrorCode.Ok; // Delete existing platforms and games if (!success) { CInputOutput.Log("ERROR: Could not prepare the Platform and Game tables"); return(success); } } // Load and log all platforms and games from JSON success = CJsonWrapper.ImportFromJSON(new CPlatform(), out List <CGameData.CMatch> matches); if (!success) { CInputOutput.Log("ERROR: Could not load games from the JSON file"); return(success); } Dictionary <string, int> jsonPlatforms = CGameData.GetPlatforms(); HashSet <CGameData.CGame> jsonAllGames = CGameData.GetPlatformGameList(CGameData.GamePlatform.All); CInputOutput.LogGameData(jsonPlatforms, jsonAllGames); // Begin migration here if (Mode == ConvertMode.cModeApply) { // Add platforms to the database foreach (KeyValuePair <string, int> platform in jsonPlatforms) { if (platform.Key != "All games" && platform.Key != "Search results" && platform.Key != "Favourites" && platform.Key != "New games" && platform.Key != "Hidden games" && platform.Key != "Not installed") { CPlatform.InsertPlatform(platform.Key, ""); } } // Get the platforms from the DB (we need the PK) Dictionary <string, CPlatform.PlatformObject> dbPlatforms = CPlatform.GetPlatforms(); // Add the games to the database foreach (CGameData.CGame game in jsonAllGames) { int platformFK = (dbPlatforms.ContainsKey(game.PlatformString)) ? dbPlatforms[game.PlatformString].PlatformID : 0; GameObject tmp = new(platformFK, game.ID, game.Title, game.Alias, game.Launch, game.Uninstaller); CGame.InsertGame(tmp); } HashSet <CGame.GameObject> dbGames = CGame.GetAllGames(); success = (success && jsonAllGames.Count == dbGames.Count); if (!success) { CInputOutput.Log("ERROR: Not all games were migrated to the database"); } CInputOutput.Log((success) ? "SUCCESS" : "FAILURE"); CInputOutput.Log("Game data migration finished"); CInputOutput.Log(dbPlatforms.Count + " Platforms added"); CInputOutput.Log(dbGames.Count + " Games added"); return(success); } else { CInputOutput.Log("Mode is 'verify' - no changes have been made"); CInputOutput.Log("In order to perform conversion, run the program in 'apply' mode"); } CInputOutput.Log("**** END ****"); return(success); }