diff --git a/Assets/Plugins/StandaloneFileBrowser.meta b/Assets/Plugins/StandaloneFileBrowser.meta new file mode 100644 index 00000000..fbb92ac9 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57e25b4a578dba94c9353f4633b20549 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs b/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs new file mode 100644 index 00000000..19c089de --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs @@ -0,0 +1,13 @@ +using System; + +namespace SFB { + public interface IStandaloneFileBrowser { + string[] OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect); + string[] OpenFolderPanel(string title, string directory, bool multiselect); + string SaveFilePanel(string title, string directory, string defaultName, ExtensionFilter[] extensions); + + void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action cb); + void OpenFolderPanelAsync(string title, string directory, bool multiselect, Action cb); + void SaveFilePanelAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, Action cb); + } +} diff --git a/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs.meta b/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs.meta new file mode 100644 index 00000000..297c5e8d --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/IStandaloneFileBrowser.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7609f7b6787a54496aa41a3053fcc76a +timeCreated: 1483902788 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins.meta new file mode 100644 index 00000000..365e9b2e --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ddc4e7b83981f244ba9a26b88c18cb67 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux.meta new file mode 100644 index 00000000..12e971a8 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 82666e520ab4d4cf08bebbb8059cd6f4 +folderAsset: yes +timeCreated: 1538224809 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64.meta new file mode 100644 index 00000000..7f52bdec --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: bd198408642944765b9305bd99404136 +folderAsset: yes +timeCreated: 1538230728 +licenseType: Free +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so new file mode 100644 index 00000000..344084e5 Binary files /dev/null and b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so differ diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so.meta new file mode 100644 index 00000000..f9256120 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/Linux/x86_64/libStandaloneFileBrowser.so.meta @@ -0,0 +1,126 @@ +fileFormatVersion: 2 +guid: b8c465928f1784a3fac8dc3766f7201c +timeCreated: 1538230728 +licenseType: Free +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude SamsungTV: 1 + Exclude Tizen: 1 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Linux + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Samsung TV: SamsungTV + second: + enabled: 0 + settings: + STV_MODEL: STANDARD_15 + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll b/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll new file mode 100644 index 00000000..a5164a5f Binary files /dev/null and b/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll differ diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll.meta new file mode 100644 index 00000000..13e560df --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/Ookii.Dialogs.dll.meta @@ -0,0 +1,145 @@ +fileFormatVersion: 2 +guid: e60958662eed5413d86143a0a69b731e +timeCreated: 1491979494 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: AnyOS + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle.meta new file mode 100644 index 00000000..c7bdac63 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle.meta @@ -0,0 +1,40 @@ +fileFormatVersion: 2 +guid: 110fdfb459db4fc448a2ccd37e200fa4 +folderAsset: yes +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: OSXIntel + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXIntel64 + second: + enabled: 1 + settings: {} + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents.meta new file mode 100644 index 00000000..37ed2fc1 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 996ea0b0fb9804844ba9595686ee3e7a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist new file mode 100644 index 00000000..52c479cc --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist @@ -0,0 +1,46 @@ + + + + + BuildMachineOSBuild + 18A391 + CFBundleDevelopmentRegion + English + CFBundleExecutable + StandaloneFileBrowser + CFBundleIdentifier + com.gkngkc.sfb + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + StandaloneFileBrowser + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1.0 + CSResourcesFileMapped + + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 10A255 + DTPlatformVersion + GM + DTSDKBuild + 18A384 + DTSDKName + macosx10.14 + DTXcode + 1000 + DTXcodeBuild + 10A255 + + diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist.meta new file mode 100644 index 00000000..22c9f907 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce685769797f44046afa3e567860c94c +timeCreated: 1505756861 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS.meta new file mode 100644 index 00000000..bd2d540b --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5a66f5db020f344c9327188aec2c060 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser new file mode 100644 index 00000000..caf2b686 Binary files /dev/null and b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser differ diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser.meta new file mode 100644 index 00000000..a298a74a --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ddf122e0e89124ce78aacfeecb3ec554 +timeCreated: 1508179371 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib new file mode 100644 index 00000000..1198f38c --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib @@ -0,0 +1,90 @@ +var StandaloneFileBrowserWebGLPlugin = { + // Open file. + // gameObjectNamePtr: Unique GameObject name. Required for calling back unity with SendMessage. + // methodNamePtr: Callback method name on given GameObject. + // filter: Filter files. Example filters: + // Match all image files: "image/*" + // Match all video files: "video/*" + // Match all audio files: "audio/*" + // Custom: ".plist, .xml, .yaml" + // multiselect: Allows multiple file selection + UploadFile: function(gameObjectNamePtr, methodNamePtr, filterPtr, multiselect) { + gameObjectName = Pointer_stringify(gameObjectNamePtr); + methodName = Pointer_stringify(methodNamePtr); + filter = Pointer_stringify(filterPtr); + + // Delete if element exist + var fileInput = document.getElementById(gameObjectName) + if (fileInput) { + document.body.removeChild(fileInput); + } + + fileInput = document.createElement('input'); + fileInput.setAttribute('id', gameObjectName); + fileInput.setAttribute('type', 'file'); + fileInput.setAttribute('style','display:none;'); + fileInput.setAttribute('style','visibility:hidden;'); + if (multiselect) { + fileInput.setAttribute('multiple', ''); + } + if (filter) { + fileInput.setAttribute('accept', filter); + } + fileInput.onclick = function (event) { + // File dialog opened + this.value = null; + }; + fileInput.onchange = function (event) { + // multiselect works + var urls = []; + for (var i = 0; i < event.target.files.length; i++) { + urls.push(URL.createObjectURL(event.target.files[i])); + } + // File selected + SendMessage(gameObjectName, methodName, urls.join()); + + // Remove after file selected + document.body.removeChild(fileInput); + } + document.body.appendChild(fileInput); + + document.onmouseup = function() { + fileInput.click(); + document.onmouseup = null; + } + }, + + // Save file + // DownloadFile method does not open SaveFileDialog like standalone builds, its just allows user to download file + // gameObjectNamePtr: Unique GameObject name. Required for calling back unity with SendMessage. + // methodNamePtr: Callback method name on given GameObject. + // filenamePtr: Filename with extension + // byteArray: byte[] + // byteArraySize: byte[].Length + DownloadFile: function(gameObjectNamePtr, methodNamePtr, filenamePtr, byteArray, byteArraySize) { + gameObjectName = Pointer_stringify(gameObjectNamePtr); + methodName = Pointer_stringify(methodNamePtr); + filename = Pointer_stringify(filenamePtr); + + var bytes = new Uint8Array(byteArraySize); + for (var i = 0; i < byteArraySize; i++) { + bytes[i] = HEAPU8[byteArray + i]; + } + + var downloader = window.document.createElement('a'); + downloader.setAttribute('id', gameObjectName); + downloader.href = window.URL.createObjectURL(new Blob([bytes], { type: 'application/octet-stream' })); + downloader.download = filename; + document.body.appendChild(downloader); + + document.onmouseup = function() { + downloader.click(); + document.body.removeChild(downloader); + document.onmouseup = null; + + SendMessage(gameObjectName, methodName); + } + } +}; + +mergeInto(LibraryManager.library, StandaloneFileBrowserWebGLPlugin); \ No newline at end of file diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib.meta new file mode 100644 index 00000000..9ba582be --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.jslib.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 265aaf20a6d564e0fb00a9c4a7a9c300 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: WebGL + second: + enabled: 1 + settings: {} + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll b/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll new file mode 100644 index 00000000..f6d84752 Binary files /dev/null and b/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll differ diff --git a/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll.meta b/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll.meta new file mode 100644 index 00000000..f757441d --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll.meta @@ -0,0 +1,145 @@ +fileFormatVersion: 2 +guid: 7d459a96865cc4aaab657012c6dc4833 +timeCreated: 1491979494 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude iOS: 1 + data: + first: + '': Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + OS: AnyOS + data: + first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + data: + first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + data: + first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + data: + first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample.meta b/Assets/Plugins/StandaloneFileBrowser/Sample.meta new file mode 100644 index 00000000..3c5d69fe --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 435c74f62ab57b448adeeb37cbc0f96b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs new file mode 100644 index 00000000..77e427f5 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs @@ -0,0 +1,119 @@ +using System.Collections; +using UnityEngine; +using SFB; + +public class BasicSample : MonoBehaviour { + private string _path; + + void OnGUI() { + var guiScale = new Vector3(Screen.width / 800.0f, Screen.height / 600.0f, 1.0f); + GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, guiScale); + + GUILayout.Space(20); + GUILayout.BeginHorizontal(); + GUILayout.Space(20); + GUILayout.BeginVertical(); + + // Open File Samples + + if (GUILayout.Button("Open File")) { + WriteResult(StandaloneFileBrowser.OpenFilePanel("Open File", "", "", false)); + } + GUILayout.Space(5); + if (GUILayout.Button("Open File Async")) { + StandaloneFileBrowser.OpenFilePanelAsync("Open File", "", "", false, (string[] paths) => { WriteResult(paths); }); + } + GUILayout.Space(5); + if (GUILayout.Button("Open File Multiple")) { + WriteResult(StandaloneFileBrowser.OpenFilePanel("Open File", "", "", true)); + } + GUILayout.Space(5); + if (GUILayout.Button("Open File Extension")) { + WriteResult(StandaloneFileBrowser.OpenFilePanel("Open File", "", "txt", true)); + } + GUILayout.Space(5); + if (GUILayout.Button("Open File Directory")) { + WriteResult(StandaloneFileBrowser.OpenFilePanel("Open File", Application.dataPath, "", true)); + } + GUILayout.Space(5); + if (GUILayout.Button("Open File Filter")) { + var extensions = new [] { + new ExtensionFilter("Image Files", "png", "jpg", "jpeg" ), + new ExtensionFilter("Sound Files", "mp3", "wav" ), + new ExtensionFilter("All Files", "*" ), + }; + WriteResult(StandaloneFileBrowser.OpenFilePanel("Open File", "", extensions, true)); + } + + GUILayout.Space(15); + + // Open Folder Samples + + if (GUILayout.Button("Open Folder")) { + var paths = StandaloneFileBrowser.OpenFolderPanel("Select Folder", "", true); + WriteResult(paths); + } + GUILayout.Space(5); + if (GUILayout.Button("Open Folder Async")) { + StandaloneFileBrowser.OpenFolderPanelAsync("Select Folder", "", true, (string[] paths) => { WriteResult(paths); }); + } + GUILayout.Space(5); + if (GUILayout.Button("Open Folder Directory")) { + var paths = StandaloneFileBrowser.OpenFolderPanel("Select Folder", Application.dataPath, true); + WriteResult(paths); + } + + GUILayout.Space(15); + + // Save File Samples + + if (GUILayout.Button("Save File")) { + _path = StandaloneFileBrowser.SaveFilePanel("Save File", "", "", ""); + } + GUILayout.Space(5); + if (GUILayout.Button("Save File Async")) { + StandaloneFileBrowser.SaveFilePanelAsync("Save File", "", "", "", (string path) => { WriteResult(path); }); + } + GUILayout.Space(5); + if (GUILayout.Button("Save File Default Name")) { + _path = StandaloneFileBrowser.SaveFilePanel("Save File", "", "MySaveFile", ""); + } + GUILayout.Space(5); + if (GUILayout.Button("Save File Default Name Ext")) { + _path = StandaloneFileBrowser.SaveFilePanel("Save File", "", "MySaveFile", "dat"); + } + GUILayout.Space(5); + if (GUILayout.Button("Save File Directory")) { + _path = StandaloneFileBrowser.SaveFilePanel("Save File", Application.dataPath, "", ""); + } + GUILayout.Space(5); + if (GUILayout.Button("Save File Filter")) { + // Multiple save extension filters with more than one extension support. + var extensionList = new [] { + new ExtensionFilter("Binary", "bin"), + new ExtensionFilter("Text", "txt"), + }; + _path = StandaloneFileBrowser.SaveFilePanel("Save File", "", "MySaveFile", extensionList); + } + + GUILayout.EndVertical(); + GUILayout.Space(20); + GUILayout.Label(_path); + GUILayout.EndHorizontal(); + } + + public void WriteResult(string[] paths) { + if (paths.Length == 0) { + return; + } + + _path = ""; + foreach (var p in paths) { + _path += p + "\n"; + } + } + + public void WriteResult(string path) { + _path = path; + } +} diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs.meta b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs.meta new file mode 100644 index 00000000..9319b42e --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSample.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5148400295519405d82bb0fa65246ea2 +timeCreated: 1483902788 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity new file mode 100644 index 00000000..75c88fa7 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity @@ -0,0 +1,248 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &382763637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 382763642} + - component: {fileID: 382763641} + - component: {fileID: 382763640} + - component: {fileID: 382763639} + - component: {fileID: 382763638} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &382763638 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382763637} + m_Enabled: 1 +--- !u!124 &382763639 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382763637} + m_Enabled: 1 +--- !u!92 &382763640 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382763637} + m_Enabled: 1 +--- !u!20 &382763641 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382763637} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &382763642 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 382763637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &986049433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 986049435} + - component: {fileID: 986049434} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &986049434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 986049433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5148400295519405d82bb0fa65246ea2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &986049435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 986049433} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity.meta b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity.meta new file mode 100644 index 00000000..e0125355 --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample/BasicSampleScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d97280fe82b874466870f709c3315d41 +timeCreated: 1483902786 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/StandaloneFileBrowser/Sample/CanvasSampleOpenFileImage.cs b/Assets/Plugins/StandaloneFileBrowser/Sample/CanvasSampleOpenFileImage.cs new file mode 100644 index 00000000..4fb1351b --- /dev/null +++ b/Assets/Plugins/StandaloneFileBrowser/Sample/CanvasSampleOpenFileImage.cs @@ -0,0 +1,53 @@ +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using SFB; + +[RequireComponent(typeof(Button))] +public class CanvasSampleOpenFileImage : MonoBehaviour, IPointerDownHandler { + public RawImage output; + +#if UNITY_WEBGL && !UNITY_EDITOR + // + // WebGL + // + [DllImport("__Internal")] + private static extern void UploadFile(string gameObjectName, string methodName, string filter, bool multiple); + + public void OnPointerDown(PointerEventData eventData) { + UploadFile(gameObject.name, "OnFileUpload", ".png, .jpg", false); + } + + // Called from browser + public void OnFileUpload(string url) { + StartCoroutine(OutputRoutine(url)); + } +#else + // + // Standalone platforms & editor + // + public void OnPointerDown(PointerEventData eventData) { } + + void Start() { + var button = GetComponent