diff --git a/.idea/.idea.Materialize/.idea/contentModel.xml b/.idea/.idea.Materialize/.idea/contentModel.xml
new file mode 100644
index 00000000..8ce1d54d
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/contentModel.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/dictionaries/maikeu.xml b/.idea/.idea.Materialize/.idea/dictionaries/maikeu.xml
new file mode 100644
index 00000000..faeec120
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/dictionaries/maikeu.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/encodings.xml b/.idea/.idea.Materialize/.idea/encodings.xml
new file mode 100644
index 00000000..15a15b21
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/indexLayout.xml b/.idea/.idea.Materialize/.idea/indexLayout.xml
new file mode 100644
index 00000000..27ba142e
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/misc.xml b/.idea/.idea.Materialize/.idea/misc.xml
new file mode 100644
index 00000000..1d8c84d0
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/modules.xml b/.idea/.idea.Materialize/.idea/modules.xml
new file mode 100644
index 00000000..c54070a4
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/vcs.xml b/.idea/.idea.Materialize/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/.idea/workspace.xml b/.idea/.idea.Materialize/.idea/workspace.xml
new file mode 100644
index 00000000..f78fc236
--- /dev/null
+++ b/.idea/.idea.Materialize/.idea/workspace.xml
@@ -0,0 +1,1723 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ format
+ original
+ temp
+ saveall
+ png
+ save pro
+ bmp
+ fil
+ CameraOffsetPos
+ alpha
+ CIH
+ CommandListExecutorScript
+ _jpgSelected
+ PostProcessGuiObject
+ clipboard
+ testObject
+ show full
+ show
+ materialgui
+ sample
+ MainGuiScript
+ suges
+ MGS
+ texture
+ key
+ windows.forms
+ _mainGui
+ smoothness
+ start
+ prev
+
+
+ MainGui.Instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1541032378210
+
+
+ 1541032378210
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.Materialize/riderModule.iml b/.idea/.idea.Materialize/riderModule.iml
new file mode 100644
index 00000000..c63f8321
--- /dev/null
+++ b/.idea/.idea.Materialize/riderModule.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.jpg.jpg b/.jpg.jpg
new file mode 100644
index 00000000..2991395a
Binary files /dev/null and b/.jpg.jpg differ
diff --git a/.mtz b/.mtz
new file mode 100644
index 00000000..20072d0d
--- /dev/null
+++ b/.mtz
@@ -0,0 +1,91 @@
+
+
+
+ 0.0
+ 0.0
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+ 0.3
+
+ null
+
+ 0
+
+ null
+ null
+
+ null
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+
+ null
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+ 1
+
+
+ 0
+ 0
+
+
+ null
+
+ null
+
+ 50
+ 0
+ 0.0
+
+ null
+
+
\ No newline at end of file
diff --git a/Assembly-CSharp.csproj.DotSettings b/Assembly-CSharp.csproj.DotSettings
new file mode 100644
index 00000000..9eaa43cb
--- /dev/null
+++ b/Assembly-CSharp.csproj.DotSettings
@@ -0,0 +1,2 @@
+
+ True
\ No newline at end of file
diff --git a/Assets/FileBrowser/DefaultIcons/addToFavorites.psd b/Assets/FileBrowser/DefaultIcons/addToFavorites.psd
deleted file mode 100644
index e584b7cc..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/addToFavorites.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/addToFavorites.psd.meta b/Assets/FileBrowser/DefaultIcons/addToFavorites.psd.meta
deleted file mode 100644
index bfb07ee2..00000000
--- a/Assets/FileBrowser/DefaultIcons/addToFavorites.psd.meta
+++ /dev/null
@@ -1,57 +0,0 @@
-fileFormatVersion: 2
-guid: 899b6c62f8495cb49b5cdf4af01b0c90
-timeCreated: 1461803142
-licenseType: Pro
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 2048
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/fileIcon.psd b/Assets/FileBrowser/DefaultIcons/fileIcon.psd
deleted file mode 100644
index 422d6ec9..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/fileIcon.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/fileIcon.psd.meta b/Assets/FileBrowser/DefaultIcons/fileIcon.psd.meta
deleted file mode 100644
index b18d618f..00000000
--- a/Assets/FileBrowser/DefaultIcons/fileIcon.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: 39a095224be0beb409f5b61cd02f4579
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/folderIcon.psd b/Assets/FileBrowser/DefaultIcons/folderIcon.psd
deleted file mode 100644
index b8eaccbb..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/folderIcon.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/folderIcon.psd.meta b/Assets/FileBrowser/DefaultIcons/folderIcon.psd.meta
deleted file mode 100644
index ef98a30a..00000000
--- a/Assets/FileBrowser/DefaultIcons/folderIcon.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: c8135945c98cc94429ae7806d04b5b8b
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/listItemHover.psd b/Assets/FileBrowser/DefaultIcons/listItemHover.psd
deleted file mode 100644
index 6b1049ba..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/listItemHover.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/listItemHover.psd.meta b/Assets/FileBrowser/DefaultIcons/listItemHover.psd.meta
deleted file mode 100644
index 6ad8395b..00000000
--- a/Assets/FileBrowser/DefaultIcons/listItemHover.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: 4325cb797ef078b49bb0efb0fb870da8
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/listItemSelected.psd b/Assets/FileBrowser/DefaultIcons/listItemSelected.psd
deleted file mode 100644
index 4aa3a111..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/listItemSelected.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/listItemSelected.psd.meta b/Assets/FileBrowser/DefaultIcons/listItemSelected.psd.meta
deleted file mode 100644
index 5cacf8e3..00000000
--- a/Assets/FileBrowser/DefaultIcons/listItemSelected.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: d92388cf1d1be28458d673a546ed4a61
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/placesDesktop.psd b/Assets/FileBrowser/DefaultIcons/placesDesktop.psd
deleted file mode 100644
index 32553399..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/placesDesktop.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/placesDesktop.psd.meta b/Assets/FileBrowser/DefaultIcons/placesDesktop.psd.meta
deleted file mode 100644
index 197c7a92..00000000
--- a/Assets/FileBrowser/DefaultIcons/placesDesktop.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: e09026654626d284eb4b90ad872d8b6a
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/placesFavorites.psd b/Assets/FileBrowser/DefaultIcons/placesFavorites.psd
deleted file mode 100644
index 3c2c0821..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/placesFavorites.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/placesFavorites.psd.meta b/Assets/FileBrowser/DefaultIcons/placesFavorites.psd.meta
deleted file mode 100644
index aa7bebaa..00000000
--- a/Assets/FileBrowser/DefaultIcons/placesFavorites.psd.meta
+++ /dev/null
@@ -1,57 +0,0 @@
-fileFormatVersion: 2
-guid: 7965ffbc350699b4183ece4d8e870c1f
-timeCreated: 1461803142
-licenseType: Pro
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 2048
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/placesHD.psd b/Assets/FileBrowser/DefaultIcons/placesHD.psd
deleted file mode 100644
index 91a1b6bc..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/placesHD.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/placesHD.psd.meta b/Assets/FileBrowser/DefaultIcons/placesHD.psd.meta
deleted file mode 100644
index 74986206..00000000
--- a/Assets/FileBrowser/DefaultIcons/placesHD.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: 6576d7fa26628104986879a9195197b4
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd b/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd
deleted file mode 100644
index 0a2ff5bd..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd.meta b/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd.meta
deleted file mode 100644
index 4139a465..00000000
--- a/Assets/FileBrowser/DefaultIcons/placesMyDocs.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: a0bfbc70c5b63284b84f5df326d3668a
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/placesMyPics.psd b/Assets/FileBrowser/DefaultIcons/placesMyPics.psd
deleted file mode 100644
index d5fe79fe..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/placesMyPics.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/placesMyPics.psd.meta b/Assets/FileBrowser/DefaultIcons/placesMyPics.psd.meta
deleted file mode 100644
index 43f37190..00000000
--- a/Assets/FileBrowser/DefaultIcons/placesMyPics.psd.meta
+++ /dev/null
@@ -1,55 +0,0 @@
-fileFormatVersion: 2
-guid: fcd61eae31be0844fb0164aaa667af8b
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 1024
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/DefaultIcons/resizeHandle.psd b/Assets/FileBrowser/DefaultIcons/resizeHandle.psd
deleted file mode 100644
index e81d0ee9..00000000
Binary files a/Assets/FileBrowser/DefaultIcons/resizeHandle.psd and /dev/null differ
diff --git a/Assets/FileBrowser/DefaultIcons/resizeHandle.psd.meta b/Assets/FileBrowser/DefaultIcons/resizeHandle.psd.meta
deleted file mode 100644
index a1008e3d..00000000
--- a/Assets/FileBrowser/DefaultIcons/resizeHandle.psd.meta
+++ /dev/null
@@ -1,57 +0,0 @@
-fileFormatVersion: 2
-guid: 38067483befc94e4a876017a496350f7
-timeCreated: 1433744190
-licenseType: Pro
-TextureImporter:
- fileIDToRecycleName: {}
- serializedVersion: 2
- mipmaps:
- mipMapMode: 0
- enableMipMap: 0
- linearTexture: 1
- correctGamma: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- grayScaleToAlpha: 0
- generateCubemap: 0
- cubemapConvolution: 0
- cubemapConvolutionSteps: 4
- cubemapConvolutionExponent: 1.5
- seamlessCubemap: 0
- textureFormat: -1
- maxTextureSize: 2048
- textureSettings:
- filterMode: -1
- aniso: 1
- mipBias: -1
- wrapMode: 1
- nPOTScale: 0
- lightmap: 0
- rGBM: 0
- compressionQuality: 50
- allowsAlphaSplitting: 0
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spritePixelsToUnits: 100
- alphaIsTransparency: 1
- textureType: 2
- buildTargetSettings: []
- spriteSheet:
- sprites: []
- outline: []
- spritePackingTag:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/FileBrowser.cs b/Assets/FileBrowser/FileBrowser.cs
deleted file mode 100644
index 72b3d037..00000000
--- a/Assets/FileBrowser/FileBrowser.cs
+++ /dev/null
@@ -1,1678 +0,0 @@
-using UnityEngine;
-using System;
-using System.IO;
-using System.Text;
-using System.Collections;
-using System.Collections.Generic;
-using System.Text.RegularExpressions;
-
-using System.Net;
-using FreeImageAPI;
-using System.Runtime.InteropServices;
-
-using System.Linq;
-using System.Diagnostics;
-
-//===========================================================================
-public class FileBrowser : MonoBehaviour {
-
- [DllImport ("FreeImage")]
- private static extern FIBITMAP FreeImage_Load( FREE_IMAGE_FORMAT fif, string filename, int flags );
-
- [DllImport ("FreeImage")]
- private static extern void FreeImage_Unload( FIBITMAP dib );
-
- [DllImport ("FreeImage")]
- private static extern bool FreeImage_Save( FREE_IMAGE_FORMAT fif, FIBITMAP dib, string filename, FREE_IMAGE_SAVE_FLAGS flags );
-
- [DllImport ("FreeImage")]
- private static extern int FreeImage_GetHeight( FIBITMAP dib );
-
- [DllImport ("FreeImage")]
- private static extern int FreeImage_GetWidth( FIBITMAP dib );
-
- [DllImport ("FreeImage")]
- private static extern bool FreeImage_GetPixelColor( FIBITMAP dib, int x, int y, RGBQUAD value );
-
- [DllImport ("FreeImage")]
- private static extern FIBITMAP FreeImage_MakeThumbnail( FIBITMAP dib, int max_pixel_size, bool convert );
-
-
-
- // DEBUG: Use this to help visualize changes when modifying a GUI skin for the File Browser on the fly
- private const bool REFRESH_STYLES_EVERY_FRAME = true;
-
- // Functional Customizations
- public bool showPlaces = true;
- public bool dirExplorer = true;
- public bool acceptsDirectories = false;
- public bool enableFileDelete = true;
- public bool hideExtensions = true;
- public bool showTextInput = true; // Needed for write dialogs to create new files
- public bool inputMustExist = true; // Only makes sense for read dialogs, which we'll assume is the default
- public bool overwriteWarn = true; // Only checked if inputMustExist==false. Only makes sense for write dialogs
- public string fileMasks = "*.png;*.jpg;*.jpeg"; // Comma or Semicolon separated
- public bool showHiddenFiles = false;
-
- public string startingFileName = "";
- public Collider UIBlocker = null;
-
- // Only used for the short version of ShowBrowser. Defaults to CWD if not set
- public string defaultDir = "";
-
- public bool rememberLastDir = true;
-
- // The default of this should be true, but I'm leaving at false to make it behave the same as the old versions
- public bool relativizePaths = false;
-
- // Look & Feel Customizations
- public GUISkin skin = null;
- public Texture2D itemHoverImage;
- public Color itemHoverTextColor = _uninitColor;
- public Texture2D itemSelectedImage;
- public Color itemSelectedTextColor = _uninitColor;
-
- public Texture2D dirImage;
- public Texture2D fileImage;
- public int dirsHeight = 22;
- public int filesHeight = 52;
-
- public Texture2D placesHDIcon;
- public Texture2D placesDesktopIcon;
- public Texture2D placesMyDocsIcon;
- public Texture2D placesMyPicsIcon;
- public Texture2D placesFavoritesIcon;
- public Texture2D addFavoritesIcon;
-
- public Texture2D resizeHandleImage;
-
- public Rect browserRect = new Rect (300, 400, 600, 400);
- public Rect errorRect = new Rect (300, 400, 400, 300);
-
- public Rect newFolderRect = new Rect (300, 400, 400, 200);
- bool showingDialogue = false;
-
- bool createNewFolder = false;
- string newFolderName = "NewFolder";
-
- enum DialogueType {
- None = 0,
- Delete = 1,
- Overwrite = 2
- }
-
- DialogueType dialogueType = DialogueType.None;
-
- // Sound Previewer customizations
- public SoundViewer.SoundViewerConfig soundPreviewOptions;
- public int soundPreviewVertOffset = 150;
-
- // Called when the user clicks cancel or select (path will be null when cancel clicked)
- public delegate void FinishedCallback(string path);
-
- // Callback used to return results from a call to FileBrowser.LoadTexture()
- public delegate void TextureLoadedCallback(Texture2D texture);
-
- public bool Active {
- get { return this.isActive; }
- }
-
- // Returns true whenever there's ANY FileBrowser active somewhere
- public static bool HasActive() { return FileBrowser._hasActive; }
- private static bool _hasActive = false;
-
- // When using custom styles, tweak these to help properly divide the horizontal boxes among the window space
- public int extraPadding = 5;
- public int extraPaddingPlaces = 5; // Used only when the browser is showing the places column
-
- //bool showingError = false;
-
- //===========================================================================
- // Base FileBrowser show function
- public void ShowBrowser(string title, FinishedCallback callback, string startingDir, Rect screenRect, string okString)
- {
- if (this.rememberLastDir && this.lastOkDirectory != "") {
- startingDir = this.lastOkDirectory;
- }
-
- startingDir = startingDir.FixPathSeparators();
- if (!Directory.Exists(startingDir)) {
- UnityEngine.Debug.LogError("Starting FileBrowser directory " + startingDir + " does not exist");
- return;
- }
-
- this.title = title;
- this.callback = callback;
- this.newDirectory = startingDir;
- this.screenRect = screenRect;
- this.okButtonString = okString;
-
- this.currentDirectory = "";
- this.isActive = true;
- this.saveMode = false;
- this.saveScreenshot = null;
-
- if (this.inputMustExist) this.overwriteWarn = false;
- if (!this.dirExplorer) this.rememberLastDir = false;
-
- this.typedFilename = this.startingFileName;
-
- if (this.UIBlocker) this.UIBlocker.gameObject.SetActive(true);
-
- this.deleteSelected = false;
- this.SwitchDirectory();
- }
-
- //===========================================================================
- // Shows a file browser at current working dir, centered on screen occupying 2/3 of w and h (or more on low resolutions), Ok button string "Select"
- public void ShowBrowser(string title, FinishedCallback callback) {
- string dir = this.defaultDir == "" ? Directory.GetCurrentDirectory() : this.defaultDir.FixPathSeparators();
-
- if (firstUse) {
- screenRect = this.GetDefaultRect ();
- firstUse = false;
- }
- this.ShowBrowser(title, callback, dir, screenRect, "Select");
- }
- public void ShowBrowser(string title, FinishedCallback callback, string okString) {
- string dir = this.defaultDir == "" ? Directory.GetCurrentDirectory() : this.defaultDir.FixPathSeparators();
-
- if (firstUse) {
- screenRect = this.GetDefaultRect ();
- firstUse = false;
- }
- this.ShowBrowser(title, callback, dir, screenRect, okString);
- }
-
- //===========================================================================
- // Shows a save-game file Browser:
- // - no directory changes, hide extensions, show text input, png and jpeg filter, overwrite warns, ok button string "Save"
- // Takes a screenshot and saves it into the saveBaseDir with the user-specified name. If screenshot if null, takes a screenshot at half resolution
- // On ok calls the callback with a file with the same name, on the saveDataDir (which must be diferent then saveBaseDir)
- public void ShowSaveBrowser(string title, FinishedCallback callback, string saveBaseDir, string saveDataDir, Rect screenRect, Texture2D screenshot)
- {
- this.dirExplorer = false;
- this.acceptsDirectories = false;
- this.hideExtensions = false;
- this.showTextInput = true;
- this.inputMustExist = false;
- this.overwriteWarn = true;
- this.fileMasks = "*.png;*.jpg;*.jpeg;*.tga;*.bmp;*.tiff";
-
- saveBaseDir = saveBaseDir.FixPathSeparators();
- if (!Directory.Exists(saveBaseDir)) {
- Directory.CreateDirectory(saveBaseDir);
- }
-
- this.ShowBrowser(title, callback, saveBaseDir, screenRect, "Save");
- //this.saveMode = true;
- this.saveMode = false;
- this.savedDataDir = saveDataDir.FixPathSeparators();
-
- this.saveScreenshot = screenshot;
- if (screenshot == null) {
- this.StartCoroutine(this.TakeHalfScreenshot());
- }
- }
-
- //===========================================================================
- // Simplified signature of ShowSaveBrowser. save dir is ./saves, save data is ./saves/data, auto takes the screenshot
- public void ShowSaveBrowser(string title, FinishedCallback callback)
- {
- string saveBaseDir = this.defaultDir == "" ? Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "saves" : this.defaultDir.FixPathSeparators();
- string saveDataDir = saveBaseDir + Path.DirectorySeparatorChar + "data";
-
- if (firstUse) {
- screenRect = this.GetDefaultRect ();
- firstUse = false;
- }
- this.ShowSaveBrowser(title, callback, saveBaseDir, saveDataDir, screenRect, null);
- }
-
- //===========================================================================
- // Shows a load-game file Browser:
- // - no directory changes, hide extensions, png and jpeg filter, file must exist
- // Calls the callback with a file with the same name, on the saveDataDir (which must be diferent then saveBaseDir)
- //
- public void ShowLoadBrowser(string title, FinishedCallback callback, string saveBaseDir, string saveDataDir, Rect screenRect)
- {
- this.dirExplorer = false;
- this.acceptsDirectories = false;
- this.hideExtensions = false;
- this.inputMustExist = true;
- this.overwriteWarn = false;
- this.fileMasks = "*.png;*.jpg;*.jpeg;*.tga;*.bmp;*.tiff";
-
- saveBaseDir = saveBaseDir.FixPathSeparators();
- if (!Directory.Exists(saveBaseDir)) {
- Directory.CreateDirectory(saveBaseDir);
- }
-
- this.ShowBrowser(title, callback, saveBaseDir, screenRect, "Load");
- this.saveMode = false;
- this.savedDataDir = saveDataDir;
- }
-
- //===========================================================================
- // Simplified signature of ShowLoadBrowser. save dir is ./saves, save data is ./saves/data
- public void ShowLoadBrowser(string title, FinishedCallback callback)
- {
- string saveBaseDir = this.defaultDir == "" ? Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "saves" : this.defaultDir.FixPathSeparators();
- string saveDataDir = saveBaseDir + Path.DirectorySeparatorChar + "data";
-
- if (firstUse) {
- screenRect = this.GetDefaultRect ();
- firstUse = false;
- }
- this.ShowLoadBrowser(title, callback, saveBaseDir, saveDataDir, screenRect);
- }
-
- //===========================================================================
- // Returns a rectangle centered in the screen, with 2/3 of the screen size
- // But with minimum size of 600x450 (or actual Screen size if it's lower than that)
- public static Rect GetDefaultRect_()
- {
- int w = Screen.width / 3 * 2;
- int h = Screen.height / 3 * 2;
- w = Mathf.Clamp(w, _minWidth, Screen.width);
- h = Mathf.Clamp(h, _minHeight, Screen.height);
- int x = (Screen.width - w) / 2;
- int y = (Screen.height - h) / 2;
- return new Rect(x, y, w, h);
- }
- public Rect GetDefaultRect() { return FileBrowser.GetDefaultRect_(); }
-
- //===========================================================================
- public void RefreshStyles() {
- this.setupCustomStyles();
-
- for (int i = 0; i < this.filesWithImages.Length; i++) {
- string displayName = this.hideExtensions ? Path.GetFileNameWithoutExtension(this.files[i]) : this.files[i];
- this.filesWithImages[i].text = displayName;
- }
- }
-
- //===========================================================================
- public void RefreshContents() {
- this.newDirectory = this.currentDirectory;
- this.currentDirectory = "";
- this.SwitchDirectory();
- }
-
- //===========================================================================
- // Private Interface follows
- // You can safelly ignore everything from here on
- //===========================================================================
-
- //===========================================================================
- // Privates - We hold a lot of privates, to make fewer computations inside OnGUI
-
- // bools so gui can access key events
- private bool keyReturn = false;
-
-
- private static Color _uninitColor = new Color(1, 0, 1, 0);
- private static int _minWidth = 800;
- private static int _minHeight = 480;
- private static int _placesSize = 48;
-
- private GUIStyle styleListItem;
- private GUIStyle styleDirsTop;
- private GUIStyle styleDirsTopBut;
- private GUIStyle styleDirsBrowser;
- private GUIStyle styleFileBrowser;
- private GUIStyle stylePreviewer;
- private GUIStyle stylePreviewTitle;
-
- private Texture2D previewTexture;
- private string previewText = "";
-
- private string newDirectory;
- private string currentDirectory;
- private string[] currentDirectoryParts;
- private bool currentDirectoryMatches;
- private string lastOkDirectory = "";
-
- private string[] files;
- private GUIContent[] filesWithImages;
- private int selectedFile;
- private string typedFilename = "";
-
- private string[] directories;
- private GUIContent[] directoriesWithImages;
- private GUIContent[] directoriesWithImagesRemove;
- private int selectedDirectory;
-
- private bool isActive;
- private string title;
- private Rect screenRect;
- private bool firstUse = true;
- private string okButtonString = "Select";
-
- private bool saveMode = false;
- private string savedDataDir;
- private Texture2D saveScreenshot;
-
- private Vector2 scrollPosition1;
- private Vector2 scrollPosition2;
- private Vector2 scrollPosition3;
-
- private FinishedCallback callback;
-
- private string[] fileMaskList;
- private string[] drivesList;
-
- private SoundViewer soundPreviewer;
-
- // TODO: A Proper MessageBox class would come in handy instead of these
- private string userError = "";
- private bool deleteSelected = false;
- private bool overwriteSelected = false;
- private string overwriteFileName = "";
-
- //===========================================================================
- // Helper struct to hold places (drives and special folders) data
- private struct PlacesData {
- public PlacesData(string _path, string _name, Texture2D _icon) {
- path = _path; name = _name; icon = _icon;
- }
- public string path;
- public string name;
- public Texture2D icon;
- }
- private PlacesData[] placesList;
- private GUIStyle placesIconStyle;
- private GUIStyle placesLabelStyle;
-
- private int availableSpace;
- private int windowPadding;
-
- //=========================================================================
- // Saves a half-res screenshot into member this.saveScreenshot. Sets a flag to ignore GUI draw this frame
- private bool __ignoreGUI = false;
- IEnumerator TakeHalfScreenshot()
- {
- this.__ignoreGUI = true;
- yield return new WaitForEndOfFrame();
-
- Texture2D fullScreenshot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, true, true);
- fullScreenshot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
- this.__ignoreGUI = false;
-
- // Save with lower res to save disk space
- this.saveScreenshot = new Texture2D(Screen.width / 2, Screen.height / 2, TextureFormat.RGB24, false, true);
- this.saveScreenshot.SetPixels(fullScreenshot.GetPixels(1));
- this.saveScreenshot.Apply();
-
- Destroy(fullScreenshot);
- yield break;
- }
-
- //===========================================================================
- void Start()
- {
- // Fill out the list of places
- List _placesList = new List();
-
- // Adding a special "My Computer"-type dir, which we'll mark with the string %%ROOT%%,
- // to list all the available drives, in addition to the special folder, whitout adding a combo box anywhere
- _placesList.Add(new PlacesData("%%ROOT%%", "Drives", this.placesHDIcon));
-
- this.__AddSpecialFolder(Environment.SpecialFolder.Desktop, "Desktop", this.placesDesktopIcon, ref _placesList);
- this.__AddSpecialFolder(Environment.SpecialFolder.MyDocuments, "My Docs", this.placesMyDocsIcon, ref _placesList);
- this.__AddSpecialFolder(Environment.SpecialFolder.MyPictures, "My Pics", this.placesMyPicsIcon, ref _placesList);
- //this.__AddSpecialFolder("Favorites", "Favorites", this.placesFavoritesIcon, ref _placesList);
-
- this.placesList = new PlacesData[_placesList.Count];
- for (int i = 0; i < _placesList.Count; i++) {
- this.placesList[i] = _placesList[i];
- }
-
- this.drivesList = Environment.GetLogicalDrives();
-
- if (this.fileMasks == null) this.fileMasks = "*";
-
- if (this.UIBlocker) this.UIBlocker.gameObject.SetActive(false);
-
- this.soundPreviewer = this.gameObject.AddComponent();
- this.soundPreviewer.configs = this.soundPreviewOptions;
- this.soundPreviewer.Disable();
- this.soundPreviewer.Start();
- }
-
- //===========================================================================
- // If the folder exists on this machine, add it the the list of places
- private void __AddSpecialFolder(Environment.SpecialFolder folder, string name, Texture2D icon, ref List placesList)
- {
- string dir = Environment.GetFolderPath(folder);
- if (dir != "") {
- placesList.Add(new PlacesData(dir, name, icon));
- }
- }
-
- string GetPathToFavorites(){
- string pathToFile = Application.dataPath;
- //string pathToFile = Application.persistentDataPath;
- if (Application.isEditor) {
- pathToFile = pathToFile + "\\favorites.txt";
- } else {
- pathToFile = pathToFile.Substring (0, pathToFile.Length - 16) + "favorites.txt";
- }
- return pathToFile;
- }
-
- List GetFavorites(){
- List allDirectories = new List();
-
- string favoritesPath = GetPathToFavorites ();
-
- if (File.Exists (favoritesPath)) {
- StreamReader theReader = new StreamReader(favoritesPath, Encoding.Default);
- string line;
- do {
- line = theReader.ReadLine();
- if (line != null)
- {
- if( IsLegitDirectory(line) ){
- allDirectories.Add(line);
- }
- }
- }
- while (line != null);
- theReader.Close ();
- }else{
- File.Create(favoritesPath);
- }
-
- return allDirectories;
- }
-
- void SaveFavorites( List allDirectories ){
-
- string favoritesPath = GetPathToFavorites ();
-
- if (!File.Exists (favoritesPath)) {
- File.Create(favoritesPath);
- }
- StreamWriter theWriter = new StreamWriter(favoritesPath);
- foreach (var dir in allDirectories) {
- theWriter.WriteLine (dir);
- }
-
- theWriter.Close();
- }
-
- void AddFavorite( string newFolder ){
-
- List allDirectories = GetFavorites ();
- bool append = true;
- foreach(var dir in allDirectories) {
- if (dir == newFolder) {
- append = false;
- }
- }
-
- if( append == true ){
- allDirectories.Add (newFolder);
- }
-
- this.SaveFavorites (allDirectories);
-
- }
-
- bool IsLegitDirectory ( string dir ){
- if (dir != "Favorites" && dir != "%%ROOT%%") {
- if (Directory.Exists (dir)) {
- return true;
- }
- }
- return false;
- }
-
- void AddCurrentDirToFavorites() {
-
- if ( IsLegitDirectory(this.currentDirectory) ) {
- this.AddFavorite (this.currentDirectory);
- //this.RefreshContents ();
- //this.SwitchDirectory ();
- }
- }
-
- void RemoveFavorite( int dirToRemove ){
- List allDirectories = GetFavorites ();
- allDirectories.RemoveAt (dirToRemove + 1);
- SaveFavorites (allDirectories);
- this.RefreshContents ();
- }
-
- //===========================================================================
- private void SwitchDirectory()
- {
- if (this.newDirectory == null || this.currentDirectory == this.newDirectory) {
- return;
- }
-
- if (this.newDirectory == "%%ROOT%%") {
- this.currentDirectory = this.newDirectory;
- } else if (this.newDirectory == "Favorites") {
- this.currentDirectory = this.newDirectory;
- } else {
- this.currentDirectory = Path.GetFullPath(this.newDirectory);
- }
-
- this.scrollPosition1 = Vector2.zero;
- this.scrollPosition2 = Vector2.zero;
- this.selectedDirectory = -1;
- this.selectedFile = -1;
- this.userError = "";
-
- string[] directories;
- if (this.currentDirectory == "%%ROOT%%") {
- directories = this.drivesList.Clone () as string[];
- } else if (this.currentDirectory == "Favorites"){
- try {
- List allDirectories = GetFavorites();
- List dirsList = new List();
- foreach(var dir in allDirectories) {
- bool isHidden = (File.GetAttributes(dir) & FileAttributes.Hidden) == FileAttributes.Hidden;
- if (!this.showHiddenFiles && isHidden) continue;
- dirsList.Add(dir);
- }
- directories = dirsList.ToArray();
- } catch(IOException) {
- this.userError = "Unable to access drive " + this.newDirectory;
- UnityEngine.Debug.LogWarning(this.userError);
- //TODO Keep this from repainting or whatever
- this.newDirectory = null;
- return;
- } catch(UnauthorizedAccessException) {
- this.userError = "Access denied to directory " + this.newDirectory;
- UnityEngine.Debug.LogWarning(this.userError);
- this.newDirectory = null;
- return;
- }
- } else {
- try {
- string[] allDirectories = Directory.GetDirectories(this.newDirectory);
- List dirsList = new List();
- foreach(var dir in allDirectories) {
- bool isHidden = (File.GetAttributes(dir) & FileAttributes.Hidden) == FileAttributes.Hidden;
- if (!this.showHiddenFiles && isHidden) continue;
- dirsList.Add(dir);
- }
- directories = dirsList.ToArray();
- } catch(IOException) {
- this.userError = "Unable to access drive " + this.newDirectory;
- UnityEngine.Debug.LogWarning(this.userError);
- //TODO Keep this from repainting or whatever
- this.newDirectory = null;
- return;
- } catch(UnauthorizedAccessException) {
- this.userError = "Access denied to directory " + this.newDirectory;
- UnityEngine.Debug.LogWarning(this.userError);
- this.newDirectory = null;
- return;
- }
- }
-
- // Needed to avoid leaking memory
- Resources.UnloadUnusedAssets();
-
- if (this.currentDirectory == "%%ROOT%%") {
- this.currentDirectoryParts = new string[] {"Drives"};
- } else if (this.currentDirectory == "/") {
- this.currentDirectoryParts = new string[] {""};
- } else if (this.currentDirectory == "Favorites") {
- this.currentDirectoryParts = new string[] {"Favorites"};
- } else {
- // Remove a trailing separator to avoid having a dangling directory part
- // But don't remove it from the currentDirectory string itself or it would break when getting entries of the root drive
- string path = this.currentDirectory;
- if (this.currentDirectory.EndsWith(Path.DirectorySeparatorChar.ToString())) {
- path = this.currentDirectory.Remove(this.currentDirectory.Length - 1);
- }
- this.currentDirectoryParts = path.Split(Path.DirectorySeparatorChar);
- }
-
- for (int i = 0; i < directories.Length; ++i) {
- if (this.currentDirectory == "%%ROOT%%") {
- directories [i] = directories [i].Replace (Path.DirectorySeparatorChar.ToString (), "");
- } else if (this.currentDirectory == "Favorites") {
- // do nothing
- } else {
- directories[i] = directories[i].Substring(directories[i].LastIndexOf(Path.DirectorySeparatorChar) + 1);
- }
- }
- Array.Sort(directories);
-
- // Adding '..' to the list of directories (if we are not at drive root)
- bool addParent = this.currentDirectoryParts.Length > 1;
- this.directories = new string[directories.Length + (addParent ? 1 : 0)];
- if (addParent) {
- this.directories[0] = "..";
- }
- for (int i = 0; i < directories.Length; ++i) {
- this.directories[i + (addParent ? 1 : 0)] = directories[i];
- }
-
- // Multiple file masks accepted
- this.fileMasks = this.fileMasks.Replace(',', ';');
- this.fileMaskList = this.fileMasks.Split(';');
- List fileList = new List();
- if (this.currentDirectory != "%%ROOT%%" && this.currentDirectory != "Favorites") {
- for (int i = 0; i < this.fileMaskList.Length; ++i) {
- fileList.AddRange(Directory.GetFiles(this.currentDirectory, this.fileMaskList[i]));
- }
- }
- this.files = fileList.ToArray();
-
- for (int i = 0; i < this.files.Length; ++i) {
- this.files[i] = Path.GetFileName(this.files[i]);
- }
- Array.Sort(this.files);
-
- this.newDirectory = null;
-
- // Create the folder and files GUIContent with the icons and strings
- this.StopAllCoroutines();
- this.directoriesWithImages = new GUIContent[this.directories.Length];
- for (int i = 0; i < this.directoriesWithImages.Length; i++) {
- this.directoriesWithImages[i] = new GUIContent(this.directories[i], dirImage);
- }
-
- this.filesWithImages = new GUIContent[this.files.Length];
- for (int i = 0; i < this.filesWithImages.Length; i++) {
- string displayName = this.hideExtensions ? Path.GetFileNameWithoutExtension(this.files[i]) : this.files[i];
- this.filesWithImages[i] = new GUIContent(displayName, fileImage);
- }
-
- this.availableSpace = -1;
- this.soundPreviewer.Disable();
-
- // Load icons in coroutines to avoid taking too long and lock the GUI
- this.StartCoroutine(this.loadIcons());
- }
-
- //===========================================================================
- // Load images into the file icons themselves
- // Loading in sequence in a single coroutine instead of creating one for each icon is better
-
- string MakeNewThumb( string filename, string tempName, string fileLower, int size ){
-
- //string newFilename = Application.persistentDataPath + "/" + tempName + ".png";
- string newFilename = Application.dataPath + "/" + tempName + ".png";
-
- if (fileLower.EndsWith (".mtz")) {
-
- string imageFileName = filename.Substring(0, filename.LastIndexOf(".mtz" ) );
-
- if( File.Exists( imageFileName + "_diffuseOriginal.bmp" ) ){
- imageFileName += "_diffuseOriginal.bmp";
- }else if( File.Exists( imageFileName + "_diffuse.bmp" ) ){
- imageFileName += "_diffuse.bmp";
- }else if( File.Exists( imageFileName + "_diffuseOriginal.jpg" ) ){
- imageFileName += "_diffuseOriginal.jpg";
- }else if( File.Exists( imageFileName + "_diffuse.jpg" ) ){
- imageFileName += "_diffuse.jpg";
- }else if( File.Exists( imageFileName + "_diffuseOriginal.png" ) ){
- imageFileName += "_diffuseOriginal.png";
- }else if( File.Exists( imageFileName + "_diffuse.png" ) ){
- imageFileName += "_diffuse.png";
- }else if( File.Exists( imageFileName + "_diffuseOriginal.tga" ) ){
- imageFileName += "_diffuseOriginal.tga";
- }else if( File.Exists( imageFileName + "_diffuse.tga" ) ){
- imageFileName += "_diffuse.tga";
- }else if( File.Exists( imageFileName + "_diffuseOriginal.tif" ) ){
- imageFileName += "_diffuseOriginal.tif";
- }else if( File.Exists( imageFileName + "_diffuse.tif" ) ){
- imageFileName += "_diffuse.tif";
- }else if( File.Exists( imageFileName + "_diffuseOriginal.tiff" ) ){
- imageFileName += "_diffuseOriginal.tiff";
- }else if( File.Exists( imageFileName + "_diffuse.tiff" ) ){
- imageFileName += "_diffuse.tiff";
- }else{
- return "null";
- }
-
- filename = imageFileName;
- fileLower = imageFileName.ToLower();
- }
-
- try{
- FREE_IMAGE_FORMAT imageFormat = FREE_IMAGE_FORMAT.FIF_UNKNOWN;
- if( fileLower.EndsWith(".bmp") ){
- imageFormat = FREE_IMAGE_FORMAT.FIF_BMP;
- }else if( fileLower.EndsWith(".tga") ){
- imageFormat = FREE_IMAGE_FORMAT.FIF_TARGA;
- }else if( fileLower.EndsWith(".tif") || fileLower.EndsWith(".tiff") ){
- imageFormat = FREE_IMAGE_FORMAT.FIF_TIFF;
- }else if( fileLower.EndsWith(".png") ){
- imageFormat = FREE_IMAGE_FORMAT.FIF_PNG;
- }else if( fileLower.EndsWith(".jpg") || fileLower.EndsWith(".jpeg") ){
- imageFormat = FREE_IMAGE_FORMAT.FIF_JPEG;
- }else{
- imageFormat = FREE_IMAGE_FORMAT.FIF_UNKNOWN;
- }
- FIBITMAP fiBitmap = FreeImage_Load (imageFormat, filename, 0);
- FIBITMAP fiThumbnail = FreeImage_MakeThumbnail(fiBitmap, size, true);
-
- //newFilename = Application.dataPath + "/tempThumb.png";
-
- if( File.Exists( newFilename ) ){
- File.SetAttributes(newFilename, FileAttributes.Normal );
- }
-
- bool thumbnailSuccess = FreeImage_Save( FREE_IMAGE_FORMAT.FIF_PNG, fiThumbnail, newFilename, 0);
-
- FreeImage_Unload(fiBitmap);
- FreeImage_Unload(fiThumbnail);
- }
-
- catch (System.Exception e) {
- UnityEngine.Debug.Log( e );
- UnityEngine.Debug.Log( "Could not import with Free Image Importer" );
- }
-
-
- return newFilename;
- }
-
- IEnumerator loadIcons()
- {
- for (int i = 0; i < this.filesWithImages.Length; i++) {
- yield return null;
- Resources.UnloadUnusedAssets();
-
- string filename = this.currentDirectory + Path.DirectorySeparatorChar + this.files[i];
- string fileLower = filename.ToLower();
- if (!fileLower.EndsWith(".jpg") && !fileLower.EndsWith(".jpeg") && !fileLower.EndsWith(".png") && !fileLower.EndsWith(".bmp") && !fileLower.EndsWith(".tga") && !fileLower.EndsWith(".tiff") && !fileLower.EndsWith(".tif") && !fileLower.EndsWith(".mtz") ) {
- continue;
- }
-
- UnityEngine.Debug.Log("Loading Icons");
-
- filename = MakeNewThumb( filename, "tempThumb", fileLower, 128 );
-
- if( filename != "null" ){
-
- WWW www = new WWW("file://" + filename);
- yield return www;
-
- GUIContent item = this.filesWithImages[i];
- Texture2D tex = new Texture2D(www.texture.width, www.texture.height, TextureFormat.ARGB32, false, true);
- www.LoadImageIntoTexture(tex);
-
- //File.Delete(filename);
-
- // Scale down to the file icons height
- float ratio = (float)tex.width / tex.height;
- int h = this.filesHeight;
- item.image = tex.ScaleTexture((int)(ratio * h), h);
-
- }else{
- yield return null;
- }
-
- }
- Resources.UnloadUnusedAssets();
- }
-
- //===========================================================================
- // Update checks for Delete pressings to update the delete flag, and arows and enter for keyboard navigation
- void Update()
- {
- if (!this.isActive) return;
-
- if (this.enableFileDelete && Input.GetKeyUp(KeyCode.Delete)) {
- CenterErrorWindow();
- if (this.currentDirectory == "Favorites") {
- if ( this.selectedDirectory > -1) {
- this.deleteSelected = true;
- }
- }else if (this.selectedFile > -1 || this.selectedDirectory > 0 ) {
- this.deleteSelected = true;
- }
- }
-
- if (Input.GetKeyUp (KeyCode.Return)) {
- this.keyReturn = true;
- } else {
- this.keyReturn = false;
- }
-
- /*
- if (this.keyReturn && this.selectedDirectory > -1) {
- this.DirectoryDoubleClickCallback(this.selectedDirectory);
- return;
- }
- if (this.keyReturn && this.selectedFile > -1) {
- this.FileDoubleClickCallback(this.selectedFile);
- return;
- }
- */
-
- int movedIndex = 0;
- if (Input.GetKeyDown(KeyCode.UpArrow)) movedIndex--;
- if (Input.GetKeyDown(KeyCode.DownArrow)) movedIndex++;
-
- if (movedIndex == 0) return;
-
- if (this.selectedFile > -1) {
- this.selectedFile += movedIndex;
- this.selectedFile = Mathf.Clamp(this.selectedFile, 0, this.files.Length - 1);
- this.FileSingleClickCallback(this.selectedFile);
- }
-
- if (this.selectedDirectory > -1) {
- this.selectedDirectory += movedIndex;
- }
- }
-
- //===========================================================================
- private void setupCustomStyles()
- {
- // Use the "List Item" custom style if one is defined, or create one based on Label style if not
- this.styleListItem = this.skin.FindStyle("List Item");
- if (this.styleListItem == null) {
- this.styleListItem = new GUIStyle(this.skin.label);
- }
- this.styleListItem.alignment = TextAnchor.MiddleLeft;
-
- // Overwrite hover and toggled backgrounds and text colors if they are set
- if (this.itemHoverTextColor == _uninitColor) this.itemHoverTextColor = this.skin.label.hover.textColor;
- if (this.itemSelectedTextColor == _uninitColor) this.itemSelectedTextColor = this.skin.label.onNormal.textColor;
-
- if (this.itemHoverImage != null) this.styleListItem.hover.background = this.itemHoverImage;
- if (this.itemSelectedImage != null) {
- this.styleListItem.onNormal.background = this.itemSelectedImage;
- this.styleListItem.onHover.background = this.itemSelectedImage;
- }
- this.styleListItem.hover.textColor = this.itemHoverTextColor;
- this.styleListItem.onNormal.textColor = this.itemSelectedTextColor;
- this.styleListItem.onHover.textColor = this.itemSelectedTextColor;
-
- // Other custom styles
- this.styleDirsTop = new GUIStyle(this.skin.label);
- this.styleDirsTopBut = new GUIStyle(this.skin.button);
- this.stylePreviewer = new GUIStyle(this.skin.label);
- this.styleDirsBrowser = new GUIStyle(this.styleListItem);
- this.styleFileBrowser = new GUIStyle(this.styleListItem);
- this.stylePreviewTitle= new GUIStyle(this.skin.label);
-
- this.styleDirsTop.alignment = TextAnchor.MiddleCenter;
- this.styleDirsTopBut.alignment = TextAnchor.MiddleCenter;
- this.stylePreviewTitle.alignment= TextAnchor.UpperCenter;
- this.stylePreviewer.alignment = TextAnchor.MiddleCenter;
-
- this.styleDirsTop.wordWrap = false;
- this.styleDirsTop.stretchWidth = true;
- this.styleDirsTop.fixedHeight = this.skin.button.fixedHeight;
- this.styleDirsTopBut.fixedHeight = this.skin.button.fixedHeight;
- this.styleDirsBrowser.fixedHeight = this.dirsHeight;
- this.styleFileBrowser.fixedHeight = this.filesHeight;
-
- this.stylePreviewer.fixedHeight = 0;
- this.stylePreviewer.fixedWidth = 0;
- this.stylePreviewer.stretchHeight = true;
- this.stylePreviewer.stretchWidth = true;
-
- this.styleDirsTopBut.padding = new RectOffset(10, 10, 5, 5);
- this.styleDirsTop.padding = new RectOffset(5, 5, 5, 5);
- this.styleDirsTop.margin.bottom = 10;
- this.styleDirsTopBut.margin.bottom = 10;
- this.stylePreviewTitle.margin.bottom = 0;
-
- this.placesIconStyle = new GUIStyle(this.skin.button);
- this.placesIconStyle.fixedHeight = _placesSize;
- this.placesIconStyle.fixedWidth = _placesSize;
- this.placesIconStyle.alignment = TextAnchor.MiddleCenter;
-
- this.placesLabelStyle = new GUIStyle(this.skin.label);
- this.placesLabelStyle.padding.top = 0;
- this.placesLabelStyle.alignment = TextAnchor.UpperLeft;
- this.placesLabelStyle.fixedWidth = 55;
- }
-
- //===========================================================================
- // Discounts GUI style paddings, and the places column
- private int _CalcAvailableWidth() {
- int winPad = (GUI.skin.window.padding.left - GUI.skin.window.overflow.left) * 2;
- int boxPad = (GUI.skin.box.padding.left - GUI.skin.box.overflow.left) * 6;
- int placesSize = (int) GUI.skin.label.CalcSize(new GUIContent("My Docs")).x + this.extraPaddingPlaces;
-
- bool _showPlaces = this.showPlaces && this.dirExplorer;
- return (int) (this.screenRect.width - winPad - boxPad - (_showPlaces ? placesSize : 0) - this.extraPadding);
- }
-
- //===========================================================================
- void UpdateSoundPreviewRect() {
- float slice8 = this.availableSpace / (this.dirExplorer ? 8.0f : 6.0f);
-
- float w = slice8 * 3 - 30;
- float x = this.screenRect.x + this.screenRect.width - w - windowPadding - 15;
- float y = this.screenRect.y + this.soundPreviewVertOffset;
- float h = this.screenRect.height - (y - this.screenRect.y) * 2;
- this.soundPreviewer.viewRect = new Rect(x / Screen.width, y / Screen.height, w / Screen.width, h / Screen.height);
- }
-
-
- void GuiWindow( int windowID ){
-
- bool showingError = this.userError.Length > 1 || this.deleteSelected || this.createNewFolder;
- GUI.enabled = !showingError;
-
- GUILayout.Space (8);
-
- // Top directory parts
- if (this.dirExplorer) {
- GUILayout.BeginHorizontal ();
- for (int parentIndex = 0; parentIndex < this.currentDirectoryParts.Length; ++parentIndex) {
- if (parentIndex == this.currentDirectoryParts.Length - 1) {
- GUILayout.Label (this.currentDirectoryParts [parentIndex], this.styleDirsTop);
- } else if (GUILayout.Button (this.currentDirectoryParts [parentIndex], this.styleDirsTopBut)) {
- string parentDirectoryName = this.currentDirectory;
- for (int i = this.currentDirectoryParts.Length - 1; i > parentIndex; --i) {
- parentDirectoryName = Path.GetDirectoryName (parentDirectoryName);
- }
- this.newDirectory = parentDirectoryName;
- }
- }
- GUILayout.FlexibleSpace ();
- GUILayout.EndHorizontal ();
- }
-
- GUILayout.BeginHorizontal();
-
- // This holds 1/8 of the remaining size, discounting the places column and paddings
- // 1/6 if directory browser won't show. Discount extra width if the places column will show
- float slice8 = this.availableSpace / (this.dirExplorer ? 8.0f : 6.0f);
-
- int vBarPad = (int) GUI.skin.verticalScrollbar.fixedWidth;
- this.styleFileBrowser.fixedWidth = slice8 * 3 - vBarPad * 2;
-
- if (this.soundPreviewer.enabled) {
- this.UpdateSoundPreviewRect();
- }
-
- // Places (Drives and Special Folders)
- if (this.showPlaces && this.dirExplorer) {
- GUILayout.BeginVertical();
- for (int i = 0; i < this.placesList.Length; i++) {
- if (GUILayout.Button(this.placesList[i].icon, this.placesIconStyle)) {
- this.newDirectory = this.placesList[i].path;
- }
- GUILayout.Label (this.placesList[i].name, this.placesLabelStyle, GUILayout.MaxHeight(18));
- }
-
- // Favorites Icon
- if (GUILayout.Button(this.placesFavoritesIcon, this.placesIconStyle)) {
- this.newDirectory = "Favorites";
- }
- GUILayout.Label ("Favorites", this.placesLabelStyle, GUILayout.MaxHeight(18));
-
- // Add to Favorites Icon
- if (GUILayout.Button(this.addFavoritesIcon, this.placesIconStyle)) {
- AddCurrentDirToFavorites ();
- }
- GUILayout.Label ("Add To Favorites", this.placesLabelStyle, GUILayout.MaxHeight(18));
-
- GUILayout.FlexibleSpace();
- GUILayout.EndVertical();
- }
-
- // Directory browser
- if (this.dirExplorer) {
- this.scrollPosition1 = GUILayout.BeginScrollView(
- this.scrollPosition1, false, false, this.skin.horizontalScrollbar, this.skin.verticalScrollbar,
- GUI.skin.box, GUILayout.Width(slice8 * 2)
- );
- if (this.currentDirectory == "Favorites") {
- this.selectedDirectory = GUILayoutx.SelectionList(
- this.selectedDirectory, this.directoriesWithImages, this.styleDirsBrowser,
- DirectoryDoubleClickCallback, null
- );
- if (this.selectedDirectory > -1) this.selectedFile = -1;
- } else {
- this.selectedDirectory = GUILayoutx.SelectionList(
- this.selectedDirectory, this.directoriesWithImages, this.styleDirsBrowser,
- DirectoryDoubleClickCallback, null
- );
- if (this.selectedDirectory > -1) this.selectedFile = -1;
- }
- GUILayout.EndScrollView();
- }
-
-
- // Files browser
- this.scrollPosition2 = GUILayout.BeginScrollView(
- this.scrollPosition2, false, false, this.skin.horizontalScrollbar, this.skin.verticalScrollbar,
- this.skin.box, GUILayout.Width(slice8 * 3)
- );
- if (this.filesWithImages.Length == 0) {
- GUILayout.Label("No entries", this.styleDirsTop, GUILayout.Width(slice8 * 3 - 30));
- } else {
- this.selectedFile = GUILayoutx.SelectionList(
- this.selectedFile, this.filesWithImages, this.styleFileBrowser,
- FileDoubleClickCallback, FileSingleClickCallback
- );
- if (this.selectedFile > -1) this.selectedDirectory = -1;
- }
- GUILayout.EndScrollView();
-
- GUILayout.FlexibleSpace();
-
- // Previewer
- int vBarW = (int)GUI.skin.verticalScrollbar.fixedWidth;
- int previewW = (int)(slice8 * 3 - vBarW);
- GUILayout.BeginVertical();
- if (this.selectedFile < 0) {
- string previewString = this.saveMode ? "" : "Nothing to preview";
- GUILayout.Label(previewString, this.stylePreviewTitle, GUILayout.Width(previewW));
- this.previewTexture = null;
- } else {
- string filename = this.files[this.selectedFile];
- #if UNITY_WEBPLAYER
- string filetime = "";
- #else
- string fullname = Path.Combine(this.currentDirectory, filename);
- string filetime = System.IO.File.GetLastWriteTime(fullname).ToString();
- string filesize = ((new System.IO.FileInfo(fullname)).Length / 1000).ToString();
- filename += " (" + filesize + " KB";
- if (this.previewTexture) {
- filename += ", " + this.previewTexture.width + " x " + this.previewTexture.height;
- }
- filename += ")";
- #endif
-
- if (this.soundPreviewer.enabled) {
- AudioClip clip = this.soundPreviewer.configs.aSource.clip;
- string channels = clip.channels == 1 ? "Mono, " : "Stereo, ";
- TimeSpan t = TimeSpan.FromSeconds(clip.length);
- string niceTime = string.Format("{0:D2}:{1:D2}.{2:D3}", t.Minutes, t.Seconds, t.Milliseconds);
- filename += "\n" + clip.frequency + " Hz, " + channels + niceTime;
- }
-
- GUILayout.Label(filename, this.stylePreviewTitle, GUILayout.Width(previewW));
- GUILayout.Label(filetime, this.stylePreviewTitle, GUILayout.Width(previewW));
- GUILayout.FlexibleSpace();
- }
- this.scrollPosition3 = GUILayout.BeginScrollView(
- this.scrollPosition3, this.skin.scrollView, GUILayout.Width(previewW + vBarW + 6)
- );
- if (this.saveMode && this.selectedFile < 0) {
- this.previewTexture = this.saveScreenshot;
- }
-
-
- if (this.previewTexture != null) {
- GUILayout.FlexibleSpace();
- GUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
- float hFactor = (float)this.previewTexture.height / this.previewTexture.width;
- GUILayout.Label(
- this.previewTexture, this.stylePreviewer,
- GUILayout.Width(previewW), GUILayout.Height(previewW * hFactor)
- );
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
- GUILayout.FlexibleSpace();
- } else if (this.previewText.Length > 0) {
- GUILayout.TextArea(this.previewText);
- }
- GUILayout.EndScrollView();
- GUILayout.EndVertical();
-
- GUILayout.EndHorizontal();
-
- // Bottom part: text input, ok / cancel
- GUILayout.BeginHorizontal();
-
- GUILayout.Space(60);
- if( GUILayout.Button("Paste Directory", GUILayout.Width(120))) {
- PasteDirCallback();
- }
-
- if (GUILayout.Button ("Create New Folder", GUILayout.Width (120))) {
- CenterNewFolderWindow();
- this.createNewFolder = true;
- }
-
- if (this.showTextInput) {
- GUILayout.Space(10);
- GUILayout.Label("Filename: ", GUILayout.Width(60));
-
- GUI.SetNextControlName("FilenameTextField");
- string newName = GUILayout.TextField(this.typedFilename);
-
- if (this.typedFilename != newName) {
- this.typedFilename = newName;
- this.selectedFile = -1;
- for (int i = 0; i < this.filesWithImages.Length; i++) {
- if (this.filesWithImages[i].text.ToLower() == newName.ToLower()) {
- this.selectedFile = i;
- this.FileSingleClickCallback(i);
- }
- }
- }
- GUILayout.Space(20);
- } else {
- GUILayout.FlexibleSpace();
- }
-
- if (GUILayout.Button("Cancel", GUILayout.Width(80))) {
- this.Close();
- this.callback(null);
- }
-
- bool dirEnables = this.acceptsDirectories && this.typedFilename.Length == 0;
- bool fileEnables = this.selectedFile > -1 || (this.inputMustExist == false && this.typedFilename.Length > 0);
- GUI.enabled = (dirEnables || fileEnables) && !showingError;
-
- bool enterPressed = (Event.current.type == EventType.KeyDown && Event.current.character == '\n');
-
- // OK Button
- if (GUILayout.Button(this.okButtonString, GUILayout.Width(80)) || ( enterPressed && GUI.enabled ) ) {
- this.soundPreviewer.Disable();
- this.StartCoroutine(this.FileSelected());
- }
- GUI.enabled = true;
- GUILayout.Space(20);
- GUILayout.EndHorizontal();
-
- Rect dragRect = new Rect( 0, 0, this.screenRect.width, this.screenRect.height - 25 );
- GUI.DragWindow( dragRect );
- dragRect = new Rect( 0, 0, this.screenRect.width - 25, this.screenRect.height );
- GUI.DragWindow( dragRect );
-
- GUI.DrawTexture (new Rect (this.screenRect.width - 32, this.screenRect.height - 32, 32, 32), resizeHandleImage);
- }
-
-
- void ErrorWindow( int windowID){
-
- string text = this.userError;
- string filename = "";
- if(this.selectedFile > -1) {
- filename = Path.Combine(this.currentDirectory, this.files[this.selectedFile]);
- }
-
- string folderName = "";
- if(this.selectedDirectory > 0) {
- folderName = Path.Combine(this.currentDirectory, this.directories[this.selectedDirectory]);
- }
-
- if (this.overwriteSelected) filename = this.overwriteFileName;
-
- if (this.deleteSelected) {
- if (this.currentDirectory == "Favorites") {
- if (this.selectedDirectory > -1) {
- text = "Remove " + this.directoriesWithImages [this.selectedDirectory].text + " From Favorites?";
- } else {
- this.deleteSelected = false;
- }
- } else {
- if (this.selectedDirectory > 0) {
- text = "Delete " + this.directoriesWithImages [this.selectedDirectory].text + "?";
- } else if (this.selectedFile > -1) {
- text = "Delete " + this.filesWithImages [this.selectedFile].text + "?";
- } else {
- this.deleteSelected = false;
- }
- }
-
- }
-
- GUILayout.FlexibleSpace();
- GUILayout.Label(text, this.styleDirsTop);
- GUILayout.FlexibleSpace();
-
- GUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
-
- if (!this.deleteSelected && !this.overwriteSelected) {
- if (GUILayout.Button("Ok", this.styleDirsTopBut, GUILayout.Width(80))) {
- this.userError = "";
- }
- } else {
- if (GUILayout.Button("Confirm", this.styleDirsTopBut, GUILayout.Width(80))) {
-
- if (this.currentDirectory == "Favorites") {
- RemoveFavorite (this.selectedDirectory);
- } else {
- if (this.selectedDirectory > 0) {
- //Directory.Delete (folderName);
- try{
- Process myProcess = new Process ();
- myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- myProcess.StartInfo.CreateNoWindow = true;
- myProcess.StartInfo.UseShellExecute = false;
- myProcess.StartInfo.FileName = Application.streamingAssetsPath.Replace ("/", "\\") + "\\f2rb.exe";
- myProcess.StartInfo.Arguments = folderName.Replace ("/", "\\");
- myProcess.EnableRaisingEvents = true;
- myProcess.Start();
- myProcess.WaitForExit ();
- } catch (Exception e ){
- UnityEngine.Debug.Log (e);
- }
- } else if (this.selectedFile > -1) {
- //File.Delete (filename);
- try{
- Process myProcess = new Process ();
- myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- myProcess.StartInfo.CreateNoWindow = true;
- myProcess.StartInfo.UseShellExecute = false;
- myProcess.StartInfo.FileName = Application.streamingAssetsPath.Replace ("/", "\\") + "\\f2rb.exe";
- myProcess.StartInfo.Arguments = filename.Replace ("/", "\\");
- myProcess.EnableRaisingEvents = true;
- myProcess.Start();
- myProcess.WaitForExit ();
- } catch (Exception e ){
- UnityEngine.Debug.Log (e);
- }
- }
- }
-
- if (this.deleteSelected) {
- this.RefreshContents();
- }
-
- this.deleteSelected = false;
- this.overwriteSelected = true;
- this.userError = "";
- }
- if (GUILayout.Button("Cancel", this.styleDirsTopBut, GUILayout.Width(80))) {
- this.deleteSelected = false;
- this.overwriteSelected = false;
- this.userError = "";
- }
- }
-
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
-
- GUI.DragWindow ();
-
- }
-
- void CreateFolder ( string folderPath, string folderName ){
-
- Directory.CreateDirectory (Path.Combine (folderPath, folderName));
-
- }
-
- void NewFolderWindow( int windowID ){
-
- string folderPath = this.currentDirectory;
-
- GUILayout.FlexibleSpace();
-
- GUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
- newFolderName = GUILayout.TextField (newFolderName, GUILayout.Width(200));
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
-
- GUILayout.FlexibleSpace();
-
- GUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Confirm", this.styleDirsTopBut, GUILayout.Width(80))) {
- CreateFolder( folderPath, newFolderName );
- newFolderName = "NewFolder";
- this.createNewFolder = false;
- this.RefreshContents();
- }
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Cancel", this.styleDirsTopBut, GUILayout.Width(80))) {
- newFolderName = "NewFolder";
- this.createNewFolder = false;
- }
- GUILayout.FlexibleSpace();
- GUILayout.EndHorizontal();
-
- GUI.DragWindow ();
-
- }
-
-
- Vector3 mousePos;
- Vector3 clickedPosition;
- int minWindowWidth = 500;
- int minWindowHeight = 400;
- Rect originalWindowRect;
- bool allowWindowResize = true;
- bool handleClicked = false;
-
- //===========================================================================
- void OnGUI() {
- if (!this.Active || this.__ignoreGUI) return;
- FileBrowser._hasActive = true;
-
- if (this.availableSpace == -1 || REFRESH_STYLES_EVERY_FRAME) {
- this.availableSpace = this._CalcAvailableWidth();
- this.windowPadding = GUI.skin.window.padding.left - GUI.skin.window.overflow.left;
- }
-
- // Use a custom skin if set, or the default one if not
- if (this.skin == null) {
- this.skin = GUI.skin;
- GUI.FocusControl("FilenameTextField");
- }
-
- GUI.skin = this.skin;
- if (this.styleListItem == null || REFRESH_STYLES_EVERY_FRAME) this.setupCustomStyles();
-
- this.screenRect = GUI.Window(100, this.screenRect, GuiWindow, this.title);
-
- // Resize window by dragging corner...must be done outside window code, or else mouse drag events outside the window are unrecognized
- //mousePos = GUIUtility.ScreenToGUIPoint(new Vector2( Input.mousePosition.x, Screen.height - Input.mousePosition.y ));
- mousePos = Event.current.mousePosition;
- if (allowWindowResize) {
- if (Event.current.type == EventType.MouseDown && new Rect(this.screenRect.width + this.screenRect.x - 25, this.screenRect.height + this.screenRect.y - 25, 25, 25).Contains (mousePos)) {
- handleClicked = true;
- clickedPosition = mousePos;
- originalWindowRect = this.screenRect;
- }
- if (handleClicked) {
- if (Event.current.type == EventType.MouseDrag) {
- this.screenRect.width = Mathf.Clamp (originalWindowRect.width + (mousePos.x - clickedPosition.x), minWindowWidth, 1600);
- this.screenRect.height = Mathf.Clamp (originalWindowRect.height + (mousePos.y - clickedPosition.y), minWindowHeight, 1200);
- //UpdateRects();
- }
- else if (Event.current.type == EventType.MouseUp) {
- handleClicked = false;
- }
- }
- }
-
-
- // Make new Folder
- if ( this.createNewFolder ) {
- newFolderRect = GUI.Window (101, newFolderRect, NewFolderWindow, "Create New Folder");
- }
-
-
- // Crude message box to display IO errors and delete/overwrite confirmation
- bool showingError = this.userError.Length > 1 || this.deleteSelected;
- if (showingError) {
-
- //errorRect.width = this.screenRect.width * 0.5f;
- //errorRect.height = this.screenRect.height * 0.5f;
- errorRect = GUI.Window (102, errorRect, ErrorWindow, "Error");
- }
-
-
- if (Event.current.type == EventType.Repaint) {
- this.SwitchDirectory();
- }
- }
-
- void CenterNewFolderWindow(){
- this.newFolderRect.center = this.screenRect.center;
- }
-
- void CenterErrorWindow(){
- this.errorRect.center = this.screenRect.center;
- }
-
- //===========================================================================
- // Checks for confirmation of overwriteWarn is true and the file already exists
- IEnumerator FileSelected()
- {
- string saveName = "";
- string finalName = "";
- string saveShotName = "";
-
- //UnityEngine.Debug.Log ("Is this save mode? " + this.saveMode);
-
- if (this.saveMode) {
- saveName = this.selectedFile > -1 ? this.filesWithImages[this.selectedFile].text : this.typedFilename;
- saveName = saveName.ReplaceInsensitive(".png", "").ReplaceInsensitive(".jpg", "").ReplaceInsensitive(".jpeg", "");
-
- saveShotName = Path.Combine(this.currentDirectory, saveName + ".png");
- finalName = Path.Combine(this.savedDataDir, saveName);
-
- saveShotName = Path.GetFullPath(saveShotName);
-
- } else {
- if (this.selectedFile > -1) {
- finalName = Path.Combine(this.currentDirectory, this.files[this.selectedFile]);
- } else if (this.typedFilename.Length > 0) {
- finalName = Path.Combine(this.currentDirectory, this.typedFilename);
- } else if (this.selectedDirectory > -1) {
- finalName = Path.Combine(this.currentDirectory, this.directories[this.selectedDirectory]);
- } else {
- finalName = this.currentDirectory;
- }
- }
-
- try {
- finalName = Path.GetFullPath(finalName);
- } catch (ArgumentException) {}
-
- if (this.overwriteWarn && (File.Exists(finalName) || File.Exists(saveShotName))) {
- this.overwriteSelected = true;
- this.overwriteFileName = finalName;
- this.userError = "Overwrite " + (this.saveMode ? saveName : finalName) + "?";
- while (this.userError.Length > 0) { // Wait for user confirmation
- yield return null;
- }
- if (!this.overwriteSelected) yield break;
- this.overwriteSelected = false;
- }
-
- this.SelectConfirmed(finalName, saveShotName);
- }
-
- //--------------
- void SelectConfirmed(string finalName, string saveShotName)
- {
- if (this.saveMode && this.saveScreenshot) {
-#if UNITY_WEBPLAYER
- UnityEngine.Debug.LogError("Webplayer does not support FileSystem write");
-#else
- byte[] png = this.saveScreenshot.EncodeToPNG();
- File.WriteAllBytes(saveShotName, png);
-#endif
- }
-
- //UnityEngine.Debug.Log ("Name Coming From File Borwser: " + finalName);
-
- this.lastOkDirectory = Path.GetDirectoryName(finalName);
-
- if (this.relativizePaths) RelativizatePath(ref finalName);
- this.callback(finalName);
-
- this.Close();
- }
-
- //===========================================================================
- void Close() {
- this.soundPreviewer.Disable();
- this.isActive = false;
- FileBrowser._hasActive = false;
- Resources.UnloadUnusedAssets();
- if (this.UIBlocker) this.UIBlocker.gameObject.SetActive(false);
- }
-
- //===========================================================================
- IEnumerator loadPreview(string filename)
- {
- string lower = filename.ToLower();
-
- bool isImage = lower.EndsWith(".jpg") || lower.EndsWith(".jpeg") || lower.EndsWith(".png") || lower.EndsWith(".tga") || lower.EndsWith(".bmp") || lower.EndsWith(".tif") || lower.EndsWith(".tiff");
- bool isSound = lower.EndsWith(".wav") || lower.EndsWith(".ogg");
- bool isMaterial = lower.EndsWith(".mtz");
-
- //string newFilename = Application.dataPath + "/tempPreview.png";
-
- // Load preview images
- if ( isMaterial || isImage ) {
- string newFilename = MakeNewThumb(filename, "tempPreview", lower, 512 );
- if( newFilename != "null" ){
- WWW www = new WWW("file://" + newFilename);
- yield return www;
- this.previewTexture = www.texture;
- //File.Delete(newFilename);
- }
- yield break;
- }
-
- // Load preview sounds
- if ( isSound ) {
- WWW www = new WWW("file://" + filename);
- yield return www;
-
- this.UpdateSoundPreviewRect();
- this.soundPreviewer.enabled = true;
- this.soundPreviewer.configs = this.soundPreviewOptions;
- this.soundPreviewer.PreviewClip(www.GetAudioClip(false, false));
- yield break;
- }
-
- // Check if we want to try previewing with text it anyway
- string[] texts = { "txt", "rtf", "doc", "xml", "html", "cs", "java", "py", "cpp", "c", "php", "ini", "reg", "odf", "ods", "meta" };
- string ext = Path.GetExtension(lower);
- bool doTextPreview = texts.Any(ext.Contains);
-
- if (!doTextPreview) {
- // If it's not too big and doesn't have a lot of \0's in it, go for it
- FileInfo fi = new FileInfo(filename);
- if (fi.Length < 1000000) {
- try {
- Byte[] bytes = File.ReadAllBytes(filename);
- doTextPreview = true;
- for (int i = 0; i < (bytes.Length - 2); i++) {
- if (bytes[i] == '\0' && bytes[i+1] == '\0') {
- doTextPreview = false;
- break;
- }
- }
- } catch (IOException) {
- doTextPreview = false;
- }
- }
- }
-
- this.previewText = "";
-
- // Preview everything else as text?
- if (doTextPreview) {
- try {
- StreamReader stream = new StreamReader(filename);
- Char[] buffer = new Char[2050];
- stream.Read(buffer, 0, 2048);
- stream.Close();
- this.previewText = new string(buffer);
- } catch (IOException) {
- this.previewText = "Unable to preview";
- }
- }
- }
-
- //===========================================================================
- private void FileSingleClickCallback(int i) {
- this.previewText = "";
- this.previewTexture = null;
- this.scrollPosition3 = Vector2.zero;
- this.soundPreviewer.Disable();
-
- this.typedFilename = this.files[i];
-
- this.StartCoroutine(loadPreview(Path.Combine(this.currentDirectory, this.files[i])));
- }
-
- //===========================================================================
- private void FileDoubleClickCallback(int i) {
- this.soundPreviewer.Disable();
- this.StopAllCoroutines();
- this.StartCoroutine(this.FileSelected());
- }
-
- //===========================================================================
- private void DirectoryDoubleClickCallback(int i) {
- this.newDirectory = Path.Combine(this.currentDirectory, this.directories[i]);
- this.newDirectory = Path.GetFullPath(this.newDirectory);
- this.SwitchDirectory();
- }
-
- //===========================================================================
- private void PasteDirCallback() {
- string newDir = ClipboardHelper.clipBoard;
- if (Path.HasExtension (newDir)) {
- newDir = Path.GetDirectoryName (newDir);
- }else if (!newDir.EndsWith (Path.DirectorySeparatorChar.ToString())) {
- newDir += Path.DirectorySeparatorChar;
- }
- this.newDirectory = newDir;
- this.SwitchDirectory();
- }
-
- //===========================================================================
- // Call this function to load the contents of the path image file into a new Texture2D
- // Assyncronous, returns the results calling a TextureLoadedCallback
- //===========================================================================
- public void GetTexture(string path, TextureLoadedCallback callback) {
- this.StartCoroutine(this.__GetTexture(path, callback));
- }
-
- //--------------
- IEnumerator __GetTexture(string path, TextureLoadedCallback callback)
- {
- path = Path.GetFullPath(path);
-
- WWW www = new WWW("file://" + path);
- yield return www;
- Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.ARGB32, false, true);
- texture.wrapMode = TextureWrapMode.Clamp;
- www.LoadImageIntoTexture(texture);
-
- callback(texture);
- }
-
- //=========================================================================
- // Removes the current working dir from path, making it relative to it
- public static string RelativizatePath(ref string path)
- {
- path = path.FixPathSeparators();
- string cwd = System.IO.Directory.GetCurrentDirectory();
- path = path.Replace(cwd, ".");
- return path;
- }
-}
-
-//===========================================================================
-// Changes all forward and backward slashes of this string to the current system's proper path separator
-static public class FileBrowserExtensions
-{
- //=========================================================================
- static public string FixPathSeparators(this string path)
- {
- string str = path.Replace('/', Path.DirectorySeparatorChar);
- return str .Replace('\\', Path.DirectorySeparatorChar);
- }
-
- //=========================================================================
- static public Texture2D ScaleTexture(this Texture2D source, int targetWidth, int targetHeight)
- {
- Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, false, true);
- Color[] rpixels = result.GetPixels(0);
- float incX = ((float)1 / source.width) * ((float)source.width / targetWidth);
- float incY = ((float)1 / source.height) * ((float)source.height / targetHeight);
- for(int px = 0; px < rpixels.Length; px++) {
- rpixels[px] = source.GetPixelBilinear(incX * ((float)px % targetWidth),
- incY * ((float)Mathf.Floor(px / targetWidth)));
- }
- result.SetPixels(rpixels, 0);
- result.Apply();
- return result;
- }
-
- //=========================================================================
- static public string ReplaceInsensitive(this string str, string from, string to)
- {
- str = Regex.Replace(str, from, to, RegexOptions.IgnoreCase);
- return str;
- }
-}
-
diff --git a/Assets/FileBrowser/FileBrowser.cs.meta b/Assets/FileBrowser/FileBrowser.cs.meta
deleted file mode 100644
index f9a142ab..00000000
--- a/Assets/FileBrowser/FileBrowser.cs.meta
+++ /dev/null
@@ -1,19 +0,0 @@
-fileFormatVersion: 2
-guid: 3f8b66db80454d649bce4ec20dbaf678
-MonoImporter:
- serializedVersion: 2
- defaultReferences:
- - skin: {instanceID: 0}
- - itemHoverImage: {fileID: 2800000, guid: 4325cb797ef078b49bb0efb0fb870da8, type: 3}
- - itemSelectedImage: {fileID: 2800000, guid: d92388cf1d1be28458d673a546ed4a61, type: 3}
- - dirImage: {fileID: 2800000, guid: c8135945c98cc94429ae7806d04b5b8b, type: 3}
- - fileImage: {fileID: 2800000, guid: 39a095224be0beb409f5b61cd02f4579, type: 3}
- - placesHDIcon: {fileID: 2800000, guid: 6576d7fa26628104986879a9195197b4, type: 3}
- - placesDesktopIcon: {fileID: 2800000, guid: e09026654626d284eb4b90ad872d8b6a, type: 3}
- - placesMyDocsIcon: {fileID: 2800000, guid: a0bfbc70c5b63284b84f5df326d3668a, type: 3}
- - placesMyPicsIcon: {fileID: 2800000, guid: fcd61eae31be0844fb0164aaa667af8b, type: 3}
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/FileBrowser/ReadMe.rtf b/Assets/FileBrowser/ReadMe.rtf
deleted file mode 100644
index f62b95da..00000000
--- a/Assets/FileBrowser/ReadMe.rtf
+++ /dev/null
@@ -1,359 +0,0 @@
-{\rtf1\ansi\deff3\adeflang1025
-{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\fswiss\fprq0\fcharset0 Arial;}{\f4\fnil\fprq0\fcharset128 OpenSymbol{\*\falt Arial Unicode MS};}{\f5\fmodern\fprq1\fcharset0 Courier{\*\falt Courier New};}{\f6\fmodern\fprq1\fcharset0 Courier New;}{\f7\fnil\fprq2\fcharset0 Mangal;}{\f8\fnil\fprq0\fcharset128 Mangal;}{\f9\fnil\fprq2\fcharset0 Microsoft YaHei;}}
-{\colortbl;\red0\green0\blue0;\red0\green0\blue128;\red0\green77\blue187;\red128\green128\blue128;}
-{\stylesheet{\s0\snext0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046 Padro;}
-{\*\cs15\snext15\cf2\ul\ulc0\langfe255\lang255 Link da Internet;}
-{\*\cs16\snext16\hich\af4\dbch\af4\loch\f4 Marcadores;}
-{\s17\sbasedon0\snext18{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb240\sa120\keepn\cf0\kerning1\hich\af7\langfe2052\dbch\af9\loch\f2\fs28\lang1046 Ttulo;}
-{\s18\sbasedon0\snext18{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb0\sa120\cf0\kerning1\hich\af3\langfe2052\dbch\af3\loch\f3\fs24\lang1046 Corpo do texto;}
-{\s19\sbasedon18\snext19{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb0\sa120\cf0\kerning1\hich\af8\langfe2052\dbch\af3\loch\f3\fs24\lang1046 Lista;}
-{\s20\sbasedon0\snext20{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb120\sa120\cf0\i\kerning1\hich\af8\langfe2052\dbch\af3\ai\loch\f3\fs24\lang1046 Legenda;}
-{\s21\sbasedon0\snext21{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\hich\af8\langfe2052\dbch\af3\loch\f3\fs24\lang1046 ndice;}
-}{\info{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment OpenOffice.org}{\vern3410}}\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720\deftab720
-
-{\*\pgdsctbl
-{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Padr\'e3o;}}
-\formshade{\*\pgdscno0}\paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\sectunlocked1\pgndec\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
-\pgndec\pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\qc{\b\ab\rtlch \ltrch\loch\lang1033
-Unity File Brower & Save/Load UI}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\qc{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Copyright \'a9 2012 Pigasus Games}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\qc{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Version 1.1.1.9}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\qc{\afs22\rtlch \ltrch\loch\fs22\lang1033
-petrucio@pigasusgames.com}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Thank you for buying the File Browser and Save/Load UI!}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-The File Browser provides an User Interface to browse for files in the user's filesystem, using the standard Unity GUI system, so it doesn't use any dll (and can run in both Pro or Free versions of Unity), doesn't require any external UI library, and can be styled to have the same Look & Feel as your game.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-It shows large previews for image files (jpeg and png), as well as smaller previews in the entry for the files themselves (the height of the file entries can be configured to fine-tune the previews).}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-It also provides Save and Load mode UIs, including taking and saving screenshots to use as Save Previews.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-As of version 1.1, it also previews sound files, with channel previews and FTTWindow visualization.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Notes on supported platforms:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Does not work on webplayers, as these do not have access to the filesystem.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Mobile support is planned for Version 1.2 (no time estimate on that)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Getting started - if you are in a real hurry:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-To create a File Browser:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-1. Simply drag the FileBrowser.cs script into a GameObject}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-2. Implement a function with this signature:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\hich\af5\dbch\af5\rtlch \ltrch\lang1033\loch\f5
- }{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs22\lang1033\loch\f6
-void YourCallback (string filename)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-3. Call }{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs22\lang1033\loch\f6
-ShowBrowser("A Title", YourCallback);}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-\tab (Or ShowSaveBrowser / ShowLoadBrowser)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Getting properly started}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-To setup a File Browser, drag the script FileBroser.cs into a GameObject. You can do this in two ways:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- You can drag in over the existing GameObject that has the code that will handle the file returned by the browser, and access it by calling }{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs22\lang1033\loch\f6
-GetComponent()}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- You can drag it into an empty GameObject to keep things clear and organized, and access it by exposing a public FileBrowser variable in one of your scripts and assigning it via the inspector}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-To receive results from the FileBrowser when the user clicks Ok or Cancel, implement a callback function receiving a string:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void FileBrowserCallback(string filename) \{}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-\tab print(filename);\tab \tab // Do something interesting with the file}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-\}}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-filename will be }{\cf3\hich\af5\dbch\af5\rtlch \ltrch\loch\fs22\lang1033\loch\f5
-null }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-if the user clicks Cancel instead of Ok.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-To show the FileBrowser, call one of these functions:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowBrowser (string title, FinishedCallback callback)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowBrowser (string title, FinishedCallback callback, string startingDir, Rect screenRect, string okString)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowSaveBrowser(string title, FinishedCallback callback)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowSaveBrowser(string title, FinishedCallback callback, string saveBaseDir, string saveDataDir, Rect screenRect, Texture2D screenshot)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowLoadBrowser(string title, FinishedCallback callback)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-void ShowLoadBrowser(string title, FinishedCallback callback, string saveBaseDir, string saveDataDir, Rect screenRect)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\ul\ulc0\afs22\rtlch \ltrch\loch\fs22\lang1033
-Save / Load Browsers:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Save / Load Browsers work by taking screenshots and saving them in one directory (the one which the user will browse), and saving the data files in another directory.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-The Save Browser can automatically take the screenshot, or a Texture2D can be provided for this purpose. It will save it as a .png file into the directory being browsed, and call the callback with a file named with the same name, without extension, into the data dir.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\ul\ulc0\afs22\rtlch \ltrch\loch\fs22\lang1033
-Save example:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-If you make this call:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs20\lang1033\loch\f6
-ShowSaveBrowser("title", Callback, "savesDir", "savesDir/data", FileBrowser.GetDefaultRect(), null)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-and the user chooses a name Foo Bar for his save, the callback will get called with the string:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\cf3\hich\af6\dbch\af6\rtlch \ltrch\loch\fs22\lang1033\loch\f6
-"savesDir/data/Foo Bar"}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-and a .png preview file (at half screen resolutions) will be automatically created at:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-savesDir/Foo Bar.png}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Note: The File Browser doesn't do any actual saving inside the file "savesDir/data/Foo Bar" - that's your responsibility}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-Parameter descriptions:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-title }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- The string at the File Browser's window title bar (Duuh)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-callback }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Function to call when the File Browser is done}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-startingDir }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Initial directory the File Browser will start in. Defaults to the current working directory.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-screenRect }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Rectangle defining the File Browser's boundaries. Dimensions should not be less than (780x460). Defaults to a centered window occupying 2/3 of the Screen width and height (or more for lower resolutions). Call FileBrowser.GetDefaultRect() to get this default rect.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-okString }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- the string displayed on the 'Ok' button. Defaults to "Select".}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-saveBaseDir }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- For Save and Load browsers, specifies the directory where the previews will stay. Defaults to "saves".}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-saveDataDir }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- For Save and Load browsers, specifies the directory where the data files will stay. Defaults to "saves/data".}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-screenshot }{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- For Save Browsers, specifies a texture to use as the save slot preview screenshot. Defaults to a standard screenshot at half screen resolution to reduce disk space and load times. Pass null to generate this default.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-File Browser public options}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Show Places:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Show the leftmost column with the list of drives and special folders (My Pictures, etc). This is needed to enable logical drive changes under Windows.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Dir Explorer:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Allow the user to change directory. When false, hides the top navigation buttons, the places list, and the left directory list.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Accepts Directories:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- If true, enables the 'Ok' button even if no file is selected / typed. (Default = false)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Enable File Delete:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- If true, the user will be able to delete files from inside the File Browser by pressing the Delete key and then confirming.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Hide Extensions:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Hide or show file extensions}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Show Text Input:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- If true, shows a text field for the user to type a file name. Always true for Save Browsers. (default = false for others)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Input Must Exist:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Do not enable the 'Ok' button if there's no valid file selection. Always true for Load Browsers.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Overwrite Warn:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- If the file selected already exists, pops a confirmation dialog before calling back.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-File Masks:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- comma or semicolon-separated list of accepted file masks. Files not matching any pattern will not be shown.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Default Dir:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Default starting dir for this browser, when using one of the simpler show functions.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Remember Last Dir:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- If true, restarts at the same directory as when the user last clicked Ok.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\ul\ulc0\afs22\rtlch \ltrch\loch\fs22\lang1033
-Look and Feel customization options:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Skin:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- The skin to use for the browser. Default to the currently set GUI.skin. An optional custom style "List Item", if provided, will be used to style the browsers items (if not, the Label style will be used)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Item Hover Image:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- An image to use on top of hovered items. Will get stretched indefinetely on it's width.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Item Hover Text Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Color to use for hovered items. Leave at (255,0,255) to use the Label style hover color.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Item Selected Image / Text Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Same as above, but for the selected item}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Dir Image:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Image to use for directory icons}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-File Icon:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Image to use for non-jpeg or png file icons}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Dirs Height:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Height for each directory entry}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Files Height:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Height for each file entry}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Places HD Icon:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Icon to use for the 'Drives' button}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Places Desktop Icon:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Icon to use for the 'Desktop' special directory button}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Places My Docs Icon:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Icon to use for the 'My Documents' special directory button}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Places My Pics Icon:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Icon to use for the 'My Pictures' special directory button}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\ul\ulc0\afs22\rtlch \ltrch\loch\fs22\lang1033
-Sound Preview customization options:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-ASource:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- AudioSource to use for previewing (if not set, tries to find an AudioSource in: a. itself, b. it's childen, or c. the scene)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Fall Speed:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Speed in which the spectrum visualization vertices fall (in window-heights per second)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Samples Size:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- spectrum visualization vertice count (power of 2, >= 64)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Bg Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Sound preview rectangles background}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Border Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Sound preview rectangles border}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Samples Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Color used to draw the audio clip's samples and spectrum}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Markers Color:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Color used to draw the Play Bar and the spectrum visualization vertices}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Sound Preview Vert Offset:}{\afs22\rtlch \ltrch\loch\fs22\lang1033
- Vertical offset, starting from the top of the File Browser window, to draw the sound previews. May need to be changed depending on the skin being used.}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Support and Feedback}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-If you have any questions, suggestions, comments or feature requests:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- email petrucio@pigasusgames.com}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- post on the official thread: }{{\field{\*\fldinst HYPERLINK "http://forum.unity3d.com/threads/154049-File-Browser-amp-Save-Load-UI" }\cf2\ul\ulc0\langfe255\afs22{\fldrslt \cf2\ul\ulc0\langfe255\lang255\rtlch \ltrch\loch\fs22\lang1033
-http://forum.unity3d.com/threads/154049-File-Browser-amp-Save-Load-UI}}}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- or PM 'Petrucio' on the Unity forums}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\b\afs22\ab\rtlch \ltrch\loch\fs22\lang1033
-Change Log:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-1.1.1.10, Feb-19-2014:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Added: Tweak styles on the fly with }{\hich\af6\dbch\af6\rtlch \ltrch\loch\fs22\loch\f6
-REFRESH_STYLES_EVERY_FRAME = true}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Minor fixes and improvements}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-1.1.0.9, Apr-17-2013:\line - Performance: Added thumbnail caching\line - Other minor fixes and improvements}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-\line 1.1.0.7, Jan-08-2013:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-- Added: Sound files Previewer (major)}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-- Added: Remember Last Dir option}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-- Fixed: MacOS / Linux path separator issues}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-- Several other minor fixes and improvements}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-1.0.0.6, Oct-08-2012:}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\afs22\rtlch \ltrch\loch\fs22\lang1033
-- Initial Release}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{{\*\bkmkstart __DdeLink__0_914678638}{\*\bkmkend __DdeLink__0_914678638}{\*\bkmkstart __DdeLink__0_914678638}{\*\bkmkend __DdeLink__0_914678638}\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-\line }
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par \pard\plain \s0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\nowidctlpar\cf0\kerning1\hich\af3\langfe2052\dbch\af3\afs24\lang1081\loch\f3\fs24\lang1046\sl240\slmult1{\rtlch \ltrch\loch
-}
-\par }
\ No newline at end of file
diff --git a/Assets/FileBrowser/internals/GLUtils.cs b/Assets/FileBrowser/internals/GLUtils.cs
deleted file mode 100644
index b55d5d52..00000000
--- a/Assets/FileBrowser/internals/GLUtils.cs
+++ /dev/null
@@ -1,125 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-public static class GLUtils {
-
- //=========================================================================
- static Material glMaterial = null;
- private static Material GetGLMaterial() {
- if (glMaterial != null) return glMaterial;
- glMaterial = new Material( "Shader \"Lines/Colored Blended\" {" +
- "SubShader { Pass { " +
- " Blend SrcAlpha OneMinusSrcAlpha " +
- " ZWrite Off Cull Off Fog { Mode Off } " +
- " BindChannels {" +
- " Bind \"vertex\", vertex Bind \"color\", color }" +
- "} } }" );
- return glMaterial;
- }
-
- //=============================================================================
- // Render lines in OpenGL - Call these functions inside a PostRender pass
- // Points in screen coordinates
- public static void RenderLines(Vector2[] points, Color color) {
- RenderLines(points, color, false);
- }
- // disconnectSegments: if true, do not connect the end of the previous segment with the start of the next one
- public static void RenderLines(Vector2[] points, Color color, bool disconnectSegments)
- {
- if (points.Length < 2) return;
-
- GetGLMaterial().SetPass(0);
- GL.PushMatrix();
- GL.LoadPixelMatrix();
-
- GL.Begin(GL.LINES);
- GL.Color(color);
- int increment = disconnectSegments ? 2 : 1;
- for (int i = 0; i < points.Length - 1; i += increment) {
- GL.Vertex3(points[i].x, points[i].y +1.5f, 0);
- GL.Vertex3(points[i+1].x, points[i+1].y+1.5f, 0);
- }
- GL.End();
- GL.PopMatrix();
- }
-
- //=============================================================================
- // Similar to RenderLines, but make segments in pairs (0-1, 2-3, 4-5, etc)
- public static void RenderSegments(Vector2[] points, Color color) {
- RenderLines(points, color, true);
- }
-
- //=============================================================================
- // Render vertices in OpenGL - Call these functions inside a PostRender pass
- // Points in screen coordinates
- public static void RenderVertices(Vector2[] points, Color color)
- {
- if (points.Length < 1) return;
-
- GetGLMaterial().SetPass(0);
- GL.PushMatrix();
- GL.LoadPixelMatrix();
-
- GL.Begin(GL.LINES);
- GL.Color(color);
- for (int i = 0; i < points.Length; i++)
- {
- float x = ((int) points[i].x) + 0.5f;
- float y = ((int) points[i].y) + 0.5f;
-
- Vector2 pos1 = new Vector2(x, y-0f);
- Vector2 pos2 = new Vector2(x+1f, y+1);
- Vector2 pos3 = new Vector2(x, y+2f);
- Vector2 pos4 = new Vector2(x-1f, y+1);
-
- GL.Vertex(pos1);
- GL.Vertex(pos2);
- GL.Vertex(pos2);
- GL.Vertex(pos3);
- GL.Vertex(pos3);
- GL.Vertex(pos4);
- GL.Vertex(pos4);
- GL.Vertex(pos1);
- }
- GL.End();
- GL.PopMatrix();
- }
-
- //=============================================================================
- // Renders a rectangle in OpenGL (call on a OnPostRender; screen coords)
- public static void RenderRect(Rect rect, Color bgColor, Color borderColor)
- {
- Vector2 pos1 = new Vector2(rect.xMin, rect.yMin + 1.5f);
- Vector2 pos2 = new Vector2(rect.xMax, rect.yMin + 1.5f);
- Vector2 pos3 = new Vector2(rect.xMax, rect.yMax + 1.5f);
- Vector2 pos4 = new Vector2(rect.xMin, rect.yMax + 1.5f);
-
- GetGLMaterial().SetPass(0);
- GL.PushMatrix();
- GL.LoadPixelMatrix();
-
- GL.Begin(GL.QUADS);
- GL.Color(bgColor);
- GL.Vertex(pos1);
- GL.Vertex(pos2);
- GL.Vertex(pos3);
- GL.Vertex(pos4);
- GL.End();
-
- GL.Begin(GL.LINES);
- GL.Color(borderColor);
- GL.Vertex(pos1);
- GL.Vertex(pos2);
- GL.Vertex(pos2);
- GL.Vertex(pos3);
- GL.Vertex(pos3);
- GL.Vertex(pos4);
- pos4.y += 0.5f;
- GL.Vertex(pos4);
- GL.Vertex(pos1);
- GL.End();
-
- GL.PopMatrix();
- }
-
-}
diff --git a/Assets/FileBrowser/internals/GUILayoutx.cs b/Assets/FileBrowser/internals/GUILayoutx.cs
deleted file mode 100644
index 918bf992..00000000
--- a/Assets/FileBrowser/internals/GUILayoutx.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-//------------------------------------------------------------------------------
-// Based on ImprovedSelectionList, by Daniel Brauer:
-// http://wiki.unity3d.com/index.php/ImprovedSelectionList
-// Licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
-//
-// Modifications by Petrucio:
-// -Added a default List Item style when one is not present in the current GUI style
-// -Added callback for item selection (single click)
-// -Added support for touches / mobile
-// -Refactored duplicated code into a single function
-// -Added Pablo Bollansée (The Oddler)'s double click fix
-//------------------------------------------------------------------------------
-using UnityEngine;
-
-public class GUILayoutx {
-
- private static GUIStyle defaultListItemStyle = new GUIStyle(GUI.skin.label);
-
- public delegate void DoubleClickCallback(int index);
- public delegate void SingleClickCallback(int index);
-
- public static float maxListWidth = 10000;
-
- private static GUIStyle getListItemStyle(string styleStr) {
- GUIStyle style = GUI.skin.FindStyle(styleStr);
- if (style != null) return style;
-
- defaultListItemStyle.fixedHeight = 20;
- return defaultListItemStyle;
- }
-
- public static int SelectionList(int selected, GUIContent[] list) {
- return SelectionList(selected, list, getListItemStyle("List Item"), null, null);
- }
- public static int SelectionList(int selected, GUIContent[] list, GUIStyle elementStyle) {
- return SelectionList(selected, list, elementStyle, null, null);
- }
- public static int SelectionList(int selected, GUIContent[] list, DoubleClickCallback callback) {
- return SelectionList(selected, list, getListItemStyle("List Item"), callback, null);
- }
- public static int SelectionList(int selected, GUIContent[] list, DoubleClickCallback callback, SingleClickCallback selCallback) {
- return SelectionList(selected, list, getListItemStyle("List Item"), callback, selCallback);
- }
-
- public static int SelectionList(int selected, string[] list) {
- return SelectionList(selected, list, getListItemStyle("List Item"), null, null);
- }
- public static int SelectionList(int selected, string[] list, GUIStyle elementStyle) {
- return SelectionList(selected, list, elementStyle, null, null);
- }
- public static int SelectionList(int selected, string[] list, DoubleClickCallback callback) {
- return SelectionList(selected, list, getListItemStyle("List Item"), callback, null);
- }
- public static int SelectionList(int selected, string[] list, DoubleClickCallback callback, SingleClickCallback selCallback) {
- return SelectionList(selected, list, getListItemStyle("List Item"), callback, selCallback);
- }
-
- public static int SelectionList(int selected, GUIContent[] list, GUIStyle elementStyle, DoubleClickCallback callback, SingleClickCallback selCallback) {
- for (int i = 0; i < list.Length; ++i) {
- Rect elementRect = GUILayoutUtility.GetRect(list[i], elementStyle);
- if (elementRect.width > maxListWidth) elementRect.width = maxListWidth;
-
- bool hover = elementRect.Contains(Event.current.mousePosition);
- if (hover && Event.current.type == EventType.MouseDown && Event.current.clickCount == 1) {
- selected = i;
- Event.current.Use();
- if (selCallback != null) {
- selCallback(i);
- }
- } else if (hover && callback != null && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2) {
- callback(i);
- Event.current.Use();
- } else if (Event.current.type == EventType.Repaint) {
- elementStyle.Draw(elementRect, list[i], hover, false, i == selected, false);
- }
- }
- return selected;
- }
-
- public static int SelectionList(int selected, string[] list, GUIStyle elementStyle, DoubleClickCallback callback, SingleClickCallback selCallback) {
- GUIContent[] contentList = new GUIContent[list.Length];
- for (int i = 0; i < list.Length; ++i) {
- contentList[i] = new GUIContent(list[i]);
- }
- return SelectionList(selected, contentList, elementStyle, callback, selCallback);
- }
-
-}
-
diff --git a/Assets/FileBrowser/internals/SoundViewer.cs b/Assets/FileBrowser/internals/SoundViewer.cs
deleted file mode 100644
index 862e860f..00000000
--- a/Assets/FileBrowser/internals/SoundViewer.cs
+++ /dev/null
@@ -1,252 +0,0 @@
-using UnityEngine;
-using System.Collections;
-
-//=============================================================================
-public class SoundViewer : MonoBehaviour
-{
- // Visualization rectangle, in normalized coordinates (0-1)
- public Rect viewRect = new Rect(0.25f, 0.25f, 0.5f, 0.5f);
-
- [System.Serializable]
- public class SoundViewerConfig {
- public bool previewSounds = true;
-
- // An AudioSource object so the music can be played
- public AudioSource aSource;
- // Speed in which the dots fall (in view rect height per second)
- public float fallSpeed = 1f;
- // Number of point viewers (power of two)
- public int samplesSize = 128;
-
- // Customize viewing colors
- public Color bgColor = new Color(0.5f, 0.5f, 0.5f, 0.5f);
- public Color borderColor = Color.black;
- public Color samplesColor = Color.blue;
- public Color markersColor = Color.black;
-
- public FFTWindow fftWindow = FFTWindow.BlackmanHarris;
- }
-
- public SoundViewerConfig configs;
-
- // A float array that stores the audio samples
- private float[] samples;
-
- // FTTWindow view
- private Vector2[] vertices; // Vertices of the actual position of the samples
- private Vector2[] viewers; // Vertices with With falling inertia
-
- // Clip view
- private Vector2[] verticesLeft; // Vertices of the actual position of the samples
- private Vector2[] verticesRight;
- private Vector2[] playingBar; // Vertical bar showing the play location of the current clip
-
- //=============================================================================
- // Returns an actual screen visualization rect, from the normalized rect area in this.viewRect
- // The total view rect is divided in viewParts parts, and this function returns the part pertaining to partIndex (zero-based)
- Rect __GetRect(float partIndex, float parts, float myPart) {
- Rect view = this.viewRect;
- int partH = (int)(view.height * Screen.height * (1.0f / parts));
- int y = (int)(view.y * Screen.height + partH * partIndex);
- return new Rect((int)(view.x * Screen.width), y, (int)(view.width * Screen.width), (int)(partH * myPart));
- }
- Rect GetLeftRect(bool stereo) { return this.__GetRect(1.1f, 3.1f, stereo ? 1.0f : 2.0f); }
- Rect GetRightRect() { return this.__GetRect(2.1f, 3.1f, 1.0f); }
- Rect GetFFTRect() { return this.__GetRect(0.0f, 3.1f, 1.0f); }
-
- //=============================================================================
- // Plays the audio clip one time, then disable the previewer when done playing
- public void PreviewClip(AudioClip clip) {
- this.StopCoroutine("__PreviewClip");
- this.configs.aSource.Stop();
- this.configs.aSource.loop = false;
- this.configs.aSource.clip = clip;
- this.StartCoroutine("__PreviewClip");
- }
- IEnumerator __PreviewClip() {
- while(!this.configs.aSource.clip.isReadyToPlay) {
- yield return null;
- }
- this.ResetClipView(this.configs.aSource.clip);
- this.configs.aSource.Play();
- }
-
- //=============================================================================
- // Use this instead of setting .enable directly, to stop any playing samples
- public void Disable() {
- if (this.configs.aSource && this.configs.aSource.clip != null) {
- this.configs.aSource.Stop();
- }
- this.enabled = false;
- }
-
- //=============================================================================
- public void Start() {
- if (!this.configs.previewSounds) return;
- this.StartCoroutine(this.__Start());
- }
- private IEnumerator __Start()
- {
- if (!this.configs.aSource) this.configs.aSource = this.GetComponent();
- if (!this.configs.aSource) this.configs.aSource = this.GetComponentInChildren();
- if (!this.configs.aSource) this.configs.aSource = GameObject.FindObjectOfType(typeof(AudioSource)) as AudioSource;
- if (!this.configs.aSource) {
- Debug.LogError("No Audio Source in the scene found to use for Sound Previews");
- yield break;
- }
-
- if (this.configs.aSource.clip && this.enabled) {
- this.ResetClipView(this.configs.aSource.clip);
- }
-
- while(true)
- {
- yield return new WaitForEndOfFrame();
- if (!enabled) continue;
-
- if (this.configs.aSource.isPlaying) {
- GLUtils.RenderLines (this.vertices, this.configs.samplesColor);
- GLUtils.RenderVertices(this.viewers, this.configs.markersColor);
- GLUtils.RenderRect (this.GetFFTRect(), this.configs.bgColor, this.configs.borderColor);
- }
- bool stereo = this.verticesRight != null;
- GLUtils.RenderLines(this.verticesLeft, this.configs.samplesColor);
- GLUtils.RenderRect (this.GetLeftRect(stereo), this.configs.bgColor, this.configs.borderColor);
- if (stereo) {
- GLUtils.RenderLines(this.verticesRight, this.configs.samplesColor);
- GLUtils.RenderRect (this.GetRightRect(), this.configs.bgColor, this.configs.borderColor);
- }
- GLUtils.RenderLines(this.playingBar, this.configs.markersColor);
- }
- }
-
- //=============================================================================
- // Calculates the 'clip view' for the given AudioClip
- // This is an intensive operation, but only gets done once per clip
- //
- // TODO_WISH: Save this to a texture instead of vertices, for faster and drawing, and with more precision
- void ResetClipView(AudioClip clip)
- {
- int size = Mathf.NextPowerOfTwo(this.configs.samplesSize);
- if (size < 64) size = 64;
-
- this.samples = new float[size];
- this.vertices = new Vector2[size];
- this.viewers = new Vector2[size];
- this.playingBar = new Vector2[4];
-
- bool stereo = clip.channels > 1;
- Rect screenViewRect = this.GetLeftRect(stereo);
- float viewX = screenViewRect.x;
- float viewY = screenViewRect.y;
- float viewW = screenViewRect.width;
- float viewH = screenViewRect.height;
-
- // A sample rate of 100Hz should give us close enough results while keeping acceptable performance on long samples
- // Ideally we should render this info baked in a texture for this, but that'd be too much trouble to go to using unity
- int sampleRate = 1000;
- if (clip.length > 5) sampleRate = 300;
- if (clip.length > 30) sampleRate = 100;
- if (clip.length < 0.5f) sampleRate = 3000;
- if (clip.length < 0.05f) sampleRate = clip.frequency;
- int sampleSize = (int) (sampleRate * clip.length);
-
- // Read samples info
- float[] clipSamples = new float[clip.samples * clip.channels];
- clip.GetData(clipSamples, 0);
-
- this.verticesLeft = new Vector2[sampleSize];
- this.verticesRight = null;
- if (stereo) {
- this.verticesRight = new Vector2[sampleSize];
- }
-
- // Plot wave form
- for (int i = 0; i < sampleSize; i++)
- {
- int sampleIdx = (int)(clip.samples / (float)sampleSize * i * clip.channels);
- float x = viewW / sampleSize * i + viewX;
-
- float normalVal = clipSamples[sampleIdx] * 0.5f + 0.5f;
- float y = normalVal * viewH + viewY;
- this.verticesLeft[i] = new Vector2(x, y);
-
- if (stereo) {
- normalVal = clipSamples[sampleIdx+1] * 0.5f + 0.5f;
- float y2 = normalVal * viewH + viewY + viewH;
- this.verticesRight[i] = new Vector2(x, y2);
- }
- }
-
- }
-
- //=============================================================================
- // Updates the frequency profile for the current playing frame
- void Update()
- {
- if (!enabled || !this.configs.previewSounds) return;
-
- AudioSource aSource = this.configs.aSource;
-
- Rect screenViewRect = this.GetFFTRect(); // Get lower-part rectangle
- float viewX = screenViewRect.x;
- float viewY = screenViewRect.y + 5;
- float viewW = screenViewRect.width;
- float viewH = screenViewRect.height - 10;
-
- if (aSource.isPlaying)
- {
- // Obtain the samples from the frequency bands of the attached AudioSource
- aSource.GetSpectrumData(this.samples, 0, this.configs.fftWindow);
-
- Vector2 gravity = new Vector3(0.0f, this.configs.fallSpeed * viewH);
- for (int i = 0; i < this.samples.Length; i++)
- {
- // Change this viewers position Y according to the current sample (0 - 50)
- float val = Mathf.Clamp(samples[i] * (50 + i * i), 0, 25) * 2;
- if (val < 0.5f) val = 0; // Avoids flickering at the bottom bar
-
- float x = viewW / this.samples.Length * (i + 0.5f) + viewX;
- float y = val / 50.0f * viewH + viewY;
- Vector2 newPos = new Vector3(x, y);
-
- this.vertices[i] = newPos;
-
- if (y >= this.viewers[i].y) {
- this.viewers[i] = newPos;
- } else {
- this.viewers[i] -= gravity * Time.deltaTime;
- this.viewers[i].y = Mathf.Max(viewY, this.viewers[i].y);
- }
- }
- }
-
- Rect playRect = this.GetLeftRect(false);
- viewY = playRect.y + 1;
- viewH = playRect.height - 1;
-
- // Update the position of the 'play bar'
- float t = 0;
- if (aSource.isPlaying) {
- t = aSource.time / aSource.clip.length;
- }
- this.playingBar[0] = new Vector2((int)(viewX + t * viewW), (int)(viewY));
- this.playingBar[1] = new Vector2((int)(viewX + t * viewW), (int)(viewY + viewH));
- this.playingBar[2] = new Vector2(this.playingBar[0].x + 1, this.playingBar[0].y); // two pixels
- this.playingBar[3] = new Vector2(this.playingBar[1].x + 1, this.playingBar[1].y);
-
- // If the user clicks over the play bar, jump to that position
- if (Input.GetMouseButtonDown(0)) {
- Vector2 mousePos = Input.mousePosition;
- if (mousePos.x > viewX && mousePos.x < (viewX + viewW) &&
- mousePos.y > viewY && mousePos.y < (viewY + viewH))
- {
- // Note: time wouldn't replect actual time on compressed audio - timeSamples is better
- aSource.timeSamples = (int) ((mousePos.x - viewX) / viewW * aSource.clip.samples);
- }
- }
-
- }
-
-}
-
diff --git a/Assets/FlipUIElement.cs b/Assets/FlipUIElement.cs
new file mode 100644
index 00000000..011cebea
--- /dev/null
+++ b/Assets/FlipUIElement.cs
@@ -0,0 +1,11 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FlipUIElement : MonoBehaviour
+{
+ public void FlipUiElement(GameObject Obj)
+ {
+ Obj.SetActive(!Obj.active);
+ }
+}
diff --git a/Assets/Main Canvas.prefab b/Assets/Main Canvas.prefab
new file mode 100644
index 00000000..4bff69bf
Binary files /dev/null and b/Assets/Main Canvas.prefab differ
diff --git a/Assets/Main Canvas.prefab.meta b/Assets/Main Canvas.prefab.meta
new file mode 100644
index 00000000..98baee7c
--- /dev/null
+++ b/Assets/Main Canvas.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 550b3105395d6af4893f2808748ae4f0
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MainScene.unity b/Assets/MainScene.unity
index 57823e6c..775c0554 100644
Binary files a/Assets/MainScene.unity and b/Assets/MainScene.unity differ
diff --git a/Assets/MainScene/LightingData.asset b/Assets/MainScene/LightingData.asset
index adb55715..bc7ead43 100644
Binary files a/Assets/MainScene/LightingData.asset and b/Assets/MainScene/LightingData.asset differ
diff --git a/Assets/MainScene/LightingData.asset.meta b/Assets/MainScene/LightingData.asset.meta
index e02e5d60..edcf5969 100644
--- a/Assets/MainScene/LightingData.asset.meta
+++ b/Assets/MainScene/LightingData.asset.meta
@@ -1,10 +1,8 @@
fileFormatVersion: 2
guid: b3d6613445502a54fadf38b0b944a51e
-timeCreated: 1530552133
-licenseType: Pro
NativeFormatImporter:
externalObjects: {}
- mainObjectFileID: 25800000
+ mainObjectFileID: 112000000
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/MainScene/ReflectionProbe-0.exr b/Assets/MainScene/ReflectionProbe-0.exr
index e37ccd29..0638ee41 100644
Binary files a/Assets/MainScene/ReflectionProbe-0.exr and b/Assets/MainScene/ReflectionProbe-0.exr differ
diff --git a/Assets/MainScene/ReflectionProbe-0.exr.meta b/Assets/MainScene/ReflectionProbe-0.exr.meta
index da532443..6ea2b112 100644
--- a/Assets/MainScene/ReflectionProbe-0.exr.meta
+++ b/Assets/MainScene/ReflectionProbe-0.exr.meta
@@ -1,12 +1,9 @@
fileFormatVersion: 2
guid: 9e465a3418e37f542873f8deb0657be5
-timeCreated: 1530552132
-licenseType: Pro
TextureImporter:
- fileIDToRecycleName:
- 8900000: generatedCubemap
+ internalIDToNameTable: []
externalObjects: {}
- serializedVersion: 4
+ serializedVersion: 10
mipmaps:
mipMapMode: 0
enableMipMap: 1
@@ -24,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
@@ -54,11 +53,13 @@ TextureImporter:
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -68,12 +69,23 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/MainScene_Profiles.meta b/Assets/MainScene_Profiles.meta
new file mode 100644
index 00000000..80b5fd2d
--- /dev/null
+++ b/Assets/MainScene_Profiles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ccf23c25d76140449815b040bfb128aa
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MainScene_Profiles/Main Camera Profile.asset b/Assets/MainScene_Profiles/Main Camera Profile.asset
new file mode 100644
index 00000000..7bcd986f
Binary files /dev/null and b/Assets/MainScene_Profiles/Main Camera Profile.asset differ
diff --git a/Assets/MainScene_Profiles/Main Camera Profile.asset.meta b/Assets/MainScene_Profiles/Main Camera Profile.asset.meta
new file mode 100644
index 00000000..0ec18e29
--- /dev/null
+++ b/Assets/MainScene_Profiles/Main Camera Profile.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 57a4cc51dbe85b74aa896f7f6bf76180
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AO_Preview.mat b/Assets/Materials/AO_Preview.mat
index f364cbc2..ea474221 100644
Binary files a/Assets/Materials/AO_Preview.mat and b/Assets/Materials/AO_Preview.mat differ
diff --git a/Assets/Materials/Alignment_Material.mat b/Assets/Materials/Alignment_Material.mat
index 30b88c41..d71f0f97 100644
Binary files a/Assets/Materials/Alignment_Material.mat and b/Assets/Materials/Alignment_Material.mat differ
diff --git a/Assets/Materials/Edge_Preview.mat b/Assets/Materials/Edge_Preview.mat
index 70cd8db9..1e44c2a8 100644
Binary files a/Assets/Materials/Edge_Preview.mat and b/Assets/Materials/Edge_Preview.mat differ
diff --git a/Assets/Materials/Edit_Diffuse_Preview.mat b/Assets/Materials/Edit_Diffuse_Preview.mat
index 80b49a85..866697d0 100644
Binary files a/Assets/Materials/Edit_Diffuse_Preview.mat and b/Assets/Materials/Edit_Diffuse_Preview.mat differ
diff --git a/Assets/Materials/Height_Preview.mat b/Assets/Materials/Height_Preview.mat
index 4cee03cb..374a5a2a 100644
Binary files a/Assets/Materials/Height_Preview.mat and b/Assets/Materials/Height_Preview.mat differ
diff --git a/Assets/Materials/Metallic_Preview.mat b/Assets/Materials/Metallic_Preview.mat
index ecc36e93..dc5bc1b5 100644
Binary files a/Assets/Materials/Metallic_Preview.mat and b/Assets/Materials/Metallic_Preview.mat differ
diff --git a/Assets/Materials/Normal_Preview.mat b/Assets/Materials/Normal_Preview.mat
index 31042ed9..27754d61 100644
Binary files a/Assets/Materials/Normal_Preview.mat and b/Assets/Materials/Normal_Preview.mat differ
diff --git a/Assets/Materials/Skybox.mat b/Assets/Materials/Skybox.mat
index a5759472..47fb4cac 100644
Binary files a/Assets/Materials/Skybox.mat and b/Assets/Materials/Skybox.mat differ
diff --git a/Assets/Materials/Smoothness_Preview.mat b/Assets/Materials/Smoothness_Preview.mat
index ffdef11f..1893175f 100644
Binary files a/Assets/Materials/Smoothness_Preview.mat and b/Assets/Materials/Smoothness_Preview.mat differ
diff --git a/Assets/MouseWatcher.cs b/Assets/MouseWatcher.cs
new file mode 100644
index 00000000..2ff0ab07
--- /dev/null
+++ b/Assets/MouseWatcher.cs
@@ -0,0 +1,19 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.EventSystems;
+
+public class MouseWatcher : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
+{
+ public void OnPointerEnter(PointerEventData eventData)
+ {
+ this.gameObject.SetActive(true);
+
+ }
+
+ //Detect when Cursor leaves the GameObject
+ public void OnPointerExit(PointerEventData eventData)
+ {
+ this.gameObject.SetActive(false);
+ }
+}
diff --git a/Assets/OBJ-IO.meta b/Assets/OBJ-IO.meta
index 21da7621..885157c8 100644
--- a/Assets/OBJ-IO.meta
+++ b/Assets/OBJ-IO.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: f460244cc224844489a15c5ba41d24ef
+guid: 8cc1f238b81a847b5a74f6173dbb8a21
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Editor.meta b/Assets/OBJ-IO/Editor.meta
index 25741c41..72a8b3bb 100644
--- a/Assets/OBJ-IO/Editor.meta
+++ b/Assets/OBJ-IO/Editor.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 5c86e6fe65d4e4946b243172e73ba161
+guid: 5681dd42115184c74aeeba051dbf328b
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Editor/OBJEditor.cs.meta b/Assets/OBJ-IO/Editor/OBJEditor.cs.meta
index edb50dcb..7800fa4e 100644
--- a/Assets/OBJ-IO/Editor/OBJEditor.cs.meta
+++ b/Assets/OBJ-IO/Editor/OBJEditor.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 5cb377fb273c8634296cc421905b1d34
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Examples.meta b/Assets/OBJ-IO/Examples.meta
index f3f814ee..6bbd8c05 100644
--- a/Assets/OBJ-IO/Examples.meta
+++ b/Assets/OBJ-IO/Examples.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 33368388f581b994fab7f5ef248c0f63
+guid: 20713fdc3f9ab41ad8493b8513679701
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Meshes.meta b/Assets/OBJ-IO/Examples/Meshes.meta
index de139ae4..ef0a288d 100644
--- a/Assets/OBJ-IO/Examples/Meshes.meta
+++ b/Assets/OBJ-IO/Examples/Meshes.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: e0433cb2bd36d3942883bf0f0998e2bb
+guid: 8154598e50f36402e8438a5b186fe65a
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Meshes/Materials.meta b/Assets/OBJ-IO/Examples/Meshes/Materials.meta
index b422bc96..98274be8 100644
--- a/Assets/OBJ-IO/Examples/Meshes/Materials.meta
+++ b/Assets/OBJ-IO/Examples/Meshes/Materials.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 5fea4137d2a77354b9aa985c717be982
+guid: 24829d5ac0ba34bccb159269f42b9e22
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat b/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat
index 661c18cd..64443c9b 100644
Binary files a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat and b/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat differ
diff --git a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat.meta b/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat.meta
index 2100a9af..08462fb7 100644
--- a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat.meta
+++ b/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001Mat.mat.meta
@@ -1,8 +1,8 @@
fileFormatVersion: 2
-guid: 52da82a2947fb72429508b5742bae229
-timeCreated: 1432869564
-licenseType: Pro
+guid: 475d2a47366f54519aa0108ba94c7ca9
NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001_Instance_0Mat.mat b/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001_Instance_0Mat.mat
deleted file mode 100644
index 27a1d092..00000000
Binary files a/Assets/OBJ-IO/Examples/Meshes/Materials/Teapot001_Instance_0Mat.mat and /dev/null differ
diff --git a/Assets/OBJ-IO/Examples/Meshes/Teapot.obj.meta b/Assets/OBJ-IO/Examples/Meshes/Teapot.obj.meta
index c30c0cf2..7a2a3c2c 100644
--- a/Assets/OBJ-IO/Examples/Meshes/Teapot.obj.meta
+++ b/Assets/OBJ-IO/Examples/Meshes/Teapot.obj.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 53158f4ed39ed53448df438bc212f7e8
ModelImporter:
- serializedVersion: 18
+ serializedVersion: 23
fileIDToRecycleName:
100000: //RootNode
100002: Teapot001
@@ -11,21 +11,33 @@ ModelImporter:
3300000: Teapot001
4300000: Teapot001
9500000: //RootNode
+ externalObjects: {}
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
+ materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
+ resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
animationCompression: 1
- animationRotationError: .5
- animationPositionError: .5
- animationScaleError: .5
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
+ extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
@@ -33,38 +45,51 @@ ModelImporter:
globalScale: 1
meshCompression: 0
addColliders: 0
+ importVisibility: 0
importBlendShapes: 1
+ importCameras: 0
+ importLights: 0
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
+ preserveHierarchy: 0
+ indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 0
+ previousCalculatedGlobalScale: 1
+ hasPreviousCalculatedGlobalScale: 0
tangentSpace:
normalSmoothAngle: 60
- splitTangentsAcrossUV: 1
normalImportMode: 1
- tangentImportMode: 1
+ tangentImportMode: 4
+ normalCalculationMode: 0
importAnimation: 1
copyAvatar: 0
humanDescription:
+ serializedVersion: 2
human: []
skeleton: []
- armTwist: .5
- foreArmTwist: .5
- upperLegTwist: .5
- legTwist: .5
- armStretch: .0500000007
- legStretch: .0500000007
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
+ rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1}
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 0
+ humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
diff --git a/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj b/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj
deleted file mode 100644
index 91b1476d..00000000
--- a/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj
+++ /dev/null
@@ -1,2878 +0,0 @@
-# File exported by Unity3D version 5.0.0f4
-v 17.34540000 -10.92652000 33.21890000
-v 18.78210000 0.07088360 33.21890000
-v 19.04430000 1.11456200 32.22750000
-v 17.58740000 -10.84929000 32.22750000
-v 17.62610000 -10.81592000 33.54940000
-v 19.08630000 1.27865500 33.54940000
-v 18.19710000 -9.72625900 33.21890000
-v 19.70530000 3.36073400 33.21890000
-v 18.82610000 -7.65921800 32.22750000
-v 20.38720000 4.33830200 32.22750000
-v 13.40630000 -9.84251700 33.21890000
-v 13.59250000 -9.58590100 32.22750000
-v 13.62230000 -9.55546600 33.54940000
-v 14.06180000 -9.48775500 33.21890000
-v 14.54590000 -10.29000000 32.22750000
-v 7.52080000 -12.97997000 33.21890000
-v 7.62370000 -13.10759000 32.22750000
-v 7.64020000 -13.13176000 33.54940000
-v 7.88310000 -13.61340000 33.21890000
-v 8.15080000 -14.41561000 32.22750000
-v 0.24490000 -17.22686000 33.21890000
-v 0.24490000 -17.48906000 32.22750000
-v 0.24490000 -17.53106000 33.54940000
-v 0.24490000 -18.15006000 33.21890000
-v 0.24490000 -18.83196000 32.22750000
-v -7.24600000 -20.04321000 33.21890000
-v -7.64370000 -20.91389000 32.22750000
-v -7.21400000 -20.24913000 33.54940000
-v -7.40120000 -21.20864000 33.21890000
-v -7.66090000 -22.16637000 32.22750000
-v -13.10760000 -14.88166000 33.21890000
-v -13.55580000 -16.34995000 32.22750000
-v -13.18910000 -15.36992000 33.54940000
-v -13.57900000 -16.86931000 33.21890000
-v -14.05600000 -17.94733000 32.22750000
-v -16.92720000 -3.18005300 33.21890000
-v -17.26740000 -3.03855800 32.22750000
-v -17.15740000 -3.08422000 33.54940000
-v -17.70980000 -3.66357500 33.21890000
-v -18.33620000 -5.60098900 32.22750000
-v -18.29220000 2.45627600 33.21890000
-v -18.55440000 1.50405800 32.22750000
-v -18.59640000 1.34234500 33.54940000
-v -19.21540000 -1.09045300 33.21890000
-v -19.89730000 -3.12469600 32.22750000
-v -16.85560000 11.26348000 33.21890000
-v -18.29220000 2.45627600 33.21890000
-v -18.55440000 1.50405800 32.22750000
-v -17.09750000 11.65367000 32.22750000
-v -17.13620000 11.69512000 33.54940000
-v -18.59640000 1.34234500 33.54940000
-v -17.70720000 11.61706000 33.21890000
-v -19.21540000 -1.09045300 33.21890000
-v -18.33620000 10.21071000 32.22750000
-v -19.89730000 -3.12469600 32.22750000
-v -12.91640000 12.13010000 33.21890000
-v -13.10260000 11.64441000 32.22750000
-v -13.13240000 11.57266000 33.54940000
-v -13.57190000 10.77952000 33.21890000
-v -14.05600000 10.65457000 32.22750000
-v -7.03090000 14.72114000 33.21890000
-v -7.13380000 14.67616000 32.22750000
-v -7.15030000 14.67174000 33.54940000
-v -7.39320000 14.70978000 33.21890000
-v -7.66090000 14.99593000 32.22750000
-v 0.24490000 19.84744000 33.21890000
-v 0.24490000 20.10974000 32.22750000
-v 0.24490000 20.15164000 33.54940000
-v 0.24490000 20.77064000 33.21890000
-v 0.24490000 21.45254000 32.22750000
-v 7.52080000 21.22103000 33.21890000
-v 7.62370000 21.57731000 32.22750000
-v 7.64020000 21.63054000 33.54940000
-v 7.88310000 22.29090000 33.21890000
-v 8.15080000 22.74669000 32.22750000
-v 13.40630000 16.48018000 33.21890000
-v 13.59250000 17.10920000 32.22750000
-v 13.62230000 17.19923000 33.54940000
-v 14.06180000 18.14594000 33.21890000
-v 14.54590000 18.31190000 32.22750000
-v 17.34550000 3.62520600 33.21890000
-v 17.58740000 3.90821100 32.22750000
-v 17.62610000 3.97457600 33.54940000
-v 18.19710000 5.55004000 33.21890000
-v 18.82610000 8.15248200 32.22750000
-v 18.78210000 0.07088360 33.21890000
-v 19.04430000 1.11456200 32.22750000
-v 19.08630000 1.27865500 33.54940000
-v 19.70530000 3.36073400 33.21890000
-v 20.38720000 4.33830200 32.22750000
-v 21.10040000 -5.42283200 26.95590000
-v 22.85250000 -2.69439700 26.95590000
-v 23.08430000 -12.92942000 21.77880000
-v 25.00310000 -0.17661580 21.77880000
-v 24.48760000 -12.37944000 16.79040000
-v 26.52420000 4.27634900 16.79040000
-v 25.01990000 -10.65101000 12.08530000
-v 27.10120000 4.02837500 12.08530000
-v 16.29630000 -17.93082000 26.95590000
-v 17.82320000 -20.65947000 21.77880000
-v 18.90320000 -18.10333000 16.79040000
-v 19.31290000 -16.93973000 12.08530000
-v 9.11840000 -19.30857000 26.95590000
-v 9.96250000 -24.54762000 21.77880000
-v 10.55960000 -27.52804000 16.79040000
-v 10.78600000 -28.34698000 12.08530000
-v 0.24490000 -21.29726000 26.95590000
-v 0.24490000 -23.44786000 21.77880000
-v 0.24490000 -24.96896000 16.79040000
-v 0.24490000 -25.54596000 12.08530000
-v -8.62850000 -23.37403000 26.95590000
-v -9.47260000 -22.30768000 21.77880000
-v -10.06970000 -21.49766000 16.79040000
-v -10.29610000 -21.37378000 12.08530000
-v -15.80640000 -15.31779000 26.95590000
-v -17.33330000 -13.24375000 21.77880000
-v -18.41330000 -16.62760000 16.79040000
-v -18.82300000 -18.62129000 12.08530000
-v -20.61050000 -12.46091000 26.95590000
-v -22.59440000 -7.10780700 21.77880000
-v -23.99770000 -6.34799400 16.79040000
-v -24.53000000 -7.93299100 12.08530000
-v -22.36260000 1.79237400 26.95590000
-v -24.51320000 2.66314500 21.77880000
-v -26.03430000 -2.79667900 16.79040000
-v -26.61130000 -3.64249700 12.08530000
-v -20.61050000 5.28599500 26.95590000
-v -22.36260000 1.79237400 26.95590000
-v -22.59440000 12.32729000 21.77880000
-v -24.51320000 2.66314500 21.77880000
-v -23.99770000 14.28131000 16.79040000
-v -26.03430000 -2.79667900 16.79040000
-v -24.53000000 13.14911000 12.08530000
-v -26.61130000 -3.64249700 12.08530000
-v -15.80640000 16.78491000 26.95590000
-v -17.33330000 21.91275000 21.77880000
-v -18.41330000 20.68900000 16.79040000
-v -18.82300000 19.51461000 12.08530000
-v -8.62850000 18.33687000 26.95590000
-v -9.47260000 23.37102000 21.77880000
-v -10.06970000 26.98764000 16.79040000
-v -10.29610000 28.17612000 12.08530000
-v 0.24490000 23.91784000 26.95590000
-v 0.24490000 26.06844000 21.77880000
-v 0.24490000 27.58954000 16.79040000
-v 0.24490000 28.16654000 12.08530000
-v 9.11840000 22.40233000 26.95590000
-v 9.96250000 21.13108000 21.77880000
-v 10.55960000 20.95726000 16.79040000
-v 10.78600000 21.20292000 12.08530000
-v 16.29630000 14.17188000 26.95590000
-v 17.82320000 14.49703000 21.77880000
-v 18.90320000 19.21327000 16.79040000
-v 19.31290000 21.19617000 12.08530000
-v 21.10040000 12.32407000 26.95590000
-v 23.08430000 6.50568100 21.77880000
-v 24.48760000 8.24985600 16.79040000
-v 25.01990000 10.43109000 12.08530000
-v 22.85250000 -2.69439700 26.95590000
-v 25.00310000 -0.17661580 21.77880000
-v 26.52420000 4.27634900 16.79040000
-v 27.10120000 4.02837500 12.08530000
-v 24.05210000 -13.31794000 8.10410000
-v 26.05220000 3.52159500 8.10410000
-v 21.92300000 -8.61061900 5.16140000
-v 23.74420000 -3.59325000 5.16140000
-v 19.79390000 -4.73665000 3.16300000
-v 21.43620000 2.44810100 3.16300000
-v 18.82610000 -7.65921800 2.01420000
-v 20.38720000 4.33830200 2.01420000
-v 18.56810000 -19.09372000 8.10410000
-v 16.92940000 -20.10237000 5.16140000
-v 15.29080000 -13.08473000 3.16300000
-v 14.54590000 -10.29000000 2.01420000
-v 10.37430000 -26.71925000 8.10410000
-v 9.46840000 -21.51203000 5.16140000
-v 8.56250000 -16.17119000 3.16300000
-v 8.15080000 -14.41561000 2.01420000
-v 0.24490000 -24.49696000 8.10410000
-v 0.24490000 -22.18896000 5.16140000
-v 0.24490000 -19.88096000 3.16300000
-v 0.24490000 -18.83196000 2.01420000
-v -9.88440000 -21.69226000 8.10410000
-v -8.97850000 -23.06404000 5.16140000
-v -8.07260000 -23.11329000 3.16300000
-v -7.66090000 -22.16637000 2.01420000
-v -18.07820000 -15.19427000 8.10410000
-v -16.43950000 -13.67194000 5.16140000
-v -14.80090000 -17.85619000 3.16300000
-v -14.05600000 -17.94733000 2.01420000
-v -23.56220000 -5.78890000 8.10410000
-v -21.43310000 -11.00113000 5.16140000
-v -19.30400000 -9.73295400 3.16300000
-v -18.33620000 -5.60098900 2.01420000
-v -25.56230000 -1.32537800 8.10410000
-v -23.25430000 4.15269700 5.16140000
-v -20.94630000 -3.11889300 3.16300000
-v -19.89730000 -3.12469600 2.01420000
-v -23.56220000 14.46980000 8.10410000
-v -25.56230000 -1.32537800 8.10410000
-v -21.43310000 7.44577200 5.16140000
-v -23.25430000 4.15269700 5.16140000
-v -19.30400000 6.90214500 3.16300000
-v -20.94630000 -3.11889300 3.16300000
-v -18.33620000 10.21071000 2.01420000
-v -19.89730000 -3.12469600 2.01420000
-v -18.07820000 21.45203000 8.10410000
-v -16.43950000 19.69696000 5.16140000
-v -14.80090000 12.23551000 3.16300000
-v -14.05600000 10.65457000 2.01420000
-v -9.88440000 25.92204000 8.10410000
-v -8.97850000 20.29206000 5.16140000
-v -8.07260000 15.98461000 3.16300000
-v -7.66090000 14.99593000 2.01420000
-v 0.24490000 27.11754000 8.10410000
-v 0.24490000 24.80954000 5.16140000
-v 0.24490000 22.50154000 3.16300000
-v 0.24490000 21.45254000 2.01420000
-v 10.37430000 20.89505000 8.10410000
-v 9.46840000 21.84407000 5.16140000
-v 8.56250000 22.92671000 3.16300000
-v 8.15080000 22.74669000 2.01420000
-v 18.56810000 17.55258000 8.10410000
-v 16.92940000 13.26653000 5.16140000
-v 15.29080000 17.00697000 3.16300000
-v 14.54590000 18.31190000 2.01420000
-v 24.05210000 6.94075900 8.10410000
-v 21.92300000 9.83628200 5.16140000
-v 19.79390000 11.89845000 3.16300000
-v 18.82610000 8.15248200 2.01420000
-v 26.05220000 3.52159500 8.10410000
-v 23.74420000 -3.59325000 5.16140000
-v 21.43620000 2.44810100 3.16300000
-v 20.38720000 4.33830200 2.01420000
-v 18.40520000 -9.10570900 1.27460000
-v 19.93080000 3.87067300 1.27460000
-v 16.15510000 -8.15844200 0.62940000
-v 17.49170000 -3.56915600 0.62940000
-v 10.59530000 -7.74711600 0.17310000
-v 11.46480000 -3.22717500 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v 14.22190000 -9.65085100 1.27460000
-v 12.49020000 -12.20919000 0.62940000
-v 8.21100000 -3.87782800 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v 7.97170000 -13.84748000 1.27460000
-v 7.01430000 -12.89890000 0.62940000
-v 4.64870000 -14.00169000 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v 0.24490000 -18.37556000 1.27460000
-v 0.24490000 -15.93646000 0.62940000
-v 0.24490000 -9.90956300 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v -7.48180000 -21.54594000 1.27460000
-v -6.52440000 -16.52523000 0.62940000
-v -4.15880000 -6.60722700 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v -13.73200000 -17.31265000 1.27460000
-v -12.00030000 -9.75952300 0.62940000
-v -7.72110000 -11.59034000 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v -17.91530000 -4.16957300 1.27460000
-v -15.66520000 -6.59990000 0.62940000
-v -10.10540000 -1.54619400 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v -19.44090000 -1.88941200 1.27460000
-v -17.00180000 4.18806600 0.62940000
-v -10.97490000 4.33964500 0.17310000
-v 0.24490000 1.31033700 0.00000000
-v -17.91530000 11.28383000 1.27460000
-v -19.44090000 -1.88941200 1.27460000
-v -15.66520000 6.93880000 0.62940000
-v -17.00180000 4.18806600 0.62940000
-v -10.10540000 7.26130700 0.17310000
-v -10.97490000 4.33964500 0.17310000
-v -13.73200000 10.64125000 1.27460000
-v -12.00030000 14.73098000 0.62940000
-v -7.72110000 4.34176300 0.17310000
-v -7.48180000 14.77456000 1.27460000
-v -6.52440000 15.29507000 0.62940000
-v -4.15880000 14.09337000 0.17310000
-v 0.24490000 20.99614000 1.27460000
-v 0.24490000 18.55704000 0.62940000
-v 0.24490000 12.53014000 0.17310000
-v 7.97170000 22.47302000 1.27460000
-v 7.01430000 18.92140000 0.62940000
-v 4.64870000 6.69891000 0.17310000
-v 14.22190000 18.30305000 1.27460000
-v 12.49020000 12.28131000 0.62940000
-v 8.21100000 12.05427000 0.17310000
-v 18.40520000 6.34769100 1.27460000
-v 16.15510000 5.38025800 0.62940000
-v 10.59530000 1.06038400 0.17310000
-v 19.93080000 3.87067300 1.27460000
-v 17.49170000 -3.56915600 0.62940000
-v 11.46480000 -3.22717500 0.17310000
-v -27.70040000 -4.09726100 27.60950000
-v -27.51350000 -2.41760200 27.14480000
-v -21.24010000 -2.38912000 27.19200000
-v -21.03030000 -5.20421200 27.66410000
-v -32.59630000 -5.62449000 27.22740000
-v -32.15040000 -2.34028100 26.81430000
-v -35.61170000 1.55248000 26.19030000
-v -35.02490000 2.14269300 25.91740000
-v -36.64050000 1.56120600 24.17070000
-v -36.01100000 4.31300600 24.17070000
-v -28.11150000 -3.32936200 28.63180000
-v -20.56870000 -6.63696600 28.70270000
-v -33.57720000 -6.00359600 28.13620000
-v -36.90270000 0.17851040 26.79070000
-v -38.02520000 -3.96225900 24.17070000
-v -28.52260000 -0.94260490 29.65420000
-v -20.10710000 -5.73084500 29.74120000
-v -34.55810000 -1.92317000 29.04490000
-v -38.19380000 -3.82453500 27.39110000
-v -39.41000000 -5.88631300 24.17070000
-v -28.70950000 2.02674200 30.11890000
-v -19.89730000 -3.12469600 30.21330000
-v -35.00390000 2.06731000 29.45800000
-v -38.78060000 -3.19013600 27.66410000
-v -40.03950000 -2.53227600 24.17070000
-v -28.52260000 3.58939500 29.65420000
-v -20.10710000 -1.19884500 29.74120000
-v -34.55810000 2.60883000 29.04490000
-v -38.19380000 0.70746450 27.39110000
-v -39.41000000 -1.35431300 24.17070000
-v -28.11150000 2.71333800 28.63180000
-v -20.56870000 -0.59426620 28.70270000
-v -33.57720000 0.03910351 28.13620000
-v -36.90270000 6.22121000 26.79070000
-v -38.02530000 2.08006500 24.17070000
-v -27.70040000 0.43473860 27.60950000
-v -21.03030000 -0.67221160 27.66410000
-v -32.59630000 -1.09249000 27.22740000
-v -35.61170000 6.08448000 26.19030000
-v -36.64050000 6.09320500 24.17070000
-v -27.51350000 -2.41760200 27.14480000
-v -21.24010000 -2.38912000 27.19200000
-v -32.15040000 -2.34028100 26.81430000
-v -35.02490000 2.14269300 25.91740000
-v -36.01100000 4.31300600 24.17070000
-v -36.05860000 2.06478400 21.16830000
-v -35.48650000 3.54454000 21.43260000
-v -34.23550000 -3.19142900 17.72480000
-v -33.82900000 -2.32256600 18.12800000
-v -31.05510000 -0.51330750 14.32550000
-v -30.91250000 2.27021800 14.82340000
-v -26.40150000 -5.74443100 11.45590000
-v -26.61130000 -3.64249700 12.08530000
-v -37.31710000 -1.18975000 20.58680000
-v -35.12980000 -0.51470040 16.83760000
-v -31.36890000 -2.49286400 13.23010000
-v -25.93990000 -5.57019900 10.07110000
-v -38.57570000 -4.99973900 20.00530000
-v -36.02410000 2.05279800 15.95050000
-v -31.68260000 -2.97959600 12.13470000
-v -25.47830000 -3.28039000 8.68630000
-v -39.14780000 -3.62971600 19.74090000
-v -36.43070000 4.15901900 15.54730000
-v -31.82520000 -1.25126800 11.63680000
-v -25.26850000 -0.20086610 8.05690000
-v -38.57570000 -0.46773930 20.00530000
-v -36.02410000 6.58479800 15.95050000
-v -31.68260000 1.55240400 12.13470000
-v -25.47830000 1.25161000 8.68630000
-v -37.31710000 4.85295000 20.58680000
-v -35.12980000 5.52800000 16.83760000
-v -31.36890000 3.54983600 13.23010000
-v -25.93990000 0.47250060 10.07110000
-v -36.05860000 6.59678400 21.16830000
-v -34.23550000 1.34057100 17.72480000
-v -31.05510000 4.01869200 14.32550000
-v -26.40150000 -1.21243000 11.45590000
-v -35.48650000 3.54454000 21.43260000
-v -33.82900000 -2.32256600 18.12800000
-v -30.91250000 2.27021800 14.82340000
-v -26.61130000 -3.64249700 12.08530000
-v 30.00580000 -8.10938200 19.33080000
-v 29.51410000 -3.44233100 20.61430000
-v 23.07280000 -3.19043900 19.13510000
-v 23.07280000 -8.17563900 17.40410000
-v 32.93410000 0.89816330 23.42320000
-v 32.30460000 3.44544400 24.17070000
-v 34.60340000 -2.21526400 28.21190000
-v 33.83630000 2.98170300 28.48230000
-v 37.75980000 -1.30529700 32.22750000
-v 36.50090000 -3.38505800 32.22750000
-v 31.08770000 -6.95075900 16.50720000
-v 23.07280000 -9.83744000 13.59600000
-v 34.31890000 -3.29645900 21.77880000
-v 36.29110000 -6.76962000 27.61690000
-v 40.52940000 -0.95209670 32.22750000
-v 32.16960000 -1.42360800 13.68350000
-v 23.07280000 -8.17563900 9.78790000
-v 35.70360000 -6.74092700 20.13430000
-v 37.97880000 -0.92756960 27.02180000
-v 43.29890000 -4.07362200 32.22750000
-v 32.66130000 4.13056300 12.40010000
-v 23.07280000 -3.19043900 8.05690000
-v 36.33310000 -3.57592000 19.38690000
-v 38.74590000 3.80378100 26.75140000
-v 44.55780000 2.51752800 32.22750000
-v 32.16960000 7.57909200 13.68350000
-v 32.66130000 4.13056300 12.40010000
-v 23.07280000 -3.19043900 8.05690000
-v 23.07280000 1.79476000 9.78790000
-v 35.70360000 0.13257290 20.13430000
-v 36.33310000 -3.57592000 19.38690000
-v 37.97880000 3.81693000 27.02180000
-v 38.74590000 3.80378100 26.75140000
-v 43.29890000 -0.29692170 32.22750000
-v 44.55780000 2.51752800 32.22750000
-v 31.08770000 5.05274100 16.50720000
-v 23.07280000 3.45646100 13.59600000
-v 34.31890000 5.86824000 21.77880000
-v 36.29110000 -0.44371960 27.61690000
-v 40.52940000 4.08340400 32.22750000
-v 30.00580000 0.89331890 19.33080000
-v 23.07280000 1.79476000 17.40410000
-v 32.93410000 7.77166300 23.42320000
-v 34.60340000 2.52923600 28.21190000
-v 37.75980000 2.47140400 32.22750000
-v 38.81430000 2.16207500 32.82170000
-v 37.46610000 -0.58314080 32.79400000
-v 39.44490000 2.76871200 33.02710000
-v 38.17940000 2.18864400 32.98290000
-v 39.46370000 3.01452500 32.83280000
-v 38.38930000 2.88723300 32.79400000
-v 38.68300000 2.53812500 32.22750000
-v 37.84370000 0.91684120 32.22750000
-v 41.78040000 -5.24951200 32.88260000
-v 42.22890000 -5.60730000 33.12450000
-v 41.82760000 -4.66487100 32.91800000
-v 40.52940000 0.05500329 32.22750000
-v 44.74650000 1.33794100 32.94340000
-v 45.01290000 2.26024000 33.22190000
-v 44.19150000 -0.07987291 33.00320000
-v 42.37570000 -4.78993700 32.22750000
-v 46.09470000 3.76802700 32.97110000
-v 46.27830000 3.33394700 33.26610000
-v 45.26590000 4.17667000 33.04190000
-v 43.21500000 -2.43626900 32.22750000
-v 44.74650000 4.87864100 32.94340000
-v 46.09470000 3.76802700 32.97110000
-v 45.01290000 5.28153900 33.22190000
-v 46.27830000 3.33394700 33.26610000
-v 44.19150000 2.42222700 33.00320000
-v 45.26590000 4.17667000 33.04190000
-v 42.37570000 -2.52393700 32.22750000
-v 43.21500000 -2.43626900 32.22750000
-v 41.78040000 -0.52861210 32.88260000
-v 42.22890000 -1.57879900 33.12450000
-v 41.82760000 -1.32877100 32.91800000
-v 40.52940000 3.07630300 32.22750000
-v 38.81430000 5.70277500 32.82170000
-v 39.44490000 5.79001100 33.02710000
-v 39.46370000 5.51662400 32.83280000
-v 38.68300000 4.80412500 32.22750000
-v 4.46600000 -5.33879800 41.63770000
-v 4.81890000 -3.63683200 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v 4.27230000 -4.99555400 40.03260000
-v 4.60910000 -3.63818200 40.03260000
-v 2.68430000 1.06728200 38.04990000
-v 2.88860000 1.34170900 38.04990000
-v 2.72240000 0.91439280 36.25600000
-v 2.93060000 1.17822300 36.25600000
-v 3.49670000 -4.30206400 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v 3.34730000 -3.57893900 40.03260000
-v 2.12340000 1.86664300 38.04990000
-v 2.15170000 1.77756800 36.25600000
-v 2.04500000 -0.32197360 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v 1.96210000 0.01075053 40.03260000
-v 1.28420000 1.73794600 38.04990000
-v 1.29910000 1.71626800 36.25600000
-v 0.24490000 -3.26366300 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v 0.24490000 -3.05386300 40.03260000
-v 0.24490000 -1.33336300 38.04990000
-v 0.24490000 -1.37536300 36.25600000
-v -1.55510000 -7.88010700 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v -1.47220000 -7.66747300 40.03260000
-v -0.79430000 -4.95239300 38.04990000
-v -0.80920000 -5.03194100 36.25600000
-v -3.00680000 -3.44884000 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v -2.85740000 -3.88343000 40.03260000
-v -1.63350000 -5.53013900 38.04990000
-v -1.66180000 -5.54974800 36.25600000
-v -3.97610000 1.50426300 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v -3.78240000 1.01467100 40.03260000
-v -2.19440000 -3.94591700 38.04990000
-v -2.23250000 -3.86948600 36.25600000
-v -4.32900000 4.05010900 41.63770000
-v 0.24490000 1.31033700 42.29860000
-v -4.11920000 3.65714900 40.03260000
-v -2.39870000 -2.36518500 38.04990000
-v -2.44070000 -2.23910000 36.25600000
-v -3.97610000 5.10436300 41.63770000
-v -4.32900000 4.05010900 41.63770000
-v -3.78240000 4.44897100 40.03260000
-v -4.11920000 3.65714900 40.03260000
-v -2.19440000 -1.86741700 38.04990000
-v -2.39870000 -2.36518500 38.04990000
-v -2.23250000 -1.76118600 36.25600000
-v -2.44070000 -2.23910000 36.25600000
-v -3.00680000 3.05466000 41.63770000
-v -2.85740000 2.32127000 40.03260000
-v -1.63350000 -1.77323900 38.04990000
-v -1.66180000 -1.73614800 36.25600000
-v -1.55510000 0.56199290 41.63770000
-v -1.47220000 0.38722710 40.03260000
-v -0.79430000 -0.07369304 38.04990000
-v -0.80920000 -0.07704139 36.25600000
-v 0.24490000 5.88423700 41.63770000
-v 0.24490000 5.67443700 40.03260000
-v 0.24490000 3.95393700 38.04990000
-v 0.24490000 3.99593700 36.25600000
-v 2.04500000 8.12012700 41.63770000
-v 1.96210000 8.06545100 40.03260000
-v 1.28420000 6.61664600 38.04990000
-v 1.29910000 6.67116800 36.25600000
-v 3.49670000 2.20143600 41.63770000
-v 3.34730000 2.62576100 40.03260000
-v 2.12340000 5.62354300 38.04990000
-v 2.15170000 5.59116800 36.25600000
-v 4.46600000 -1.73869800 41.63770000
-v 4.27230000 -1.56125500 40.03260000
-v 2.68430000 3.14578200 38.04990000
-v 2.72240000 3.02269300 36.25600000
-v 4.81890000 -3.63683200 41.63770000
-v 4.60910000 -3.63818200 40.03260000
-v 2.88860000 1.34170900 38.04990000
-v 2.93060000 1.17822300 36.25600000
-v 5.89670000 -3.57194100 35.06000000
-v 6.37150000 0.69329980 35.06000000
-v 2.93060000 1.17822300 36.25600000
-v 2.72240000 0.91439280 36.25600000
-v 10.46460000 -7.45695600 34.24180000
-v 11.32320000 -3.44673600 34.24180000
-v 14.56790000 -2.11896000 33.42350000
-v 15.77120000 0.08772090 33.42350000
-v 16.34860000 -8.90212500 32.22750000
-v 17.70150000 -3.30737300 32.22750000
-v 4.59480000 -7.98177700 35.06000000
-v 2.15170000 1.77756800 36.25600000
-v 8.11050000 -3.65598400 34.24180000
-v 11.26860000 -14.53504000 33.42350000
-v 12.63910000 -11.76304000 32.22750000
-v 2.64960000 -3.42176700 35.06000000
-v 1.29910000 1.71626800 36.25600000
-v 4.59310000 -13.85077000 34.24180000
-v 6.33900000 -13.75936000 33.42350000
-v 7.09670000 -12.85637000 32.22750000
-v 0.24490000 -4.81626300 35.06000000
-v 0.24490000 -1.37536300 36.25600000
-v 0.24490000 -9.76796200 34.24180000
-v 0.24490000 -14.21596000 33.42350000
-v 0.24490000 -16.14626000 32.22750000
-v -2.15970000 -8.63750100 35.06000000
-v -0.80920000 -5.03194100 36.25600000
-v -4.10330000 -6.59852100 34.24180000
-v -5.84910000 -12.30018000 33.42350000
-v -6.60680000 -17.03518000 32.22750000
-v -4.10490000 -0.72506450 35.06000000
-v -1.66180000 -5.54974800 36.25600000
-v -7.62060000 -11.41666000 34.24180000
-v -10.77870000 -6.77690100 33.42350000
-v -12.14920000 -10.43300000 32.22750000
-v -5.40680000 1.00952400 35.06000000
-v -2.23250000 -3.86948600 36.25600000
-v -9.97470000 -1.91721700 34.24180000
-v -14.07810000 -9.74662400 33.42350000
-v -15.85870000 -5.91063500 32.22750000
-v -5.88160000 1.90401200 35.06000000
-v -2.44070000 -2.23910000 36.25600000
-v -10.83330000 4.28795000 34.24180000
-v -15.28130000 -1.31484400 33.42350000
-v -17.21160000 4.33148200 32.22750000
-v -5.40680000 5.81882400 35.06000000
-v -5.88160000 1.90401200 35.06000000
-v -2.44070000 -2.23910000 36.25600000
-v -2.23250000 -1.76118600 36.25600000
-v -9.97470000 6.77918300 34.24180000
-v -10.83330000 4.28795000 34.24180000
-v -14.07810000 2.44147600 33.42350000
-v -15.28130000 -1.31484400 33.42350000
-v -15.85870000 7.79286600 32.22750000
-v -17.21160000 4.33148200 32.22750000
-v -4.10490000 7.97463500 35.06000000
-v -1.66180000 -1.73614800 36.25600000
-v -7.62060000 4.31444100 34.24180000
-v -10.77870000 15.27040000 33.42350000
-v -12.14920000 14.35530000 32.22750000
-v -2.15970000 2.66599900 35.06000000
-v -0.80920000 -0.07704139 36.25600000
-v -4.10330000 13.84078000 34.24180000
-v -5.84910000 16.34582000 33.42350000
-v -6.60680000 15.17222000 32.22750000
-v 0.24490000 7.43683700 35.06000000
-v 0.24490000 3.99593700 36.25600000
-v 0.24490000 12.38854000 34.24180000
-v 0.24490000 16.83654000 33.42350000
-v 0.24490000 18.76684000 32.22750000
-v 2.64960000 7.88173200 35.06000000
-v 1.29910000 6.67116800 36.25600000
-v 4.59310000 6.58852600 34.24180000
-v 6.33900000 14.88664000 33.42350000
-v 7.09670000 19.35102000 32.22750000
-v 4.59480000 0.71792240 35.06000000
-v 2.15170000 5.59116800 36.25600000
-v 8.11050000 12.07512000 34.24180000
-v 11.26860000 7.51226300 33.42350000
-v 12.63910000 13.02526000 32.22750000
-v 5.89670000 1.23735800 35.06000000
-v 2.72240000 3.02269300 36.25600000
-v 10.46460000 1.23944400 34.24180000
-v 14.56790000 10.06914000 33.42350000
-v 16.34860000 4.80137400 32.22750000
-v 6.37150000 0.69329980 35.06000000
-v 2.93060000 1.17822300 36.25600000
-v 11.32320000 -3.44673600 34.24180000
-v 15.77120000 0.08772090 33.42350000
-v 17.70150000 -3.30737300 32.22750000
-vt 1.75000 1.97500
-vt 2.00000 1.97500
-vt 2.00000 2.00000
-vt 1.75000 2.00000
-vt 1.75000 1.95000
-vt 2.00000 1.95000
-vt 1.75000 1.92500
-vt 2.00000 1.92500
-vt 1.75000 1.90000
-vt 2.00000 1.90000
-vt 1.50000 1.97500
-vt 1.50000 2.00000
-vt 1.50000 1.95000
-vt 1.50000 1.92500
-vt 1.50000 1.90000
-vt 1.25000 1.97500
-vt 1.25000 2.00000
-vt 1.25000 1.95000
-vt 1.25000 1.92500
-vt 1.25000 1.90000
-vt 1.00000 1.97500
-vt 1.00000 2.00000
-vt 1.00000 1.95000
-vt 1.00000 1.92500
-vt 1.00000 1.90000
-vt 0.75000 1.97500
-vt 0.75000 2.00000
-vt 0.75000 1.95000
-vt 0.75000 1.92500
-vt 0.75000 1.90000
-vt 0.50000 1.97500
-vt 0.50000 2.00000
-vt 0.50000 1.95000
-vt 0.50000 1.92500
-vt 0.50000 1.90000
-vt 0.25000 1.97500
-vt 0.25000 2.00000
-vt 0.25000 1.95000
-vt 0.25000 1.92500
-vt 0.25000 1.90000
-vt 0.00000 1.97500
-vt 0.00000 2.00000
-vt 0.00000 1.95000
-vt 0.00000 1.92500
-vt 0.00000 1.90000
-vt 1.75000 1.97500
-vt 2.00000 1.97500
-vt 2.00000 2.00000
-vt 1.75000 2.00000
-vt 1.75000 1.95000
-vt 2.00000 1.95000
-vt 1.75000 1.92500
-vt 2.00000 1.92500
-vt 1.75000 1.90000
-vt 2.00000 1.90000
-vt 1.50000 1.97500
-vt 1.50000 2.00000
-vt 1.50000 1.95000
-vt 1.50000 1.92500
-vt 1.50000 1.90000
-vt 1.25000 1.97500
-vt 1.25000 2.00000
-vt 1.25000 1.95000
-vt 1.25000 1.92500
-vt 1.25000 1.90000
-vt 1.00000 1.97500
-vt 1.00000 2.00000
-vt 1.00000 1.95000
-vt 1.00000 1.92500
-vt 1.00000 1.90000
-vt 0.75000 1.97500
-vt 0.75000 2.00000
-vt 0.75000 1.95000
-vt 0.75000 1.92500
-vt 0.75000 1.90000
-vt 0.50000 1.97500
-vt 0.50000 2.00000
-vt 0.50000 1.95000
-vt 0.50000 1.92500
-vt 0.50000 1.90000
-vt 0.25000 1.97500
-vt 0.25000 2.00000
-vt 0.25000 1.95000
-vt 0.25000 1.92500
-vt 0.25000 1.90000
-vt 0.00000 1.97500
-vt 0.00000 2.00000
-vt 0.00000 1.95000
-vt 0.00000 1.92500
-vt 0.00000 1.90000
-vt 1.75000 1.67500
-vt 2.00000 1.67500
-vt 1.75000 1.45000
-vt 2.00000 1.45000
-vt 1.75000 1.22500
-vt 2.00000 1.22500
-vt 1.75000 1.00000
-vt 2.00000 1.00000
-vt 1.50000 1.67500
-vt 1.50000 1.45000
-vt 1.50000 1.22500
-vt 1.50000 1.00000
-vt 1.25000 1.67500
-vt 1.25000 1.45000
-vt 1.25000 1.22500
-vt 1.25000 1.00000
-vt 1.00000 1.67500
-vt 1.00000 1.45000
-vt 1.00000 1.22500
-vt 1.00000 1.00000
-vt 0.75000 1.67500
-vt 0.75000 1.45000
-vt 0.75000 1.22500
-vt 0.75000 1.00000
-vt 0.50000 1.67500
-vt 0.50000 1.45000
-vt 0.50000 1.22500
-vt 0.50000 1.00000
-vt 0.25000 1.67500
-vt 0.25000 1.45000
-vt 0.25000 1.22500
-vt 0.25000 1.00000
-vt 0.00000 1.67500
-vt 0.00000 1.45000
-vt 0.00000 1.22500
-vt 0.00000 1.00000
-vt 1.75000 1.67500
-vt 2.00000 1.67500
-vt 1.75000 1.45000
-vt 2.00000 1.45000
-vt 1.75000 1.22500
-vt 2.00000 1.22500
-vt 1.75000 1.00000
-vt 2.00000 1.00000
-vt 1.50000 1.67500
-vt 1.50000 1.45000
-vt 1.50000 1.22500
-vt 1.50000 1.00000
-vt 1.25000 1.67500
-vt 1.25000 1.45000
-vt 1.25000 1.22500
-vt 1.25000 1.00000
-vt 1.00000 1.67500
-vt 1.00000 1.45000
-vt 1.00000 1.22500
-vt 1.00000 1.00000
-vt 0.75000 1.67500
-vt 0.75000 1.45000
-vt 0.75000 1.22500
-vt 0.75000 1.00000
-vt 0.50000 1.67500
-vt 0.50000 1.45000
-vt 0.50000 1.22500
-vt 0.50000 1.00000
-vt 0.25000 1.67500
-vt 0.25000 1.45000
-vt 0.25000 1.22500
-vt 0.25000 1.00000
-vt 0.00000 1.67500
-vt 0.00000 1.45000
-vt 0.00000 1.22500
-vt 0.00000 1.00000
-vt 1.75000 0.85000
-vt 2.00000 0.85000
-vt 1.75000 0.70000
-vt 2.00000 0.70000
-vt 1.75000 0.55000
-vt 2.00000 0.55000
-vt 1.75000 0.40000
-vt 2.00000 0.40000
-vt 1.50000 0.85000
-vt 1.50000 0.70000
-vt 1.50000 0.55000
-vt 1.50000 0.40000
-vt 1.25000 0.85000
-vt 1.25000 0.70000
-vt 1.25000 0.55000
-vt 1.25000 0.40000
-vt 1.00000 0.85000
-vt 1.00000 0.70000
-vt 1.00000 0.55000
-vt 1.00000 0.40000
-vt 0.75000 0.85000
-vt 0.75000 0.70000
-vt 0.75000 0.55000
-vt 0.75000 0.40000
-vt 0.50000 0.85000
-vt 0.50000 0.70000
-vt 0.50000 0.55000
-vt 0.50000 0.40000
-vt 0.25000 0.85000
-vt 0.25000 0.70000
-vt 0.25000 0.55000
-vt 0.25000 0.40000
-vt 0.00000 0.85000
-vt 0.00000 0.70000
-vt 0.00000 0.55000
-vt 0.00000 0.40000
-vt 1.75000 0.85000
-vt 2.00000 0.85000
-vt 1.75000 0.70000
-vt 2.00000 0.70000
-vt 1.75000 0.55000
-vt 2.00000 0.55000
-vt 1.75000 0.40000
-vt 2.00000 0.40000
-vt 1.50000 0.85000
-vt 1.50000 0.70000
-vt 1.50000 0.55000
-vt 1.50000 0.40000
-vt 1.25000 0.85000
-vt 1.25000 0.70000
-vt 1.25000 0.55000
-vt 1.25000 0.40000
-vt 1.00000 0.85000
-vt 1.00000 0.70000
-vt 1.00000 0.55000
-vt 1.00000 0.40000
-vt 0.75000 0.85000
-vt 0.75000 0.70000
-vt 0.75000 0.55000
-vt 0.75000 0.40000
-vt 0.50000 0.85000
-vt 0.50000 0.70000
-vt 0.50000 0.55000
-vt 0.50000 0.40000
-vt 0.25000 0.85000
-vt 0.25000 0.70000
-vt 0.25000 0.55000
-vt 0.25000 0.40000
-vt 0.00000 0.85000
-vt 0.00000 0.70000
-vt 0.00000 0.55000
-vt 0.00000 0.40000
-vt 1.75000 0.30000
-vt 2.00000 0.30000
-vt 1.75000 0.20000
-vt 2.00000 0.20000
-vt 1.75000 0.10000
-vt 2.00000 0.10000
-vt 1.75000 0.00000
-vt 1.50000 0.30000
-vt 1.50000 0.20000
-vt 1.50000 0.10000
-vt 1.50000 0.00000
-vt 1.25000 0.30000
-vt 1.25000 0.20000
-vt 1.25000 0.10000
-vt 1.25000 0.00000
-vt 1.00000 0.30000
-vt 1.00000 0.20000
-vt 1.00000 0.10000
-vt 1.00000 0.00000
-vt 0.75000 0.30000
-vt 0.75000 0.20000
-vt 0.75000 0.10000
-vt 0.75000 0.00000
-vt 0.50000 0.30000
-vt 0.50000 0.20000
-vt 0.50000 0.10000
-vt 0.50000 0.00000
-vt 0.25000 0.30000
-vt 0.25000 0.20000
-vt 0.25000 0.10000
-vt 0.25000 0.00000
-vt 0.00000 0.30000
-vt 0.00000 0.20000
-vt 0.00000 0.10000
-vt 0.00000 0.00000
-vt 1.75000 0.30000
-vt 2.00000 0.30000
-vt 1.75000 0.20000
-vt 2.00000 0.20000
-vt 1.75000 0.10000
-vt 2.00000 0.10000
-vt 1.50000 0.30000
-vt 1.50000 0.20000
-vt 1.50000 0.10000
-vt 1.25000 0.30000
-vt 1.25000 0.20000
-vt 1.25000 0.10000
-vt 1.00000 0.30000
-vt 1.00000 0.20000
-vt 1.00000 0.10000
-vt 0.75000 0.30000
-vt 0.75000 0.20000
-vt 0.75000 0.10000
-vt 0.50000 0.30000
-vt 0.50000 0.20000
-vt 0.50000 0.10000
-vt 0.25000 0.30000
-vt 0.25000 0.20000
-vt 0.25000 0.10000
-vt 0.00000 0.30000
-vt 0.00000 0.20000
-vt 0.00000 0.10000
-vt 0.87500 0.87500
-vt 1.00000 0.87500
-vt 1.00000 1.00000
-vt 0.87500 1.00000
-vt 0.87500 0.75000
-vt 1.00000 0.75000
-vt 0.87500 0.62500
-vt 1.00000 0.62500
-vt 0.87500 0.50000
-vt 1.00000 0.50000
-vt 0.75000 0.87500
-vt 0.75000 1.00000
-vt 0.75000 0.75000
-vt 0.75000 0.62500
-vt 0.75000 0.50000
-vt 0.62500 0.87500
-vt 0.62500 1.00000
-vt 0.62500 0.75000
-vt 0.62500 0.62500
-vt 0.62500 0.50000
-vt 0.50000 0.87500
-vt 0.50000 1.00000
-vt 0.50000 0.75000
-vt 0.50000 0.62500
-vt 0.50000 0.50000
-vt 0.37500 0.87500
-vt 0.37500 1.00000
-vt 0.37500 0.75000
-vt 0.37500 0.62500
-vt 0.37500 0.50000
-vt 0.25000 0.87500
-vt 0.25000 1.00000
-vt 0.25000 0.75000
-vt 0.25000 0.62500
-vt 0.25000 0.50000
-vt 0.12500 0.87500
-vt 0.12500 1.00000
-vt 0.12500 0.75000
-vt 0.12500 0.62500
-vt 0.12500 0.50000
-vt 0.00000 0.87500
-vt 0.00000 1.00000
-vt 0.00000 0.75000
-vt 0.00000 0.62500
-vt 0.00000 0.50000
-vt 0.87500 0.37500
-vt 1.00000 0.37500
-vt 0.87500 0.25000
-vt 1.00000 0.25000
-vt 0.87500 0.12500
-vt 1.00000 0.12500
-vt 0.87500 0.00000
-vt 1.00000 0.00000
-vt 0.75000 0.37500
-vt 0.75000 0.25000
-vt 0.75000 0.12500
-vt 0.75000 0.00000
-vt 0.62500 0.37500
-vt 0.62500 0.25000
-vt 0.62500 0.12500
-vt 0.62500 0.00000
-vt 0.50000 0.37500
-vt 0.50000 0.25000
-vt 0.50000 0.12500
-vt 0.50000 0.00000
-vt 0.37500 0.37500
-vt 0.37500 0.25000
-vt 0.37500 0.12500
-vt 0.37500 0.00000
-vt 0.25000 0.37500
-vt 0.25000 0.25000
-vt 0.25000 0.12500
-vt 0.25000 0.00000
-vt 0.12500 0.37500
-vt 0.12500 0.25000
-vt 0.12500 0.12500
-vt 0.12500 0.00000
-vt 0.00000 0.37500
-vt 0.00000 0.25000
-vt 0.00000 0.12500
-vt 0.00000 0.00000
-vt 0.62500 0.22500
-vt 0.50000 0.22500
-vt 0.50000 0.00000
-vt 0.62500 0.00000
-vt 0.62500 0.45000
-vt 0.50000 0.45000
-vt 0.62500 0.67500
-vt 0.50000 0.67500
-vt 0.62500 0.90000
-vt 0.50000 0.90000
-vt 0.75000 0.22500
-vt 0.75000 0.00000
-vt 0.75000 0.45000
-vt 0.75000 0.67500
-vt 0.75000 0.90000
-vt 0.87500 0.22500
-vt 0.87500 0.00000
-vt 0.87500 0.45000
-vt 0.87500 0.67500
-vt 0.87500 0.90000
-vt 1.00000 0.22500
-vt 1.00000 0.00000
-vt 1.00000 0.45000
-vt 1.00000 0.67500
-vt 1.00000 0.90000
-vt 0.12500 0.22500
-vt 0.00000 0.22500
-vt 0.00000 0.00000
-vt 0.12500 0.00000
-vt 0.12500 0.45000
-vt 0.00000 0.45000
-vt 0.12500 0.67500
-vt 0.00000 0.67500
-vt 0.12500 0.90000
-vt 0.00000 0.90000
-vt 0.25000 0.22500
-vt 0.25000 0.00000
-vt 0.25000 0.45000
-vt 0.25000 0.67500
-vt 0.25000 0.90000
-vt 0.37500 0.22500
-vt 0.37500 0.00000
-vt 0.37500 0.45000
-vt 0.37500 0.67500
-vt 0.37500 0.90000
-vt 0.62500 0.92500
-vt 0.50000 0.92500
-vt 0.62500 0.95000
-vt 0.50000 0.95000
-vt 0.62500 0.97500
-vt 0.50000 0.97500
-vt 0.62500 1.00000
-vt 0.50000 1.00000
-vt 0.75000 0.92500
-vt 0.75000 0.95000
-vt 0.75000 0.97500
-vt 0.75000 1.00000
-vt 0.87500 0.92500
-vt 0.87500 0.95000
-vt 0.87500 0.97500
-vt 0.87500 1.00000
-vt 1.00000 0.92500
-vt 1.00000 0.95000
-vt 1.00000 0.97500
-vt 1.00000 1.00000
-vt 0.12500 0.92500
-vt 0.00000 0.92500
-vt 0.12500 0.95000
-vt 0.00000 0.95000
-vt 0.12500 0.97500
-vt 0.00000 0.97500
-vt 0.12500 1.00000
-vt 0.00000 1.00000
-vt 0.25000 0.92500
-vt 0.25000 0.95000
-vt 0.25000 0.97500
-vt 0.25000 1.00000
-vt 0.37500 0.92500
-vt 0.37500 0.95000
-vt 0.37500 0.97500
-vt 0.37500 1.00000
-vt 0.87500 0.75000
-vt 1.00000 0.75000
-vt 1.00000 1.00000
-vt 0.87500 0.50000
-vt 1.00000 0.50000
-vt 0.87500 0.25000
-vt 1.00000 0.25000
-vt 0.87500 0.00000
-vt 1.00000 0.00000
-vt 0.75000 0.75000
-vt 0.87500 1.00000
-vt 0.75000 0.50000
-vt 0.75000 0.25000
-vt 0.75000 0.00000
-vt 0.62500 0.75000
-vt 0.75000 1.00000
-vt 0.62500 0.50000
-vt 0.62500 0.25000
-vt 0.62500 0.00000
-vt 0.50000 0.75000
-vt 0.62500 1.00000
-vt 0.50000 0.50000
-vt 0.50000 0.25000
-vt 0.50000 0.00000
-vt 0.37500 0.75000
-vt 0.50000 1.00000
-vt 0.37500 0.50000
-vt 0.37500 0.25000
-vt 0.37500 0.00000
-vt 0.25000 0.75000
-vt 0.37500 1.00000
-vt 0.25000 0.50000
-vt 0.25000 0.25000
-vt 0.25000 0.00000
-vt 0.12500 0.75000
-vt 0.25000 1.00000
-vt 0.12500 0.50000
-vt 0.12500 0.25000
-vt 0.12500 0.00000
-vt 0.00000 0.75000
-vt 0.12500 1.00000
-vt 0.00000 0.50000
-vt 0.00000 0.25000
-vt 0.00000 0.00000
-vt 0.87500 0.75000
-vt 1.00000 0.75000
-vt 0.87500 0.50000
-vt 1.00000 0.50000
-vt 0.87500 0.25000
-vt 1.00000 0.25000
-vt 0.87500 0.00000
-vt 1.00000 0.00000
-vt 0.75000 0.75000
-vt 0.75000 0.50000
-vt 0.75000 0.25000
-vt 0.75000 0.00000
-vt 0.62500 0.75000
-vt 0.62500 0.50000
-vt 0.62500 0.25000
-vt 0.62500 0.00000
-vt 0.50000 0.75000
-vt 0.50000 0.50000
-vt 0.50000 0.25000
-vt 0.50000 0.00000
-vt 0.37500 0.75000
-vt 0.37500 0.50000
-vt 0.37500 0.25000
-vt 0.37500 0.00000
-vt 0.25000 0.75000
-vt 0.25000 0.50000
-vt 0.25000 0.25000
-vt 0.25000 0.00000
-vt 0.12500 0.75000
-vt 0.12500 0.50000
-vt 0.12500 0.25000
-vt 0.12500 0.00000
-vt 0.00000 0.75000
-vt 0.00000 0.50000
-vt 0.00000 0.25000
-vt 0.00000 0.00000
-vt 0.87500 0.75000
-vt 1.00000 0.75000
-vt 1.00000 1.00000
-vt 0.87500 1.00000
-vt 0.87500 0.50000
-vt 1.00000 0.50000
-vt 0.87500 0.25000
-vt 1.00000 0.25000
-vt 0.87500 0.00000
-vt 1.00000 0.00000
-vt 0.75000 0.75000
-vt 0.75000 1.00000
-vt 0.75000 0.50000
-vt 0.75000 0.25000
-vt 0.75000 0.00000
-vt 0.62500 0.75000
-vt 0.62500 1.00000
-vt 0.62500 0.50000
-vt 0.62500 0.25000
-vt 0.62500 0.00000
-vt 0.50000 0.75000
-vt 0.50000 1.00000
-vt 0.50000 0.50000
-vt 0.50000 0.25000
-vt 0.50000 0.00000
-vt 0.37500 0.75000
-vt 0.37500 1.00000
-vt 0.37500 0.50000
-vt 0.37500 0.25000
-vt 0.37500 0.00000
-vt 0.25000 0.75000
-vt 0.25000 1.00000
-vt 0.25000 0.50000
-vt 0.25000 0.25000
-vt 0.25000 0.00000
-vt 0.12500 0.75000
-vt 0.12500 1.00000
-vt 0.12500 0.50000
-vt 0.12500 0.25000
-vt 0.12500 0.00000
-vt 0.00000 0.75000
-vt 0.00000 1.00000
-vt 0.00000 0.50000
-vt 0.00000 0.25000
-vt 0.00000 0.00000
-vt 0.87500 0.75000
-vt 1.00000 0.75000
-vt 1.00000 1.00000
-vt 0.87500 1.00000
-vt 0.87500 0.50000
-vt 1.00000 0.50000
-vt 0.87500 0.25000
-vt 1.00000 0.25000
-vt 0.87500 0.00000
-vt 1.00000 0.00000
-vt 0.75000 0.75000
-vt 0.75000 1.00000
-vt 0.75000 0.50000
-vt 0.75000 0.25000
-vt 0.75000 0.00000
-vt 0.62500 0.75000
-vt 0.62500 1.00000
-vt 0.62500 0.50000
-vt 0.62500 0.25000
-vt 0.62500 0.00000
-vt 0.50000 0.75000
-vt 0.50000 1.00000
-vt 0.50000 0.50000
-vt 0.50000 0.25000
-vt 0.50000 0.00000
-vt 0.37500 0.75000
-vt 0.37500 1.00000
-vt 0.37500 0.50000
-vt 0.37500 0.25000
-vt 0.37500 0.00000
-vt 0.25000 0.75000
-vt 0.25000 1.00000
-vt 0.25000 0.50000
-vt 0.25000 0.25000
-vt 0.25000 0.00000
-vt 0.12500 0.75000
-vt 0.12500 1.00000
-vt 0.12500 0.50000
-vt 0.12500 0.25000
-vt 0.12500 0.00000
-vt 0.00000 0.75000
-vt 0.00000 1.00000
-vt 0.00000 0.50000
-vt 0.00000 0.25000
-vt 0.00000 0.00000
-vn -0.89340000 0.36910000 0.25600000
-vn -0.96680000 0.00000000 0.25540000
-vn -0.96670000 0.00000000 -0.25580000
-vn -0.89300000 0.36990000 -0.25630000
-vn -0.08390000 0.03550000 0.99580000
-vn -0.09210000 0.00000000 0.99580000
-vn 0.62970000 -0.26040000 0.73190000
-vn 0.68200000 0.00000000 0.73130000
-vn 0.80370000 -0.33260000 0.49340000
-vn 0.87030000 0.00000000 0.49250000
-vn -0.68350000 0.68350000 0.25610000
-vn -0.68340000 0.68340000 -0.25670000
-vn -0.06490000 0.06490000 0.99580000
-vn 0.48140000 -0.48140000 0.73250000
-vn 0.61480000 -0.61480000 0.49400000
-vn -0.36910000 0.89340000 0.25600000
-vn -0.36990000 0.89300000 -0.25630000
-vn -0.03550000 0.08390000 0.99580000
-vn 0.26040000 -0.62970000 0.73190000
-vn 0.33260000 -0.80370000 0.49340000
-vn -0.00190000 0.96700000 0.25470000
-vn -0.00280000 0.96620000 -0.25790000
-vn -0.00030000 0.09230000 0.99570000
-vn 0.00000000 -0.68210000 0.73130000
-vn 0.00000000 -0.87030000 0.49250000
-vn 0.37710000 0.91410000 0.14910000
-vn 0.37910000 0.85280000 -0.35930000
-vn 0.02750000 0.12260000 0.99210000
-vn -0.26100000 -0.63540000 0.72680000
-vn -0.33250000 -0.80430000 0.49250000
-vn 0.71270000 0.69760000 0.07370000
-vn 0.66350000 0.62530000 -0.41080000
-vn 0.09970000 0.12200000 0.98750000
-vn -0.48730000 -0.48860000 0.72380000
-vn -0.61520000 -0.61550000 0.49260000
-vn 0.91730000 0.36150000 0.16710000
-vn 0.88000000 0.33870000 -0.33290000
-vn 0.11360000 0.04810000 0.99240000
-vn -0.63410000 -0.26190000 0.72750000
-vn -0.80410000 -0.33270000 0.49260000
-vn 0.96740000 -0.00810000 0.25300000
-vn 0.96670000 -0.01050000 -0.25570000
-vn 0.09340000 -0.00130000 0.99560000
-vn -0.68220000 0.00030000 0.73120000
-vn -0.87030000 0.00010000 0.49250000
-vn 0.89340000 -0.36910000 0.25600000
-vn 0.96740000 -0.00810000 0.25300000
-vn 0.96670000 -0.01050000 -0.25570000
-vn 0.89300000 -0.36990000 -0.25630000
-vn 0.08390000 -0.03550000 0.99580000
-vn 0.09340000 -0.00130000 0.99560000
-vn -0.62970000 0.26040000 0.73190000
-vn -0.68220000 0.00030000 0.73120000
-vn -0.80370000 0.33260000 0.49340000
-vn -0.87030000 0.00010000 0.49250000
-vn 0.68350000 -0.68350000 0.25610000
-vn 0.68340000 -0.68340000 -0.25670000
-vn 0.06490000 -0.06490000 0.99580000
-vn -0.48140000 0.48140000 0.73250000
-vn -0.61480000 0.61480000 0.49400000
-vn 0.36910000 -0.89340000 0.25600000
-vn 0.36990000 -0.89300000 -0.25630000
-vn 0.03550000 -0.08390000 0.99580000
-vn -0.26040000 0.62970000 0.73190000
-vn -0.33260000 0.80370000 0.49340000
-vn 0.00000000 -0.96680000 0.25540000
-vn 0.00000000 -0.96670000 -0.25580000
-vn 0.00000000 -0.09210000 0.99580000
-vn 0.00000000 0.68200000 0.73130000
-vn 0.00000000 0.87030000 0.49250000
-vn -0.36910000 -0.89340000 0.25600000
-vn -0.36990000 -0.89300000 -0.25630000
-vn -0.03550000 -0.08390000 0.99580000
-vn 0.26040000 0.62970000 0.73190000
-vn 0.33260000 0.80370000 0.49340000
-vn -0.68350000 -0.68350000 0.25610000
-vn -0.68340000 -0.68340000 -0.25670000
-vn -0.06490000 -0.06490000 0.99580000
-vn 0.48140000 0.48140000 0.73250000
-vn 0.61480000 0.61480000 0.49400000
-vn -0.89340000 -0.36910000 0.25600000
-vn -0.89300000 -0.36990000 -0.25630000
-vn -0.08390000 -0.03550000 0.99580000
-vn 0.62970000 0.26040000 0.73190000
-vn 0.80370000 0.33260000 0.49340000
-vn -0.96680000 0.00000000 0.25540000
-vn -0.96670000 0.00000000 -0.25580000
-vn -0.09210000 0.00000000 0.99580000
-vn 0.68200000 0.00000000 0.73130000
-vn 0.87030000 0.00000000 0.49250000
-vn 0.84540000 -0.34980000 0.40350000
-vn 0.91530000 0.00000000 0.40270000
-vn 0.87000000 -0.36000000 0.33690000
-vn 0.94180000 0.00000000 0.33620000
-vn 0.90420000 -0.37430000 0.20580000
-vn 0.97870000 0.00000000 0.20530000
-vn 0.92190000 -0.38180000 -0.06640000
-vn 0.99780000 0.00000000 -0.06620000
-vn 0.64680000 -0.64680000 0.40410000
-vn 0.66570000 -0.66570000 0.33740000
-vn 0.69190000 -0.69190000 0.20610000
-vn 0.70550000 -0.70550000 -0.06650000
-vn 0.34980000 -0.84540000 0.40350000
-vn 0.36000000 -0.87000000 0.33690000
-vn 0.37430000 -0.90420000 0.20580000
-vn 0.38180000 -0.92190000 -0.06640000
-vn 0.00000000 -0.91530000 0.40270000
-vn 0.00000000 -0.94180000 0.33620000
-vn 0.00000000 -0.97870000 0.20530000
-vn 0.00000000 -0.99780000 -0.06620000
-vn -0.34980000 -0.84540000 0.40350000
-vn -0.36000000 -0.87000000 0.33690000
-vn -0.37430000 -0.90420000 0.20580000
-vn -0.38180000 -0.92190000 -0.06640000
-vn -0.64680000 -0.64680000 0.40410000
-vn -0.66570000 -0.66570000 0.33740000
-vn -0.69190000 -0.69190000 0.20610000
-vn -0.70550000 -0.70550000 -0.06650000
-vn -0.84540000 -0.34980000 0.40350000
-vn -0.87000000 -0.36000000 0.33690000
-vn -0.90420000 -0.37430000 0.20580000
-vn -0.92190000 -0.38180000 -0.06640000
-vn -0.91530000 0.00000000 0.40270000
-vn -0.94180000 0.00000000 0.33620000
-vn -0.97870000 0.00000000 0.20530000
-vn -0.99780000 0.00000000 -0.06620000
-vn -0.84540000 0.34980000 0.40350000
-vn -0.91530000 0.00000000 0.40270000
-vn -0.87000000 0.36000000 0.33690000
-vn -0.94180000 0.00000000 0.33620000
-vn -0.90420000 0.37430000 0.20580000
-vn -0.97870000 0.00000000 0.20530000
-vn -0.92190000 0.38180000 -0.06640000
-vn -0.99780000 0.00000000 -0.06620000
-vn -0.64680000 0.64680000 0.40410000
-vn -0.66570000 0.66570000 0.33740000
-vn -0.69190000 0.69190000 0.20610000
-vn -0.70550000 0.70550000 -0.06650000
-vn -0.34980000 0.84540000 0.40350000
-vn -0.36000000 0.87000000 0.33690000
-vn -0.37430000 0.90420000 0.20580000
-vn -0.38180000 0.92190000 -0.06640000
-vn 0.00000000 0.91530000 0.40270000
-vn 0.00000000 0.94180000 0.33620000
-vn 0.00000000 0.97870000 0.20530000
-vn 0.00000000 0.99780000 -0.06620000
-vn 0.34980000 0.84540000 0.40350000
-vn 0.36000000 0.87000000 0.33690000
-vn 0.37430000 0.90420000 0.20580000
-vn 0.38180000 0.92190000 -0.06640000
-vn 0.64680000 0.64680000 0.40410000
-vn 0.66570000 0.66570000 0.33740000
-vn 0.69190000 0.69190000 0.20610000
-vn 0.70550000 0.70550000 -0.06650000
-vn 0.84540000 0.34980000 0.40350000
-vn 0.87000000 0.36000000 0.33690000
-vn 0.90420000 0.37430000 0.20580000
-vn 0.92190000 0.38180000 -0.06640000
-vn 0.91530000 0.00000000 0.40270000
-vn 0.94180000 0.00000000 0.33620000
-vn 0.97870000 0.00000000 0.20530000
-vn 0.99780000 0.00000000 -0.06620000
-vn 0.83140000 -0.34420000 -0.43620000
-vn 0.90020000 0.00000000 -0.43550000
-vn 0.67350000 -0.27860000 -0.68470000
-vn 0.72960000 0.00000000 -0.68390000
-vn 0.64040000 -0.26490000 -0.72090000
-vn 0.69400000 0.00000000 -0.72000000
-vn 0.73290000 -0.30320000 -0.60900000
-vn 0.79390000 0.00000000 -0.60800000
-vn 0.63610000 -0.63610000 -0.43680000
-vn 0.51500000 -0.51500000 -0.68530000
-vn 0.48970000 -0.48970000 -0.72140000
-vn 0.56060000 -0.56060000 -0.60960000
-vn 0.34420000 -0.83140000 -0.43620000
-vn 0.27860000 -0.67350000 -0.68470000
-vn 0.26490000 -0.64040000 -0.72090000
-vn 0.30320000 -0.73290000 -0.60900000
-vn 0.00000000 -0.90020000 -0.43550000
-vn 0.00000000 -0.72960000 -0.68390000
-vn 0.00000000 -0.69400000 -0.72000000
-vn 0.00000000 -0.79390000 -0.60800000
-vn -0.34420000 -0.83140000 -0.43620000
-vn -0.27860000 -0.67350000 -0.68470000
-vn -0.26490000 -0.64040000 -0.72090000
-vn -0.30320000 -0.73290000 -0.60900000
-vn -0.63610000 -0.63610000 -0.43680000
-vn -0.51500000 -0.51500000 -0.68530000
-vn -0.48970000 -0.48970000 -0.72140000
-vn -0.56060000 -0.56060000 -0.60960000
-vn -0.83140000 -0.34420000 -0.43620000
-vn -0.67350000 -0.27860000 -0.68470000
-vn -0.64040000 -0.26490000 -0.72090000
-vn -0.73290000 -0.30320000 -0.60900000
-vn -0.90020000 0.00000000 -0.43550000
-vn -0.72960000 0.00000000 -0.68390000
-vn -0.69400000 0.00000000 -0.72000000
-vn -0.79390000 0.00000000 -0.60800000
-vn -0.83140000 0.34420000 -0.43620000
-vn -0.90020000 0.00000000 -0.43550000
-vn -0.67350000 0.27860000 -0.68470000
-vn -0.72960000 0.00000000 -0.68390000
-vn -0.64040000 0.26490000 -0.72090000
-vn -0.69400000 0.00000000 -0.72000000
-vn -0.73290000 0.30320000 -0.60900000
-vn -0.79390000 0.00000000 -0.60800000
-vn -0.63610000 0.63610000 -0.43680000
-vn -0.51500000 0.51500000 -0.68530000
-vn -0.48970000 0.48970000 -0.72140000
-vn -0.56060000 0.56060000 -0.60960000
-vn -0.34420000 0.83140000 -0.43620000
-vn -0.27860000 0.67350000 -0.68470000
-vn -0.26490000 0.64040000 -0.72090000
-vn -0.30320000 0.73290000 -0.60900000
-vn 0.00000000 0.90020000 -0.43550000
-vn 0.00000000 0.72960000 -0.68390000
-vn 0.00000000 0.69400000 -0.72000000
-vn 0.00000000 0.79390000 -0.60800000
-vn 0.34420000 0.83140000 -0.43620000
-vn 0.27860000 0.67350000 -0.68470000
-vn 0.26490000 0.64040000 -0.72090000
-vn 0.30320000 0.73290000 -0.60900000
-vn 0.63610000 0.63610000 -0.43680000
-vn 0.51500000 0.51500000 -0.68530000
-vn 0.48970000 0.48970000 -0.72140000
-vn 0.56060000 0.56060000 -0.60960000
-vn 0.83140000 0.34420000 -0.43620000
-vn 0.67350000 0.27860000 -0.68470000
-vn 0.64040000 0.26490000 -0.72090000
-vn 0.73290000 0.30320000 -0.60900000
-vn 0.90020000 0.00000000 -0.43550000
-vn 0.72960000 0.00000000 -0.68390000
-vn 0.69400000 0.00000000 -0.72000000
-vn 0.79390000 0.00000000 -0.60800000
-vn 0.57620000 -0.23820000 -0.78180000
-vn 0.62390000 0.00000000 -0.78150000
-vn 0.16360000 -0.06750000 -0.98420000
-vn 0.17730000 0.00000000 -0.98420000
-vn 0.04540000 -0.01870000 -0.99880000
-vn 0.04920000 0.00000000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn 0.44040000 -0.44040000 -0.78230000
-vn 0.12490000 -0.12490000 -0.98430000
-vn 0.03470000 -0.03470000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn 0.23820000 -0.57620000 -0.78180000
-vn 0.06750000 -0.16360000 -0.98420000
-vn 0.01870000 -0.04540000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn 0.00000000 -0.62390000 -0.78150000
-vn 0.00000000 -0.17730000 -0.98420000
-vn 0.00000000 -0.04920000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn -0.23820000 -0.57620000 -0.78180000
-vn -0.06750000 -0.16360000 -0.98420000
-vn -0.01870000 -0.04540000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn -0.44040000 -0.44040000 -0.78230000
-vn -0.12490000 -0.12490000 -0.98430000
-vn -0.03470000 -0.03470000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn -0.57620000 -0.23820000 -0.78180000
-vn -0.16360000 -0.06750000 -0.98420000
-vn -0.04540000 -0.01870000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn -0.62390000 0.00000000 -0.78150000
-vn -0.17730000 0.00000000 -0.98420000
-vn -0.04920000 0.00000000 -0.99880000
-vn 0.00000000 0.00000000 -1.00000000
-vn -0.57620000 0.23820000 -0.78180000
-vn -0.62390000 0.00000000 -0.78150000
-vn -0.16360000 0.06750000 -0.98420000
-vn -0.17730000 0.00000000 -0.98420000
-vn -0.04540000 0.01870000 -0.99880000
-vn -0.04920000 0.00000000 -0.99880000
-vn -0.44040000 0.44040000 -0.78230000
-vn -0.12490000 0.12490000 -0.98430000
-vn -0.03470000 0.03470000 -0.99880000
-vn -0.23820000 0.57620000 -0.78180000
-vn -0.06750000 0.16360000 -0.98420000
-vn -0.01870000 0.04540000 -0.99880000
-vn 0.00000000 0.62390000 -0.78150000
-vn 0.00000000 0.17730000 -0.98420000
-vn 0.00000000 0.04920000 -0.99880000
-vn 0.23820000 0.57620000 -0.78180000
-vn 0.06750000 0.16360000 -0.98420000
-vn 0.01870000 0.04540000 -0.99880000
-vn 0.44040000 0.44040000 -0.78230000
-vn 0.12490000 0.12490000 -0.98430000
-vn 0.03470000 0.03470000 -0.99880000
-vn 0.57620000 0.23820000 -0.78180000
-vn 0.16360000 0.06750000 -0.98420000
-vn 0.04540000 0.01870000 -0.99880000
-vn 0.62390000 0.00000000 -0.78150000
-vn 0.17730000 0.00000000 -0.98420000
-vn 0.04920000 0.00000000 -0.99880000
-vn 0.03610000 -0.54560000 -0.83730000
-vn 0.03910000 0.00100000 -0.99920000
-vn 0.00780000 0.00020000 -1.00000000
-vn 0.00700000 -0.58290000 -0.81250000
-vn 0.16180000 -0.56300000 -0.81040000
-vn 0.17950000 0.00440000 -0.98370000
-vn 0.48240000 -0.64270000 -0.59510000
-vn 0.61230000 0.01050000 -0.79060000
-vn 0.73870000 -0.66420000 -0.11460000
-vn 0.98620000 0.00670000 -0.16570000
-vn 0.00280000 -0.99980000 0.01710000
-vn -0.00190000 -0.98680000 0.16210000
-vn 0.01050000 -0.99720000 0.07340000
-vn -0.06600000 -0.98930000 0.13010000
-vn -0.09440000 -0.99540000 0.01660000
-vn -0.04860000 -0.53950000 0.84060000
-vn -0.00920000 -0.49030000 0.87150000
-vn -0.22330000 -0.55270000 0.80290000
-vn -0.59640000 -0.57510000 0.56000000
-vn -0.80330000 -0.59160000 0.06820000
-vn -0.05880000 -0.00070000 0.99830000
-vn -0.01060000 -0.00010000 0.99990000
-vn -0.28070000 -0.00330000 0.95980000
-vn -0.74970000 -0.00430000 0.66170000
-vn -0.99740000 -0.00210000 0.07270000
-vn -0.04650000 0.53880000 0.84120000
-vn -0.00880000 0.49030000 0.87150000
-vn -0.21790000 0.54920000 0.80680000
-vn -0.59730000 0.57410000 0.56000000
-vn -0.80400000 0.59130000 0.06290000
-vn 0.00200000 0.99990000 0.01460000
-vn -0.00180000 0.98680000 0.16170000
-vn 0.00920000 0.99820000 0.06010000
-vn -0.05930000 0.99170000 0.11390000
-vn -0.08690000 0.99610000 0.01230000
-vn 0.03380000 0.54540000 -0.83750000
-vn 0.00640000 0.58310000 -0.81240000
-vn 0.15710000 0.56220000 -0.81190000
-vn 0.48440000 0.64650000 -0.58940000
-vn 0.73890000 0.66620000 -0.10130000
-vn 0.03910000 0.00100000 -0.99920000
-vn 0.00780000 0.00020000 -1.00000000
-vn 0.17950000 0.00440000 -0.98370000
-vn 0.61230000 0.01050000 -0.79060000
-vn 0.98620000 0.00670000 -0.16570000
-vn 0.72560000 -0.63740000 0.25940000
-vn 0.94650000 0.00340000 0.32270000
-vn 0.64590000 -0.60770000 0.46200000
-vn 0.82580000 0.00750000 0.56390000
-vn 0.53160000 -0.55860000 0.63670000
-vn 0.65000000 0.00690000 0.75990000
-vn 0.42500000 -0.59550000 0.68170000
-vn 0.53240000 0.00520000 0.84650000
-vn -0.04960000 -0.99860000 -0.01980000
-vn -0.03780000 -0.99860000 -0.03560000
-vn -0.03790000 -0.99860000 -0.03650000
-vn -0.16890000 -0.93950000 -0.29790000
-vn -0.74230000 -0.59950000 -0.29920000
-vn -0.61960000 -0.57950000 -0.52940000
-vn -0.48370000 -0.54380000 -0.68580000
-vn -0.44530000 -0.41320000 -0.79440000
-vn -0.92650000 -0.00200000 -0.37630000
-vn -0.75390000 -0.00430000 -0.65700000
-vn -0.56620000 -0.00350000 -0.82420000
-vn -0.48180000 -0.00190000 -0.87630000
-vn -0.74470000 0.59900000 -0.29440000
-vn -0.62190000 0.57820000 -0.52810000
-vn -0.48120000 0.54280000 -0.68830000
-vn -0.43810000 0.41570000 -0.79700000
-vn -0.04430000 0.99890000 -0.01710000
-vn -0.02620000 0.99930000 -0.02820000
-vn -0.02530000 0.99930000 -0.02830000
-vn -0.15750000 0.94420000 -0.28940000
-vn 0.72820000 0.63710000 0.25240000
-vn 0.64710000 0.60830000 0.45970000
-vn 0.52300000 0.56220000 0.64070000
-vn 0.41000000 0.60470000 0.68290000
-vn 0.94650000 0.00340000 0.32270000
-vn 0.82580000 0.00750000 0.56390000
-vn 0.65000000 0.00690000 0.75990000
-vn 0.53240000 0.00520000 0.84650000
-vn -0.31670000 -0.70210000 0.63780000
-vn -0.54890000 0.00150000 0.83590000
-vn -0.23080000 0.00650000 0.97300000
-vn -0.15290000 -0.71020000 0.68720000
-vn -0.60110000 -0.64530000 0.47150000
-vn -0.87570000 -0.00990000 0.48280000
-vn -0.63590000 -0.62980000 0.44610000
-vn -0.87760000 -0.01910000 0.47910000
-vn -0.43570000 -0.67000000 0.60100000
-vn -0.69620000 -0.02450000 0.71740000
-vn 0.22330000 -0.97470000 0.00650000
-vn 0.11110000 -0.99020000 -0.08510000
-vn 0.19010000 -0.96950000 0.15500000
-vn 0.00530000 -0.98190000 0.18950000
-vn -0.01180000 -0.96900000 0.24670000
-vn 0.57250000 -0.59160000 -0.56770000
-vn 0.34390000 -0.59940000 -0.72280000
-vn 0.78740000 -0.56050000 -0.25650000
-vn 0.64710000 -0.69810000 -0.30640000
-vn 0.42750000 -0.75360000 -0.49930000
-vn 0.67150000 0.00090000 -0.74100000
-vn 0.41090000 -0.00130000 -0.91170000
-vn 0.92200000 0.00730000 -0.38710000
-vn 0.84690000 0.01390000 -0.53160000
-vn 0.53590000 0.01050000 -0.84420000
-vn 0.57870000 0.59180000 -0.56110000
-vn 0.67150000 0.00090000 -0.74100000
-vn 0.41090000 -0.00130000 -0.91170000
-vn 0.34120000 0.60090000 -0.72280000
-vn 0.78490000 0.56650000 -0.25100000
-vn 0.92200000 0.00730000 -0.38710000
-vn 0.64270000 0.70400000 -0.30230000
-vn 0.84690000 0.01390000 -0.53160000
-vn 0.41860000 0.75810000 -0.50000000
-vn 0.53590000 0.01050000 -0.84420000
-vn 0.23280000 0.97240000 0.01260000
-vn 0.11580000 0.99010000 -0.07910000
-vn 0.20670000 0.96630000 0.15360000
-vn 0.02450000 0.98660000 0.16140000
-vn 0.00340000 0.97750000 0.21110000
-vn -0.31950000 0.70510000 0.63310000
-vn -0.13490000 0.71360000 0.68750000
-vn -0.60390000 0.64990000 0.46140000
-vn -0.63180000 0.64010000 0.43720000
-vn -0.42430000 0.66670000 0.61270000
-vn -0.25990000 -0.55250000 0.79190000
-vn -0.42580000 -0.01080000 0.90480000
-vn 0.00950000 0.02170000 0.99970000
-vn 0.02200000 -0.00160000 0.99980000
-vn 0.41020000 0.84910000 0.33290000
-vn 0.99960000 -0.01160000 0.02590000
-vn 0.54150000 0.63700000 -0.54860000
-vn 0.70960000 -0.00970000 -0.70460000
-vn 0.04630000 -0.88920000 0.45520000
-vn -0.01070000 -0.14890000 0.98880000
-vn -0.04440000 0.72910000 0.68290000
-vn 0.12280000 0.99240000 0.00920000
-vn 0.48180000 -0.85750000 -0.18040000
-vn 0.45530000 -0.49990000 0.73670000
-vn -0.22050000 0.35830000 0.90720000
-vn -0.23590000 0.71580000 0.65730000
-vn 0.72810000 0.01560000 -0.68530000
-vn 0.88870000 0.01670000 0.45810000
-vn -0.26010000 -0.00080000 0.96560000
-vn -0.37160000 0.00440000 0.92840000
-vn 0.48020000 0.85890000 -0.17840000
-vn 0.72810000 0.01560000 -0.68530000
-vn 0.48810000 0.49800000 0.71680000
-vn 0.88870000 0.01670000 0.45810000
-vn -0.22200000 -0.36190000 0.90540000
-vn -0.26010000 -0.00080000 0.96560000
-vn -0.23540000 -0.71050000 0.66320000
-vn -0.37160000 0.00440000 0.92840000
-vn 0.05870000 0.89720000 0.43770000
-vn 0.00130000 0.16400000 0.98650000
-vn -0.04420000 -0.73030000 0.68170000
-vn 0.13880000 -0.98970000 -0.03420000
-vn -0.25890000 0.54540000 0.79720000
-vn 0.01230000 -0.01930000 0.99970000
-vn 0.39860000 -0.84570000 0.35490000
-vn 0.53760000 -0.61070000 -0.58140000
-vn 0.76260000 -0.31480000 0.56500000
-vn 0.82450000 0.00000000 0.56580000
-vn 0.00000000 0.00000000 1.00000000
-vn 0.84800000 -0.35000000 -0.39800000
-vn 0.91770000 0.00000000 -0.39730000
-vn 0.86410000 -0.35640000 -0.35530000
-vn 0.93530000 -0.00010000 -0.35390000
-vn 0.72100000 -0.29790000 0.62560000
-vn 0.78070000 -0.00010000 0.62490000
-vn 0.58340000 -0.58330000 0.56520000
-vn 0.00000000 0.00000000 1.00000000
-vn 0.64850000 -0.64840000 -0.39870000
-vn 0.66090000 -0.66070000 -0.35590000
-vn 0.55190000 -0.55180000 0.62530000
-vn 0.31480000 -0.76260000 0.56510000
-vn 0.00000000 0.00000000 1.00000000
-vn 0.35000000 -0.84800000 -0.39800000
-vn 0.35650000 -0.86420000 -0.35520000
-vn 0.29800000 -0.72110000 0.62550000
-vn 0.00000000 -0.82450000 0.56580000
-vn 0.00000000 0.00000000 1.00000000
-vn 0.00000000 -0.91770000 -0.39730000
-vn -0.00010000 -0.93530000 -0.35390000
-vn -0.00010000 -0.78070000 0.62490000
-vn -0.31480000 -0.76260000 0.56500000
-vn 0.00000000 0.00000000 1.00000000
-vn -0.35000000 -0.84800000 -0.39800000
-vn -0.35640000 -0.86410000 -0.35530000
-vn -0.29790000 -0.72100000 0.62560000
-vn -0.58330000 -0.58340000 0.56520000
-vn 0.00000000 0.00000000 1.00000000
-vn -0.64840000 -0.64850000 -0.39870000
-vn -0.66070000 -0.66090000 -0.35590000
-vn -0.55180000 -0.55190000 0.62530000
-vn -0.76260000 -0.31480000 0.56510000
-vn 0.00000000 0.00000000 1.00000000
-vn -0.84800000 -0.35000000 -0.39800000
-vn -0.86420000 -0.35650000 -0.35520000
-vn -0.72110000 -0.29800000 0.62550000
-vn -0.82450000 0.00000000 0.56580000
-vn 0.00000000 0.00000000 1.00000000
-vn -0.91770000 0.00000000 -0.39730000
-vn -0.93530000 0.00010000 -0.35390000
-vn -0.78070000 0.00010000 0.62490000
-vn -0.76260000 0.31480000 0.56500000
-vn -0.82450000 0.00000000 0.56580000
-vn -0.84800000 0.35000000 -0.39800000
-vn -0.91770000 0.00000000 -0.39730000
-vn -0.86410000 0.35640000 -0.35530000
-vn -0.93530000 0.00010000 -0.35390000
-vn -0.72100000 0.29790000 0.62560000
-vn -0.78070000 0.00010000 0.62490000
-vn -0.58340000 0.58330000 0.56520000
-vn -0.64850000 0.64840000 -0.39870000
-vn -0.66090000 0.66070000 -0.35590000
-vn -0.55190000 0.55180000 0.62530000
-vn -0.31480000 0.76260000 0.56510000
-vn -0.35000000 0.84800000 -0.39800000
-vn -0.35650000 0.86420000 -0.35520000
-vn -0.29800000 0.72110000 0.62550000
-vn 0.00000000 0.82450000 0.56580000
-vn 0.00000000 0.91770000 -0.39730000
-vn 0.00010000 0.93530000 -0.35390000
-vn 0.00010000 0.78070000 0.62490000
-vn 0.31480000 0.76260000 0.56500000
-vn 0.35000000 0.84800000 -0.39800000
-vn 0.35640000 0.86410000 -0.35530000
-vn 0.29790000 0.72100000 0.62560000
-vn 0.58330000 0.58340000 0.56520000
-vn 0.64840000 0.64850000 -0.39870000
-vn 0.66070000 0.66090000 -0.35590000
-vn 0.55180000 0.55190000 0.62530000
-vn 0.76260000 0.31480000 0.56510000
-vn 0.84800000 0.35000000 -0.39800000
-vn 0.86420000 0.35650000 -0.35520000
-vn 0.72110000 0.29800000 0.62550000
-vn 0.82450000 0.00000000 0.56580000
-vn 0.91770000 0.00000000 -0.39730000
-vn 0.93530000 -0.00010000 -0.35390000
-vn 0.78070000 -0.00010000 0.62490000
-vn 0.21800000 -0.09020000 0.97180000
-vn 0.23660000 0.00000000 0.97160000
-vn 0.78070000 -0.00010000 0.62490000
-vn 0.72100000 -0.29790000 0.62560000
-vn 0.15960000 -0.06600000 0.98500000
-vn 0.17310000 0.00000000 0.98490000
-vn 0.35050000 -0.14470000 0.92530000
-vn 0.37970000 0.00000000 0.92510000
-vn 0.48560000 -0.20150000 0.85070000
-vn 0.52670000 0.00000000 0.85010000
-vn 0.16660000 -0.16660000 0.97180000
-vn 0.55190000 -0.55180000 0.62530000
-vn 0.12190000 -0.12190000 0.98500000
-vn 0.26770000 -0.26770000 0.92560000
-vn 0.37130000 -0.37130000 0.85100000
-vn 0.09020000 -0.21800000 0.97180000
-vn 0.29800000 -0.72110000 0.62550000
-vn 0.06600000 -0.15960000 0.98500000
-vn 0.14470000 -0.35050000 0.92530000
-vn 0.20150000 -0.48560000 0.85070000
-vn 0.00000000 -0.23660000 0.97160000
-vn -0.00010000 -0.78070000 0.62490000
-vn 0.00000000 -0.17310000 0.98490000
-vn 0.00000000 -0.37970000 0.92510000
-vn 0.00000000 -0.52670000 0.85010000
-vn -0.09020000 -0.21800000 0.97180000
-vn -0.29790000 -0.72100000 0.62560000
-vn -0.06600000 -0.15960000 0.98500000
-vn -0.14470000 -0.35050000 0.92530000
-vn -0.20150000 -0.48560000 0.85070000
-vn -0.16660000 -0.16660000 0.97180000
-vn -0.55180000 -0.55190000 0.62530000
-vn -0.12190000 -0.12190000 0.98500000
-vn -0.26770000 -0.26770000 0.92560000
-vn -0.37130000 -0.37130000 0.85100000
-vn -0.21800000 -0.09020000 0.97180000
-vn -0.72110000 -0.29800000 0.62550000
-vn -0.15960000 -0.06600000 0.98500000
-vn -0.35050000 -0.14470000 0.92530000
-vn -0.48560000 -0.20150000 0.85070000
-vn -0.23660000 0.00000000 0.97160000
-vn -0.78070000 0.00010000 0.62490000
-vn -0.17310000 0.00000000 0.98490000
-vn -0.37970000 0.00000000 0.92510000
-vn -0.52670000 0.00000000 0.85010000
-vn -0.21800000 0.09020000 0.97180000
-vn -0.23660000 0.00000000 0.97160000
-vn -0.78070000 0.00010000 0.62490000
-vn -0.72100000 0.29790000 0.62560000
-vn -0.15960000 0.06600000 0.98500000
-vn -0.17310000 0.00000000 0.98490000
-vn -0.35050000 0.14470000 0.92530000
-vn -0.37970000 0.00000000 0.92510000
-vn -0.48560000 0.20150000 0.85070000
-vn -0.52670000 0.00000000 0.85010000
-vn -0.16660000 0.16660000 0.97180000
-vn -0.55190000 0.55180000 0.62530000
-vn -0.12190000 0.12190000 0.98500000
-vn -0.26770000 0.26770000 0.92560000
-vn -0.37130000 0.37130000 0.85100000
-vn -0.09020000 0.21800000 0.97180000
-vn -0.29800000 0.72110000 0.62550000
-vn -0.06600000 0.15960000 0.98500000
-vn -0.14470000 0.35050000 0.92530000
-vn -0.20150000 0.48560000 0.85070000
-vn 0.00000000 0.23660000 0.97160000
-vn 0.00010000 0.78070000 0.62490000
-vn 0.00000000 0.17310000 0.98490000
-vn 0.00000000 0.37970000 0.92510000
-vn 0.00000000 0.52670000 0.85010000
-vn 0.09020000 0.21800000 0.97180000
-vn 0.29790000 0.72100000 0.62560000
-vn 0.06600000 0.15960000 0.98500000
-vn 0.14470000 0.35050000 0.92530000
-vn 0.20150000 0.48560000 0.85070000
-vn 0.16660000 0.16660000 0.97180000
-vn 0.55180000 0.55190000 0.62530000
-vn 0.12190000 0.12190000 0.98500000
-vn 0.26770000 0.26770000 0.92560000
-vn 0.37130000 0.37130000 0.85100000
-vn 0.21800000 0.09020000 0.97180000
-vn 0.72110000 0.29800000 0.62550000
-vn 0.15960000 0.06600000 0.98500000
-vn 0.35050000 0.14470000 0.92530000
-vn 0.48560000 0.20150000 0.85070000
-vn 0.23660000 0.00000000 0.97160000
-vn 0.78070000 -0.00010000 0.62490000
-vn 0.17310000 0.00000000 0.98490000
-vn 0.37970000 0.00000000 0.92510000
-vn 0.52670000 0.00000000 0.85010000
-g Teapot001 Instance_0
-f 1/1/1 2/2/2 3/3/3
-f 3/3/3 4/4/4 1/1/1
-f 5/5/5 6/6/6 2/2/2
-f 2/2/2 1/1/1 5/5/5
-f 7/7/7 8/8/8 6/6/6
-f 6/6/6 5/5/5 7/7/7
-f 9/9/9 10/10/10 8/8/8
-f 8/8/8 7/7/7 9/9/9
-f 11/11/11 1/1/1 4/4/4
-f 4/4/4 12/12/12 11/11/11
-f 13/13/13 5/5/5 1/1/1
-f 1/1/1 11/11/11 13/13/13
-f 14/14/14 7/7/7 5/5/5
-f 5/5/5 13/13/13 14/14/14
-f 15/15/15 9/9/9 7/7/7
-f 7/7/7 14/14/14 15/15/15
-f 16/16/16 11/11/11 12/12/12
-f 12/12/12 17/17/17 16/16/16
-f 18/18/18 13/13/13 11/11/11
-f 11/11/11 16/16/16 18/18/18
-f 19/19/19 14/14/14 13/13/13
-f 13/13/13 18/18/18 19/19/19
-f 20/20/20 15/15/15 14/14/14
-f 14/14/14 19/19/19 20/20/20
-f 21/21/21 16/16/16 17/17/17
-f 17/17/17 22/22/22 21/21/21
-f 23/23/23 18/18/18 16/16/16
-f 16/16/16 21/21/21 23/23/23
-f 24/24/24 19/19/19 18/18/18
-f 18/18/18 23/23/23 24/24/24
-f 25/25/25 20/20/20 19/19/19
-f 19/19/19 24/24/24 25/25/25
-f 26/26/26 21/21/21 22/22/22
-f 22/22/22 27/27/27 26/26/26
-f 28/28/28 23/23/23 21/21/21
-f 21/21/21 26/26/26 28/28/28
-f 29/29/29 24/24/24 23/23/23
-f 23/23/23 28/28/28 29/29/29
-f 30/30/30 25/25/25 24/24/24
-f 24/24/24 29/29/29 30/30/30
-f 31/31/31 26/26/26 27/27/27
-f 27/27/27 32/32/32 31/31/31
-f 33/33/33 28/28/28 26/26/26
-f 26/26/26 31/31/31 33/33/33
-f 34/34/34 29/29/29 28/28/28
-f 28/28/28 33/33/33 34/34/34
-f 35/35/35 30/30/30 29/29/29
-f 29/29/29 34/34/34 35/35/35
-f 36/36/36 31/31/31 32/32/32
-f 32/32/32 37/37/37 36/36/36
-f 38/38/38 33/33/33 31/31/31
-f 31/31/31 36/36/36 38/38/38
-f 39/39/39 34/34/34 33/33/33
-f 33/33/33 38/38/38 39/39/39
-f 40/40/40 35/35/35 34/34/34
-f 34/34/34 39/39/39 40/40/40
-f 41/41/41 36/36/36 37/37/37
-f 37/37/37 42/42/42 41/41/41
-f 43/43/43 38/38/38 36/36/36
-f 36/36/36 41/41/41 43/43/43
-f 44/44/44 39/39/39 38/38/38
-f 38/38/38 43/43/43 44/44/44
-f 45/45/45 40/40/40 39/39/39
-f 39/39/39 44/44/44 45/45/45
-f 46/46/46 47/47/47 48/48/48
-f 48/48/48 49/49/49 46/46/46
-f 50/50/50 51/51/51 47/47/47
-f 47/47/47 46/46/46 50/50/50
-f 52/52/52 53/53/53 51/51/51
-f 51/51/51 50/50/50 52/52/52
-f 54/54/54 55/55/55 53/53/53
-f 53/53/53 52/52/52 54/54/54
-f 56/56/56 46/46/46 49/49/49
-f 49/49/49 57/57/57 56/56/56
-f 58/58/58 50/50/50 46/46/46
-f 46/46/46 56/56/56 58/58/58
-f 59/59/59 52/52/52 50/50/50
-f 50/50/50 58/58/58 59/59/59
-f 60/60/60 54/54/54 52/52/52
-f 52/52/52 59/59/59 60/60/60
-f 61/61/61 56/56/56 57/57/57
-f 57/57/57 62/62/62 61/61/61
-f 63/63/63 58/58/58 56/56/56
-f 56/56/56 61/61/61 63/63/63
-f 64/64/64 59/59/59 58/58/58
-f 58/58/58 63/63/63 64/64/64
-f 65/65/65 60/60/60 59/59/59
-f 59/59/59 64/64/64 65/65/65
-f 66/66/66 61/61/61 62/62/62
-f 62/62/62 67/67/67 66/66/66
-f 68/68/68 63/63/63 61/61/61
-f 61/61/61 66/66/66 68/68/68
-f 69/69/69 64/64/64 63/63/63
-f 63/63/63 68/68/68 69/69/69
-f 70/70/70 65/65/65 64/64/64
-f 64/64/64 69/69/69 70/70/70
-f 71/71/71 66/66/66 67/67/67
-f 67/67/67 72/72/72 71/71/71
-f 73/73/73 68/68/68 66/66/66
-f 66/66/66 71/71/71 73/73/73
-f 74/74/74 69/69/69 68/68/68
-f 68/68/68 73/73/73 74/74/74
-f 75/75/75 70/70/70 69/69/69
-f 69/69/69 74/74/74 75/75/75
-f 76/76/76 71/71/71 72/72/72
-f 72/72/72 77/77/77 76/76/76
-f 78/78/78 73/73/73 71/71/71
-f 71/71/71 76/76/76 78/78/78
-f 79/79/79 74/74/74 73/73/73
-f 73/73/73 78/78/78 79/79/79
-f 80/80/80 75/75/75 74/74/74
-f 74/74/74 79/79/79 80/80/80
-f 81/81/81 76/76/76 77/77/77
-f 77/77/77 82/82/82 81/81/81
-f 83/83/83 78/78/78 76/76/76
-f 76/76/76 81/81/81 83/83/83
-f 84/84/84 79/79/79 78/78/78
-f 78/78/78 83/83/83 84/84/84
-f 85/85/85 80/80/80 79/79/79
-f 79/79/79 84/84/84 85/85/85
-f 86/86/86 81/81/81 82/82/82
-f 82/82/82 87/87/87 86/86/86
-f 88/88/88 83/83/83 81/81/81
-f 81/81/81 86/86/86 88/88/88
-f 89/89/89 84/84/84 83/83/83
-f 83/83/83 88/88/88 89/89/89
-f 90/90/90 85/85/85 84/84/84
-f 84/84/84 89/89/89 90/90/90
-f 91/91/91 92/92/92 10/10/10
-f 10/10/10 9/9/9 91/91/91
-f 93/93/93 94/94/94 92/92/92
-f 92/92/92 91/91/91 93/93/93
-f 95/95/95 96/96/96 94/94/94
-f 94/94/94 93/93/93 95/95/95
-f 97/97/97 98/98/98 96/96/96
-f 96/96/96 95/95/95 97/97/97
-f 99/99/99 91/91/91 9/9/9
-f 9/9/9 15/15/15 99/99/99
-f 100/100/100 93/93/93 91/91/91
-f 91/91/91 99/99/99 100/100/100
-f 101/101/101 95/95/95 93/93/93
-f 93/93/93 100/100/100 101/101/101
-f 102/102/102 97/97/97 95/95/95
-f 95/95/95 101/101/101 102/102/102
-f 103/103/103 99/99/99 15/15/15
-f 15/15/15 20/20/20 103/103/103
-f 104/104/104 100/100/100 99/99/99
-f 99/99/99 103/103/103 104/104/104
-f 105/105/105 101/101/101 100/100/100
-f 100/100/100 104/104/104 105/105/105
-f 106/106/106 102/102/102 101/101/101
-f 101/101/101 105/105/105 106/106/106
-f 107/107/107 103/103/103 20/20/20
-f 20/20/20 25/25/25 107/107/107
-f 108/108/108 104/104/104 103/103/103
-f 103/103/103 107/107/107 108/108/108
-f 109/109/109 105/105/105 104/104/104
-f 104/104/104 108/108/108 109/109/109
-f 110/110/110 106/106/106 105/105/105
-f 105/105/105 109/109/109 110/110/110
-f 111/111/111 107/107/107 25/25/25
-f 25/25/25 30/30/30 111/111/111
-f 112/112/112 108/108/108 107/107/107
-f 107/107/107 111/111/111 112/112/112
-f 113/113/113 109/109/109 108/108/108
-f 108/108/108 112/112/112 113/113/113
-f 114/114/114 110/110/110 109/109/109
-f 109/109/109 113/113/113 114/114/114
-f 115/115/115 111/111/111 30/30/30
-f 30/30/30 35/35/35 115/115/115
-f 116/116/116 112/112/112 111/111/111
-f 111/111/111 115/115/115 116/116/116
-f 117/117/117 113/113/113 112/112/112
-f 112/112/112 116/116/116 117/117/117
-f 118/118/118 114/114/114 113/113/113
-f 113/113/113 117/117/117 118/118/118
-f 119/119/119 115/115/115 35/35/35
-f 35/35/35 40/40/40 119/119/119
-f 120/120/120 116/116/116 115/115/115
-f 115/115/115 119/119/119 120/120/120
-f 121/121/121 117/117/117 116/116/116
-f 116/116/116 120/120/120 121/121/121
-f 122/122/122 118/118/118 117/117/117
-f 117/117/117 121/121/121 122/122/122
-f 123/123/123 119/119/119 40/40/40
-f 40/40/40 45/45/45 123/123/123
-f 124/124/124 120/120/120 119/119/119
-f 119/119/119 123/123/123 124/124/124
-f 125/125/125 121/121/121 120/120/120
-f 120/120/120 124/124/124 125/125/125
-f 126/126/126 122/122/122 121/121/121
-f 121/121/121 125/125/125 126/126/126
-f 127/127/127 128/128/128 55/55/55
-f 55/55/55 54/54/54 127/127/127
-f 129/129/129 130/130/130 128/128/128
-f 128/128/128 127/127/127 129/129/129
-f 131/131/131 132/132/132 130/130/130
-f 130/130/130 129/129/129 131/131/131
-f 133/133/133 134/134/134 132/132/132
-f 132/132/132 131/131/131 133/133/133
-f 135/135/135 127/127/127 54/54/54
-f 54/54/54 60/60/60 135/135/135
-f 136/136/136 129/129/129 127/127/127
-f 127/127/127 135/135/135 136/136/136
-f 137/137/137 131/131/131 129/129/129
-f 129/129/129 136/136/136 137/137/137
-f 138/138/138 133/133/133 131/131/131
-f 131/131/131 137/137/137 138/138/138
-f 139/139/139 135/135/135 60/60/60
-f 60/60/60 65/65/65 139/139/139
-f 140/140/140 136/136/136 135/135/135
-f 135/135/135 139/139/139 140/140/140
-f 141/141/141 137/137/137 136/136/136
-f 136/136/136 140/140/140 141/141/141
-f 142/142/142 138/138/138 137/137/137
-f 137/137/137 141/141/141 142/142/142
-f 143/143/143 139/139/139 65/65/65
-f 65/65/65 70/70/70 143/143/143
-f 144/144/144 140/140/140 139/139/139
-f 139/139/139 143/143/143 144/144/144
-f 145/145/145 141/141/141 140/140/140
-f 140/140/140 144/144/144 145/145/145
-f 146/146/146 142/142/142 141/141/141
-f 141/141/141 145/145/145 146/146/146
-f 147/147/147 143/143/143 70/70/70
-f 70/70/70 75/75/75 147/147/147
-f 148/148/148 144/144/144 143/143/143
-f 143/143/143 147/147/147 148/148/148
-f 149/149/149 145/145/145 144/144/144
-f 144/144/144 148/148/148 149/149/149
-f 150/150/150 146/146/146 145/145/145
-f 145/145/145 149/149/149 150/150/150
-f 151/151/151 147/147/147 75/75/75
-f 75/75/75 80/80/80 151/151/151
-f 152/152/152 148/148/148 147/147/147
-f 147/147/147 151/151/151 152/152/152
-f 153/153/153 149/149/149 148/148/148
-f 148/148/148 152/152/152 153/153/153
-f 154/154/154 150/150/150 149/149/149
-f 149/149/149 153/153/153 154/154/154
-f 155/155/155 151/151/151 80/80/80
-f 80/80/80 85/85/85 155/155/155
-f 156/156/156 152/152/152 151/151/151
-f 151/151/151 155/155/155 156/156/156
-f 157/157/157 153/153/153 152/152/152
-f 152/152/152 156/156/156 157/157/157
-f 158/158/158 154/154/154 153/153/153
-f 153/153/153 157/157/157 158/158/158
-f 159/159/159 155/155/155 85/85/85
-f 85/85/85 90/90/90 159/159/159
-f 160/160/160 156/156/156 155/155/155
-f 155/155/155 159/159/159 160/160/160
-f 161/161/161 157/157/157 156/156/156
-f 156/156/156 160/160/160 161/161/161
-f 162/162/162 158/158/158 157/157/157
-f 157/157/157 161/161/161 162/162/162
-f 163/163/163 164/164/164 98/98/98
-f 98/98/98 97/97/97 163/163/163
-f 165/165/165 166/166/166 164/164/164
-f 164/164/164 163/163/163 165/165/165
-f 167/167/167 168/168/168 166/166/166
-f 166/166/166 165/165/165 167/167/167
-f 169/169/169 170/170/170 168/168/168
-f 168/168/168 167/167/167 169/169/169
-f 171/171/171 163/163/163 97/97/97
-f 97/97/97 102/102/102 171/171/171
-f 172/172/172 165/165/165 163/163/163
-f 163/163/163 171/171/171 172/172/172
-f 173/173/173 167/167/167 165/165/165
-f 165/165/165 172/172/172 173/173/173
-f 174/174/174 169/169/169 167/167/167
-f 167/167/167 173/173/173 174/174/174
-f 175/175/175 171/171/171 102/102/102
-f 102/102/102 106/106/106 175/175/175
-f 176/176/176 172/172/172 171/171/171
-f 171/171/171 175/175/175 176/176/176
-f 177/177/177 173/173/173 172/172/172
-f 172/172/172 176/176/176 177/177/177
-f 178/178/178 174/174/174 173/173/173
-f 173/173/173 177/177/177 178/178/178
-f 179/179/179 175/175/175 106/106/106
-f 106/106/106 110/110/110 179/179/179
-f 180/180/180 176/176/176 175/175/175
-f 175/175/175 179/179/179 180/180/180
-f 181/181/181 177/177/177 176/176/176
-f 176/176/176 180/180/180 181/181/181
-f 182/182/182 178/178/178 177/177/177
-f 177/177/177 181/181/181 182/182/182
-f 183/183/183 179/179/179 110/110/110
-f 110/110/110 114/114/114 183/183/183
-f 184/184/184 180/180/180 179/179/179
-f 179/179/179 183/183/183 184/184/184
-f 185/185/185 181/181/181 180/180/180
-f 180/180/180 184/184/184 185/185/185
-f 186/186/186 182/182/182 181/181/181
-f 181/181/181 185/185/185 186/186/186
-f 187/187/187 183/183/183 114/114/114
-f 114/114/114 118/118/118 187/187/187
-f 188/188/188 184/184/184 183/183/183
-f 183/183/183 187/187/187 188/188/188
-f 189/189/189 185/185/185 184/184/184
-f 184/184/184 188/188/188 189/189/189
-f 190/190/190 186/186/186 185/185/185
-f 185/185/185 189/189/189 190/190/190
-f 191/191/191 187/187/187 118/118/118
-f 118/118/118 122/122/122 191/191/191
-f 192/192/192 188/188/188 187/187/187
-f 187/187/187 191/191/191 192/192/192
-f 193/193/193 189/189/189 188/188/188
-f 188/188/188 192/192/192 193/193/193
-f 194/194/194 190/190/190 189/189/189
-f 189/189/189 193/193/193 194/194/194
-f 195/195/195 191/191/191 122/122/122
-f 122/122/122 126/126/126 195/195/195
-f 196/196/196 192/192/192 191/191/191
-f 191/191/191 195/195/195 196/196/196
-f 197/197/197 193/193/193 192/192/192
-f 192/192/192 196/196/196 197/197/197
-f 198/198/198 194/194/194 193/193/193
-f 193/193/193 197/197/197 198/198/198
-f 199/199/199 200/200/200 134/134/134
-f 134/134/134 133/133/133 199/199/199
-f 201/201/201 202/202/202 200/200/200
-f 200/200/200 199/199/199 201/201/201
-f 203/203/203 204/204/204 202/202/202
-f 202/202/202 201/201/201 203/203/203
-f 205/205/205 206/206/206 204/204/204
-f 204/204/204 203/203/203 205/205/205
-f 207/207/207 199/199/199 133/133/133
-f 133/133/133 138/138/138 207/207/207
-f 208/208/208 201/201/201 199/199/199
-f 199/199/199 207/207/207 208/208/208
-f 209/209/209 203/203/203 201/201/201
-f 201/201/201 208/208/208 209/209/209
-f 210/210/210 205/205/205 203/203/203
-f 203/203/203 209/209/209 210/210/210
-f 211/211/211 207/207/207 138/138/138
-f 138/138/138 142/142/142 211/211/211
-f 212/212/212 208/208/208 207/207/207
-f 207/207/207 211/211/211 212/212/212
-f 213/213/213 209/209/209 208/208/208
-f 208/208/208 212/212/212 213/213/213
-f 214/214/214 210/210/210 209/209/209
-f 209/209/209 213/213/213 214/214/214
-f 215/215/215 211/211/211 142/142/142
-f 142/142/142 146/146/146 215/215/215
-f 216/216/216 212/212/212 211/211/211
-f 211/211/211 215/215/215 216/216/216
-f 217/217/217 213/213/213 212/212/212
-f 212/212/212 216/216/216 217/217/217
-f 218/218/218 214/214/214 213/213/213
-f 213/213/213 217/217/217 218/218/218
-f 219/219/219 215/215/215 146/146/146
-f 146/146/146 150/150/150 219/219/219
-f 220/220/220 216/216/216 215/215/215
-f 215/215/215 219/219/219 220/220/220
-f 221/221/221 217/217/217 216/216/216
-f 216/216/216 220/220/220 221/221/221
-f 222/222/222 218/218/218 217/217/217
-f 217/217/217 221/221/221 222/222/222
-f 223/223/223 219/219/219 150/150/150
-f 150/150/150 154/154/154 223/223/223
-f 224/224/224 220/220/220 219/219/219
-f 219/219/219 223/223/223 224/224/224
-f 225/225/225 221/221/221 220/220/220
-f 220/220/220 224/224/224 225/225/225
-f 226/226/226 222/222/222 221/221/221
-f 221/221/221 225/225/225 226/226/226
-f 227/227/227 223/223/223 154/154/154
-f 154/154/154 158/158/158 227/227/227
-f 228/228/228 224/224/224 223/223/223
-f 223/223/223 227/227/227 228/228/228
-f 229/229/229 225/225/225 224/224/224
-f 224/224/224 228/228/228 229/229/229
-f 230/230/230 226/226/226 225/225/225
-f 225/225/225 229/229/229 230/230/230
-f 231/231/231 227/227/227 158/158/158
-f 158/158/158 162/162/162 231/231/231
-f 232/232/232 228/228/228 227/227/227
-f 227/227/227 231/231/231 232/232/232
-f 233/233/233 229/229/229 228/228/228
-f 228/228/228 232/232/232 233/233/233
-f 234/234/234 230/230/230 229/229/229
-f 229/229/229 233/233/233 234/234/234
-f 235/235/235 236/236/236 170/170/170
-f 170/170/170 169/169/169 235/235/235
-f 237/237/237 238/238/238 236/236/236
-f 236/236/236 235/235/235 237/237/237
-f 239/239/239 240/240/240 238/238/238
-f 238/238/238 237/237/237 239/239/239
-f 240/240/240 239/239/239 241/241/241
-f 242/242/242 235/235/235 169/169/169
-f 169/169/169 174/174/174 242/242/242
-f 243/243/243 237/237/237 235/235/235
-f 235/235/235 242/242/242 243/243/243
-f 244/244/244 239/239/239 237/237/237
-f 237/237/237 243/243/243 244/244/244
-f 239/239/239 244/244/244 245/245/245
-f 246/246/246 242/242/242 174/174/174
-f 174/174/174 178/178/178 246/246/246
-f 247/247/247 243/243/243 242/242/242
-f 242/242/242 246/246/246 247/247/247
-f 248/248/248 244/244/244 243/243/243
-f 243/243/243 247/247/247 248/248/248
-f 244/244/244 248/248/248 249/249/249
-f 250/250/250 246/246/246 178/178/178
-f 178/178/178 182/182/182 250/250/250
-f 251/251/251 247/247/247 246/246/246
-f 246/246/246 250/250/250 251/251/251
-f 252/252/252 248/248/248 247/247/247
-f 247/247/247 251/251/251 252/252/252
-f 248/248/248 252/252/252 253/253/253
-f 254/254/254 250/250/250 182/182/182
-f 182/182/182 186/186/186 254/254/254
-f 255/255/255 251/251/251 250/250/250
-f 250/250/250 254/254/254 255/255/255
-f 256/256/256 252/252/252 251/251/251
-f 251/251/251 255/255/255 256/256/256
-f 252/252/252 256/256/256 257/257/257
-f 258/258/258 254/254/254 186/186/186
-f 186/186/186 190/190/190 258/258/258
-f 259/259/259 255/255/255 254/254/254
-f 254/254/254 258/258/258 259/259/259
-f 260/260/260 256/256/256 255/255/255
-f 255/255/255 259/259/259 260/260/260
-f 256/256/256 260/260/260 261/261/261
-f 262/262/262 258/258/258 190/190/190
-f 190/190/190 194/194/194 262/262/262
-f 263/263/263 259/259/259 258/258/258
-f 258/258/258 262/262/262 263/263/263
-f 264/264/264 260/260/260 259/259/259
-f 259/259/259 263/263/263 264/264/264
-f 260/260/260 264/264/264 265/265/265
-f 266/266/266 262/262/262 194/194/194
-f 194/194/194 198/198/198 266/266/266
-f 267/267/267 263/263/263 262/262/262
-f 262/262/262 266/266/266 267/267/267
-f 268/268/268 264/264/264 263/263/263
-f 263/263/263 267/267/267 268/268/268
-f 264/264/264 268/268/268 269/269/269
-f 270/270/270 271/271/271 206/206/206
-f 206/206/206 205/205/205 270/270/270
-f 272/272/272 273/273/273 271/271/271
-f 271/271/271 270/270/270 272/272/272
-f 274/274/274 275/275/275 273/273/273
-f 273/273/273 272/272/272 274/274/274
-f 275/275/275 274/274/274 241/241/241
-f 276/276/276 270/270/270 205/205/205
-f 205/205/205 210/210/210 276/276/276
-f 277/277/277 272/272/272 270/270/270
-f 270/270/270 276/276/276 277/277/277
-f 278/278/278 274/274/274 272/272/272
-f 272/272/272 277/277/277 278/278/278
-f 274/274/274 278/278/278 245/245/245
-f 279/279/279 276/276/276 210/210/210
-f 210/210/210 214/214/214 279/279/279
-f 280/280/280 277/277/277 276/276/276
-f 276/276/276 279/279/279 280/280/280
-f 281/281/281 278/278/278 277/277/277
-f 277/277/277 280/280/280 281/281/281
-f 278/278/278 281/281/281 249/249/249
-f 282/282/282 279/279/279 214/214/214
-f 214/214/214 218/218/218 282/282/282
-f 283/283/283 280/280/280 279/279/279
-f 279/279/279 282/282/282 283/283/283
-f 284/284/284 281/281/281 280/280/280
-f 280/280/280 283/283/283 284/284/284
-f 281/281/281 284/284/284 253/253/253
-f 285/285/285 282/282/282 218/218/218
-f 218/218/218 222/222/222 285/285/285
-f 286/286/286 283/283/283 282/282/282
-f 282/282/282 285/285/285 286/286/286
-f 287/287/287 284/284/284 283/283/283
-f 283/283/283 286/286/286 287/287/287
-f 284/284/284 287/287/287 257/257/257
-f 288/288/288 285/285/285 222/222/222
-f 222/222/222 226/226/226 288/288/288
-f 289/289/289 286/286/286 285/285/285
-f 285/285/285 288/288/288 289/289/289
-f 290/290/290 287/287/287 286/286/286
-f 286/286/286 289/289/289 290/290/290
-f 287/287/287 290/290/290 261/261/261
-f 291/291/291 288/288/288 226/226/226
-f 226/226/226 230/230/230 291/291/291
-f 292/292/292 289/289/289 288/288/288
-f 288/288/288 291/291/291 292/292/292
-f 293/293/293 290/290/290 289/289/289
-f 289/289/289 292/292/292 293/293/293
-f 290/290/290 293/293/293 265/265/265
-f 294/294/294 291/291/291 230/230/230
-f 230/230/230 234/234/234 294/294/294
-f 295/295/295 292/292/292 291/291/291
-f 291/291/291 294/294/294 295/295/295
-f 296/296/296 293/293/293 292/292/292
-f 292/292/292 295/295/295 296/296/296
-f 293/293/293 296/296/296 269/269/269
-f 297/297/297 298/298/298 299/299/299
-f 299/299/299 300/300/300 297/297/297
-f 301/301/301 302/302/302 298/298/298
-f 298/298/298 297/297/297 301/301/301
-f 303/303/303 304/304/304 302/302/302
-f 302/302/302 301/301/301 303/303/303
-f 305/305/305 306/306/306 304/304/304
-f 304/304/304 303/303/303 305/305/305
-f 307/307/307 297/297/297 300/300/300
-f 300/300/300 308/308/308 307/307/307
-f 309/309/309 301/301/301 297/297/297
-f 297/297/297 307/307/307 309/309/309
-f 310/310/310 303/303/303 301/301/301
-f 301/301/301 309/309/309 310/310/310
-f 311/311/311 305/305/305 303/303/303
-f 303/303/303 310/310/310 311/311/311
-f 312/312/312 307/307/307 308/308/308
-f 308/308/308 313/313/313 312/312/312
-f 314/314/314 309/309/309 307/307/307
-f 307/307/307 312/312/312 314/314/314
-f 315/315/315 310/310/310 309/309/309
-f 309/309/309 314/314/314 315/315/315
-f 316/316/316 311/311/311 310/310/310
-f 310/310/310 315/315/315 316/316/316
-f 317/317/317 312/312/312 313/313/313
-f 313/313/313 318/318/318 317/317/317
-f 319/319/319 314/314/314 312/312/312
-f 312/312/312 317/317/317 319/319/319
-f 320/320/320 315/315/315 314/314/314
-f 314/314/314 319/319/319 320/320/320
-f 321/321/321 316/316/316 315/315/315
-f 315/315/315 320/320/320 321/321/321
-f 322/322/322 317/317/317 318/318/318
-f 318/318/318 323/323/323 322/322/322
-f 324/324/324 319/319/319 317/317/317
-f 317/317/317 322/322/322 324/324/324
-f 325/325/325 320/320/320 319/319/319
-f 319/319/319 324/324/324 325/325/325
-f 326/326/326 321/321/321 320/320/320
-f 320/320/320 325/325/325 326/326/326
-f 327/327/327 322/322/322 323/323/323
-f 323/323/323 328/328/328 327/327/327
-f 329/329/329 324/324/324 322/322/322
-f 322/322/322 327/327/327 329/329/329
-f 330/330/330 325/325/325 324/324/324
-f 324/324/324 329/329/329 330/330/330
-f 331/331/331 326/326/326 325/325/325
-f 325/325/325 330/330/330 331/331/331
-f 332/332/332 327/327/327 328/328/328
-f 328/328/328 333/333/333 332/332/332
-f 334/334/334 329/329/329 327/327/327
-f 327/327/327 332/332/332 334/334/334
-f 335/335/335 330/330/330 329/329/329
-f 329/329/329 334/334/334 335/335/335
-f 336/336/336 331/331/331 330/330/330
-f 330/330/330 335/335/335 336/336/336
-f 337/337/337 332/332/332 333/333/333
-f 333/333/333 338/338/338 337/337/337
-f 339/339/339 334/334/334 332/332/332
-f 332/332/332 337/337/337 339/339/339
-f 340/340/340 335/335/335 334/334/334
-f 334/334/334 339/339/339 340/340/340
-f 341/341/341 336/336/336 335/335/335
-f 335/335/335 340/340/340 341/341/341
-f 342/342/342 343/343/343 306/306/306
-f 306/306/306 305/305/305 342/342/342
-f 344/344/344 345/345/345 343/343/343
-f 343/343/343 342/342/342 344/344/344
-f 346/346/346 347/347/347 345/345/345
-f 345/345/345 344/344/344 346/346/346
-f 348/348/348 349/349/349 347/347/347
-f 347/347/347 346/346/346 348/348/348
-f 350/350/350 342/342/342 305/305/305
-f 305/305/305 311/311/311 350/350/350
-f 351/351/351 344/344/344 342/342/342
-f 342/342/342 350/350/350 351/351/351
-f 352/352/352 346/346/346 344/344/344
-f 344/344/344 351/351/351 352/352/352
-f 353/353/353 348/348/348 346/346/346
-f 346/346/346 352/352/352 353/353/353
-f 354/354/354 350/350/350 311/311/311
-f 311/311/311 316/316/316 354/354/354
-f 355/355/355 351/351/351 350/350/350
-f 350/350/350 354/354/354 355/355/355
-f 356/356/356 352/352/352 351/351/351
-f 351/351/351 355/355/355 356/356/356
-f 357/357/357 353/353/353 352/352/352
-f 352/352/352 356/356/356 357/357/357
-f 358/358/358 354/354/354 316/316/316
-f 316/316/316 321/321/321 358/358/358
-f 359/359/359 355/355/355 354/354/354
-f 354/354/354 358/358/358 359/359/359
-f 360/360/360 356/356/356 355/355/355
-f 355/355/355 359/359/359 360/360/360
-f 361/361/361 357/357/357 356/356/356
-f 356/356/356 360/360/360 361/361/361
-f 362/362/362 358/358/358 321/321/321
-f 321/321/321 326/326/326 362/362/362
-f 363/363/363 359/359/359 358/358/358
-f 358/358/358 362/362/362 363/363/363
-f 364/364/364 360/360/360 359/359/359
-f 359/359/359 363/363/363 364/364/364
-f 365/365/365 361/361/361 360/360/360
-f 360/360/360 364/364/364 365/365/365
-f 366/366/366 362/362/362 326/326/326
-f 326/326/326 331/331/331 366/366/366
-f 367/367/367 363/363/363 362/362/362
-f 362/362/362 366/366/366 367/367/367
-f 368/368/368 364/364/364 363/363/363
-f 363/363/363 367/367/367 368/368/368
-f 369/369/369 365/365/365 364/364/364
-f 364/364/364 368/368/368 369/369/369
-f 370/370/370 366/366/366 331/331/331
-f 331/331/331 336/336/336 370/370/370
-f 371/371/371 367/367/367 366/366/366
-f 366/366/366 370/370/370 371/371/371
-f 372/372/372 368/368/368 367/367/367
-f 367/367/367 371/371/371 372/372/372
-f 373/373/373 369/369/369 368/368/368
-f 368/368/368 372/372/372 373/373/373
-f 374/374/374 370/370/370 336/336/336
-f 336/336/336 341/341/341 374/374/374
-f 375/375/375 371/371/371 370/370/370
-f 370/370/370 374/374/374 375/375/375
-f 376/376/376 372/372/372 371/371/371
-f 371/371/371 375/375/375 376/376/376
-f 377/377/377 373/373/373 372/372/372
-f 372/372/372 376/376/376 377/377/377
-f 378/378/378 379/379/379 380/380/380
-f 380/380/380 381/381/381 378/378/378
-f 382/382/382 383/383/383 379/379/379
-f 379/379/379 378/378/378 382/382/382
-f 384/384/384 385/385/385 383/383/383
-f 383/383/383 382/382/382 384/384/384
-f 386/386/386 387/387/387 385/385/385
-f 385/385/385 384/384/384 386/386/386
-f 388/388/388 378/378/378 381/381/381
-f 381/381/381 389/389/389 388/388/388
-f 390/390/390 382/382/382 378/378/378
-f 378/378/378 388/388/388 390/390/390
-f 391/391/391 384/384/384 382/382/382
-f 382/382/382 390/390/390 391/391/391
-f 392/392/392 386/386/386 384/384/384
-f 384/384/384 391/391/391 392/392/392
-f 393/393/393 388/388/388 389/389/389
-f 389/389/389 394/394/394 393/393/393
-f 395/395/395 390/390/390 388/388/388
-f 388/388/388 393/393/393 395/395/395
-f 396/396/396 391/391/391 390/390/390
-f 390/390/390 395/395/395 396/396/396
-f 397/397/397 392/392/392 391/391/391
-f 391/391/391 396/396/396 397/397/397
-f 398/398/398 393/393/393 394/394/394
-f 394/394/394 399/399/399 398/398/398
-f 400/400/400 395/395/395 393/393/393
-f 393/393/393 398/398/398 400/400/400
-f 401/401/401 396/396/396 395/395/395
-f 395/395/395 400/400/400 401/401/401
-f 402/402/402 397/397/397 396/396/396
-f 396/396/396 401/401/401 402/402/402
-f 403/403/403 404/404/404 405/405/405
-f 405/405/405 406/406/406 403/403/403
-f 407/407/407 408/408/408 404/404/404
-f 404/404/404 403/403/403 407/407/407
-f 409/409/409 410/410/410 408/408/408
-f 408/408/408 407/407/407 409/409/409
-f 411/411/411 412/412/412 410/410/410
-f 410/410/410 409/409/409 411/411/411
-f 413/413/413 403/403/403 406/406/406
-f 406/406/406 414/414/414 413/413/413
-f 415/415/415 407/407/407 403/403/403
-f 403/403/403 413/413/413 415/415/415
-f 416/416/416 409/409/409 407/407/407
-f 407/407/407 415/415/415 416/416/416
-f 417/417/417 411/411/411 409/409/409
-f 409/409/409 416/416/416 417/417/417
-f 418/418/418 413/413/413 414/414/414
-f 414/414/414 419/419/419 418/418/418
-f 420/420/420 415/415/415 413/413/413
-f 413/413/413 418/418/418 420/420/420
-f 421/421/421 416/416/416 415/415/415
-f 415/415/415 420/420/420 421/421/421
-f 422/422/422 417/417/417 416/416/416
-f 416/416/416 421/421/421 422/422/422
-f 379/379/379 418/418/418 419/419/419
-f 419/419/419 380/380/380 379/379/379
-f 383/383/383 420/420/420 418/418/418
-f 418/418/418 379/379/379 383/383/383
-f 385/385/385 421/421/421 420/420/420
-f 420/420/420 383/383/383 385/385/385
-f 387/387/387 422/422/422 421/421/421
-f 421/421/421 385/385/385 387/387/387
-f 423/423/423 424/424/424 387/387/387
-f 387/387/387 386/386/386 423/423/423
-f 425/425/425 426/426/426 424/424/424
-f 424/424/424 423/423/423 425/425/425
-f 427/427/427 428/428/428 426/426/426
-f 426/426/426 425/425/425 427/427/427
-f 429/429/429 430/430/430 428/428/428
-f 428/428/428 427/427/427 429/429/429
-f 431/431/431 423/423/423 386/386/386
-f 386/386/386 392/392/392 431/431/431
-f 432/432/432 425/425/425 423/423/423
-f 423/423/423 431/431/431 432/432/432
-f 433/433/433 427/427/427 425/425/425
-f 425/425/425 432/432/432 433/433/433
-f 434/434/434 429/429/429 427/427/427
-f 427/427/427 433/433/433 434/434/434
-f 435/435/435 431/431/431 392/392/392
-f 392/392/392 397/397/397 435/435/435
-f 436/436/436 432/432/432 431/431/431
-f 431/431/431 435/435/435 436/436/436
-f 437/437/437 433/433/433 432/432/432
-f 432/432/432 436/436/436 437/437/437
-f 438/438/438 434/434/434 433/433/433
-f 433/433/433 437/437/437 438/438/438
-f 439/439/439 435/435/435 397/397/397
-f 397/397/397 402/402/402 439/439/439
-f 440/440/440 436/436/436 435/435/435
-f 435/435/435 439/439/439 440/440/440
-f 441/441/441 437/437/437 436/436/436
-f 436/436/436 440/440/440 441/441/441
-f 442/442/442 438/438/438 437/437/437
-f 437/437/437 441/441/441 442/442/442
-f 443/443/443 444/444/444 412/412/412
-f 412/412/412 411/411/411 443/443/443
-f 445/445/445 446/446/446 444/444/444
-f 444/444/444 443/443/443 445/445/445
-f 447/447/447 448/448/448 446/446/446
-f 446/446/446 445/445/445 447/447/447
-f 449/449/449 450/450/450 448/448/448
-f 448/448/448 447/447/447 449/449/449
-f 451/451/451 443/443/443 411/411/411
-f 411/411/411 417/417/417 451/451/451
-f 452/452/452 445/445/445 443/443/443
-f 443/443/443 451/451/451 452/452/452
-f 453/453/453 447/447/447 445/445/445
-f 445/445/445 452/452/452 453/453/453
-f 454/454/454 449/449/449 447/447/447
-f 447/447/447 453/453/453 454/454/454
-f 455/455/455 451/451/451 417/417/417
-f 417/417/417 422/422/422 455/455/455
-f 456/456/456 452/452/452 451/451/451
-f 451/451/451 455/455/455 456/456/456
-f 457/457/457 453/453/453 452/452/452
-f 452/452/452 456/456/456 457/457/457
-f 458/458/458 454/454/454 453/453/453
-f 453/453/453 457/457/457 458/458/458
-f 424/424/424 455/455/455 422/422/422
-f 422/422/422 387/387/387 424/424/424
-f 426/426/426 456/456/456 455/455/455
-f 455/455/455 424/424/424 426/426/426
-f 428/428/428 457/457/457 456/456/456
-f 456/456/456 426/426/426 428/428/428
-f 430/430/430 458/458/458 457/457/457
-f 457/457/457 428/428/428 430/430/430
-f 459/459/459 460/460/460 461/461/461
-f 462/462/462 463/463/463 460/460/460
-f 460/460/460 459/459/459 462/462/462
-f 464/464/464 465/465/465 463/463/463
-f 463/463/463 462/462/462 464/464/464
-f 466/466/466 467/467/467 465/465/465
-f 465/465/465 464/464/464 466/466/466
-f 468/468/468 459/459/459 469/469/469
-f 470/470/470 462/462/462 459/459/459
-f 459/459/459 468/468/468 470/470/470
-f 471/471/471 464/464/464 462/462/462
-f 462/462/462 470/470/470 471/471/471
-f 472/472/472 466/466/466 464/464/464
-f 464/464/464 471/471/471 472/472/472
-f 473/473/473 468/468/468 474/474/474
-f 475/475/475 470/470/470 468/468/468
-f 468/468/468 473/473/473 475/475/475
-f 476/476/476 471/471/471 470/470/470
-f 470/470/470 475/475/475 476/476/476
-f 477/477/477 472/472/472 471/471/471
-f 471/471/471 476/476/476 477/477/477
-f 478/478/478 473/473/473 479/479/479
-f 480/480/480 475/475/475 473/473/473
-f 473/473/473 478/478/478 480/480/480
-f 481/481/481 476/476/476 475/475/475
-f 475/475/475 480/480/480 481/481/481
-f 482/482/482 477/477/477 476/476/476
-f 476/476/476 481/481/481 482/482/482
-f 483/483/483 478/478/478 484/484/484
-f 485/485/485 480/480/480 478/478/478
-f 478/478/478 483/483/483 485/485/485
-f 486/486/486 481/481/481 480/480/480
-f 480/480/480 485/485/485 486/486/486
-f 487/487/487 482/482/482 481/481/481
-f 481/481/481 486/486/486 487/487/487
-f 488/488/488 483/483/483 489/489/489
-f 490/490/490 485/485/485 483/483/483
-f 483/483/483 488/488/488 490/490/490
-f 491/491/491 486/486/486 485/485/485
-f 485/485/485 490/490/490 491/491/491
-f 492/492/492 487/487/487 486/486/486
-f 486/486/486 491/491/491 492/492/492
-f 493/493/493 488/488/488 494/494/494
-f 495/495/495 490/490/490 488/488/488
-f 488/488/488 493/493/493 495/495/495
-f 496/496/496 491/491/491 490/490/490
-f 490/490/490 495/495/495 496/496/496
-f 497/497/497 492/492/492 491/491/491
-f 491/491/491 496/496/496 497/497/497
-f 498/498/498 493/493/493 499/499/499
-f 500/500/500 495/495/495 493/493/493
-f 493/493/493 498/498/498 500/500/500
-f 501/501/501 496/496/496 495/495/495
-f 495/495/495 500/500/500 501/501/501
-f 502/502/502 497/497/497 496/496/496
-f 496/496/496 501/501/501 502/502/502
-f 503/503/503 504/504/504 461/461/461
-f 505/505/505 506/506/506 504/504/504
-f 504/504/504 503/503/503 505/505/505
-f 507/507/507 508/508/508 506/506/506
-f 506/506/506 505/505/505 507/507/507
-f 509/509/509 510/510/510 508/508/508
-f 508/508/508 507/507/507 509/509/509
-f 511/511/511 503/503/503 469/469/469
-f 512/512/512 505/505/505 503/503/503
-f 503/503/503 511/511/511 512/512/512
-f 513/513/513 507/507/507 505/505/505
-f 505/505/505 512/512/512 513/513/513
-f 514/514/514 509/509/509 507/507/507
-f 507/507/507 513/513/513 514/514/514
-f 515/515/515 511/511/511 474/474/474
-f 516/516/516 512/512/512 511/511/511
-f 511/511/511 515/515/515 516/516/516
-f 517/517/517 513/513/513 512/512/512
-f 512/512/512 516/516/516 517/517/517
-f 518/518/518 514/514/514 513/513/513
-f 513/513/513 517/517/517 518/518/518
-f 519/519/519 515/515/515 479/479/479
-f 520/520/520 516/516/516 515/515/515
-f 515/515/515 519/519/519 520/520/520
-f 521/521/521 517/517/517 516/516/516
-f 516/516/516 520/520/520 521/521/521
-f 522/522/522 518/518/518 517/517/517
-f 517/517/517 521/521/521 522/522/522
-f 523/523/523 519/519/519 484/484/484
-f 524/524/524 520/520/520 519/519/519
-f 519/519/519 523/523/523 524/524/524
-f 525/525/525 521/521/521 520/520/520
-f 520/520/520 524/524/524 525/525/525
-f 526/526/526 522/522/522 521/521/521
-f 521/521/521 525/525/525 526/526/526
-f 527/527/527 523/523/523 489/489/489
-f 528/528/528 524/524/524 523/523/523
-f 523/523/523 527/527/527 528/528/528
-f 529/529/529 525/525/525 524/524/524
-f 524/524/524 528/528/528 529/529/529
-f 530/530/530 526/526/526 525/525/525
-f 525/525/525 529/529/529 530/530/530
-f 531/531/531 527/527/527 494/494/494
-f 532/532/532 528/528/528 527/527/527
-f 527/527/527 531/531/531 532/532/532
-f 533/533/533 529/529/529 528/528/528
-f 528/528/528 532/532/532 533/533/533
-f 534/534/534 530/530/530 529/529/529
-f 529/529/529 533/533/533 534/534/534
-f 535/535/535 531/531/531 499/499/499
-f 536/536/536 532/532/532 531/531/531
-f 531/531/531 535/535/535 536/536/536
-f 537/537/537 533/533/533 532/532/532
-f 532/532/532 536/536/536 537/537/537
-f 538/538/538 534/534/534 533/533/533
-f 533/533/533 537/537/537 538/538/538
-f 539/539/539 540/540/540 541/541/541
-f 541/541/541 542/542/542 539/539/539
-f 543/543/543 544/544/544 540/540/540
-f 540/540/540 539/539/539 543/543/543
-f 545/545/545 546/546/546 544/544/544
-f 544/544/544 543/543/543 545/545/545
-f 547/547/547 548/548/548 546/546/546
-f 546/546/546 545/545/545 547/547/547
-f 549/549/549 539/539/539 542/542/542
-f 542/542/542 550/550/550 549/549/549
-f 551/551/551 543/543/543 539/539/539
-f 539/539/539 549/549/549 551/551/551
-f 552/552/552 545/545/545 543/543/543
-f 543/543/543 551/551/551 552/552/552
-f 553/553/553 547/547/547 545/545/545
-f 545/545/545 552/552/552 553/553/553
-f 554/554/554 549/549/549 550/550/550
-f 550/550/550 555/555/555 554/554/554
-f 556/556/556 551/551/551 549/549/549
-f 549/549/549 554/554/554 556/556/556
-f 557/557/557 552/552/552 551/551/551
-f 551/551/551 556/556/556 557/557/557
-f 558/558/558 553/553/553 552/552/552
-f 552/552/552 557/557/557 558/558/558
-f 559/559/559 554/554/554 555/555/555
-f 555/555/555 560/560/560 559/559/559
-f 561/561/561 556/556/556 554/554/554
-f 554/554/554 559/559/559 561/561/561
-f 562/562/562 557/557/557 556/556/556
-f 556/556/556 561/561/561 562/562/562
-f 563/563/563 558/558/558 557/557/557
-f 557/557/557 562/562/562 563/563/563
-f 564/564/564 559/559/559 560/560/560
-f 560/560/560 565/565/565 564/564/564
-f 566/566/566 561/561/561 559/559/559
-f 559/559/559 564/564/564 566/566/566
-f 567/567/567 562/562/562 561/561/561
-f 561/561/561 566/566/566 567/567/567
-f 568/568/568 563/563/563 562/562/562
-f 562/562/562 567/567/567 568/568/568
-f 569/569/569 564/564/564 565/565/565
-f 565/565/565 570/570/570 569/569/569
-f 571/571/571 566/566/566 564/564/564
-f 564/564/564 569/569/569 571/571/571
-f 572/572/572 567/567/567 566/566/566
-f 566/566/566 571/571/571 572/572/572
-f 573/573/573 568/568/568 567/567/567
-f 567/567/567 572/572/572 573/573/573
-f 574/574/574 569/569/569 570/570/570
-f 570/570/570 575/575/575 574/574/574
-f 576/576/576 571/571/571 569/569/569
-f 569/569/569 574/574/574 576/576/576
-f 577/577/577 572/572/572 571/571/571
-f 571/571/571 576/576/576 577/577/577
-f 578/578/578 573/573/573 572/572/572
-f 572/572/572 577/577/577 578/578/578
-f 579/579/579 574/574/574 575/575/575
-f 575/575/575 580/580/580 579/579/579
-f 581/581/581 576/576/576 574/574/574
-f 574/574/574 579/579/579 581/581/581
-f 582/582/582 577/577/577 576/576/576
-f 576/576/576 581/581/581 582/582/582
-f 583/583/583 578/578/578 577/577/577
-f 577/577/577 582/582/582 583/583/583
-f 584/584/584 585/585/585 586/586/586
-f 586/586/586 587/587/587 584/584/584
-f 588/588/588 589/589/589 585/585/585
-f 585/585/585 584/584/584 588/588/588
-f 590/590/590 591/591/591 589/589/589
-f 589/589/589 588/588/588 590/590/590
-f 592/592/592 593/593/593 591/591/591
-f 591/591/591 590/590/590 592/592/592
-f 594/594/594 584/584/584 587/587/587
-f 587/587/587 595/595/595 594/594/594
-f 596/596/596 588/588/588 584/584/584
-f 584/584/584 594/594/594 596/596/596
-f 597/597/597 590/590/590 588/588/588
-f 588/588/588 596/596/596 597/597/597
-f 598/598/598 592/592/592 590/590/590
-f 590/590/590 597/597/597 598/598/598
-f 599/599/599 594/594/594 595/595/595
-f 595/595/595 600/600/600 599/599/599
-f 601/601/601 596/596/596 594/594/594
-f 594/594/594 599/599/599 601/601/601
-f 602/602/602 597/597/597 596/596/596
-f 596/596/596 601/601/601 602/602/602
-f 603/603/603 598/598/598 597/597/597
-f 597/597/597 602/602/602 603/603/603
-f 604/604/604 599/599/599 600/600/600
-f 600/600/600 605/605/605 604/604/604
-f 606/606/606 601/601/601 599/599/599
-f 599/599/599 604/604/604 606/606/606
-f 607/607/607 602/602/602 601/601/601
-f 601/601/601 606/606/606 607/607/607
-f 608/608/608 603/603/603 602/602/602
-f 602/602/602 607/607/607 608/608/608
-f 609/609/609 604/604/604 605/605/605
-f 605/605/605 610/610/610 609/609/609
-f 611/611/611 606/606/606 604/604/604
-f 604/604/604 609/609/609 611/611/611
-f 612/612/612 607/607/607 606/606/606
-f 606/606/606 611/611/611 612/612/612
-f 613/613/613 608/608/608 607/607/607
-f 607/607/607 612/612/612 613/613/613
-f 614/614/614 609/609/609 610/610/610
-f 610/610/610 615/615/615 614/614/614
-f 616/616/616 611/611/611 609/609/609
-f 609/609/609 614/614/614 616/616/616
-f 617/617/617 612/612/612 611/611/611
-f 611/611/611 616/616/616 617/617/617
-f 618/618/618 613/613/613 612/612/612
-f 612/612/612 617/617/617 618/618/618
-f 619/619/619 614/614/614 615/615/615
-f 615/615/615 620/620/620 619/619/619
-f 621/621/621 616/616/616 614/614/614
-f 614/614/614 619/619/619 621/621/621
-f 622/622/622 617/617/617 616/616/616
-f 616/616/616 621/621/621 622/622/622
-f 623/623/623 618/618/618 617/617/617
-f 617/617/617 622/622/622 623/623/623
-f 624/624/624 619/619/619 620/620/620
-f 620/620/620 625/625/625 624/624/624
-f 626/626/626 621/621/621 619/619/619
-f 619/619/619 624/624/624 626/626/626
-f 627/627/627 622/622/622 621/621/621
-f 621/621/621 626/626/626 627/627/627
-f 628/628/628 623/623/623 622/622/622
-f 622/622/622 627/627/627 628/628/628
diff --git a/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj.meta b/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj.meta
deleted file mode 100644
index 3f245d21..00000000
--- a/Assets/OBJ-IO/Examples/Meshes/Teapot_Modified.obj.meta
+++ /dev/null
@@ -1,72 +0,0 @@
-fileFormatVersion: 2
-guid: f84614a174c3b9741ad76cb8d41246be
-timeCreated: 1432869715
-licenseType: Pro
-ModelImporter:
- serializedVersion: 18
- fileIDToRecycleName:
- 100000: Teapot001_Instance_0
- 100002: //RootNode
- 400000: Teapot001_Instance_0
- 400002: //RootNode
- 2300000: Teapot001_Instance_0
- 3300000: Teapot001_Instance_0
- 4300000: Teapot001_Instance_0
- materials:
- importMaterials: 1
- materialName: 0
- materialSearch: 1
- animations:
- legacyGenerateAnimations: 4
- bakeSimulation: 0
- optimizeGameObjects: 0
- motionNodeName:
- animationCompression: 1
- animationRotationError: .5
- animationPositionError: .5
- animationScaleError: .5
- animationWrapMode: 0
- extraExposedTransformPaths: []
- clipAnimations: []
- isReadable: 1
- meshes:
- lODScreenPercentages: []
- globalScale: 1
- meshCompression: 0
- addColliders: 0
- importBlendShapes: 1
- swapUVChannels: 0
- generateSecondaryUV: 0
- useFileUnits: 1
- optimizeMeshForGPU: 1
- keepQuads: 0
- weldVertices: 1
- secondaryUVAngleDistortion: 8
- secondaryUVAreaDistortion: 15.000001
- secondaryUVHardAngle: 88
- secondaryUVPackMargin: 4
- useFileScale: 1
- tangentSpace:
- normalSmoothAngle: 60
- splitTangentsAcrossUV: 1
- normalImportMode: 0
- tangentImportMode: 1
- importAnimation: 1
- copyAvatar: 0
- humanDescription:
- human: []
- skeleton: []
- armTwist: .5
- foreArmTwist: .5
- upperLegTwist: .5
- legTwist: .5
- armStretch: .0500000007
- legStretch: .0500000007
- feetSpacing: 0
- rootMotionBoneName:
- lastHumanDescriptionAvatarSource: {instanceID: 0}
- animationType: 0
- additionalBone: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Scenes.meta b/Assets/OBJ-IO/Examples/Scenes.meta
index e85d95fa..b34e3b4b 100644
--- a/Assets/OBJ-IO/Examples/Scenes.meta
+++ b/Assets/OBJ-IO/Examples/Scenes.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 141384ae82c22db4b8422ccbe172ef08
+guid: bcdb42897a640452b984acccd4e4fcf9
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Scenes/Example.unity.meta b/Assets/OBJ-IO/Examples/Scenes/Example.unity.meta
index 30497ae7..918bc672 100644
--- a/Assets/OBJ-IO/Examples/Scenes/Example.unity.meta
+++ b/Assets/OBJ-IO/Examples/Scenes/Example.unity.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 8573b7b1c7256de4896b3054d17de1b7
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Scripts.meta b/Assets/OBJ-IO/Examples/Scripts.meta
index afe9ef47..2a373e57 100644
--- a/Assets/OBJ-IO/Examples/Scripts.meta
+++ b/Assets/OBJ-IO/Examples/Scripts.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 6f612615b304fd249886c72faee156e0
+guid: 65a5eac6a6a1c47d2b88612172d76dcb
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Examples/Scripts/Example.cs.meta b/Assets/OBJ-IO/Examples/Scripts/Example.cs.meta
index 2f53ad02..dcea092c 100644
--- a/Assets/OBJ-IO/Examples/Scripts/Example.cs.meta
+++ b/Assets/OBJ-IO/Examples/Scripts/Example.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: f3ab7cfdf40b84b41a7adc35c545c226
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins.meta b/Assets/OBJ-IO/Plugins.meta
index d180ab8c..ad0163d9 100644
--- a/Assets/OBJ-IO/Plugins.meta
+++ b/Assets/OBJ-IO/Plugins.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 0a5ac41a41be22246b94c47885410104
+guid: e3f6c6aa9d81e42b68614479c60db8c5
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Extension.meta b/Assets/OBJ-IO/Plugins/Extension.meta
index a9ce87cc..ea375ff0 100644
--- a/Assets/OBJ-IO/Plugins/Extension.meta
+++ b/Assets/OBJ-IO/Plugins/Extension.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 8c1f4314c6ab61442aeeb22e185f3614
+guid: d4806f2b3d679419ea87ae4ade1568e0
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Extension/GameObjectExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/GameObjectExtension.cs.meta
index db440fc3..0794cfdd 100644
--- a/Assets/OBJ-IO/Plugins/Extension/GameObjectExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/GameObjectExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 35b132c59c7910c4b99e560a0f9baf95
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/MeshExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/MeshExtension.cs.meta
index 49a47a85..eb156356 100644
--- a/Assets/OBJ-IO/Plugins/Extension/MeshExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/MeshExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: a643d266ae55c8845ac48528640b7e8e
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/StringExtensions.cs.meta b/Assets/OBJ-IO/Plugins/Extension/StringExtensions.cs.meta
index d3720b02..b34282b3 100644
--- a/Assets/OBJ-IO/Plugins/Extension/StringExtensions.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/StringExtensions.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 5403d11ff2ec0124a9a20522559dfcfa
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/Texture2DExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/Texture2DExtension.cs.meta
index 3e17a536..c7236483 100644
--- a/Assets/OBJ-IO/Plugins/Extension/Texture2DExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/Texture2DExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 9260066d99f960241b2a222401bcb685
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/TransformExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/TransformExtension.cs.meta
index 50e2c338..0646733f 100644
--- a/Assets/OBJ-IO/Plugins/Extension/TransformExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/TransformExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: a8e76b9c1894ec743ae076720e775f49
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/UnityExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/UnityExtension.cs.meta
index 9a9c9d3d..a1780910 100644
--- a/Assets/OBJ-IO/Plugins/Extension/UnityExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/UnityExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 06a010ef6a1e94840a51827a2a02badc
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Extension/VectorExtension.cs.meta b/Assets/OBJ-IO/Plugins/Extension/VectorExtension.cs.meta
index 89d8c8e7..dc4d2325 100644
--- a/Assets/OBJ-IO/Plugins/Extension/VectorExtension.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Extension/VectorExtension.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 18a26dda21abdf5468d5731a6dbd26c4
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Mesh.meta b/Assets/OBJ-IO/Plugins/Mesh.meta
index c004e975..f36f7dbf 100644
--- a/Assets/OBJ-IO/Plugins/Mesh.meta
+++ b/Assets/OBJ-IO/Plugins/Mesh.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: da432757bf963174d97e5319c45db1dc
+guid: d13627753faee4ddfb324434752361cf
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ.meta
index 872fba10..75cd40de 100644
--- a/Assets/OBJ-IO/Plugins/Mesh/OBJ.meta
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: f74fe5c4c28267845b900549b670af26
+guid: f89480b6a9d594c67b6bab348aec72a8
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs
new file mode 100644
index 00000000..3e3e5f95
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs
@@ -0,0 +1,18 @@
+
+using System.Collections.Generic;
+
+using UnityEngine;
+
+public class OBJData
+{
+ //------------------------------------------------------------------------------------------------------------
+ public List m_Vertices = new List();
+ public List m_Normals = new List();
+ public List m_UVs = new List();
+ public List m_UV2s = new List();
+ public List m_Colors = new List();
+
+ //------------------------------------------------------------------------------------------------------------
+ public List m_Materials = new List();
+ public List m_Groups = new List();
+}
\ No newline at end of file
diff --git a/Assets/FileBrowser/internals/GLUtils.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs.meta
similarity index 74%
rename from Assets/FileBrowser/internals/GLUtils.cs.meta
rename to Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs.meta
index e4bfb96f..9b517bfd 100644
--- a/Assets/FileBrowser/internals/GLUtils.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJData.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
-guid: 4825c0d9ac74bc745ae54f0594fbb584
+guid: 5c57f7fdab36a3f4d9d97f4785a884f6
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs
new file mode 100644
index 00000000..ee76c3ec
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs
@@ -0,0 +1,101 @@
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+
+using UnityEngine;
+
+using UnityExtension;
+
+public class OBJFace
+{
+ //------------------------------------------------------------------------------------------------------------
+ private readonly List m_Vertices = new List();
+
+ //------------------------------------------------------------------------------------------------------------
+ public void AddVertex(OBJFaceVertex lVertex)
+ {
+ m_Vertices.Add(lVertex);
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public void ParseVertex(string lVertexString)
+ {
+ var fields = lVertexString.Split(new[] { '/' }, StringSplitOptions.None);
+
+ var lIndex = fields[0].ParseInvariantInt();
+ var faceVertex = new OBJFaceVertex
+ {
+ m_VertexIndex = lIndex - 1
+ };
+
+ if (fields.Length > 1)
+ {
+ lIndex = fields[1].Length == 0 ? 0 : fields[1].ParseInvariantInt();
+ faceVertex.m_UVIndex = lIndex - 1;
+ }
+
+ if (fields.Length > 2)
+ {
+ lIndex = fields[2].Length == 0 ? 0 : fields[2].ParseInvariantInt();
+ faceVertex.m_NormalIndex = lIndex - 1;
+ }
+
+ if (fields.Length > 3)
+ {
+ lIndex = fields[3].Length == 0 ? 0 : fields[3].ParseInvariantInt();
+ faceVertex.m_UV2Index = lIndex - 1;
+ }
+
+ if (fields.Length > 4)
+ {
+ lIndex = fields[4].Length == 0 ? 0 : fields[4].ParseInvariantInt();
+ faceVertex.m_ColorIndex = lIndex - 1;
+ }
+
+ AddVertex(faceVertex);
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public string ToString(int lIndex)
+ {
+ OBJFaceVertex lFaceVertex = m_Vertices[lIndex];
+
+ string lOutput = (lFaceVertex.m_VertexIndex + 1).ToString();
+
+ if (lFaceVertex.m_UVIndex > -1)
+ {
+ lOutput += string.Format("/{0}", (lFaceVertex.m_UVIndex + 1).ToString());
+ }
+
+ if (lFaceVertex.m_NormalIndex > -1)
+ {
+ lOutput += string.Format("/{0}", (lFaceVertex.m_NormalIndex + 1).ToString());
+ }
+
+ if (lFaceVertex.m_UV2Index > -1)
+ {
+ lOutput += string.Format("/{0}", (lFaceVertex.m_UV2Index + 1).ToString());
+ }
+
+ if (lFaceVertex.m_ColorIndex > -1)
+ {
+ lOutput += string.Format("/{0}", (lFaceVertex.m_ColorIndex + 1).ToString());
+ }
+
+ return lOutput;
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public OBJFaceVertex this[int i]
+ {
+ get { return m_Vertices[i]; }
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public int Count
+ {
+ get { return m_Vertices.Count; }
+ }
+}
diff --git a/Assets/FileBrowser/internals/GUILayoutx.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs.meta
similarity index 74%
rename from Assets/FileBrowser/internals/GUILayoutx.cs.meta
rename to Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs.meta
index c7d8c200..98768882 100644
--- a/Assets/FileBrowser/internals/GUILayoutx.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFace.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
-guid: 8c961478f91c9b84194c12e130492ced
+guid: 07402f6cbfe2d0e40ab4d7363cb0ed64
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs
new file mode 100644
index 00000000..5f0bc285
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs
@@ -0,0 +1,23 @@
+public class OBJFaceVertex
+{
+ //------------------------------------------------------------------------------------------------------------
+ public int m_VertexIndex = -1;
+ public int m_UVIndex = -1;
+ public int m_UV2Index = -1;
+ public int m_NormalIndex = -1;
+ public int m_ColorIndex = -1;
+
+ public override int GetHashCode()
+ {
+ return m_VertexIndex ^ m_UVIndex ^ m_UV2Index ^ m_NormalIndex ^ m_ColorIndex;
+ }
+
+ public override bool Equals(object obj)
+ {
+ OBJFaceVertex faceVertex = (OBJFaceVertex) obj;
+ return m_VertexIndex == faceVertex.m_VertexIndex
+ && m_UVIndex == faceVertex.m_UVIndex
+ && m_UV2Index == faceVertex.m_UV2Index
+ && m_NormalIndex == faceVertex.m_NormalIndex;
+ }
+}
\ No newline at end of file
diff --git a/Assets/FileBrowser/internals/SoundViewer.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs.meta
similarity index 74%
rename from Assets/FileBrowser/internals/SoundViewer.cs.meta
rename to Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs.meta
index 0939e9e9..ffd4ff5d 100644
--- a/Assets/FileBrowser/internals/SoundViewer.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJFaceVertex.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
-guid: 982c467786707e54897799c8eb7460de
+guid: 1f5cff977d3365a4f9f33933bb603037
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs
new file mode 100644
index 00000000..581d4c9d
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs
@@ -0,0 +1,27 @@
+
+using System.Collections.Generic;
+
+public class OBJGroup
+{
+ //------------------------------------------------------------------------------------------------------------
+ private readonly List m_Faces = new List();
+
+ //------------------------------------------------------------------------------------------------------------
+ public OBJGroup(string lName)
+ {
+ m_Name = lName;
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_Name { get; private set; }
+ public OBJMaterial m_Material { get; set; }
+
+ //------------------------------------------------------------------------------------------------------------
+ public IList Faces { get { return m_Faces; } }
+
+ //------------------------------------------------------------------------------------------------------------
+ public void AddFace(OBJFace lFace)
+ {
+ m_Faces.Add(lFace);
+ }
+}
\ No newline at end of file
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs.meta
new file mode 100644
index 00000000..7d03d415
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJGroup.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8508b6de42212c84ebaec559aed6c7b6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs
new file mode 100644
index 00000000..7d2d1dc9
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs
@@ -0,0 +1,219 @@
+
+using System;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+
+using UnityEngine;
+
+using UnityExtension;
+
+/*
+ * Currently only supports Triangluar Meshes
+ */
+
+public class OBJLoader
+{
+ //------------------------------------------------------------------------------------------------------------
+ private static OBJData m_OBJData = null;
+
+ //------------------------------------------------------------------------------------------------------------
+ private static OBJMaterial m_CurrentMaterial = null;
+ private static OBJGroup m_CurrentGroup = null;
+
+ #region PROCESSORS
+
+ //------------------------------------------------------------------------------------------------------------
+ private static readonly Dictionary> m_ParseOBJActionDictionary = new Dictionary>
+ {
+ { "mtllib", (lEntry) => { /*Load MTL*/ } },
+ { "usemtl", (lEntry) => { PushOBJGroupIfNeeded(); m_CurrentGroup.m_Material = m_OBJData.m_Materials.SingleOrDefault((lX) => { return lX.m_Name.EqualsInvariantCultureIgnoreCase(lEntry); }); } },
+ { "v", (lEntry) => { m_OBJData.m_Vertices.Add(Utils.ParseVector3String(lEntry)); } },
+ { "vn", (lEntry) => { m_OBJData.m_Normals.Add(Utils.ParseVector3String(lEntry)); } },
+ { "vt", (lEntry) => { m_OBJData.m_UVs.Add(Utils.ParseVector2String(lEntry)); } },
+ { "vt2", (lEntry) => { m_OBJData.m_UV2s.Add(Utils.ParseVector2String(lEntry)); } },
+ { "vc", (lEntry) => { m_OBJData.m_Colors.Add(Utils.ParseVector4String(lEntry).ToColor()); } },
+ { "f", PushOBJFace },
+ { "g", PushOBJGroup },
+ };
+
+ //------------------------------------------------------------------------------------------------------------
+ private static readonly Dictionary> m_ParseMTLActionDictionary = new Dictionary>
+ {
+ { "newmtl", PushOBJMaterial },
+ { "Ka", (lEntry) => { m_CurrentMaterial.m_AmbientColor = Utils.ParseVector3String(lEntry).ToColor(); } },
+ { "Kd", (lEntry) => { m_CurrentMaterial.m_DiffuseColor = Utils.ParseVector3String(lEntry).ToColor(); } },
+ { "Ks", (lEntry) => { m_CurrentMaterial.m_SpecularColor = Utils.ParseVector3String(lEntry).ToColor(); } },
+ { "Ns", (lEntry) => { m_CurrentMaterial.m_SpecularCoefficient = lEntry.ParseInvariantFloat(); } },
+ { "d", (lEntry) => { m_CurrentMaterial.m_Transparency = lEntry.ParseInvariantFloat(); } },
+ { "Tr", (lEntry) => { m_CurrentMaterial.m_Transparency = lEntry.ParseInvariantFloat(); } },
+ { "illum", (lEntry) => { m_CurrentMaterial.m_IlluminationModel = lEntry.ParseInvariantInt(); } },
+ { "map_Ka", (lEntry) => { m_CurrentMaterial.m_AmbientTextureMap = lEntry; } },
+ { "map_Kd", (lEntry) => { m_CurrentMaterial.m_DiffuseTextureMap = lEntry; } },
+ { "map_Ks", (lEntry) => { m_CurrentMaterial.m_SpecularTextureMap = lEntry; } },
+ { "map_Ns", (lEntry) => { m_CurrentMaterial.m_SpecularHighlightTextureMap = lEntry; } },
+ { "map_d", (lEntry) => { m_CurrentMaterial.m_AlphaTextureMap = lEntry; } },
+ { "map_bump", (lEntry) => { m_CurrentMaterial.m_BumpMap = lEntry; } },
+ { "bump", (lEntry) => { m_CurrentMaterial.m_BumpMap = lEntry; } },
+ { "disp", (lEntry) => { m_CurrentMaterial.m_DisplacementMap = lEntry; } },
+ { "decal",(lEntry) => { m_CurrentMaterial.m_StencilDecalMap = lEntry; } },
+ };
+
+ #endregion
+
+ #region PUBLIC_INTERFACE
+
+ //------------------------------------------------------------------------------------------------------------
+ public static OBJData LoadOBJ(Stream lStream)
+ {
+ m_OBJData = new OBJData();
+
+ m_CurrentMaterial = null;
+ m_CurrentGroup = null;
+
+ StreamReader lLineStreamReader = new StreamReader(lStream);
+
+ Action lAction = null;
+ string lCurrentLine = null;
+ string[] lFields = null;
+ string lKeyword = null;
+ string lData = null;
+
+ while (!lLineStreamReader.EndOfStream)
+ {
+ lCurrentLine = lLineStreamReader.ReadLine();
+
+ if (StringExt.IsNullOrWhiteSpace(lCurrentLine)
+ || lCurrentLine[0] == '#')
+ {
+ continue;
+ }
+
+ lFields = lCurrentLine.Trim().Split(null, 2);
+ if (lFields.Length < 2)
+ {
+ continue;
+ }
+
+ lKeyword = lFields[0].Trim();
+ lData = lFields[1].Trim();
+
+ lAction = null;
+ m_ParseOBJActionDictionary.TryGetValue(lKeyword.ToLowerInvariant(), out lAction);
+
+ if (lAction != null)
+ {
+ lAction(lData);
+ }
+ }
+
+ var lOBJData = m_OBJData;
+ m_OBJData = null;
+
+ return lOBJData;
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public static void ExportOBJ(OBJData lData, Stream lStream)
+ {
+ StreamWriter lLineStreamWriter = new StreamWriter(lStream);
+
+ lLineStreamWriter.WriteLine(string.Format("# File exported by Unity3D version {0}", Application.unityVersion));
+
+ for (int lCount = 0; lCount < lData.m_Vertices.Count; ++lCount)
+ {
+ lLineStreamWriter.WriteLine(string.Format("v {0} {1} {2}",
+ lData.m_Vertices[lCount].x.ToString("n8"),
+ lData.m_Vertices[lCount].y.ToString("n8"),
+ lData.m_Vertices[lCount].z.ToString("n8")));
+ }
+
+ for (int lCount = 0; lCount < lData.m_UVs.Count; ++lCount)
+ {
+ lLineStreamWriter.WriteLine(string.Format("vt {0} {1}",
+ lData.m_UVs[lCount].x.ToString("n5"),
+ lData.m_UVs[lCount].y.ToString("n5")));
+ }
+
+ for (int lCount = 0; lCount < lData.m_UV2s.Count; ++lCount)
+ {
+ lLineStreamWriter.WriteLine(string.Format("vt2 {0} {1}",
+ lData.m_UVs[lCount].x.ToString("n5"),
+ lData.m_UVs[lCount].y.ToString("n5")));
+ }
+
+ for (int lCount = 0; lCount < lData.m_Normals.Count; ++lCount)
+ {
+ lLineStreamWriter.WriteLine(string.Format("vn {0} {1} {2}",
+ lData.m_Normals[lCount].x.ToString("n8"),
+ lData.m_Normals[lCount].y.ToString("n8"),
+ lData.m_Normals[lCount].z.ToString("n8")));
+ }
+
+ for (int lCount = 0; lCount < lData.m_Colors.Count; ++lCount)
+ {
+ lLineStreamWriter.WriteLine(string.Format("vc {0} {1} {2} {3}",
+ lData.m_Colors[lCount].r.ToString("n8"),
+ lData.m_Colors[lCount].g.ToString("n8"),
+ lData.m_Colors[lCount].b.ToString("n8"),
+ lData.m_Colors[lCount].a.ToString("n8")));
+ }
+
+ for (int lGroup = 0; lGroup < lData.m_Groups.Count; ++lGroup)
+ {
+ lLineStreamWriter.WriteLine(string.Format("g {0}", lData.m_Groups[lGroup].m_Name));
+
+ for (int lFace = 0; lFace < lData.m_Groups[lGroup].Faces.Count; ++lFace)
+ {
+ lLineStreamWriter.WriteLine(string.Format("f {0} {1} {2}",
+ lData.m_Groups[lGroup].Faces[lFace].ToString(0),
+ lData.m_Groups[lGroup].Faces[lFace].ToString(1),
+ lData.m_Groups[lGroup].Faces[lFace].ToString(2)));
+ }
+ }
+
+ lLineStreamWriter.Flush();
+ }
+
+ #endregion
+
+ //------------------------------------------------------------------------------------------------------------
+ private static void PushOBJMaterial(string lMaterialName)
+ {
+ m_CurrentMaterial = new OBJMaterial(lMaterialName);
+ m_OBJData.m_Materials.Add(m_CurrentMaterial);
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ private static void PushOBJGroup(string lGroupName)
+ {
+ m_CurrentGroup = new OBJGroup(lGroupName);
+ m_OBJData.m_Groups.Add(m_CurrentGroup);
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ private static void PushOBJGroupIfNeeded()
+ {
+ if (m_CurrentGroup == null)
+ {
+ PushOBJGroup("default");
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ private static void PushOBJFace(string lFaceLine)
+ {
+ PushOBJGroupIfNeeded();
+
+ var vertices = lFaceLine.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+
+ var face = new OBJFace();
+
+ foreach (var vertexString in vertices)
+ {
+ face.ParseVertex(vertexString);
+ }
+
+ m_CurrentGroup.AddFace(face);
+ }
+}
\ No newline at end of file
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs.meta
new file mode 100644
index 00000000..99e87241
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJLoader.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bda02739f6fbaeb4c8c3da925164b8cf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs
new file mode 100644
index 00000000..b16438e8
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs
@@ -0,0 +1,42 @@
+
+using UnityEngine;
+
+public class OBJMaterial
+{
+ //------------------------------------------------------------------------------------------------------------
+ public OBJMaterial(string lMaterialName)
+ {
+ m_Name = lMaterialName;
+ }
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_Name;
+
+ //------------------------------------------------------------------------------------------------------------
+ public Color m_AmbientColor;
+ public Color m_DiffuseColor;
+ public Color m_SpecularColor;
+ public float m_SpecularCoefficient;
+
+ //------------------------------------------------------------------------------------------------------------
+ public float m_Transparency;
+
+ //------------------------------------------------------------------------------------------------------------
+ public int m_IlluminationModel;
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_AmbientTextureMap;
+ public string m_DiffuseTextureMap;
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_SpecularTextureMap;
+ public string m_SpecularHighlightTextureMap;
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_BumpMap;
+ public string m_DisplacementMap;
+ public string m_StencilDecalMap;
+
+ //------------------------------------------------------------------------------------------------------------
+ public string m_AlphaTextureMap;
+}
\ No newline at end of file
diff --git a/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs.meta b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs.meta
new file mode 100644
index 00000000..64e0ef26
--- /dev/null
+++ b/Assets/OBJ-IO/Plugins/Mesh/OBJ/OBJMaterial.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ceb2526c78b78c04592f312a4e65ec95
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Utils.meta b/Assets/OBJ-IO/Plugins/Utils.meta
index f993b503..2e09ad1a 100644
--- a/Assets/OBJ-IO/Plugins/Utils.meta
+++ b/Assets/OBJ-IO/Plugins/Utils.meta
@@ -1,9 +1,8 @@
fileFormatVersion: 2
-guid: 94cd99f1df5fafa489e641d039f97273
+guid: 645d782c617a141eaa17875286939a36
folderAsset: yes
-timeCreated: 1432869564
-licenseType: Pro
DefaultImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/OBJ-IO/Plugins/Utils/Int32Converter.cs.meta b/Assets/OBJ-IO/Plugins/Utils/Int32Converter.cs.meta
index 2999c354..81b98f51 100644
--- a/Assets/OBJ-IO/Plugins/Utils/Int32Converter.cs.meta
+++ b/Assets/OBJ-IO/Plugins/Utils/Int32Converter.cs.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 2980235c1e3576a4ab7dca278af19308
MonoImporter:
+ externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
diff --git a/Assets/OBJ-IO/Readme.txt.meta b/Assets/OBJ-IO/Readme.txt.meta
index 6372bc35..6cf7e2df 100644
--- a/Assets/OBJ-IO/Readme.txt.meta
+++ b/Assets/OBJ-IO/Readme.txt.meta
@@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: e1f277bf041647445ac3bf5b643a46fe
TextScriptImporter:
+ externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/Plugins/ClipboardHelper.dll.meta b/Assets/Plugins/ClipboardHelper.dll.meta
index a6547311..2bf18416 100644
--- a/Assets/Plugins/ClipboardHelper.dll.meta
+++ b/Assets/Plugins/ClipboardHelper.dll.meta
@@ -1,14 +1,15 @@
fileFormatVersion: 2
guid: d3215659d71d2184bb0d24ec3976c7f2
-timeCreated: 1461458104
-licenseType: Pro
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
+ defineConstraints: []
isPreloaded: 0
isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
platformData:
- first:
'': Any
@@ -59,7 +60,7 @@ PluginImporter:
second:
enabled: 1
settings:
- CPU: x86_64
+ CPU: AnyCPU
- first:
Standalone: LinuxUniversal
second:
diff --git a/Assets/Plugins/Editor.meta b/Assets/Plugins/Editor.meta
new file mode 100644
index 00000000..16c6026a
--- /dev/null
+++ b/Assets/Plugins/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b0dde7ce4e3974b2badb6caa1e93bae0
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/JetBrains.meta b/Assets/Plugins/Editor/JetBrains.meta
new file mode 100644
index 00000000..7b606fea
--- /dev/null
+++ b/Assets/Plugins/Editor/JetBrains.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 54795eca6aef84cd5908ee5239121d32
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll b/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
new file mode 100644
index 00000000..05082ac4
Binary files /dev/null and b/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll differ
diff --git a/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta b/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
new file mode 100644
index 00000000..d6f6733b
--- /dev/null
+++ b/Assets/Plugins/Editor/JetBrains/JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
@@ -0,0 +1,32 @@
+fileFormatVersion: 2
+guid: 0fecaa1aa7cec475bb76150e99a8ee62
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/FreeImage.dll b/Assets/Plugins/FreeImage.dll
deleted file mode 100644
index 0562f4a0..00000000
Binary files a/Assets/Plugins/FreeImage.dll and /dev/null differ
diff --git a/Assets/Plugins/FreeImage.dll.meta b/Assets/Plugins/FreeImage.dll.meta
deleted file mode 100644
index 74f319db..00000000
--- a/Assets/Plugins/FreeImage.dll.meta
+++ /dev/null
@@ -1,27 +0,0 @@
-fileFormatVersion: 2
-guid: ebd9e6f743aa7944bb5ef45303809de7
-timeCreated: 1428028810
-licenseType: Pro
-PluginImporter:
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- isOverridable: 0
- platformData:
- data:
- first:
- Any:
- second:
- enabled: 1
- settings: {}
- data:
- first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/Plugins/FreeImageNET.dll b/Assets/Plugins/FreeImageNET.dll
deleted file mode 100644
index 9dc67b10..00000000
Binary files a/Assets/Plugins/FreeImageNET.dll and /dev/null differ
diff --git a/Assets/Plugins/FreeImageNET.dll.meta b/Assets/Plugins/FreeImageNET.dll.meta
deleted file mode 100644
index 6227a91c..00000000
--- a/Assets/Plugins/FreeImageNET.dll.meta
+++ /dev/null
@@ -1,34 +0,0 @@
-fileFormatVersion: 2
-guid: a345a206b81dd7a44b4622826a684325
-timeCreated: 1427854935
-licenseType: Pro
-PluginImporter:
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- isOverridable: 0
- platformData:
- data:
- first:
- Any:
- second:
- enabled: 1
- settings: {}
- data:
- first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- data:
- first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/PostProcess/OpaquePostProcess.cs b/Assets/PostProcess/OpaquePostProcess.cs
index dcfa2468..fb026411 100644
--- a/Assets/PostProcess/OpaquePostProcess.cs
+++ b/Assets/PostProcess/OpaquePostProcess.cs
@@ -19,10 +19,6 @@ public class OpaquePostProcess : MonoBehaviour {
RenderTexture _AccumulatedFramesAlt;
Camera thisCamera;
- Quaternion lastCamRotation = Quaternion.identity;
- Vector3 lastCamPosition = Vector3.zero;
- Quaternion savedCameraRotation = Quaternion.identity;
- float lastBlendAmount = 1.0f;
HaltonSequence positionsequence = new HaltonSequence();
int hspos = 0;
diff --git a/Assets/Scripts/AOFromNormalGui.cs b/Assets/Scripts/AOFromNormalGui.cs
deleted file mode 100644
index 4e38f682..00000000
--- a/Assets/Scripts/AOFromNormalGui.cs
+++ /dev/null
@@ -1,339 +0,0 @@
-using UnityEngine;
-using System.Collections;
-using System.ComponentModel;
-
-public class AOSettings {
-
- [DefaultValueAttribute(5.0f)]
- public float Spread;
- [DefaultValueAttribute("50")]
- public string SpreadText;
-
- [DefaultValueAttribute(0.0f)]
- public float FinalBias;
- [DefaultValueAttribute("0")]
- public string FinalBiasText;
-
- [DefaultValueAttribute(1.0f)]
- public float FinalContrast;
- [DefaultValueAttribute("1")]
- public string FinalContrastText;
-
- [DefaultValueAttribute(100.0f)]
- public float Depth;
- [DefaultValueAttribute("100")]
- public string DepthText;
-
- [DefaultValueAttribute(1.0f)]
- public float Blend;
- [DefaultValueAttribute("1")]
- public string BlendText;
-
- [DefaultValueAttribute(1.0f)]
- public float BlendAmount;
-
- public AOSettings(){
-
- this.Spread = 50.0f;
- this.SpreadText = "50";
-
- this.Depth = 100.0f;
- this.DepthText = "100";
-
- this.FinalBias = 0.0f;
- this.FinalBiasText = "0";
-
- this.FinalContrast = 1.0f;
- this.FinalContrastText = "1";
-
- this.Blend = 1.0f;
- this.BlendText = "1";
-
- this.BlendAmount = 1.0f;
- }
-}
-
-public class AOFromNormalGui : MonoBehaviour {
-
- public MainGui MainGuiScript;
-
- public Texture2D defaultNormal;
- public Texture2D defaultHeight;
-
- Texture2D _AOMap;
- RenderTexture _WorkingAOMap;
- RenderTexture _BlendedAOMap;
- RenderTexture _TempAOMap;
-
- int imageSizeX = 1024;
- int imageSizeY = 1024;
-
- AOSettings AOS;
-
- public Material thisMaterial;
- Material blitMaterial;
-
- public GameObject testObject;
- bool doStuff = false;
- bool newTexture = false;
-
- Rect windowRect = new Rect (30, 300, 300, 230);
-
- bool settingsInitialized = false;
-
- public bool busy = false;
-
- public void GetValues( ProjectObject projectObject ) {
- InitializeSettings ();
- projectObject.AOS = AOS;
- }
-
- public void SetValues( ProjectObject projectObject ) {
- InitializeSettings ();
- if (projectObject.AOS != null) {
- AOS = projectObject.AOS;
- } else {
- settingsInitialized = false;
- InitializeSettings ();
- }
- doStuff = true;
- }
-
- void InitializeSettings() {
-
- if (settingsInitialized == false) {
-
- AOS = new AOSettings ();
-
- if (MainGuiScript._HeightMap != null) {
- AOS.Blend = 1.0f;
- AOS.BlendText = "1.0";
- } else {
- AOS.Blend = 0.0f;
- AOS.BlendText = "0.0";
- }
-
- settingsInitialized = true;
- }
-
- }
-
- // Use this for initialization
- void Start () {
-
- testObject.GetComponent().sharedMaterial = thisMaterial;
-
- blitMaterial = new Material (Shader.Find ("Hidden/Blit_Shader"));
-
- //blitMaterial = new Material (Shader.Find ("Hidden/Blit_Height_From_Normal"));
-
- InitializeSettings ();
-
- }
-
- public void DoStuff() {
- doStuff = true;
- }
-
- public void NewTexture() {
- newTexture = true;
- }
-
-
- // Update is called once per frame
- void Update () {
-
- if (newTexture) {
- InitializeTextures();
- newTexture = false;
- }
-
- if (doStuff) {
-
- StopAllCoroutines();
-
- StartCoroutine( ProcessNormalDepth () );
- doStuff = false;
- }
-
- thisMaterial.SetFloat ("_FinalContrast", AOS.FinalContrast);
- thisMaterial.SetFloat ("_FinalBias", AOS.FinalBias);
- thisMaterial.SetFloat ("_AOBlend", AOS.Blend);
-
- }
-
- void DoMyWindow ( int windowID ) {
-
- int spacingX = 0;
- int spacingY = 50;
-
- int offsetX = 10;
- int offsetY = 30;
-
- if( GuiHelper.Slider( new Rect (offsetX, offsetY, 280, 50), "AO pixel Spread", AOS.Spread, AOS.SpreadText, out AOS.Spread, out AOS.SpreadText, 10.0f, 100.0f ) ) {
- doStuff = true;
- }
- offsetY += 40;
-
- if( GuiHelper.Slider( new Rect( offsetX, offsetY, 280, 50 ), "Pixel Depth", AOS.Depth, AOS.DepthText, out AOS.Depth, out AOS.DepthText, 0.0f, 256.0f ) ) {
- doStuff = true;
- }
- offsetY += 40;
-
- GuiHelper.Slider (new Rect (offsetX, offsetY, 280, 50), "Blend Normal AO and Depth AO", AOS.Blend, AOS.BlendText, out AOS.Blend, out AOS.BlendText, 0.0f, 1.0f);
- offsetY += 40;
-
- GuiHelper.Slider( new Rect( offsetX, offsetY, 280, 50 ), "AO Power", AOS.FinalContrast, AOS.FinalContrastText, out AOS.FinalContrast, out AOS.FinalContrastText, 0.1f, 10.0f );
- offsetY += 40;
-
- GuiHelper.Slider( new Rect( offsetX, offsetY, 280, 50 ), "AO Bias", AOS.FinalBias, AOS.FinalBiasText, out AOS.FinalBias, out AOS.FinalBiasText, -1.0f, 1.0f );
- offsetY += 50;
-
- if (busy) { GUI.enabled = false; } else { GUI.enabled = true; }
- if( GUI.Button (new Rect (offsetX + 150, offsetY, 130, 30), "Set as AO Map" ) ){
- StartCoroutine( ProcessAO () );
- }
- GUI.enabled = true;
- GUI.DragWindow();
- }
-
- void OnGUI () {
-
- windowRect.width = 300;
- windowRect.height = 280;
-
- windowRect = GUI.Window(10, windowRect, DoMyWindow, "Normal + Depth to AO");
-
- }
-
- public void InitializeTextures() {
-
- testObject.GetComponent().sharedMaterial = thisMaterial;
-
- CleanupTextures ();
-
- if (MainGuiScript._NormalMap != null) {
- imageSizeX = MainGuiScript._NormalMap.width;
- imageSizeY = MainGuiScript._NormalMap.height;
- } else {
- imageSizeX = MainGuiScript._HeightMap.width;
- imageSizeY = MainGuiScript._HeightMap.height;
- }
-
- Debug.Log ( "Initializing Textures of size: " + imageSizeX.ToString() + "x" + imageSizeY.ToString() );
-
- _WorkingAOMap = new RenderTexture (imageSizeX, imageSizeY, 0, RenderTextureFormat.RGHalf, RenderTextureReadWrite.Linear);
- _WorkingAOMap.wrapMode = TextureWrapMode.Repeat;
- _BlendedAOMap = new RenderTexture (imageSizeX, imageSizeY, 0, RenderTextureFormat.RGHalf, RenderTextureReadWrite.Linear);
- _BlendedAOMap.wrapMode = TextureWrapMode.Repeat;
-
- }
-
- public void Close(){
- CleanupTextures ();
- this.gameObject.SetActive (false);
- }
-
- void CleanupTexture( RenderTexture _Texture ) {
-
- if (_Texture != null) {
- _Texture.Release();
- _Texture = null;
- }
-
- }
-
- void CleanupTextures() {
-
- Debug.Log ("Cleaning Up Textures");
-
- CleanupTexture( _WorkingAOMap );
- CleanupTexture( _BlendedAOMap );
- CleanupTexture( _TempAOMap );
-
- }
-
- public IEnumerator ProcessAO() {
-
- busy = true;
-
- Debug.Log ("Processing AO Map");
-
- CleanupTexture (_TempAOMap);
- _TempAOMap = new RenderTexture (imageSizeX, imageSizeY, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- _TempAOMap.wrapMode = TextureWrapMode.Repeat;
-
- blitMaterial.SetFloat ("_FinalBias", AOS.FinalBias);
- blitMaterial.SetFloat ("_FinalContrast", AOS.FinalContrast);
- blitMaterial.SetTexture ("_MainTex", _BlendedAOMap);
- blitMaterial.SetFloat ("_AOBlend", AOS.Blend);
-
- Graphics.Blit(_BlendedAOMap, _TempAOMap, blitMaterial, 8);
-
- if (MainGuiScript._AOMap != null) {
- Destroy (MainGuiScript._AOMap);
- }
-
- RenderTexture.active = _TempAOMap;
- MainGuiScript._AOMap = new Texture2D( _TempAOMap.width, _TempAOMap.height, TextureFormat.ARGB32, true, true );
- MainGuiScript._AOMap.ReadPixels(new Rect(0, 0, _TempAOMap.width, _TempAOMap.height), 0, 0);
- MainGuiScript._AOMap.Apply();
-
- yield return new WaitForSeconds(0.1f);
-
- CleanupTexture ( _TempAOMap );
-
- busy = false;
- }
-
- public IEnumerator ProcessNormalDepth () {
-
- busy = true;
-
- Debug.Log ("Processing Normal Depth to AO");
-
- blitMaterial.SetVector ("_ImageSize", new Vector4 (imageSizeX, imageSizeY, 0, 0));
- blitMaterial.SetFloat ("_Spread", AOS.Spread);
-
- if (MainGuiScript._NormalMap != null) {
- blitMaterial.SetTexture ("_MainTex", MainGuiScript._NormalMap);
- } else {
- blitMaterial.SetTexture ("_MainTex", defaultNormal);
- }
-
- if (MainGuiScript._HDHeightMap != null) {
- blitMaterial.SetTexture ("_HeightTex", MainGuiScript._HDHeightMap);
- } else if (MainGuiScript._HeightMap != null) {
- blitMaterial.SetTexture ("_HeightTex", MainGuiScript._HeightMap);
- } else {
- blitMaterial.SetTexture ("_HeightTex", defaultHeight);
- }
-
- blitMaterial.SetTexture ("_BlendTex", _BlendedAOMap);
- blitMaterial.SetFloat ("_Depth", AOS.Depth);
- thisMaterial.SetTexture ("_MainTex", _BlendedAOMap);
-
- int yieldCountDown = 5;
-
- for( int i = 1; i < 100; i++ ) {
-
- blitMaterial.SetFloat ("_BlendAmount", 1.0f / (float)i );
- blitMaterial.SetFloat ("_Progress", (float)i / 100.0f );
-
- Graphics.Blit (MainGuiScript._NormalMap, _WorkingAOMap, blitMaterial, 7);
- Graphics.Blit (_WorkingAOMap, _BlendedAOMap);
-
-
- yieldCountDown -= 1;
- if( yieldCountDown <= 0 ){
- yieldCountDown = 5;
- yield return new WaitForSeconds(0.01f);
- }
- }
-
- yield return new WaitForSeconds(0.01f);
-
- busy = false;
-
- }
-}
diff --git a/Assets/Scripts/AlignmentGui.cs b/Assets/Scripts/AlignmentGui.cs
index bc5e853d..b7251d49 100644
--- a/Assets/Scripts/AlignmentGui.cs
+++ b/Assets/Scripts/AlignmentGui.cs
@@ -1,505 +1,526 @@
-using UnityEngine;
+#region
+
using System.Collections;
+using JetBrains.Annotations;
+using UnityEngine;
+
+#endregion
+
+public class AlignmentGui : MonoBehaviour
+{
+ private static readonly int TargetPoint = Shader.PropertyToID("_TargetPoint");
+ private static readonly int MainTex = Shader.PropertyToID("_MainTex");
+ private static readonly int CorrectTex = Shader.PropertyToID("_CorrectTex");
+ private static readonly int PointScale = Shader.PropertyToID("_PointScale");
+ private static readonly int PointTl = Shader.PropertyToID("_PointTL");
+ private static readonly int PointTr = Shader.PropertyToID("_PointTR");
+ private static readonly int PointBl = Shader.PropertyToID("_PointBL");
+ private static readonly int PointBr = Shader.PropertyToID("_PointBR");
+ private static readonly int Width = Shader.PropertyToID("_Width");
+ private static readonly int Height = Shader.PropertyToID("_Height");
+ private static readonly int Lens = Shader.PropertyToID("_Lens");
+ private static readonly int PerspectiveX = Shader.PropertyToID("_PerspectiveX");
+ private static readonly int PerspectiveY = Shader.PropertyToID("_PerspectiveY");
+ private static readonly int Slider = Shader.PropertyToID("_Slider");
+ private RenderTexture _alignMap;
+
+ private Material _blitMaterial;
+ private Camera _camera;
+
+ private bool _doStuff;
+
+
+ private int _grabbedPoint;
+
+ private float _lensDistort;
+ private string _lensDistortText = "0.0";
+
+ private RenderTexture _lensMap;
+
+ private MainGui _mainGui;
+ private RenderTexture _perspectiveMap;
+
+ private float _perspectiveX;
+ private string _perspectiveXText = "0.0";
+
+ private float _perspectiveY;
+ private string _perspectiveYText = "0.0";
+ private Vector2 _pointBl = new Vector2(0.0f, 0.0f);
+ private Vector2 _pointBr = new Vector2(1.0f, 0.0f);
+
+ private Vector2 _pointTl = new Vector2(0.0f, 1.0f);
+ private Vector2 _pointTr = new Vector2(1.0f, 1.0f);
+
+ private float _slider = 0.5f;
+ private Vector2 _startOffset = Vector2.zero;
+
+ private Texture2D _textureToAlign;
+
+ private Rect _windowRect = new Rect(30, 300, 300, 530);
+ [UsedImplicitly] public bool NewTexture;
+ public GameObject TestObject;
+
+ public Material ThisMaterial;
+
+ private void Awake()
+ {
+ _camera = Camera.main;
+ }
+
+ public void Initialize()
+ {
+ gameObject.SetActive(true);
+ _mainGui = MainGui.Instance;
+ TestObject.GetComponent().sharedMaterial = ThisMaterial;
+ _blitMaterial = new Material(Shader.Find("Hidden/Blit_Alignment")) {hideFlags = HideFlags.HideAndDontSave};
+
+ if (_mainGui.DiffuseMapOriginal != null)
+ _textureToAlign = _mainGui.DiffuseMapOriginal;
+ else if (_mainGui.HeightMap != null)
+ _textureToAlign = _mainGui.HeightMap;
+ else if (_mainGui.MetallicMap != null)
+ _textureToAlign = _mainGui.MetallicMap;
+ else if (_mainGui.SmoothnessMap != null)
+ _textureToAlign = _mainGui.SmoothnessMap;
+ else if (_mainGui.EdgeMap != null)
+ _textureToAlign = _mainGui.EdgeMap;
+ else if (_mainGui.AoMap != null) _textureToAlign = _mainGui.AoMap;
+
+
+ _doStuff = true;
+ }
+
+
+ private static void CleanupTexture(RenderTexture texture)
+ {
+ if (!texture) return;
+ texture.Release();
+ // ReSharper disable once RedundantAssignment
+ texture = null;
+ }
+
+ public void Close()
+ {
+ CleanupTexture(_lensMap);
+ CleanupTexture(_alignMap);
+ CleanupTexture(_perspectiveMap);
+ gameObject.SetActive(false);
+ }
+
+ private void SelectClosestPoint()
+ {
+ if (Input.GetMouseButton(0)) return;
+ if (!_camera) return;
+
+ if (!Physics.Raycast(_camera.ScreenPointToRay(Input.mousePosition), out var hit))
+ return;
+
+ var hitTc = hit.textureCoord;
+
+ var dist1 = Vector2.Distance(hitTc, _pointTl);
+ var dist2 = Vector2.Distance(hitTc, _pointTr);
+ var dist3 = Vector2.Distance(hitTc, _pointBl);
+ var dist4 = Vector2.Distance(hitTc, _pointBr);
+
+ var closestDist = dist1;
+ var closestPoint = _pointTl;
+ _grabbedPoint = 0;
+ if (dist2 < closestDist)
+ {
+ closestDist = dist2;
+ closestPoint = _pointTr;
+ _grabbedPoint = 1;
+ }
+
+ if (dist3 < closestDist)
+ {
+ closestDist = dist3;
+ closestPoint = _pointBl;
+ _grabbedPoint = 2;
+ }
+
+ if (dist4 < closestDist)
+ {
+ closestDist = dist4;
+ closestPoint = _pointBr;
+ _grabbedPoint = 3;
+ }
+
+ if (closestDist > 0.1f)
+ {
+ closestPoint = new Vector2(-1, -1);
+ _grabbedPoint = -1;
+ }
+
+ ThisMaterial.SetVector(TargetPoint, closestPoint);
+ }
+
+ private void DragPoint()
+ {
+ if (!Physics.Raycast(_camera.ScreenPointToRay(Input.mousePosition), out var hit))
+ return;
+
+ var hitTc = hit.textureCoord;
+
+ if (Input.GetMouseButtonDown(0))
+ {
+ _startOffset = hitTc;
+ }
+ else if (Input.GetMouseButton(0))
+ {
+ Vector2 point;
+ switch (_grabbedPoint)
+ {
+ case 0:
+ _pointTl += hitTc - _startOffset;
+ point = _pointTl;
+ break;
+ case 1:
+ _pointTr += hitTc - _startOffset;
+ point = _pointTr;
+ break;
+ case 2:
+ _pointBl += hitTc - _startOffset;
+ point = _pointBl;
+ break;
+ case 3:
+ _pointBr += hitTc - _startOffset;
+ point = _pointBr;
+
+ break;
+ default: return;
+ }
+
+ if (point != null) ThisMaterial.SetVector(TargetPoint, point);
+
+ _startOffset = hitTc;
+ }
+
+ _doStuff = true;
+ }
+
+ // Update is called once per frame
+ private void Update()
+ {
+ SelectClosestPoint();
+ DragPoint();
+
+ ProcessMap(_textureToAlign);
+
+ var aspect = _textureToAlign.width / (float) _textureToAlign.height;
+ const float area = 1.0f;
+ var pointScale = Vector2.one;
+ pointScale.x = aspect;
+ var newArea = pointScale.x * pointScale.y;
+ var areaScale = Mathf.Sqrt(area / newArea);
+
+ pointScale.x *= areaScale;
+ pointScale.y *= areaScale;
+
+ ThisMaterial.SetTexture(MainTex, _lensMap);
+ ThisMaterial.SetTexture(CorrectTex, _perspectiveMap);
+
+ ThisMaterial.SetVector(PointScale, pointScale);
+
+ ThisMaterial.SetVector(PointTl, _pointTl);
+ ThisMaterial.SetVector(PointTr, _pointTr);
+ ThisMaterial.SetVector(PointBl, _pointBl);
+ ThisMaterial.SetVector(PointBr, _pointBr);
+
+ _blitMaterial.SetVector(PointTl, _pointTl);
+ _blitMaterial.SetVector(PointTr, _pointTr);
+ _blitMaterial.SetVector(PointBl, _pointBl);
+ _blitMaterial.SetVector(PointBr, _pointBr);
+
+ _blitMaterial.SetFloat(Width, _textureToAlign.width);
+ _blitMaterial.SetFloat(Height, _textureToAlign.height);
+
+ _blitMaterial.SetFloat(Lens, _lensDistort);
+ _blitMaterial.SetFloat(PerspectiveX, _perspectiveX);
+ _blitMaterial.SetFloat(PerspectiveY, _perspectiveY);
+
+ if (_doStuff)
+ {
+ _doStuff = false;
+ }
+
+ ThisMaterial.SetFloat(Slider, _slider);
+ }
+
+ private void DoMyWindow(int windowId)
+ {
+ const int offsetX = 10;
+ var offsetY = 30;
+
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Alignment Reveal Slider");
+ _slider = GUI.HorizontalSlider(new Rect(offsetX, offsetY + 20, 280, 10), _slider, 0.0f, 1.0f);
+ offsetY += 40;
+
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Preview Map");
+ offsetY += 30;
+
+ GUI.enabled = _mainGui.DiffuseMapOriginal != null;
+ if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Original Diffuse Map"))
+ {
+ _textureToAlign = _mainGui.DiffuseMapOriginal;
+ _doStuff = true;
+ }
+
+ GUI.enabled = _mainGui.DiffuseMap != null;
+ if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Diffuse Map"))
+ {
+ _textureToAlign = _mainGui.DiffuseMap;
+ _doStuff = true;
+ }
+
+ offsetY += 40;
+
+
+ GUI.enabled = _mainGui.HeightMap != null;
+ if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Height Map"))
+ {
+ _textureToAlign = _mainGui.HeightMap;
+ _doStuff = true;
+ }
+
+ offsetY += 40;
+
+ GUI.enabled = _mainGui.MetallicMap != null;
+ if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Metallic Map"))
+ {
+ _textureToAlign = _mainGui.MetallicMap;
+ _doStuff = true;
+ }
+
+ GUI.enabled = _mainGui.SmoothnessMap != null;
+ if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Smoothness Map"))
+ {
+ _textureToAlign = _mainGui.SmoothnessMap;
+ _doStuff = true;
+ }
+
+ offsetY += 40;
+
+ GUI.enabled = _mainGui.EdgeMap != null;
+ if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Edge Map"))
+ {
+ _textureToAlign = _mainGui.EdgeMap;
+ _doStuff = true;
+ }
+
+ GUI.enabled = _mainGui.AoMap != null;
+ if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "AO Map"))
+ {
+ _textureToAlign = _mainGui.AoMap;
+ _doStuff = true;
+ }
+
+ offsetY += 40;
+
+ GUI.enabled = true;
+
+
+ if (GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Lens Distort Correction", _lensDistort,
+ _lensDistortText, out _lensDistort, out _lensDistortText, -1.0f, 1.0f)) _doStuff = true;
+ offsetY += 40;
+
+ if (GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Perspective Correction X", _perspectiveX,
+ _perspectiveXText, out _perspectiveX, out _perspectiveXText, -5.0f, 5.0f)) _doStuff = true;
+ offsetY += 40;
+
+ if (GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Perspective Correction Y", _perspectiveY,
+ _perspectiveYText, out _perspectiveY, out _perspectiveYText, -5.0f, 5.0f)) _doStuff = true;
+ offsetY += 50;
+
+ if (GUI.Button(new Rect(offsetX, offsetY, 130, 30), "Reset Points"))
+ {
+ _pointTl = new Vector2(0.0f, 1.0f);
+ _pointTr = new Vector2(1.0f, 1.0f);
+ _pointBl = new Vector2(0.0f, 0.0f);
+ _pointBr = new Vector2(1.0f, 0.0f);
+ }
+
+
+ if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Set All Maps")) StartCoroutine(SetMaps());
+
+
+ GUI.DragWindow();
+ }
+
+ private void OnGUI()
+ {
+ _windowRect.width = 300;
+ _windowRect.height = 430;
+
+ _windowRect = GUI.Window(21, _windowRect, DoMyWindow, "Texture Alignment Adjuster");
+ }
+
+ private void ProcessMap(Texture2D textureTarget)
+ {
+ var width = textureTarget.width;
+ var height = textureTarget.height;
+
+ if (_lensMap == null)
+ _lensMap = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+ if (_alignMap == null)
+ _alignMap = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+ if (_perspectiveMap == null)
+ _perspectiveMap =
+ new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+
+ Graphics.Blit(textureTarget, _lensMap, _blitMaterial, 0);
+ Graphics.Blit(_lensMap, _alignMap, _blitMaterial, 1);
+ Graphics.Blit(_alignMap, _perspectiveMap, _blitMaterial, 2);
+ }
+
+ private Texture2D SetMap(Texture2D textureTarget)
+ {
+ var width = textureTarget.width;
+ var height = textureTarget.height;
+
+ CleanupTexture(_lensMap);
+ CleanupTexture(_alignMap);
+ CleanupTexture(_perspectiveMap);
+
+ _lensMap = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+ _alignMap = new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+ _perspectiveMap =
+ new RenderTexture(width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
+
+ Graphics.Blit(textureTarget, _lensMap, _blitMaterial, 0);
+ Graphics.Blit(_lensMap, _alignMap, _blitMaterial, 1);
+ Graphics.Blit(_alignMap, _perspectiveMap, _blitMaterial, 2);
+
+ var replaceTexture = _textureToAlign == textureTarget;
+
+ Destroy(textureTarget);
+ // ReSharper disable once RedundantAssignment
+ textureTarget = null;
+
+ RenderTexture.active = _perspectiveMap;
+ textureTarget = new Texture2D(width, height, TextureFormat.ARGB32, false, true);
+ textureTarget.ReadPixels(new Rect(0, 0, width, height), 0, 0);
+ textureTarget.Apply();
+
+ RenderTexture.active = null;
+
+ CleanupTexture(_lensMap);
+ CleanupTexture(_alignMap);
+ CleanupTexture(_perspectiveMap);
+
+ if (replaceTexture) _textureToAlign = textureTarget;
+
+ _doStuff = true;
+
+ return textureTarget;
+ }
+
+ private RenderTexture SetMap(RenderTexture textureTarget)
+ {
+ var width = textureTarget.width;
+ var height = textureTarget.height;
+
+ CleanupTexture(_lensMap);
+ CleanupTexture(_alignMap);
+ CleanupTexture(_perspectiveMap);
+
+ _lensMap = new RenderTexture(width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
+ _alignMap = new RenderTexture(width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
+ _perspectiveMap = new RenderTexture(width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
+
+ Graphics.Blit(textureTarget, _lensMap, _blitMaterial, 0);
+ Graphics.Blit(_lensMap, _alignMap, _blitMaterial, 1);
+ Graphics.Blit(_alignMap, _perspectiveMap, _blitMaterial, 2);
+
+ if (textureTarget != null)
+ {
+ textureTarget.Release();
+ textureTarget = null;
+ }
+
+ Graphics.Blit(_perspectiveMap, textureTarget);
+
+ CleanupTexture(_lensMap);
+ CleanupTexture(_alignMap);
+ CleanupTexture(_perspectiveMap);
+
+ _doStuff = true;
+
+ return textureTarget;
+ }
+
+ private IEnumerator SetMaps()
+ {
+ if (_mainGui.HeightMap != null)
+ {
+ Debug.Log("Setting Height");
+ _mainGui.HeightMap = SetMap(_mainGui.HeightMap);
+ }
+
+ if (_mainGui.HdHeightMap != null)
+ {
+ Debug.Log("Setting HD Height");
+ _mainGui.HdHeightMap = SetMap(_mainGui.HdHeightMap);
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ if (_mainGui.DiffuseMap != null)
+ {
+ Debug.Log("Setting Diffuse");
+ _mainGui.DiffuseMap = SetMap(_mainGui.DiffuseMap);
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ if (_mainGui.DiffuseMapOriginal != null)
+ {
+ Debug.Log("Setting Diffuse Original");
+ _mainGui.DiffuseMapOriginal = SetMap(_mainGui.DiffuseMapOriginal);
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ if (_mainGui.NormalMap != null)
+ {
+ Debug.Log("Setting Normal");
+ _mainGui.NormalMap = SetMap(_mainGui.NormalMap);
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ if (_mainGui.MetallicMap != null)
+ {
+ Debug.Log("Setting Metallic");
+ _mainGui.MetallicMap = SetMap(_mainGui.MetallicMap);
+ }
+
+ yield return new WaitForSeconds(0.1f);
-public class AlignmentGui : MonoBehaviour {
-
- RenderTexture _LensMap;
- RenderTexture _AlignMap;
- RenderTexture _PerspectiveMap;
+ if (_mainGui.SmoothnessMap != null)
+ {
+ Debug.Log("Setting Smoothness");
+ _mainGui.SmoothnessMap = SetMap(_mainGui.SmoothnessMap);
+ }
- Texture2D textureToAlign;
+ yield return new WaitForSeconds(0.1f);
- Material blitMaterial;
+ if (_mainGui.EdgeMap != null)
+ {
+ Debug.Log("Setting Edge");
+ _mainGui.EdgeMap = SetMap(_mainGui.EdgeMap);
+ }
- public Material thisMaterial;
- public GameObject testObject;
-
- MainGui MGS;
- public bool newTexture = false;
-
- Rect windowRect = new Rect (30, 300, 300, 530);
-
- bool doStuff = false;
-
- Vector2 pointTL = new Vector2(0.0f,1.0f);
- Vector2 pointTR = new Vector2(1.0f,1.0f);
- Vector2 pointBL = new Vector2(0.0f,0.0f);
- Vector2 pointBR = new Vector2(1.0f,0.0f);
-
-
- int GrabbedPoint = 0;
- Vector2 StartOffset = Vector2.zero;
-
- float Slider = 0.5f;
-
- float LensDistort = 0.0f;
- string LensDistortText = "0.0";
+ yield return new WaitForSeconds(0.1f);
+
+ if (_mainGui.AoMap != null)
+ {
+ Debug.Log("Setting AO");
+ _mainGui.AoMap = SetMap(_mainGui.AoMap);
+ }
- float PerspectiveX = 0.0f;
- string PerspectiveXText = "0.0";
-
- float PerspectiveY = 0.0f;
- string PerspectiveYText = "0.0";
-
- // Use this for initialization
- void Start () {
-
- }
-
- public void Initialize() {
- this.gameObject.SetActive(true);
- MGS = MainGui.instance;
- testObject.GetComponent().sharedMaterial = thisMaterial;
- blitMaterial = new Material (Shader.Find ("Hidden/Blit_Alignment"));
- blitMaterial.hideFlags = HideFlags.HideAndDontSave;
-
- if (MGS._DiffuseMapOriginal != null) {
- textureToAlign = MGS._DiffuseMapOriginal;
- }else if (MGS._HeightMap != null) {
- textureToAlign = MGS._HeightMap;
- }else if (MGS._MetallicMap != null) {
- textureToAlign = MGS._MetallicMap;
- }else if (MGS._SmoothnessMap != null) {
- textureToAlign = MGS._SmoothnessMap;
- }else if (MGS._EdgeMap != null) {
- textureToAlign = MGS._EdgeMap;
- }else if (MGS._AOMap != null) {
- textureToAlign = MGS._AOMap;
- }
-
-
- doStuff = true;
- }
-
-
- void CleanupTexture( RenderTexture _Texture ) {
-
- if (_Texture != null) {
- _Texture.Release();
- _Texture = null;
- }
- }
-
- public void Close(){
- CleanupTexture (_LensMap );
- CleanupTexture (_AlignMap );
- CleanupTexture (_PerspectiveMap );
- this.gameObject.SetActive (false);
- }
-
- void SelectClosestPoint() {
-
- if (!Input.GetMouseButton (0)) {
-
- RaycastHit hit;
- if (!Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit))
- return;
-
- Vector2 hitTC = hit.textureCoord;
-
- float dist1 = Vector2.Distance (hitTC, pointTL);
- float dist2 = Vector2.Distance (hitTC, pointTR);
- float dist3 = Vector2.Distance (hitTC, pointBL);
- float dist4 = Vector2.Distance (hitTC, pointBR);
-
- float closestDist = dist1;
- Vector2 closestPoint = pointTL;
- GrabbedPoint = 0;
- if (dist2 < closestDist) {
- closestDist = dist2;
- closestPoint = pointTR;
- GrabbedPoint = 1;
- }
- if (dist3 < closestDist) {
- closestDist = dist3;
- closestPoint = pointBL;
- GrabbedPoint = 2;
- }
- if (dist4 < closestDist) {
- closestDist = dist4;
- closestPoint = pointBR;
- GrabbedPoint = 3;
- }
-
- if( closestDist > 0.1f ){
- closestPoint = new Vector2(-1,-1);
- GrabbedPoint = -1;
- }
-
- thisMaterial.SetVector ("_TargetPoint", closestPoint);
-
- }
-
- }
-
- void DragPoint () {
-
- RaycastHit hit;
- if (!Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit))
- return;
-
- Vector2 hitTC = hit.textureCoord;
-
- if (Input.GetMouseButtonDown (0)) {
- StartOffset = hitTC;
- } else if(Input.GetMouseButton (0)) {
-
- switch(GrabbedPoint){
- case 0:
- pointTL += hitTC - StartOffset;
- thisMaterial.SetVector ("_TargetPoint", pointTL);
- break;
- case 1:
- pointTR += hitTC - StartOffset;
- thisMaterial.SetVector ("_TargetPoint", pointTR);
- break;
- case 2:
- pointBL += hitTC - StartOffset;
- thisMaterial.SetVector ("_TargetPoint", pointBL);
- break;
- case 3:
- pointBR += hitTC - StartOffset;
- thisMaterial.SetVector ("_TargetPoint", pointBR);
- break;
- }
-
- StartOffset = hitTC;
- }
-
- doStuff = true;
- }
-
- // Update is called once per frame
- void Update () {
-
- SelectClosestPoint ();
- DragPoint ();
-
- float aspect = (float)textureToAlign.width / (float)textureToAlign.height;
- float area = 1.0f;
- Vector2 pointScale = Vector2.one;
- pointScale.x = aspect;
- float newArea = pointScale.x * pointScale.y;
- float areaScale = Mathf.Sqrt ( area / newArea );
-
- pointScale.x *= areaScale;
- pointScale.y *= areaScale;
-
- thisMaterial.SetTexture ("_MainTex", _LensMap);
- thisMaterial.SetTexture ("_CorrectTex", _PerspectiveMap);
-
- thisMaterial.SetVector ("_PointScale", pointScale);
-
- thisMaterial.SetVector ("_PointTL", pointTL);
- thisMaterial.SetVector ("_PointTR", pointTR);
- thisMaterial.SetVector ("_PointBL", pointBL);
- thisMaterial.SetVector ("_PointBR", pointBR);
-
- float realPerspectiveX = PerspectiveX;
- if (realPerspectiveX < 0.0f) {
- realPerspectiveX = Mathf.Abs( 1.0f / ( realPerspectiveX - 1.0f ) );
- } else {
- realPerspectiveX = realPerspectiveX + 1.0f;
- }
-
- float realPerspectiveY = PerspectiveY;
- if (realPerspectiveY < 0.0f) {
- realPerspectiveY = Mathf.Abs( 1.0f / ( realPerspectiveY - 1.0f ) );
- } else {
- realPerspectiveY = realPerspectiveY + 1.0f;
- }
-
- blitMaterial.SetVector ("_PointTL", pointTL);
- blitMaterial.SetVector ("_PointTR", pointTR);
- blitMaterial.SetVector ("_PointBL", pointBL);
- blitMaterial.SetVector ("_PointBR", pointBR);
-
- blitMaterial.SetFloat ("_Width", textureToAlign.width);
- blitMaterial.SetFloat ("_Height", textureToAlign.height);
-
- blitMaterial.SetFloat ("_Lens", LensDistort);
- blitMaterial.SetFloat ("_PerspectiveX", PerspectiveX);
- blitMaterial.SetFloat ("_PerspectiveY", PerspectiveY);
-
- if (doStuff) {
- ProcessMap( textureToAlign );
- doStuff = false;
- }
-
- thisMaterial.SetFloat ("_Slider", Slider);
-
- }
-
- void DoMyWindow ( int windowID ) {
-
- int spacingX = 0;
- int spacingY = 50;
- int spacing2Y = 70;
-
- int offsetX = 10;
- int offsetY = 30;
-
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Alignment Reveal Slider" );
- Slider = GUI.HorizontalSlider( new Rect( offsetX, offsetY + 20, 280, 10 ),Slider,0.0f, 1.0f );
- offsetY += 40;
-
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Preview Map" );
- offsetY += 30;
-
- if (MGS._DiffuseMapOriginal == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX, offsetY, 130, 30), "Original Diffuse Map")) {
- textureToAlign = MGS._DiffuseMapOriginal;
- doStuff = true;
- }
-
- if (MGS._DiffuseMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX + 150, offsetY, 130, 30), "Diffuse Map")) {
- textureToAlign = MGS._DiffuseMap;
- doStuff = true;
- }
- offsetY += 40;
-
-
- if (MGS._HeightMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX, offsetY, 130, 30), "Height Map")) {
- textureToAlign = MGS._HeightMap;
- doStuff = true;
- }
- offsetY += 40;
-
- if (MGS._MetallicMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX, offsetY, 130, 30), "Metallic Map")) {
- textureToAlign = MGS._MetallicMap;
- doStuff = true;
- }
-
- if (MGS._SmoothnessMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX + 150, offsetY, 130, 30), "Smoothness Map")) {
- textureToAlign = MGS._SmoothnessMap;
- doStuff = true;
- }
- offsetY += 40;
-
- if (MGS._EdgeMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX, offsetY, 130, 30), "Edge Map")) {
- textureToAlign = MGS._EdgeMap;
- doStuff = true;
- }
-
- if (MGS._AOMap == null) { GUI.enabled = false; } else { GUI.enabled = true; }
- if (GUI.Button (new Rect (offsetX + 150, offsetY, 130, 30), "AO Map")) {
- textureToAlign = MGS._AOMap;
- doStuff = true;
- }
- offsetY += 40;
-
- GUI.enabled = true;
-
-
-
- if (GuiHelper.Slider (new Rect (offsetX, offsetY, 280, 50), "Lens Distort Correction", LensDistort, LensDistortText, out LensDistort, out LensDistortText, -1.0f, 1.0f)) {
- doStuff = true;
- }
- offsetY += 40;
-
- if (GuiHelper.Slider (new Rect (offsetX, offsetY, 280, 50), "Perspective Correction X", PerspectiveX, PerspectiveXText, out PerspectiveX, out PerspectiveXText, -5.0f, 5.0f)) {
- doStuff = true;
- }
- offsetY += 40;
-
- if (GuiHelper.Slider (new Rect (offsetX, offsetY, 280, 50), "Perspective Correction Y", PerspectiveY, PerspectiveYText, out PerspectiveY, out PerspectiveYText, -5.0f, 5.0f)) {
- doStuff = true;
- }
- offsetY += 50;
-
- if( GUI.Button (new Rect (offsetX, offsetY, 130, 30), "Reset Points" ) ){
- pointTL = new Vector2(0.0f,1.0f);
- pointTR = new Vector2(1.0f,1.0f);
- pointBL = new Vector2(0.0f,0.0f);
- pointBR = new Vector2(1.0f,0.0f);
- }
-
-
- if( GUI.Button (new Rect (offsetX + 150, offsetY, 130, 30), "Set All Maps" ) ){
- StartCoroutine( SetMaps ( ) );
- }
-
-
- GUI.DragWindow();
-
- }
-
- void OnGUI () {
-
- windowRect.width = 300;
- windowRect.height = 430;
-
- windowRect = GUI.Window (21, windowRect, DoMyWindow, "Texture Alignment Adjuster");
- }
-
- void ProcessMap ( Texture2D textureTarget ){
- int width = textureTarget.width;
- int height = textureTarget.height;
-
- if (_LensMap == null) {
- _LensMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- }
- if (_AlignMap == null) {
- _AlignMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- }
- if (_PerspectiveMap == null) {
- _PerspectiveMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- }
-
- Graphics.Blit (textureTarget, _LensMap, blitMaterial, 0);
- Graphics.Blit (_LensMap, _AlignMap, blitMaterial, 1);
- Graphics.Blit (_AlignMap, _PerspectiveMap, blitMaterial, 2);
- }
-
- Texture2D SetMap ( Texture2D textureTarget ) {
-
- int width = textureTarget.width;
- int height = textureTarget.height;
-
- CleanupTexture (_LensMap );
- CleanupTexture (_AlignMap );
- CleanupTexture (_PerspectiveMap );
-
- _LensMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- _AlignMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
- _PerspectiveMap = new RenderTexture (width, height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
-
- Graphics.Blit (textureTarget, _LensMap, blitMaterial, 0);
- Graphics.Blit (_LensMap, _AlignMap, blitMaterial, 1);
- Graphics.Blit (_AlignMap, _PerspectiveMap, blitMaterial, 2);
-
- bool replaceTexture = false;
- if (textureToAlign == textureTarget) {
- replaceTexture = true;
- }
-
- Destroy (textureTarget);
- textureTarget = null;
-
- RenderTexture.active = _PerspectiveMap;
- textureTarget = new Texture2D (width, height, TextureFormat.ARGB32, false, true);
- textureTarget.ReadPixels (new Rect (0, 0, width, height), 0, 0);
- textureTarget.Apply ();
-
- RenderTexture.active = null;
-
- CleanupTexture (_LensMap );
- CleanupTexture (_AlignMap );
- CleanupTexture (_PerspectiveMap );
-
- if (replaceTexture) {
- textureToAlign = textureTarget;
- }
-
- doStuff = true;
-
- return textureTarget;
-
- }
-
- RenderTexture SetMap ( RenderTexture textureTarget ) {
-
- int width = textureTarget.width;
- int height = textureTarget.height;
-
- CleanupTexture (_LensMap );
- CleanupTexture (_AlignMap );
- CleanupTexture (_PerspectiveMap );
-
- _LensMap = new RenderTexture (width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
- _AlignMap = new RenderTexture (width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
- _PerspectiveMap = new RenderTexture (width, height, 0, RenderTextureFormat.RHalf, RenderTextureReadWrite.Linear);
-
- Graphics.Blit (textureTarget, _LensMap, blitMaterial, 0);
- Graphics.Blit (_LensMap, _AlignMap, blitMaterial, 1);
- Graphics.Blit (_AlignMap, _PerspectiveMap, blitMaterial, 2);
-
- if (textureTarget != null) {
- textureTarget.Release ();
- textureTarget = null;
- }
-
- Graphics.Blit (_PerspectiveMap, textureTarget);
-
- CleanupTexture (_LensMap );
- CleanupTexture (_AlignMap );
- CleanupTexture (_PerspectiveMap );
-
- doStuff = true;
-
- return textureTarget;
-
- }
-
- IEnumerator SetMaps () {
-
- if (MGS._HeightMap != null) {
- Debug.Log ("Setting Height");
- MGS._HeightMap = SetMap( MGS._HeightMap );
- }
-
- if (MGS._HDHeightMap != null) {
- Debug.Log ("Setting HD Height");
- MGS._HDHeightMap = SetMap( MGS._HDHeightMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._DiffuseMap != null) {
- Debug.Log ("Setting Diffuse");
- MGS._DiffuseMap = SetMap( MGS._DiffuseMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._DiffuseMapOriginal != null) {
- Debug.Log ("Setting Diffuse Original");
- MGS._DiffuseMapOriginal = SetMap( MGS._DiffuseMapOriginal );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._NormalMap != null) {
- Debug.Log ("Setting Normal");
- MGS._NormalMap = SetMap( MGS._NormalMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._MetallicMap != null) {
- Debug.Log ("Setting Metallic");
- MGS._MetallicMap = SetMap( MGS._MetallicMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._SmoothnessMap != null) {
- Debug.Log ("Setting Smoothness");
- MGS._SmoothnessMap = SetMap( MGS._SmoothnessMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._EdgeMap != null) {
- Debug.Log ("Setting Edge");
- MGS._EdgeMap = SetMap( MGS._EdgeMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- if (MGS._AOMap != null) {
- Debug.Log ("Setting AO");
- MGS._AOMap = SetMap( MGS._AOMap );
- }
-
- yield return new WaitForSeconds(0.1f);
-
- Resources.UnloadUnusedAssets ();
-
- }
-}
+ yield return new WaitForSeconds(0.1f);
+
+ Resources.UnloadUnusedAssets();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/AoFromNormalGui.cs b/Assets/Scripts/AoFromNormalGui.cs
new file mode 100644
index 00000000..12f7f854
--- /dev/null
+++ b/Assets/Scripts/AoFromNormalGui.cs
@@ -0,0 +1,301 @@
+#region
+
+using System.Collections;
+using UnityEngine;
+
+#endregion
+
+public class AoFromNormalGui : MonoBehaviour
+{
+ private static readonly int FinalContrast = Shader.PropertyToID("_FinalContrast");
+ private static readonly int FinalBias = Shader.PropertyToID("_FinalBias");
+ private static readonly int AoBlend = Shader.PropertyToID("_AOBlend");
+ private static readonly int MainTex = Shader.PropertyToID("_MainTex");
+ private static readonly int ImageSize = Shader.PropertyToID("_ImageSize");
+ private static readonly int Spread = Shader.PropertyToID("_Spread");
+ private static readonly int HeightTex = Shader.PropertyToID("_HeightTex");
+ private static readonly int BlendTex = Shader.PropertyToID("_BlendTex");
+ private static readonly int Depth = Shader.PropertyToID("_Depth");
+ private static readonly int BlendAmount = Shader.PropertyToID("_BlendAmount");
+ private static readonly int Progress = Shader.PropertyToID("_Progress");
+ private Texture2D _aoMap;
+
+ private AoSettings _aos;
+ private RenderTexture _blendedAoMap;
+ private Material _blitMaterial;
+ private bool _doStuff;
+
+ private int _imageSizeX = 1024;
+ private int _imageSizeY = 1024;
+ private bool _newTexture;
+
+ private bool _settingsInitialized;
+ private RenderTexture _tempAoMap;
+
+ private Rect _windowRect = new Rect(30, 300, 300, 230);
+ private RenderTexture _workingAoMap;
+
+ [HideInInspector] public bool Busy;
+ public Texture2D DefaultHeight;
+
+ public Texture2D DefaultNormal;
+
+ public MainGui MainGuiScript;
+
+ public GameObject TestObject;
+
+ public Material ThisMaterial;
+
+ public void GetValues(ProjectObject projectObject)
+ {
+ InitializeSettings();
+ projectObject.AoSettings = _aos;
+ }
+
+ public void SetValues(ProjectObject projectObject)
+ {
+ InitializeSettings();
+ if (projectObject.AoSettings != null)
+ {
+ _aos = projectObject.AoSettings;
+ }
+ else
+ {
+ _settingsInitialized = false;
+ InitializeSettings();
+ }
+
+ _doStuff = true;
+ }
+
+ private void InitializeSettings()
+ {
+ if (_settingsInitialized) return;
+ _aos = new AoSettings();
+
+ if (MainGuiScript.HeightMap != null)
+ {
+ _aos.Blend = 1.0f;
+ _aos.BlendText = "1.0";
+ }
+ else
+ {
+ _aos.Blend = 0.0f;
+ _aos.BlendText = "0.0";
+ }
+
+ _settingsInitialized = true;
+ }
+
+ // Use this for initialization
+ private void Start()
+ {
+ TestObject.GetComponent().sharedMaterial = ThisMaterial;
+
+ _blitMaterial = new Material(Shader.Find("Hidden/Blit_Shader"));
+
+ //blitMaterial = new Material (Shader.Find ("Hidden/Blit_Height_From_Normal"));
+
+ InitializeSettings();
+ }
+
+ public void DoStuff()
+ {
+ _doStuff = true;
+ }
+
+ public void NewTexture()
+ {
+ _newTexture = true;
+ }
+
+
+ // Update is called once per frame
+ private void Update()
+ {
+ if (_newTexture)
+ {
+ InitializeTextures();
+ _newTexture = false;
+ }
+
+ if (_doStuff)
+ {
+ StopAllCoroutines();
+
+ StartCoroutine(ProcessNormalDepth());
+ _doStuff = false;
+ }
+
+ ThisMaterial.SetFloat(FinalContrast, _aos.FinalContrast);
+ ThisMaterial.SetFloat(FinalBias, _aos.FinalBias);
+ ThisMaterial.SetFloat(AoBlend, _aos.Blend);
+ }
+
+ private void DoMyWindow(int windowId)
+ {
+ const int offsetX = 10;
+ var offsetY = 30;
+
+ if (GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "AO pixel Spread", _aos.Spread, _aos.SpreadText,
+ out _aos.Spread, out _aos.SpreadText, 10.0f, 100.0f)) _doStuff = true;
+ offsetY += 40;
+
+ if (GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Pixel Depth", _aos.Depth, _aos.DepthText,
+ out _aos.Depth, out _aos.DepthText, 0.0f, 256.0f)) _doStuff = true;
+ offsetY += 40;
+
+ GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "Blend Normal AO and Depth AO", _aos.Blend,
+ _aos.BlendText,
+ out _aos.Blend, out _aos.BlendText, 0.0f, 1.0f);
+ offsetY += 40;
+
+ GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "AO Power", _aos.FinalContrast, _aos.FinalContrastText,
+ out _aos.FinalContrast, out _aos.FinalContrastText, 0.1f, 10.0f);
+ offsetY += 40;
+
+ GuiHelper.Slider(new Rect(offsetX, offsetY, 280, 50), "AO Bias", _aos.FinalBias, _aos.FinalBiasText,
+ out _aos.FinalBias, out _aos.FinalBiasText, -1.0f, 1.0f);
+ offsetY += 50;
+
+ GUI.enabled = !Busy;
+
+ if (GUI.Button(new Rect(offsetX + 10, offsetY, 130, 30), "Reset to Defaults"))
+ {
+ //_settingsInitialized = false;
+ SetValues(new ProjectObject());
+ //StartCoroutine(ProcessDiffuse());
+ }
+
+ if (GUI.Button(new Rect(offsetX + 150, offsetY, 130, 30), "Set as AO Map")) StartCoroutine(ProcessAo());
+ GUI.enabled = true;
+ GUI.DragWindow();
+ }
+
+ private void OnGUI()
+ {
+ _windowRect.width = 300;
+ _windowRect.height = 280;
+
+ _windowRect = GUI.Window(10, _windowRect, DoMyWindow, "Normal + Depth to AO");
+ }
+
+ public void InitializeTextures()
+ {
+ TestObject.GetComponent().sharedMaterial = ThisMaterial;
+
+ CleanupTextures();
+
+ if (MainGuiScript.NormalMap)
+ {
+ _imageSizeX = MainGuiScript.NormalMap.width;
+ _imageSizeY = MainGuiScript.NormalMap.height;
+ }
+ else
+ {
+ _imageSizeX = MainGuiScript.HeightMap.width;
+ _imageSizeY = MainGuiScript.HeightMap.height;
+ }
+
+ Debug.Log("Initializing Textures of size: " + _imageSizeX + "x" + _imageSizeY);
+
+ _workingAoMap = new RenderTexture(_imageSizeX, _imageSizeY, 0, RenderTextureFormat.RGHalf,
+ RenderTextureReadWrite.Linear) {wrapMode = TextureWrapMode.Repeat};
+ _blendedAoMap = new RenderTexture(_imageSizeX, _imageSizeY, 0, RenderTextureFormat.RGHalf,
+ RenderTextureReadWrite.Linear) {wrapMode = TextureWrapMode.Repeat};
+ }
+
+ public void Close()
+ {
+ CleanupTextures();
+ gameObject.SetActive(false);
+ }
+
+ private static void CleanupTexture(RenderTexture texture)
+ {
+ if (!texture) return;
+ texture.Release();
+ }
+
+ private void CleanupTextures()
+ {
+ CleanupTexture(_workingAoMap);
+ CleanupTexture(_blendedAoMap);
+ CleanupTexture(_tempAoMap);
+ }
+
+ public IEnumerator ProcessAo()
+ {
+ Busy = true;
+
+ Debug.Log("Processing AO Map");
+
+ CleanupTexture(_tempAoMap);
+ _tempAoMap = new RenderTexture(_imageSizeX, _imageSizeY, 0, RenderTextureFormat.ARGB32,
+ RenderTextureReadWrite.Linear) {wrapMode = TextureWrapMode.Repeat};
+
+ _blitMaterial.SetFloat(FinalBias, _aos.FinalBias);
+ _blitMaterial.SetFloat(FinalContrast, _aos.FinalContrast);
+ _blitMaterial.SetTexture(MainTex, _blendedAoMap);
+ _blitMaterial.SetFloat(AoBlend, _aos.Blend);
+
+ Graphics.Blit(_blendedAoMap, _tempAoMap, _blitMaterial, 8);
+
+ if (MainGuiScript.AoMap != null) Destroy(MainGuiScript.AoMap);
+
+ RenderTexture.active = _tempAoMap;
+ MainGuiScript.AoMap = new Texture2D(_tempAoMap.width, _tempAoMap.height, TextureFormat.ARGB32, true, true);
+ MainGuiScript.AoMap.ReadPixels(new Rect(0, 0, _tempAoMap.width, _tempAoMap.height), 0, 0);
+ MainGuiScript.AoMap.Apply();
+
+ yield return new WaitForSeconds(0.1f);
+
+ CleanupTexture(_tempAoMap);
+
+ Busy = false;
+ }
+
+ public IEnumerator ProcessNormalDepth()
+ {
+ Busy = true;
+
+ Debug.Log("Processing Normal Depth to AO");
+
+ _blitMaterial.SetVector(ImageSize, new Vector4(_imageSizeX, _imageSizeY, 0, 0));
+ _blitMaterial.SetFloat(Spread, _aos.Spread);
+
+ _blitMaterial.SetTexture(MainTex, MainGuiScript.NormalMap != null ? MainGuiScript.NormalMap : DefaultNormal);
+
+ if (MainGuiScript.HdHeightMap != null)
+ _blitMaterial.SetTexture(HeightTex, MainGuiScript.HdHeightMap);
+ else if (MainGuiScript.HeightMap != null)
+ _blitMaterial.SetTexture(HeightTex, MainGuiScript.HeightMap);
+ else
+ _blitMaterial.SetTexture(HeightTex, DefaultHeight);
+
+ _blitMaterial.SetTexture(BlendTex, _blendedAoMap);
+ _blitMaterial.SetFloat(Depth, _aos.Depth);
+ ThisMaterial.SetTexture(MainTex, _blendedAoMap);
+
+ var yieldCountDown = 5;
+
+ for (var i = 1; i < 100; i++)
+ {
+ _blitMaterial.SetFloat(BlendAmount, 1.0f / i);
+ _blitMaterial.SetFloat(Progress, i / 100.0f);
+
+ Graphics.Blit(MainGuiScript.NormalMap, _workingAoMap, _blitMaterial, 7);
+ Graphics.Blit(_workingAoMap, _blendedAoMap);
+
+
+ yieldCountDown -= 1;
+ if (yieldCountDown > 0) continue;
+ yieldCountDown = 5;
+ yield return new WaitForSeconds(0.01f);
+ }
+
+ yield return new WaitForSeconds(0.01f);
+
+ Busy = false;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/AOFromNormalGui.cs.meta b/Assets/Scripts/AoFromNormalGui.cs.meta
similarity index 100%
rename from Assets/Scripts/AOFromNormalGui.cs.meta
rename to Assets/Scripts/AoFromNormalGui.cs.meta
diff --git a/Assets/Scripts/AoSettings.cs b/Assets/Scripts/AoSettings.cs
new file mode 100644
index 00000000..642a53f1
--- /dev/null
+++ b/Assets/Scripts/AoSettings.cs
@@ -0,0 +1,46 @@
+#region
+
+using System.ComponentModel;
+
+#endregion
+
+public class AoSettings
+{
+ [DefaultValue(1.0f)] public float Blend;
+
+ [DefaultValue("1")] public string BlendText;
+
+ [DefaultValue(100.0f)] public float Depth;
+
+ [DefaultValue("100")] public string DepthText;
+
+ [DefaultValue(0.0f)] public float FinalBias;
+
+ [DefaultValue("0")] public string FinalBiasText;
+
+ [DefaultValue(1.0f)] public float FinalContrast;
+
+ [DefaultValue("1")] public string FinalContrastText;
+
+ [DefaultValue(5.0f)] public float Spread;
+
+ [DefaultValue("50")] public string SpreadText;
+
+ public AoSettings()
+ {
+ Spread = 50.0f;
+ SpreadText = "50";
+
+ Depth = 100.0f;
+ DepthText = "100";
+
+ FinalBias = 0.0f;
+ FinalBiasText = "0";
+
+ FinalContrast = 1.0f;
+ FinalContrastText = "1";
+
+ Blend = 1.0f;
+ BlendText = "1";
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/AoSettings.cs.meta b/Assets/Scripts/AoSettings.cs.meta
new file mode 100644
index 00000000..7a8d9207
--- /dev/null
+++ b/Assets/Scripts/AoSettings.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 04241ebfcd2e4458a58c38baa8a20c7d
+timeCreated: 1549053956
\ No newline at end of file
diff --git a/Assets/Scripts/BashRunner.cs b/Assets/Scripts/BashRunner.cs
new file mode 100644
index 00000000..8ba4ba6c
--- /dev/null
+++ b/Assets/Scripts/BashRunner.cs
@@ -0,0 +1,54 @@
+#region
+
+using System;
+using System.Diagnostics;
+using System.Text;
+
+#endregion
+
+internal static class BashRunner
+{
+ // ReSharper disable once UnusedMethodReturnValue.Global
+ public static string Run(string commandLine)
+ {
+ var errorBuilder = new StringBuilder();
+ var outputBuilder = new StringBuilder();
+ var arguments = $"-c \"{commandLine}\"";
+ using (var process = new Process
+ {
+ StartInfo = new ProcessStartInfo
+ {
+ FileName = "bash",
+ Arguments = arguments,
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ UseShellExecute = false,
+ CreateNoWindow = false
+ }
+ })
+ {
+ process.Start();
+ process.OutputDataReceived += (sender, args) => { outputBuilder.AppendLine(args.Data); };
+ process.BeginOutputReadLine();
+ process.ErrorDataReceived += (sender, args) => { errorBuilder.AppendLine(args.Data); };
+ process.BeginErrorReadLine();
+ if (!process.WaitForExit(500))
+ {
+ var timeoutError = $@"Process timed out. Command line: bash {arguments}.
+Output: {outputBuilder}
+Error: {errorBuilder}";
+ throw new Exception(timeoutError);
+ }
+
+ if (process.ExitCode == 0)
+ {
+ return outputBuilder.ToString();
+ }
+
+ var error = $@"Could not execute process. Command line: bash {arguments}.
+Output: {outputBuilder}
+Error: {errorBuilder}";
+ throw new Exception(error);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/BashRunner.cs.meta b/Assets/Scripts/BashRunner.cs.meta
new file mode 100644
index 00000000..a4970b1b
--- /dev/null
+++ b/Assets/Scripts/BashRunner.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dba72e141408d04ed81b8e5de49a9698
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/BatchUI.cs b/Assets/Scripts/BatchUI.cs
new file mode 100644
index 00000000..d1c906f2
--- /dev/null
+++ b/Assets/Scripts/BatchUI.cs
@@ -0,0 +1,191 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.IO;
+using SFB;
+using System.Linq;
+using System;
+
+public class BatchUI : MonoBehaviour
+{
+ public MainGui MainGui;
+ // public HeightFromDiffuseGui HeightmapCreator;
+ public bool UseInitalLocation;
+ bool PathIsSet;
+ string path = null;
+ public bool ProcessPropertyMap;
+ // Start is called before the first frame update
+ void Start()
+ {
+ MainGui = FindObjectOfType();
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+
+ ///
+ /// use inital location toggle
+ ///
+ /// what the value is
+ public void UseInitalLocationToggle(bool value) { UseInitalLocation = value; }
+
+ ///
+ /// Loads all the textures for batching.
+ ///
+ public void BatchLoadTextures()
+ {
+ StartCoroutine(BatchProcessTextures());
+ }
+
+ ///
+ /// Processes all the textures and saves them out.
+ ///
+ /// IEnum
+ private IEnumerator BatchProcessTextures()
+ {
+ var path = StandaloneFileBrowser.OpenFolderPanel("Texture Files Location", "", false);
+ //var path = StandaloneFileBrowser.SaveFilePanel("Texture Directory", "", "","");
+ var s = Directory.GetFiles(path[0], "*.*").Where(g => g.EndsWith(".jpg") || g.EndsWith(".png"));
+ foreach (string f in s)
+ {
+ //BatchProcessTextures(f);
+
+ byte[] Data = System.IO.File.ReadAllBytes(f);
+ Texture2D Tex = new Texture2D(2, 2);
+ if (Tex.LoadImage(Data))
+ {
+ yield return StartCoroutine(BatchTextures(Tex, f));
+
+ //MainGui.HeightFromDiffuseGuiScript.StartCoroutine(ProcessHeight());
+ //return null;
+ }
+ }
+ //return null;
+ }
+
+ ///
+ /// Batch runs all the textures to output them to a file location
+ ///
+ /// Texture to output
+ /// Name of texture
+ /// IEnum
+ IEnumerator BatchTextures(Texture2D T, string name)
+ {
+ MainGui.DiffuseMapOriginal = T;
+ MainGui.HeightFromDiffuseGuiObject.SetActive(true);
+ MainGui.HeightFromDiffuseGuiScript.NewTexture();
+ MainGui.HeightFromDiffuseGuiScript.DoStuff();
+ //yield return MainGui.HeightFromDiffuseGuiScript.StartCoroutine(MainGui.HeightFromDiffuseGuiScript.ProcessDiffuse());
+ yield return new WaitForSeconds(.1f);
+ MainGui.HeightFromDiffuseGuiScript.StartProcessHeight();
+ MainGui.CloseWindows();
+ MainGui.FixSize();
+ MainGui.NormalFromHeightGuiObject.SetActive(true);
+ MainGui.NormalFromHeightGuiScript.NewTexture();
+ MainGui.NormalFromHeightGuiScript.DoStuff();
+ //yield return MainGui.NormalFromHeightGuiScript.StartCoroutine(MainGui.NormalFromHeightGuiScript.ProcessHeight());
+ yield return new WaitForSeconds(.1f);
+ MainGui.NormalFromHeightGuiScript.StartProcessNormal();
+ yield return new WaitForEndOfFrame();
+ MainGui.CloseWindows();
+ MainGui.FixSize();
+ MainGui.MetallicMap = new Texture2D(MainGui.HeightMap.width, MainGui.HeightMap.height);
+ Color theColor = new Color();
+ for (int x = 0; x < MainGui.MetallicMap.width; x++)
+ {
+ for (int y = 0; y < MainGui.MetallicMap.height; y++)
+ {
+ theColor.r = 0;
+ theColor.g = 0;
+ theColor.b = 0;
+ theColor.a = 255;
+ MainGui.MetallicMap.SetPixel(x, y, theColor);
+ }
+ }
+ // MainGui.MetallicGuiObject.SetActive(true);
+ //MainGui.MetallicGuiScript.NewTexture();
+ //MainGui.MetallicGuiScript.DoStuff();
+ //yield return new WaitForSeconds(.1f);
+ //MainGui.MetallicGuiScript.StartCoroutine(MainGui.MetallicGuiScript.ProcessMetallic());
+ MainGui.MetallicMap.Apply();
+ MainGui.CloseWindows();
+ MainGui.FixSize();
+ MainGui.SmoothnessGuiObject.SetActive(true);
+ MainGui.SmoothnessGuiScript.NewTexture();
+ MainGui.SmoothnessGuiScript.DoStuff();
+ yield return new WaitForSeconds(.1f);
+ MainGui.SmoothnessGuiScript.StartCoroutine(MainGui.SmoothnessGuiScript.ProcessSmoothness());
+ MainGui.CloseWindows();
+ MainGui.FixSize();
+ MainGui.EdgeFromNormalGuiObject.SetActive(true);
+ MainGui.EdgeFromNormalGuiScript.NewTexture();
+ MainGui.EdgeFromNormalGuiScript.DoStuff();
+ yield return new WaitForSeconds(.1f);
+ MainGui.EdgeFromNormalGuiScript.StartCoroutine(MainGui.EdgeFromNormalGuiScript.ProcessEdge());
+ MainGui.CloseWindows();
+ MainGui.FixSize();
+ MainGui.AoFromNormalGuiObject.SetActive(true);
+ MainGui.AoFromNormalGuiScript.NewTexture();
+ MainGui.AoFromNormalGuiScript.DoStuff();
+ yield return new WaitForSeconds(.1f);
+ MainGui.AoFromNormalGuiScript.StartCoroutine(MainGui.AoFromNormalGuiScript.ProcessAo());
+
+ yield return new WaitForSeconds(.3f);
+
+ List names = name.Split( new string[] { "/", "\\" }, StringSplitOptions.None).ToList();
+ //Debug.Log(names);
+ foreach(var s in names)
+ {
+ Debug.Log(s);
+ }
+ string defaultName = names[names.Count - 1];
+ Debug.Log(defaultName);
+ names = defaultName.Split('.').ToList();
+ defaultName = names[0];
+ string NameWithOutExtension = defaultName;
+ defaultName = defaultName + ".mtz";
+
+ if (UseInitalLocation)
+ {
+ if (!PathIsSet)
+ {
+ path = StandaloneFileBrowser.SaveFilePanel("Save Project", MainGui._lastDirectory, defaultName, "mtz");
+ //if (path.IsNullOrEmpty()) return;
+ PathIsSet = true;
+ var lastBar = path.LastIndexOf(MainGui._pathChar);
+ MainGui._lastDirectory = path.Substring(0, lastBar + 1);
+
+ }
+ else
+ {
+ List PathSplit = path.Split(new string[] { "/", "\\" }, StringSplitOptions.None).ToList();
+ //PathSplit[PathSplit.Length - 1]
+ PathSplit.RemoveAt(PathSplit.Count - 1);
+ //Debug.Log(PathSplit);
+ path = string.Join("/" , PathSplit.ToArray());
+ path = path+ "/" + defaultName;
+ Debug.Log(defaultName);
+ //var lastBar = path.LastIndexOf(MainGui._pathChar);
+ //MainGui._lastDirectory = path.Substring(0, lastBar + 1);
+ }
+ }
+ else
+ {
+ path = StandaloneFileBrowser.SaveFilePanel("Save Project", MainGui._lastDirectory, defaultName, "mtz");
+ var lastBar = path.LastIndexOf(MainGui._pathChar);
+ MainGui._lastDirectory = path.Substring(0, lastBar + 1);
+ }
+ Debug.Log(path);
+ MainGui._saveLoadProjectScript.SaveProject(path);
+ yield return new WaitForSeconds(1f);
+ if (ProcessPropertyMap)
+ {
+ MainGui.ProcessPropertyMap();
+ MainGui.SaveTextureFile(MapType.Property, path, NameWithOutExtension);
+ }
+ //return null;
+ }
+}
diff --git a/Assets/Scripts/BatchUI.cs.meta b/Assets/Scripts/BatchUI.cs.meta
new file mode 100644
index 00000000..4ea8a0d7
--- /dev/null
+++ b/Assets/Scripts/BatchUI.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 27d90d35f40a67840a7d3f34d9e6c603
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/CameraPanZoom.cs b/Assets/Scripts/CameraPanZoom.cs
index de2120d9..684c3cb1 100644
--- a/Assets/Scripts/CameraPanZoom.cs
+++ b/Assets/Scripts/CameraPanZoom.cs
@@ -1,74 +1,65 @@
-using UnityEngine;
-using System.Collections;
-
-public class CameraPanZoom : MonoBehaviour {
-
- public FileBrowser fileBrowser;
-
- Vector3 targetPos;
- float targetFov;
-
- Vector2 mousePos;
- Vector2 lastMousePos;
-
- public bool holdKey = false;
- public bool noHoldKey = false;
- public KeyCode[] keyToHold;
-
- int mouseDownCount = 0;
-
- public int MouseButtonPan = 0;
-
- // Use this for initialization
- void Start () {
-
- targetPos = this.transform.position;
-
- }
-
- // Update is called once per frame
- void Update () {
-
- mousePos = Input.mousePosition;
-
- Vector2 mouseOffset = mousePos - lastMousePos;
-
- if (Input.GetMouseButton (MouseButtonPan)) {
- mouseDownCount ++;
- } else {
- mouseDownCount = 0;
- }
-
- bool keyHeld = false;
- for (int i = 0; i < keyToHold.Length; i++) {
- if (Input.GetKey (keyToHold[i])) {
- keyHeld = true;
- }
- }
-
- if (noHoldKey && keyHeld == false) {
- if (mouseDownCount > 1) {
- targetPos -= new Vector3 (1, 0, 0) * mouseOffset.x * 0.025f;
- targetPos -= new Vector3 (0, 1, 0) * mouseOffset.y * 0.025f;
- }
- }
-
- if (fileBrowser)
+#region
+
+using UnityEngine;
+
+#endregion
+
+public class CameraPanZoom : MonoBehaviour
+{
+ private Vector2 _lastMousePos;
+
+ private Vector2 _mousePos;
+ private float _targetFov;
+
+ private Vector3 _targetPos;
+ public KeyCode[] KeyToHold;
+
+ public int MouseButtonPan;
+
+ // Use this for initialization
+ private void Start()
+ {
+ _targetPos = transform.position;
+ }
+
+ // Update is called once per frame
+ private void Update()
+ {
+ if (!MainGui.Instance) return;
+ _mousePos = Input.mousePosition;
+
+ var mouseOffset = _mousePos - _lastMousePos;
+
+ var keyHeld = false;
+
+ foreach (var t in KeyToHold)
{
- if (fileBrowser.Active == false)
+ if (Input.GetKey(t))
{
- targetPos += new Vector3(0, 0, 1) * Input.GetAxis("Mouse ScrollWheel") * 3.0f;
+ keyHeld = true;
}
}
+
+ var mouseDown = Input.GetMouseButton(MouseButtonPan);
+ if ((KeyToHold.Length > 0 && keyHeld || KeyToHold.Length == 0) && mouseDown)
+ {
+ MainGui.Instance.SaveHideStateAndHideAndLock(this);
+
+ _targetPos -= new Vector3(1, 0, 0) * mouseOffset.x * 0.025f;
+ _targetPos -= new Vector3(0, 1, 0) * mouseOffset.y * 0.025f;
+ }
else
{
- targetPos += new Vector3(0, 0, 1) * Input.GetAxis("Mouse ScrollWheel") * 3.0f;
+ MainGui.Instance.HideGuiLocker.Unlock(this);
}
+ _targetPos += new Vector3(0, 0, 1) * Input.GetAxis("Mouse ScrollWheel") * 3.0f;
+
+ var trf = transform;
+ var position = trf.position;
+ position += (_targetPos - position) * 0.05f;
+ trf.position = position;
- this.transform.position += ( targetPos - this.transform.position ) * 0.05f;
-
- lastMousePos = mousePos;
-
- }
-}
+ _lastMousePos = _mousePos;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/ClipboardHelper.cs b/Assets/Scripts/ClipboardHelper.cs
index dd9b09d2..a15cc064 100644
--- a/Assets/Scripts/ClipboardHelper.cs
+++ b/Assets/Scripts/ClipboardHelper.cs
@@ -1,36 +1,14 @@
-using UnityEngine;
-using System;
-using System.Reflection;
+#region
-public class ClipboardHelper
-{
- private static PropertyInfo m_systemCopyBufferProperty = null;
+using UnityEngine;
- private static PropertyInfo GetSystemCopyBufferProperty()
- {
- if (m_systemCopyBufferProperty == null)
- {
- Type T = typeof(GUIUtility);
- m_systemCopyBufferProperty = T.GetProperty("systemCopyBuffer", BindingFlags.Static | BindingFlags.NonPublic);
- if (m_systemCopyBufferProperty == null)
- throw new Exception("Can't access internal member 'GUIUtility.systemCopyBuffer' it may have been removed / renamed");
- }
- return m_systemCopyBufferProperty;
- }
+#endregion
- public static string clipBoard
- {
- get
- {
- //PropertyInfo P = GetSystemCopyBufferProperty();
- //return (string)P.GetValue(null,null);
- return GUIUtility.systemCopyBuffer;
- }
- set
- {
- //PropertyInfo P = GetSystemCopyBufferProperty();
- //P.SetValue(null,value,null);
- GUIUtility.systemCopyBuffer = value;
- }
- }
+public static class ClipboardHelper
+{
+ public static string ClipBoard
+ {
+ get => GUIUtility.systemCopyBuffer;
+ set => GUIUtility.systemCopyBuffer = value;
+ }
}
\ No newline at end of file
diff --git a/Assets/Scripts/CommandListExecutor.cs b/Assets/Scripts/CommandListExecutor.cs
index ddd1c578..8c805f74 100644
--- a/Assets/Scripts/CommandListExecutor.cs
+++ b/Assets/Scripts/CommandListExecutor.cs
@@ -1,384 +1,351 @@
-using UnityEngine;
+#region
+
using System;
using System.Collections;
using System.Collections.Generic;
-using System.Reflection;
-
-using System.Xml;
+using System.IO;
+using System.Text;
using System.Xml.Serialization;
-
-public struct CommandSettings {
- public bool normalMapMaxStyle;
- public bool normalMapMayaStyle;
-
- public bool postProcessEnabled;
-
- public PropChannelMap propRed;
- public PropChannelMap propGreen;
- public PropChannelMap propBlue;
-}
-
-public struct CommandOpen {
- public string filePath;
- public MapType mapType;
-}
-
-public struct CommandSave {
- public string filePath;
- public MapType mapType;
-}
-
-public struct CommandAOFromNormal {
- public string settings;
-}
-
-public struct CommandEdgeFromNormal {
- public string settings;
-}
-
-public struct CommandFlipNormalMapY {
- //public bool flipNormalMapY;
-}
-
-public struct CommandFileFormat {
- public FileFormat fileFormat;
-}
-
-public enum CommandType {
- Settings,
- Open,
- Save,
- HeightFromDiffuse,
- NormalFromHeight,
- Metallic,
- Smoothness,
- AOFromNormal,
- EdgeFromNormal,
- QuickSave,
- FlipNormalMapY,
- FileFormat,
- Wait
+using UnityEngine;
+
+#endregion
+
+public enum CommandType
+{
+ Settings,
+ Open,
+ Save,
+ HeightFromDiffuse,
+ NormalFromHeight,
+ Metallic,
+ Smoothness,
+ AoFromNormal,
+ EdgeFromNormal,
+ QuickSave,
+ FlipNormalMapY,
+ FileFormat
}
-public struct Command {
-
- //public string xmlCommand;
- public CommandType commandType;
- public string extension;
- public string filePath;
- public MapType mapType;
- public string settings;
-
- public Settings projectSettings;
+public struct Command
+{
+ //public string xmlCommand;
+ public CommandType CommandType;
+ public string Extension;
+ public string FilePath;
+ public MapType MapType;
+ public Settings ProjectSettings;
}
-public class CommandList {
-
- public List commands;
-
+public class CommandList
+{
+ public List Commands;
}
-public class CommandListExecutor : MonoBehaviour {
-
- public GameObject mainGuiObject;
- MainGui mainGui;
-
- public GameObject saveLoadProjectObject;
- SaveLoadProject saveLoad;
-
- public GameObject heightFromDiffuseGuiObject;
- HeightFromDiffuseGui heightFromDiffuseGui;
-
- public GameObject normalFromHeightGuiObject;
- NormalFromHeightGui normalFromHeightGui;
-
- public GameObject metallicGuiObject;
- MetallicGui metallicGui;
-
- public GameObject smoothnessGuiObject;
- SmoothnessGui smoothnessGui;
-
- public GameObject aoFromNormalGuiObject;
- AOFromNormalGui aoFromNormalGui;
-
- public GameObject edgeFromNormalGuiObject;
- EdgeFromNormalGui edgeFromNormalGui;
-
- public GameObject materialGuiObject;
- MaterialGui materialGui;
-
- public SettingsGui settingsGui;
-
- // Use this for initialization
- void Start () {
- //string[] arguments = Environment.GetCommandLineArgs();
- mainGui = mainGuiObject.GetComponent ();
- saveLoad = saveLoadProjectObject.GetComponent ();
-
- heightFromDiffuseGui = heightFromDiffuseGuiObject.GetComponent ();
- normalFromHeightGui = normalFromHeightGuiObject.GetComponent ();
- metallicGui = metallicGuiObject.GetComponent ();
- smoothnessGui = smoothnessGuiObject.GetComponent ();
- aoFromNormalGui = aoFromNormalGuiObject.GetComponent ();
- edgeFromNormalGui = edgeFromNormalGuiObject.GetComponent ();
-
- materialGui = materialGuiObject.GetComponent ();
-
- StartCoroutine (StartCommandString());
-
- }
-
- /*
- int wait = 20;
- void Update(){
- wait -= 1;
- if (wait == 0) {
- SaveTestString ();
- }
- }
- */
-
- IEnumerator StartCommandString(){
- yield return new WaitForSeconds (0.1f);
- string commandString = ClipboardHelper.clipBoard;
- if( commandString.Contains( "" ) ){
- ProcessCommands ( commandString );
- }
- }
-
- public void SaveTestString() {
-
- CommandList commandList = new CommandList ();
- commandList.commands = new List ();
-
- Command command = new Command();
- command.commandType = CommandType.Settings;
- command.projectSettings = settingsGui.settings;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.Open;
- command.filePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_diffuse.bmp";
- command.mapType = MapType.diffuseOriginal;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.Open;
- command.filePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_normal.bmp";
- command.mapType = MapType.normal;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.FlipNormalMapY;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.AOFromNormal;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.EdgeFromNormal;
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.FileFormat;
- command.extension = "tga";
- commandList.commands.Add (command);
-
- command = new Command();
- command.commandType = CommandType.QuickSave;
- command.filePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_property.bmp";
- commandList.commands.Add (command);
-
-
- System.Text.StringBuilder sb = new System.Text.StringBuilder();
- var serializer = new XmlSerializer(typeof(CommandList));
- var stream = new System.IO.StringWriter( sb );
- serializer.Serialize(stream, commandList);
- ClipboardHelper.clipBoard = stream.ToString ();
-
- Debug.Log (stream.ToString ());
- }
-
- void OnApplicationFocus(bool focusStatus) {
- if( focusStatus ){
- string commandString = ClipboardHelper.clipBoard;
- if( commandString.Contains( "" ) ){
- ProcessCommands ( commandString );
- }
- }
- }
-
- public void ProcessCommands () {
- string commandString = ClipboardHelper.clipBoard;
- if( commandString.Contains( "" ) ){
- StartCoroutine ( ProcessCommandsCoroutine ( commandString ) );
- }
- }
-
- public void ProcessCommands ( string commandString ) {
- StartCoroutine ( ProcessCommandsCoroutine ( commandString ) );
- }
-
- IEnumerator ProcessCommandsCoroutine( string commandString ) {
-
- //string commandString = ClipboardHelper.clipBoard;
-
- var serializer = new XmlSerializer(typeof(CommandList));
- var stream = new System.IO.StringReader (commandString);
- CommandList commandList = serializer.Deserialize(stream) as CommandList;
-
- for (int i = 0; i < commandList.commands.Count; i++) {
- Command thisCommand = commandList.commands[i];
- if( thisCommand.commandType == CommandType.Settings ){
- settingsGui.settings = thisCommand.projectSettings;
- settingsGui.SetSettings ();
- }else if( thisCommand.commandType == CommandType.Open ){
- StartCoroutine ( saveLoad.LoadTexture( thisCommand.mapType, thisCommand.filePath ) );
- while( saveLoad.busy ){ yield return new WaitForSeconds (0.1f); }
- }else if( thisCommand.commandType == CommandType.Save ){
- switch( thisCommand.mapType ){
- case MapType.height:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._HeightMap, thisCommand.filePath ) );
- break;
- case MapType.diffuse:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._DiffuseMapOriginal, thisCommand.filePath ) );
- break;
- case MapType.metallic:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._MetallicMap, thisCommand.filePath ) );
- break;
- case MapType.smoothness:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._SmoothnessMap, thisCommand.filePath ) );
- break;
- case MapType.edge:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._EdgeMap, thisCommand.filePath ) );
- break;
- case MapType.ao:
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._AOMap, thisCommand.filePath ) );
- break;
- case MapType.property:
- mainGui.ProcessPropertyMap();
- StartCoroutine ( saveLoad.SaveTexture( thisCommand.extension, mainGui._PropertyMap, thisCommand.filePath ) );
- break;
- default:
- break;
- }
- while( saveLoad.busy ){ yield return new WaitForSeconds (0.1f); }
- }else if( thisCommand.commandType == CommandType.FlipNormalMapY ){
- mainGui.FlipNormalMapY();
- }else if( thisCommand.commandType == CommandType.FileFormat ){
- mainGui.SetFormat(thisCommand.extension);
- }else if( thisCommand.commandType == CommandType.HeightFromDiffuse ){
- mainGui.CloseWindows();
- heightFromDiffuseGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- heightFromDiffuseGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( heightFromDiffuseGui.ProcessDiffuse() );
- while( heightFromDiffuseGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( heightFromDiffuseGui.ProcessHeight() );
- while( heightFromDiffuseGui.busy ){ yield return new WaitForSeconds (0.1f); }
- heightFromDiffuseGui.Close();
- }else if( thisCommand.commandType == CommandType.NormalFromHeight ){
- mainGui.CloseWindows();
- normalFromHeightGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- normalFromHeightGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( normalFromHeightGui.ProcessHeight() );
- while( normalFromHeightGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( normalFromHeightGui.ProcessNormal() );
- while( normalFromHeightGui.busy ){ yield return new WaitForSeconds (0.1f); }
- normalFromHeightGui.Close();
- }else if( thisCommand.commandType == CommandType.Metallic ){
- mainGui.CloseWindows();
- metallicGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- metallicGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( metallicGui.ProcessBlur() );
- while( metallicGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( metallicGui.ProcessMetallic() );
- while( metallicGui.busy ){ yield return new WaitForSeconds (0.1f); }
- metallicGui.Close();
- }else if( thisCommand.commandType == CommandType.Smoothness ){
- mainGui.CloseWindows();
- smoothnessGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- smoothnessGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( smoothnessGui.ProcessBlur() );
- while( smoothnessGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( smoothnessGui.ProcessSmoothness() );
- while( smoothnessGui.busy ){ yield return new WaitForSeconds (0.1f); }
- smoothnessGui.Close();
- }else if( thisCommand.commandType == CommandType.AOFromNormal ){
- mainGui.CloseWindows();
- aoFromNormalGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- aoFromNormalGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( aoFromNormalGui.ProcessNormalDepth() );
- while( aoFromNormalGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( aoFromNormalGui.ProcessAO() );
- while( aoFromNormalGui.busy ){ yield return new WaitForSeconds (0.1f); }
- aoFromNormalGui.Close();
- }else if( thisCommand.commandType == CommandType.EdgeFromNormal ){
- mainGui.CloseWindows();
- edgeFromNormalGuiObject.SetActive(true);
- yield return new WaitForSeconds (0.1f);
- edgeFromNormalGui.InitializeTextures();
- yield return new WaitForSeconds (0.1f);
- StartCoroutine( edgeFromNormalGui.ProcessNormal() );
- while( edgeFromNormalGui.busy ){ yield return new WaitForSeconds (0.1f); }
- StartCoroutine( edgeFromNormalGui.ProcessEdge() );
- while( edgeFromNormalGui.busy ){ yield return new WaitForSeconds (0.1f); }
- edgeFromNormalGui.Close();
- }else if( thisCommand.commandType == CommandType.QuickSave ){
-
- switch( thisCommand.mapType ){
- case MapType.height:
- mainGui.QuicksavePathHeight = thisCommand.filePath;
- break;
- case MapType.diffuse:
- mainGui.QuicksavePathDiffuse = thisCommand.filePath;
- break;
- case MapType.normal:
- mainGui.QuicksavePathNormal = thisCommand.filePath;
- break;
- case MapType.metallic:
- mainGui.QuicksavePathMetallic = thisCommand.filePath;
- break;
- case MapType.smoothness:
- mainGui.QuicksavePathSmoothness = thisCommand.filePath;
- break;
- case MapType.edge:
- mainGui.QuicksavePathEdge = thisCommand.filePath;
- break;
- case MapType.ao:
- mainGui.QuicksavePathAO = thisCommand.filePath;
- break;
- case MapType.property:
- mainGui.QuicksavePathProperty = thisCommand.filePath;
- break;
- default:
- break;
- }
- }
-
- yield return new WaitForSeconds (0.1f);
-
- ClipboardHelper.clipBoard = "";
-
- }
-
- yield return new WaitForSeconds (0.1f);
-
- mainGui.CloseWindows();
- mainGui.FixSize();
- materialGuiObject.SetActive(true);
- materialGui.Initialize();
- }
-
-}
+public class CommandListExecutor : MonoBehaviour
+{
+ private MainGui _mainGui;
+ private SaveLoadProject _saveLoad;
+
+ public GameObject SaveLoadProjectObject;
+
+ public SettingsGui SettingsGui;
+
+ // Use this for initialization
+ private void Start()
+ {
+ _mainGui = MainGui.Instance.GetComponent();
+ _saveLoad = SaveLoadProjectObject.GetComponent();
+
+ StartCoroutine(StartCommandString());
+ }
+
+ private IEnumerator StartCommandString()
+ {
+ yield return new WaitForSeconds(0.1f);
+ var commandString = ClipboardHelper.ClipBoard;
+ if (commandString.Contains(
+ "")
+ ) ProcessCommands(commandString);
+ }
+
+ public void SaveTestString()
+ {
+ var commandList = new CommandList {Commands = new List()};
+
+ var command = new Command {CommandType = CommandType.Settings, ProjectSettings = SettingsGui.Settings};
+ commandList.Commands.Add(command);
+
+ command = new Command
+ {
+ CommandType = CommandType.Open,
+ FilePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_diffuse.bmp",
+ MapType = MapType.DiffuseOriginal
+ };
+ commandList.Commands.Add(command);
+
+ command = new Command
+ {
+ CommandType = CommandType.Open,
+ FilePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_normal.bmp",
+ MapType = MapType.Normal
+ };
+ commandList.Commands.Add(command);
+
+ command = new Command {CommandType = CommandType.FlipNormalMapY};
+ commandList.Commands.Add(command);
+
+ command = new Command {CommandType = CommandType.AoFromNormal};
+ commandList.Commands.Add(command);
+
+ command = new Command {CommandType = CommandType.EdgeFromNormal};
+ commandList.Commands.Add(command);
+
+ command = new Command {CommandType = CommandType.FileFormat, Extension = "tga"};
+ commandList.Commands.Add(command);
+
+ command = new Command
+ {
+ CommandType = CommandType.QuickSave,
+ FilePath = "F:\\Project_Files\\TextureTools5\\Dev\\Output\\test_property.bmp"
+ };
+ commandList.Commands.Add(command);
+
+
+ var sb = new StringBuilder();
+ var serializer = new XmlSerializer(typeof(CommandList));
+ var stream = new StringWriter(sb);
+ serializer.Serialize(stream, commandList);
+ ClipboardHelper.ClipBoard = stream.ToString();
+
+ Debug.Log(stream.ToString());
+ }
+
+ private void OnApplicationFocus(bool focusStatus)
+ {
+ if (!focusStatus) return;
+ var commandString = ClipboardHelper.ClipBoard;
+ if (commandString.Contains(
+ "")
+ ) ProcessCommands(commandString);
+ }
+
+ public void ProcessCommands()
+ {
+ var commandString = ClipboardHelper.ClipBoard;
+ if (commandString.Contains(
+ "")
+ ) StartCoroutine(ProcessCommandsCoroutine(commandString));
+ }
+
+ public void ProcessCommands(string commandString)
+ {
+ StartCoroutine(ProcessCommandsCoroutine(commandString));
+ }
+
+ private IEnumerator ProcessCommandsCoroutine(string commandString)
+ {
+ //string commandString = ClipboardHelper.clipBoard;
+
+ var serializer = new XmlSerializer(typeof(CommandList));
+ var stream = new StringReader(commandString);
+
+ if (serializer.Deserialize(stream) is CommandList commandList)
+ foreach (var thisCommand in commandList.Commands)
+ {
+ switch (thisCommand.CommandType)
+ {
+ case CommandType.Settings:
+ SettingsGui.Settings = thisCommand.ProjectSettings;
+ SettingsGui.SetSettings();
+ break;
+ case CommandType.Open:
+ {
+ StartCoroutine(_saveLoad.LoadTexture(thisCommand.MapType, thisCommand.FilePath));
+ while (_saveLoad.Busy) yield return new WaitForSeconds(0.1f);
+ break;
+ }
+ case CommandType.Save:
+ {
+ switch (thisCommand.MapType)
+ {
+ case MapType.Height:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.HeightMap,
+ thisCommand.FilePath);
+ break;
+ case MapType.Diffuse:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.DiffuseMapOriginal,
+ thisCommand.FilePath);
+ break;
+ case MapType.Metallic:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.MetallicMap,
+ thisCommand.FilePath);
+ break;
+ case MapType.Smoothness:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.SmoothnessMap,
+ thisCommand.FilePath);
+ break;
+ case MapType.Edge:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.EdgeMap,
+ thisCommand.FilePath);
+ break;
+ case MapType.Ao:
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.AoMap, thisCommand.FilePath);
+ break;
+ case MapType.Property:
+ _mainGui.ProcessPropertyMap();
+ _saveLoad.SaveTexture(thisCommand.Extension, _mainGui.PropertyMap,
+ thisCommand.FilePath);
+ break;
+ case MapType.DiffuseOriginal:
+ break;
+ case MapType.Normal:
+ break;
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+
+ while (_saveLoad.Busy) yield return new WaitForSeconds(0.1f);
+ break;
+ }
+ case CommandType.FlipNormalMapY:
+ _mainGui.FlipNormalMapY();
+ break;
+ case CommandType.FileFormat:
+ _mainGui.SetFormat(thisCommand.Extension);
+ break;
+ case CommandType.HeightFromDiffuse:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.HeightFromDiffuseGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.HeightFromDiffuseGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.HeightFromDiffuseGuiScript.ProcessDiffuse());
+ while (_mainGui.HeightFromDiffuseGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.HeightFromDiffuseGuiScript.ProcessHeight());
+ while (_mainGui.HeightFromDiffuseGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.HeightFromDiffuseGuiScript.Close();
+ break;
+ }
+ case CommandType.NormalFromHeight:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.NormalFromHeightGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.NormalFromHeightGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.NormalFromHeightGuiScript.ProcessHeight());
+ while (_mainGui.NormalFromHeightGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.NormalFromHeightGuiScript.ProcessNormal());
+ while (_mainGui.NormalFromHeightGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.NormalFromHeightGuiScript.Close();
+ break;
+ }
+ case CommandType.Metallic:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.MetallicGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.MetallicGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.MetallicGuiScript.ProcessBlur());
+ while (_mainGui.MetallicGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.MetallicGuiScript.ProcessMetallic());
+ while (_mainGui.MetallicGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.MetallicGuiScript.Close();
+ break;
+ }
+ case CommandType.Smoothness:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.SmoothnessGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.SmoothnessGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.SmoothnessGuiScript.ProcessBlur());
+ while (_mainGui.SmoothnessGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.SmoothnessGuiScript.ProcessSmoothness());
+ while (_mainGui.SmoothnessGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.SmoothnessGuiScript.Close();
+ break;
+ }
+ case CommandType.AoFromNormal:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.AoFromNormalGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.AoFromNormalGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.AoFromNormalGuiScript.ProcessNormalDepth());
+ while (_mainGui.AoFromNormalGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.AoFromNormalGuiScript.ProcessAo());
+ while (_mainGui.AoFromNormalGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.AoFromNormalGuiScript.Close();
+ break;
+ }
+ case CommandType.EdgeFromNormal:
+ {
+ _mainGui.CloseWindows();
+ _mainGui.EdgeFromNormalGuiObject.SetActive(true);
+ yield return new WaitForSeconds(0.1f);
+ _mainGui.EdgeFromNormalGuiScript.InitializeTextures();
+ yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.EdgeFromNormalGuiScript.ProcessNormal());
+ while (_mainGui.EdgeFromNormalGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ StartCoroutine(_mainGui.EdgeFromNormalGuiScript.ProcessEdge());
+ while (_mainGui.EdgeFromNormalGuiScript.Busy) yield return new WaitForSeconds(0.1f);
+ _mainGui.EdgeFromNormalGuiScript.Close();
+ break;
+ }
+ case CommandType.QuickSave:
+ switch (thisCommand.MapType)
+ {
+ case MapType.Height:
+ _mainGui.QuicksavePathHeight = thisCommand.FilePath;
+ break;
+ case MapType.Diffuse:
+ _mainGui.QuicksavePathDiffuse = thisCommand.FilePath;
+ break;
+ case MapType.Normal:
+ _mainGui.QuicksavePathNormal = thisCommand.FilePath;
+ break;
+ case MapType.Metallic:
+ _mainGui.QuicksavePathMetallic = thisCommand.FilePath;
+ break;
+ case MapType.Smoothness:
+ _mainGui.QuicksavePathSmoothness = thisCommand.FilePath;
+ break;
+ case MapType.Edge:
+ _mainGui.QuicksavePathEdge = thisCommand.FilePath;
+ break;
+ case MapType.Ao:
+ _mainGui.QuicksavePathAo = thisCommand.FilePath;
+ break;
+ case MapType.Property:
+ _mainGui.QuicksavePathProperty = thisCommand.FilePath;
+ break;
+ case MapType.DiffuseOriginal:
+ break;
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+
+ break;
+ default:
+ throw new ArgumentOutOfRangeException();
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ ClipboardHelper.ClipBoard = "";
+ }
+
+ yield return new WaitForSeconds(0.1f);
+
+ _mainGui.CloseWindows();
+ _mainGui.FixSize();
+ _mainGui.MaterialGuiObject.SetActive(true);
+ _mainGui.MaterialGuiScript.Initialize();
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/ControlsGui.cs b/Assets/Scripts/ControlsGui.cs
index a2e63b52..f9711ebd 100644
--- a/Assets/Scripts/ControlsGui.cs
+++ b/Assets/Scripts/ControlsGui.cs
@@ -1,75 +1,55 @@
-using UnityEngine;
-using System.Collections;
+#region
-public class ControlsGui : MonoBehaviour {
+using UnityEngine;
- Rect windowRect = new Rect (Screen.width - 520, Screen.height - 320, 300, 600);
- bool windowOpen = false;
- public Settings settings = new Settings();
+#endregion
- public static SettingsGui instance;
+public class ControlsGui : MonoBehaviour
+{
+ private bool _windowOpen;
- // Use this for initialization
- void Start () {
-
- }
-
- // Update is called once per frame
- void Update () {
-
- }
+ private Rect _windowRect = new Rect(Screen.width - 520, Screen.height - 320, 300, 600);
- void DoMyWindow ( int windowID ) {
+ private void DoMyWindow(int windowId)
+ {
+ const int offsetX = 10;
+ var offsetY = 30;
- int offsetX = 10;
- int offsetY = 30;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Rotate Model");
+ offsetY += 20;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Right Mouse Button");
+ offsetY += 30;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Rotate Model" );
- offsetY += 20;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Right Mouse Button" );
- offsetY += 30;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Move Model");
+ offsetY += 20;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Middle Mouse Button");
+ offsetY += 30;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Move Model" );
- offsetY += 20;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Middle Mouse Button" );
- offsetY += 30;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Zoom In/Out");
+ offsetY += 20;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Mouse Scroll Wheel");
+ offsetY += 30;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Zoom In/Out" );
- offsetY += 20;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Mouse Scroll Wheel" );
- offsetY += 30;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Rotate Light");
+ offsetY += 20;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Middle Mouse Button + L");
+ offsetY += 30;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Rotate Light" );
- offsetY += 20;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Middle Mouse Button + L" );
- offsetY += 30;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Rotate Background");
+ offsetY += 20;
+ GUI.Label(new Rect(offsetX, offsetY, 250, 30), "Middle Mouse Button + B");
+ offsetY += 30;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Rotate Background" );
- offsetY += 20;
- GUI.Label (new Rect (offsetX, offsetY, 250, 30), "Middle Mouse Button + B" );
- offsetY += 30;
+ if (GUI.Button(new Rect(offsetX + 160, offsetY, 120, 30), "Close")) _windowOpen = false;
+ }
+
+ private void OnGUI()
+ {
+ //_windowRect = new Rect(Screen.width - 480, Screen.height - 370, 170, 280);
- if (GUI.Button (new Rect (offsetX + 160, offsetY, 120, 30), "Close")) {
- windowOpen = false;
- }
+ GUI.Window(22, _windowRect, DoMyWindow, "Controls");
- }
-
- void OnGUI () {
-
- windowRect = new Rect (Screen.width - 480, Screen.height - 370, 170, 280);
-
- if (windowOpen){
- windowRect = GUI.Window (22, windowRect, DoMyWindow, "Controls");
- }
-
- if (GUI.Button (new Rect(Screen.width - 370, Screen.height - 40, 80, 30), "Controls")) {
- if( windowOpen == true){
- windowOpen = false;
- }else{
- windowOpen = true;
- }
- }
-
- }
-}
+ //if (!GUI.Button(new Rect(Screen.width - 370, Screen.height - 40, 80, 30), "Controls")) return;
+ //_windowOpen = !_windowOpen;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/CopyScale.cs b/Assets/Scripts/CopyScale.cs
index 621a6870..ecd0df97 100644
--- a/Assets/Scripts/CopyScale.cs
+++ b/Assets/Scripts/CopyScale.cs
@@ -1,27 +1,34 @@
-using UnityEngine;
-using System.Collections;
+#region
-public class CopyScale : MonoBehaviour {
+using UnityEngine;
- public GameObject targetObject;
+#endregion
- // Use this for initialization
- void Start () {
-
- }
-
- // Update is called once per frame
- void Update () {
- Vector3 tempScale = targetObject.transform.localScale;
- Material targetMaterial = targetObject.GetComponent ().sharedMaterial;
+public class CopyScale : MonoBehaviour
+{
+ private static readonly int Parallax = Shader.PropertyToID("_Parallax");
+ private static readonly int Tiling1 = Shader.PropertyToID("_Tiling");
+ private Renderer _renderer;
+ public GameObject TargetObject;
- if ( targetMaterial.HasProperty( "_Parallax" ) ) {
- float Height = targetMaterial.GetFloat ("_Parallax");
- Vector4 Tiling = targetMaterial.GetVector ("_Tiling");
+ private void Start()
+ {
+ _renderer = TargetObject.GetComponent();
+ }
- tempScale.z += Height * ( 1.0f / Tiling.x );
- }
+ private void Update()
+ {
+ var tempScale = TargetObject.transform.localScale;
+ var targetMaterial = _renderer.sharedMaterial;
- this.transform.localScale = tempScale;
- }
-}
+ if (targetMaterial.HasProperty("_Parallax"))
+ {
+ var height = targetMaterial.GetFloat(Parallax);
+ var tiling = targetMaterial.GetVector(Tiling1);
+
+ tempScale.z += height * (1.0f / tiling.x);
+ }
+
+ transform.localScale = tempScale;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Scripts/CountLocker.cs b/Assets/Scripts/CountLocker.cs
new file mode 100644
index 00000000..b4990df4
--- /dev/null
+++ b/Assets/Scripts/CountLocker.cs
@@ -0,0 +1,48 @@
+#region
+
+using System;
+using System.Collections.Generic;
+
+#endregion
+
+public class CountLocker
+{
+ private readonly List