public void AddVideo(string path) { Haze.Logger.Log("Adding video file: " + path + "..."); try { //Extract filename string[] split = path.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); string directory = ""; for (int i = 0; i < split.Length - 1; ++i) { directory += split[i] + "/"; } split = split[split.Length - 1].Split(new string[] { ".mp4" }, StringSplitOptions.RemoveEmptyEntries); string filename = ""; foreach (string f in split) { filename += f + "."; } filename = filename.Substring(0, filename.Length - 1); //Is it a guide? bool isGuide = false; foreach (string suffix in SUFFIXES) { if (filename.EndsWith(suffix)) { isGuide = true; break; } } if (isGuide) { //ok! this is a guide video. //get rid of Guide suffix string videoName = filename; foreach (string suffix in SUFFIXES) { if (videoName.EndsWith(suffix)) { videoName = videoName.Substring(0, videoName.Length - suffix.Length); } } VideoSettings settings = new VideoSettings(); //is it 360 degrees? settings.is360 = false; if (videoName.StartsWith("360_")) { settings.is360 = true; //take the leading "360_" off the display name videoName = videoName.Substring("360_".Length, videoName.Length - "360_".Length); Haze.Logger.Log(videoName + " is 360."); } else { Haze.Logger.Log(videoName + " is 235."); } //Try to find the associated settings file string metaPath = directory + videoName + "Info.json"; Haze.Logger.Log("Attempting to find metadata file in: " + metaPath); if (File.Exists(metaPath)) { string json = File.ReadAllText(metaPath); settings.meta = JsonUtility.FromJson <VideoSettings.VideoMeta>(json); Haze.Logger.Log("Found metadata file. " + settings.ToString()); } else { //try to find it in the persistent data path instead of the sd card root then maybe? metaPath = Application.persistentDataPath + videoName + "Info.json"; Haze.Logger.Log("Not found. Attempting to find metadata file in: " + metaPath); if (File.Exists(metaPath)) { string json = File.ReadAllText(metaPath); settings.meta = JsonUtility.FromJson <VideoSettings.VideoMeta>(json); Haze.Logger.Log("Found metadata file. " + settings.ToString()); } else { //no settings for this video yet. settings.meta = new VideoSettings.VideoMeta(); Haze.Logger.Log("Saving metadata... " + settings.ToString()); SaveVideoMeta(path, videoName, settings.meta); } } Haze.Logger.Log("Displaying video: " + videoName); GameObject display = Instantiate(videoDisplayPrefab, videoRoot); displayedVideos.Add(display.GetComponent <VideoDisplay>().Init(path, videoName, settings.NewSettings)); } else { //Not a guide. ignore it. Haze.Logger.Log("Video " + path + " is not a guide video."); } } catch (Exception e) { //could silently ignore, probably Haze.Logger.LogWarning("Video " + path + " cannot be added: " + e); } }