Documentation for the Unity C# Library
Loading...
Searching...
No Matches
PixoGenericPlatformUtilities.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4namespace PixoVR.Apex
5{
7 {
9 {
10 Debug.Log($"Initializing class {GetType().Name}");
11 }
12
13 public virtual bool OpenURL(string url)
14 {
15 return false;
16 }
17
18 public virtual bool OpenApplication(string applicationName, string[] argumentKeys, string[] argumentValues)
19 {
20 return false;
21 }
22
23 public virtual Dictionary<string, string> ParseApplicationArguments()
24 {
25 return null;
26 }
27
28 public virtual void CloseCurrentApplication()
29 {
30
31 }
32
33 public virtual Dictionary<string, string> ParseURLArguments(string url)
34 {
35 Debug.Log($"Parsing URL Arguments {url}");
36 string urlData = url.Substring(url.IndexOf('?') + 1);
37
38 if (urlData.Length <= 0)
39 {
40 Debug.Log("No ? found in the url.");
41 return null;
42 }
43
44 Dictionary<string, string> parameters = new Dictionary<string, string>();
45
46 // We need to parse out the optional parameter, since it can contain &.
47 string[] optionalDataSplit = urlData.Split("optional=");
48 if (optionalDataSplit.Length > 1)
49 {
50 Debug.Log($"Optional data parts {optionalDataSplit[0]} -- {optionalDataSplit[1]}");
51 string optionalData = optionalDataSplit[1];
52 int jsonEndPosition = optionalData.LastIndexOf('}');
53 string isolatedOptionalData = optionalData.Substring(0, jsonEndPosition + 1);
54 Debug.Log($"Isolated data: {isolatedOptionalData}");
55 parameters.Add("optional", isolatedOptionalData);
56
57 if(jsonEndPosition < optionalData.Length - 1)
58 {
59 string otherData = optionalData.Substring(jsonEndPosition + 1);
60 Debug.Log($"Other data: {otherData}");
61 string baseData = optionalDataSplit[0];
62 if (baseData.Length > 0 && baseData.EndsWith('&'))
63 {
64 baseData = baseData.Remove(baseData.Length - 1, 1);
65 }
66 urlData = baseData + otherData;
67 Debug.Log($"Combined url: {urlData}");
68 }
69 }
70
71 string[] dataArray = urlData.Split('&');
72
73 if (dataArray.Length <= 0)
74 {
75 Debug.Log("No arguments found on the url.");
76 return null;
77 }
78
79 foreach (string dataElement in dataArray)
80 {
81 Debug.Log($"Parsing: {dataElement}");
82 string[] dataParts = dataElement.Split('=', 2);
83
84 if (dataParts.Length <= 1)
85 {
86 Debug.Log($"No named argument.");
87 continue;
88 }
89
90 Debug.Log($"Found argument {dataParts[0]} - {dataParts[1]}");
91 parameters.Add(dataParts[0], dataParts[1]);
92 }
93
94 return parameters;
95 }
96
97 public virtual bool ReadFileAsString(string fileName, out string data)
98 {
99 data = null;
100 return false;
101 }
102
103 public virtual bool ReadFile(string fileName, out byte[] data)
104 {
105 data = null;
106 return false;
107 }
108
109 public virtual bool WriteFile(string fileName, byte[] data)
110 {
111 return false;
112 }
113
114 public virtual bool WriteStringToFile(string fileName, string data, System.Text.Encoding encoding = null)
115 {
116 return false;
117 }
118 }
119}
virtual bool ReadFileAsString(string fileName, out string data)
virtual Dictionary< string, string > ParseApplicationArguments()
virtual bool ReadFile(string fileName, out byte[] data)
virtual bool WriteStringToFile(string fileName, string data, System.Text.Encoding encoding=null)
virtual bool OpenApplication(string applicationName, string[] argumentKeys, string[] argumentValues)
virtual Dictionary< string, string > ParseURLArguments(string url)
virtual bool WriteFile(string fileName, byte[] data)