/// <summary> /// Does the actions file in memory differ from the one on disk as determined by a md5 hash /// </summary> public static bool HasFileInMemoryBeenModified() { string projectPath = Application.dataPath; int lastIndex = projectPath.LastIndexOf("/"); projectPath = projectPath.Remove(lastIndex, projectPath.Length - lastIndex); actionsFilePath = Path.Combine(projectPath, SteamVR_Settings.instance.actionsFilePath); string jsonText = null; if (File.Exists(actionsFilePath)) { jsonText = System.IO.File.ReadAllText(actionsFilePath); } else { return(true); } string newHashFromFile = SteamVR_Utils.GetBadMD5Hash(jsonText); string newJSON = JsonConvert.SerializeObject(SteamVR_Input.actionFile, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); string newHashFromMemory = SteamVR_Utils.GetBadMD5Hash(newJSON); return(newHashFromFile != newHashFromMemory); }
/// <summary> /// Load from disk and deserialize the actions file /// </summary> /// <param name="force">Force a refresh of this file from disk</param> public static bool InitializeFile(bool force = false) { string projectPath = Application.dataPath; int lastIndex = projectPath.LastIndexOf("/"); projectPath = projectPath.Remove(lastIndex, projectPath.Length - lastIndex); actionsFilePath = Path.Combine(projectPath, SteamVR_Settings.instance.actionsFilePath); string jsonText = null; if (File.Exists(actionsFilePath)) { jsonText = System.IO.File.ReadAllText(actionsFilePath); } else { Debug.LogErrorFormat("[SteamVR] Actions file does not exist in project root: {0}", actionsFilePath); return(false); } if (fileInitialized == true || (fileInitialized == true && force == false)) { string newHash = SteamVR_Utils.GetBadMD5Hash(jsonText); if (newHash == actionFileHash) { return(true); } actionFileHash = newHash; } actionFile = Newtonsoft.Json.JsonConvert.DeserializeObject <SteamVR_Input_ActionFile>(jsonText); actionFile.InitializeHelperLists(); fileInitialized = true; return(true); }