From 4ee1a32bc382a642737e3db6290895c98dcd740d Mon Sep 17 00:00:00 2001 From: LH Date: Tue, 8 Sep 2020 14:00:15 +0800 Subject: [PATCH] [03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad] Updated Unity to 2019.4.9f1. Replaced avpro to com.ultracombos.avpro-video. --- .gitmodules | 3 + .../Assets/AVProVideo.meta | 9 - .../Assets/AVProVideo/Materials.meta | 5 - .../Assets/AVProVideo/Materials/cube360.mat | 52 - .../AVProVideo/Materials/cube360.mat.meta | 4 - .../Assets/AVProVideo/Materials/sphere360.mat | 28 - .../AVProVideo/Materials/sphere360.mat.meta | 4 - .../Assets/AVProVideo/Prefabs.meta | 5 - .../AVProVideo/Prefabs/360CubeVideo.prefab | 195 -- .../Prefabs/360CubeVideo.prefab.meta | 4 - .../AVProVideo/Prefabs/360SphereVideo.prefab | 224 -- .../Prefabs/360SphereVideo.prefab.meta | 4 - .../AVProVideo/Prefabs/AudioOutput.prefab | 113 - .../Prefabs/AudioOutput.prefab.meta | 4 - .../AVProVideo/Prefabs/BackgroundVideo.prefab | 174 - .../Prefabs/BackgroundVideo.prefab.meta | 4 - .../AVProVideo/Prefabs/FullscreenVideo.prefab | 82 - .../Prefabs/FullscreenVideo.prefab.meta | 4 - .../Assets/AVProVideo/Resources.meta | 9 - .../Assets/AVProVideo/Resources/AVPro.png | Bin 35129 -> 0 bytes .../AVProVideo/Resources/AVPro.png.meta | 47 - .../Assets/AVProVideo/Resources/AVPro1.png | Bin 35322 -> 0 bytes .../AVProVideo/Resources/AVPro1.png.meta | 47 - .../AVProVideo/Resources/AVProVideoIcon.png | Bin 27339 -> 0 bytes .../Resources/AVProVideoIcon.png.meta | 47 - .../Assets/AVProVideo/Resources/Shaders.meta | 5 - .../AVProVideo-Background-FullScreen.shader | 95 - ...ProVideo-Background-FullScreen.shader.meta | 9 - ...eo-Background-FullScreenTransparent.shader | 123 - ...ckground-FullScreenTransparent.shader.meta | 5 - .../Shaders/AVProVideo-BlendFrames.shader | 63 - .../AVProVideo-BlendFrames.shader.meta | 5 - .../AVProVideo-Helper-Transition.shader | 179 - .../AVProVideo-Helper-Transition.shader.meta | 5 - .../AVProVideo-IMGUI-Transparent.shader | 107 - .../AVProVideo-IMGUI-Transparent.shader.meta | 5 - .../Shaders/AVProVideo-Lit-Diffuse.shader | 91 - .../AVProVideo-Lit-Diffuse.shader.meta | 5 - .../AVProVideo-Lit-Transparent-Diffuse.shader | 92 - ...oVideo-Lit-Transparent-Diffuse.shader.meta | 5 - .../Shaders/AVProVideo-UI-AndroidOES.shader | 140 - .../AVProVideo-UI-AndroidOES.shader.meta | 5 - .../AVProVideo-UI-Default-Stereo.shader | 141 - .../AVProVideo-UI-Default-Stereo.shader.meta | 5 - .../AVProVideo-UI-Default-Transparent.shader | 174 - ...roVideo-UI-Default-Transparent.shader.meta | 5 - .../AVProVideo-Unlit-AndroidOES.shader | 74 - .../AVProVideo-Unlit-AndroidOES.shader.meta | 5 - .../AVProVideo-Unlit-Transparent.shader | 129 - .../AVProVideo-Unlit-Transparent.shader.meta | 5 - .../Resources/Shaders/AVProVideo-Unlit.shader | 128 - .../Shaders/AVProVideo-Unlit.shader.meta | 5 - ...ProVideo-VR-InsideSphere-AndroidOES.shader | 111 - ...deo-VR-InsideSphere-AndroidOES.shader.meta | 5 - ...AVProVideo-VR-InsideSphere-StereoUV.shader | 114 - ...Video-VR-InsideSphere-StereoUV.shader.meta | 5 - ...roVideo-VR-InsideSphere-Transparent.shader | 282 -- ...eo-VR-InsideSphere-Transparent.shader.meta | 5 - .../Shaders/AVProVideo-VR-InsideSphere.shader | 201 -- .../AVProVideo-VR-InsideSphere.shader.meta | 5 - .../Resources/Shaders/AVProVideo.cginc | 306 -- .../Resources/Shaders/AVProVideo.cginc.meta | 5 - .../Assets/AVProVideo/Scripts.meta | 9 - .../Assets/AVProVideo/Scripts/Components.meta | 9 - .../Scripts/Components/ApplyToMaterial.cs | 283 -- .../Components/ApplyToMaterial.cs.meta | 8 - .../Scripts/Components/ApplyToMesh.cs | 384 --- .../Scripts/Components/ApplyToMesh.cs.meta | 8 - .../Scripts/Components/AudioOutput.cs | 121 - .../Scripts/Components/AudioOutput.cs.meta | 8 - .../Scripts/Components/CubemapCube.cs | 397 --- .../Scripts/Components/CubemapCube.cs.meta | 8 - .../Scripts/Components/DebugOverlay.cs | 271 -- .../Scripts/Components/DebugOverlay.cs.meta | 8 - .../Scripts/Components/DisplayBackground.cs | 60 - .../Components/DisplayBackground.cs.meta | 10 - .../Scripts/Components/DisplayIMGUI.cs | 314 -- .../Scripts/Components/DisplayIMGUI.cs.meta | 8 - .../Scripts/Components/DisplayUGUI.cs | 663 ---- .../Scripts/Components/DisplayUGUI.cs.meta | 8 - .../Scripts/Components/MediaPlayer.cs | 2233 ------------- .../Scripts/Components/MediaPlayer.cs.meta | 8 - .../Scripts/Components/PlaylistMediaPlayer.cs | 901 ------ .../Components/PlaylistMediaPlayer.cs.meta | 8 - .../Scripts/Components/StreamParser.cs | 129 - .../Scripts/Components/StreamParser.cs.meta | 8 - .../Scripts/Components/SubtitlesUGUI.cs | 76 - .../Scripts/Components/SubtitlesUGUI.cs.meta | 8 - .../Scripts/Components/Support.meta | 5 - .../Scripts/Components/Support/NGUI.meta | 5 - .../Support/NGUI/ApplyToTextureWidgetNGUI.cs | 182 -- .../NGUI/ApplyToTextureWidgetNGUI.cs.meta | 8 - .../Scripts/Components/Support/PlayMaker.meta | 9 - .../Components/Support/PlayMaker/Actions.meta | 9 - .../PlayMaker/Actions/AVProVideoControl.cs | 2194 ------------- .../Actions/AVProVideoControl.cs.meta | 12 - .../Actions/AVProVideoDisplayUGUI.cs | 65 - .../Actions/AVProVideoDisplayUGUI.cs.meta | 8 - .../PlayMaker/Actions/AVProVideoEvent.cs | 563 ---- .../PlayMaker/Actions/AVProVideoEvent.cs.meta | 12 - .../PlayMaker/Actions/AVProVideoInfo.cs | 836 ----- .../PlayMaker/Actions/AVProVideoInfo.cs.meta | 12 - .../PlayMaker/Actions/AVProVideoPlayer.cs | 335 -- .../Actions/AVProVideoPlayer.cs.meta | 12 - .../Support/PlayMaker/Actions/Internal.meta | 9 - .../Actions/Internal/AVProVideoActionBase.cs | 49 - .../Internal/AVProVideoActionBase.cs.meta | 12 - .../Components/Support/PlayMaker/Editor.meta | 5 - .../AVProVideoActionHeaderPropertyDrawer.cs | 79 - ...ProVideoActionHeaderPropertyDrawer.cs.meta | 8 - .../Components/UpdateStereoMaterial.cs | 112 - .../Components/UpdateStereoMaterial.cs.meta | 8 - .../Assets/AVProVideo/Scripts/Editor.meta | 9 - .../Scripts/Editor/ApplyToMeshEditor.cs | 102 - .../Scripts/Editor/ApplyToMeshEditor.cs.meta | 8 - .../Scripts/Editor/AudioOutputEditor.cs | 59 - .../Scripts/Editor/AudioOutputEditor.cs.meta | 12 - .../Scripts/Editor/DisplayUGUIEditor.cs | 170 - .../Scripts/Editor/DisplayUGUIEditor.cs.meta | 12 - .../Scripts/Editor/MediaPlayerEditor.cs | 2874 ----------------- .../Scripts/Editor/MediaPlayerEditor.cs.meta | 12 - .../Editor/PlaylistMediaPlayerEditor.cs | 359 -- .../Editor/PlaylistMediaPlayerEditor.cs.meta | 8 - .../Scripts/Editor/PostProcessBuild.cs | 33 - .../Scripts/Editor/PostProcessBuild.cs.meta | 8 - .../Scripts/Editor/SupportWindow.cs | 383 --- .../Scripts/Editor/SupportWindow.cs.meta | 8 - .../Editor/UpdateStereoMaterialEditor.cs | 107 - .../Editor/UpdateStereoMaterialEditor.cs.meta | 8 - .../Assets/AVProVideo/Scripts/Internal.meta | 5 - .../Scripts/Internal/AndroidMediaPlayer.cs | 1186 ------- .../Internal/AndroidMediaPlayer.cs.meta | 12 - .../Scripts/Internal/AudioOutputManager.cs | 137 - .../Internal/AudioOutputManager.cs.meta | 12 - .../Scripts/Internal/BaseMediaPlayer.cs | 318 -- .../Scripts/Internal/BaseMediaPlayer.cs.meta | 12 - .../AVProVideo/Scripts/Internal/HLSStream.cs | 317 -- .../Scripts/Internal/HLSStream.cs.meta | 8 - .../AVProVideo/Scripts/Internal/Interfaces.cs | 1079 ------- .../Scripts/Internal/Interfaces.cs.meta | 12 - .../Scripts/Internal/NullMediaPlayer.cs | 318 -- .../Scripts/Internal/NullMediaPlayer.cs.meta | 12 - .../Scripts/Internal/OSXMediaPlayer.cs | 932 ------ .../Scripts/Internal/OSXMediaPlayer.cs.meta | 12 - .../AVProVideo/Scripts/Internal/Resampler.cs | 589 ---- .../Scripts/Internal/Resampler.cs.meta | 12 - .../AVProVideo/Scripts/Internal/Stream.cs | 37 - .../Scripts/Internal/Stream.cs.meta | 8 - .../Scripts/Internal/WebGLMediaPlayer.cs | 799 ----- .../Scripts/Internal/WebGLMediaPlayer.cs.meta | 12 - .../Scripts/Internal/WindowsMediaPlayer.cs | 1249 ------- .../Internal/WindowsMediaPlayer.cs.meta | 8 - .../Assets/Main-1-Intro.unity | 189 +- .../Assets/Plugins/AVProVideo.bundle.meta | 95 - .../Plugins/AVProVideo.bundle/Contents.meta | 5 - .../AVProVideo.bundle/Contents/Info.plist | 46 - .../Contents/Info.plist.meta | 4 - .../AVProVideo.bundle/Contents/MacOS.meta | 5 - .../Contents/MacOS/AVProVideo | Bin 639056 -> 0 bytes .../Contents/MacOS/AVProVideo.meta | 4 - .../Assets/Plugins/Android.meta | 5 - .../Assets/Plugins/Android/AVProVideo.jar | Bin 174509 -> 0 bytes .../Plugins/Android/AVProVideo.jar.meta | 23 - .../Assets/Plugins/Android/audio360-exo28.jar | Bin 10766 -> 0 bytes .../Plugins/Android/audio360-exo28.jar.meta | 33 - .../Assets/Plugins/Android/audio360.jar | Bin 64885 -> 0 bytes .../Assets/Plugins/Android/audio360.jar.meta | 29 - .../Plugins/Android/exoplayer2-dash.jar | Bin 116488 -> 0 bytes .../Plugins/Android/exoplayer2-dash.jar.meta | 29 - .../Assets/Plugins/Android/exoplayer2-hls.jar | Bin 96965 -> 0 bytes .../Plugins/Android/exoplayer2-hls.jar.meta | 29 - .../Android/exoplayer2-smoothstreaming.jar | Bin 49237 -> 0 bytes .../exoplayer2-smoothstreaming.jar.meta | 29 - .../Assets/Plugins/Android/exoplayer2.jar | Bin 1426335 -> 0 bytes .../Plugins/Android/exoplayer2.jar.meta | 29 - .../Assets/Plugins/Android/libs.meta | 5 - .../Plugins/Android/libs/arm64-v8a.meta | 9 - .../Android/libs/arm64-v8a/libAVProLocal.so | Bin 190552 -> 0 bytes .../libs/arm64-v8a/libAVProLocal.so.meta | 24 - .../Android/libs/arm64-v8a/libAudio360-JNI.so | Bin 563360 -> 0 bytes .../libs/arm64-v8a/libAudio360-JNI.so.meta | 24 - .../Android/libs/arm64-v8a/libAudio360.so | Bin 1969528 -> 0 bytes .../libs/arm64-v8a/libAudio360.so.meta | 24 - .../Plugins/Android/libs/arm64-v8a/libopus.so | Bin 366336 -> 0 bytes .../Android/libs/arm64-v8a/libopus.so.meta | 24 - .../Android/libs/arm64-v8a/libopusJNI.so | Bin 9912 -> 0 bytes .../Android/libs/arm64-v8a/libopusJNI.so.meta | 24 - .../Plugins/Android/libs/armeabi-v7a.meta | 5 - .../Android/libs/armeabi-v7a/libAVProLocal.so | Bin 112276 -> 0 bytes .../libs/armeabi-v7a/libAVProLocal.so.meta | 24 - .../libs/armeabi-v7a/libAudio360-JNI.so | Bin 333484 -> 0 bytes .../libs/armeabi-v7a/libAudio360-JNI.so.meta | 24 - .../Android/libs/armeabi-v7a/libAudio360.so | Bin 1587524 -> 0 bytes .../libs/armeabi-v7a/libAudio360.so.meta | 24 - .../Android/libs/armeabi-v7a/libopus.so | Bin 304600 -> 0 bytes .../Android/libs/armeabi-v7a/libopus.so.meta | 24 - .../Android/libs/armeabi-v7a/libopusJNI.so | Bin 13736 -> 0 bytes .../libs/armeabi-v7a/libopusJNI.so.meta | 24 - .../Assets/Plugins/Android/libs/x86.meta | 9 - .../Plugins/Android/libs/x86/libAVProLocal.so | Bin 185992 -> 0 bytes .../Android/libs/x86/libAVProLocal.so.meta | 24 - .../Android/libs/x86/libAudio360-JNI.so | Bin 579272 -> 0 bytes .../Android/libs/x86/libAudio360-JNI.so.meta | 24 - .../Plugins/Android/libs/x86/libAudio360.so | Bin 2116000 -> 0 bytes .../Android/libs/x86/libAudio360.so.meta | 24 - .../Plugins/Android/libs/x86/libopus.so | Bin 415128 -> 0 bytes .../Plugins/Android/libs/x86/libopus.so.meta | 24 - .../Plugins/Android/libs/x86/libopusJNI.so | Bin 5484 -> 0 bytes .../Android/libs/x86/libopusJNI.so.meta | 24 - .../Assets/Plugins/Android/zip_file.jar | Bin 12406 -> 0 bytes .../Assets/Plugins/Android/zip_file.jar.meta | 23 - .../Assets/Plugins/WSA.meta | 9 - .../Assets/Plugins/WSA/PhoneSDK81.meta | 9 - .../Assets/Plugins/WSA/PhoneSDK81/ARM.meta | 5 - .../Plugins/WSA/PhoneSDK81/ARM/AVProVideo.dll | Bin 213504 -> 0 bytes .../WSA/PhoneSDK81/ARM/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/PhoneSDK81/x86.meta | 5 - .../Plugins/WSA/PhoneSDK81/x86/AVProVideo.dll | Bin 214016 -> 0 bytes .../WSA/PhoneSDK81/x86/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/SDK81.meta | 9 - .../Assets/Plugins/WSA/SDK81/ARM.meta | 5 - .../Plugins/WSA/SDK81/ARM/AVProVideo.dll | Bin 212992 -> 0 bytes .../Plugins/WSA/SDK81/ARM/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/SDK81/x86.meta | 5 - .../Plugins/WSA/SDK81/x86/AVProVideo.dll | Bin 213504 -> 0 bytes .../Plugins/WSA/SDK81/x86/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/SDK81/x86_64.meta | 5 - .../Plugins/WSA/SDK81/x86_64/AVProVideo.dll | Bin 225280 -> 0 bytes .../WSA/SDK81/x86_64/AVProVideo.dll.meta | 57 - .../Assets/Plugins/WSA/UWP.meta | 9 - .../Assets/Plugins/WSA/UWP/ARM.meta | 5 - .../Assets/Plugins/WSA/UWP/ARM/AVProVideo.dll | Bin 220160 -> 0 bytes .../Plugins/WSA/UWP/ARM/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/UWP/x86.meta | 5 - .../Assets/Plugins/WSA/UWP/x86/AVProVideo.dll | Bin 217600 -> 0 bytes .../Plugins/WSA/UWP/x86/AVProVideo.dll.meta | 23 - .../Assets/Plugins/WSA/UWP/x86_64.meta | 5 - .../Plugins/WSA/UWP/x86_64/AVProVideo.dll | Bin 230912 -> 0 bytes .../WSA/UWP/x86_64/AVProVideo.dll.meta | 57 - .../Assets/Plugins/WebGL.meta | 9 - .../Assets/Plugins/WebGL/AVProVideo.jslib | 608 ---- .../Plugins/WebGL/AVProVideo.jslib.meta | 21 - .../Assets/Plugins/iOS.meta | 9 - ...AVProVideoUnityRegisterRenderingPluginV5.c | 32 - ...VideoUnityRegisterRenderingPluginV5.c.meta | 23 - .../Assets/Plugins/iOS/libAVProVideoiOS.a | Bin 4787808 -> 0 bytes .../Plugins/iOS/libAVProVideoiOS.a.meta | 21 - .../Assets/Plugins/tvOS.meta | 9 - ...AVProVideoUnityRegisterRenderingPluginV5.c | 32 - ...VideoUnityRegisterRenderingPluginV5.c.meta | 56 - .../Assets/Plugins/tvOS/libAVProVideotvOS.a | Bin 3581272 -> 0 bytes .../Plugins/tvOS/libAVProVideotvOS.a.meta | 56 - .../Assets/Plugins/x86.meta | 5 - .../Assets/Plugins/x86/AVProVideo.dll | Bin 869376 -> 0 bytes .../Assets/Plugins/x86/AVProVideo.dll.meta | 61 - .../Assets/Plugins/x86/Audio360.dll | Bin 1630208 -> 0 bytes .../Assets/Plugins/x86/Audio360.dll.meta | 78 - .../Assets/Plugins/x86_64.meta | 5 - .../Assets/Plugins/x86_64/AVProVideo.dll | Bin 1040384 -> 0 bytes .../Assets/Plugins/x86_64/AVProVideo.dll.meta | 61 - .../Assets/Plugins/x86_64/Audio360.dll | Bin 1956352 -> 0 bytes .../Assets/Plugins/x86_64/Audio360.dll.meta | 80 - .../Packages/manifest.json | 16 +- .../ProjectSettings/EditorSettings.asset | 20 +- .../ProjectSettings/ProjectVersion.txt | 3 +- _Package/com.ultracombos.avpro-video | 1 + 266 files changed, 167 insertions(+), 27804 deletions(-) delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/AVProVideo.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/AVProVideo.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360-exo28.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360-exo28.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-dash.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-dash.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-hls.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-hls.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-smoothstreaming.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-smoothstreaming.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAVProLocal.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAVProLocal.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAudio360-JNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAudio360-JNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAudio360.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libAudio360.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libopus.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libopus.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libopusJNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/arm64-v8a/libopusJNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAVProLocal.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAVProLocal.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAudio360-JNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAudio360-JNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAudio360.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libAudio360.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libopus.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libopus.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libopusJNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/armeabi-v7a/libopusJNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAVProLocal.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAVProLocal.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAudio360-JNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAudio360-JNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAudio360.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libAudio360.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libopus.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libopus.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libopusJNI.so delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/libs/x86/libopusJNI.so.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/zip_file.jar delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/zip_file.jar.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/ARM.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/ARM/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/ARM/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/x86.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/x86/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/PhoneSDK81/x86/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/ARM.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/ARM/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/ARM/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86_64.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86_64/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/SDK81/x86_64/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/ARM.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/ARM/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/ARM/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86_64.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86_64/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WSA/UWP/x86_64/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WebGL.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WebGL/AVProVideo.jslib delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/WebGL/AVProVideo.jslib.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/iOS.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/iOS/AVProVideoUnityRegisterRenderingPluginV5.c delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/iOS/AVProVideoUnityRegisterRenderingPluginV5.c.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/iOS/libAVProVideoiOS.a delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/iOS/libAVProVideoiOS.a.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/tvOS.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/tvOS/AVProVideoUnityRegisterRenderingPluginV5.c delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/tvOS/AVProVideoUnityRegisterRenderingPluginV5.c.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/tvOS/libAVProVideotvOS.a delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/tvOS/libAVProVideotvOS.a.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86/Audio360.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86/Audio360.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86_64.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86_64/AVProVideo.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86_64/AVProVideo.dll.meta delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86_64/Audio360.dll delete mode 100644 03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/x86_64/Audio360.dll.meta create mode 160000 _Package/com.ultracombos.avpro-video diff --git a/.gitmodules b/.gitmodules index a83e101..0139e32 100644 --- a/.gitmodules +++ b/.gitmodules @@ -62,3 +62,6 @@ path = _Package/KlakSpout url = https://github.com/UltraCombos/KlakSpout.git branch = upm +[submodule "_Package/com.ultracombos.avpro-video"] + path = _Package/com.ultracombos.avpro-video + url = https://github.com/UltraCombos/com.ultracombos.avpro-video diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo.meta deleted file mode 100644 index 85ae641..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 031025b1a4246d34fa19abd547244d14 -folderAsset: yes -timeCreated: 1541620985 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials.meta deleted file mode 100644 index 738e066..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: bb52e262d07b2d44d867f77a1be49439 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat deleted file mode 100644 index c01387c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat +++ /dev/null @@ -1,52 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_Name: cube360 - m_Shader: {fileID: 4800000, guid: 1ca6555d94ddb204c87e9fe549085b3c, type: 3} - m_ShaderKeywords: - - STEREO_NONE - m_CustomRenderQueue: -1 - m_SavedProperties: - serializedVersion: 2 - m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _ChromaTex - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - data: - first: - name: Stereo - second: 0 - data: - first: - name: _StereoDebug - second: 0 - data: - first: - name: _ApplyGamma - second: 0 - data: - first: - name: _UseYpCbCr - second: 0 - m_Colors: - data: - first: - name: _Color - second: {r: 1, g: 1, b: 1, a: 1} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat.meta deleted file mode 100644 index 0e4f9aa..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/cube360.mat.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 528f5620ff3f26b428baf78fbf6ed558 -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat deleted file mode 100644 index 7addb5f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat +++ /dev/null @@ -1,28 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_Name: sphere360 - m_Shader: {fileID: 4800000, guid: 46b84ca7ab6291e4fb6c57ac48d01e8f, type: 3} - m_ShaderKeywords: [] - m_CustomRenderQueue: -1 - m_SavedProperties: - serializedVersion: 2 - m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: {} - m_Colors: - data: - first: - name: _Color - second: {r: 1, g: 1, b: 1, a: 1} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat.meta deleted file mode 100644 index 191504b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Materials/sphere360.mat.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 17b8b08ed638ac04a9e726c6ec0cea35 -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs.meta deleted file mode 100644 index 5667a28..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 107a33f32a4dd694ab9ed5c0c7a035c6 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab deleted file mode 100644 index f059b93..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab +++ /dev/null @@ -1,195 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &149002 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 449002} - m_Layer: 0 - m_Name: 360CubeVideo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &149004 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 449004} - - 114: {fileID: 11449004} - m_Layer: 0 - m_Name: AVPro Video Media Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &149006 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 449006} - - 23: {fileID: 2388718} - - 33: {fileID: 3388718} - - 114: {fileID: 11488718} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &449002 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149002} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 449006} - - {fileID: 449004} - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!4 &449004 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149004} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 449002} - m_RootOrder: 1 ---- !u!4 &449006 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149006} - m_LocalRotation: {x: 0, y: 1, z: 0, w: -4.37113883e-08} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 449002} - m_RootOrder: 0 ---- !u!23 &2388718 -Renderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149006} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_LightmapIndex: 255 - m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} - m_Materials: - - {fileID: 2100000, guid: 528f5620ff3f26b428baf78fbf6ed558, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_LightProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3388718 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149006} - m_Mesh: {fileID: 0} ---- !u!114 &11449004 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149004} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} - m_Name: - m_EditorClassIdentifier: - m_VideoLocation: 2 - m_VideoPath: - m_AutoOpen: 1 - m_AutoStart: 1 - m_Loop: 1 - m_Volume: 1 - m_Muted: 0 - m_PlaybackRate: 1 - m_DebugGui: 0 - m_Persistent: 0 - m_StereoPacking: 0 - m_DisplayDebugStereoColorTint: 0 - m_FilterMode: 1 - m_WrapMode: 1 - m_AnisoLevel: 0 - m_events: - m_PersistentCalls: - m_Calls: [] - m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - _optionsWindows: - overridePath: 0 - pathLocation: 2 - path: - forceDirectShowApi: 0 - forceAudioOutputDeviceName: - _optionsMacOSX: - overridePath: 0 - pathLocation: 2 - path: - _optionsIOS: - overridePath: 0 - pathLocation: 2 - path: - _optionsTVOS: - overridePath: 0 - pathLocation: 2 - path: - _optionsAndroid: - overridePath: 0 - pathLocation: 2 - path: ---- !u!114 &11488718 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149006} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 683e7713922f8044c81bf497a0b5887e, type: 3} - m_Name: - m_EditorClassIdentifier: - _material: {fileID: 2100000, guid: 528f5620ff3f26b428baf78fbf6ed558, type: 2} - _mediaPlayer: {fileID: 11449004} - expansion_coeff: 1.00999999 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 149002} - m_IsPrefabParent: 1 - m_IsExploded: 1 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab.meta deleted file mode 100644 index 6438847..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360CubeVideo.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 5cc7e20810735fc46ab7b17491990099 -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab deleted file mode 100644 index ba11036..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab +++ /dev/null @@ -1,224 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &127526 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 427526} - - 33: {fileID: 3327526} - - 23: {fileID: 2327526} - - 114: {fileID: 11404242} - - 114: {fileID: 11476996} - m_Layer: 0 - m_Name: Sphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &198420 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 498420} - m_Layer: 0 - m_Name: 360SphereVideo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &198424 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 498424} - - 114: {fileID: 11498420} - m_Layer: 0 - m_Name: AVPro Video Media Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &427526 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 127526} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 5, y: 5, z: 5} - m_Children: [] - m_Father: {fileID: 498420} - m_RootOrder: 0 ---- !u!4 &498420 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 198420} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 427526} - - {fileID: 498424} - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!4 &498424 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 198424} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 498420} - m_RootOrder: 1 ---- !u!23 &2327526 -Renderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 127526} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_LightmapIndex: 255 - m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} - m_Materials: - - {fileID: 2100000, guid: 17b8b08ed638ac04a9e726c6ec0cea35, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_LightProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3327526 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 127526} - m_Mesh: {fileID: 4300000, guid: c8b055314efcb4b4dbd29f97a847fc4c, type: 2} ---- !u!114 &11404242 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 127526} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4ed685e8c5f1f584aa28b32dcf9bdab1, type: 3} - m_Name: - m_EditorClassIdentifier: - _camera: {fileID: 0} - _renderer: {fileID: 2327526} ---- !u!114 &11476996 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 127526} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f6d1977a52888584496b1acc7e998011, type: 3} - m_Name: - m_EditorClassIdentifier: - _offset: {x: 0, y: 0} - _scale: {x: 1, y: 1} - _mesh: {fileID: 2327526} - _media: {fileID: 11498420} - _defaultTexture: {fileID: 0} ---- !u!114 &11498420 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 198424} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} - m_Name: - m_EditorClassIdentifier: - m_VideoLocation: 2 - m_VideoPath: - m_AutoOpen: 1 - m_AutoStart: 1 - m_Loop: 1 - m_Volume: 1 - m_Muted: 0 - m_PlaybackRate: 1 - m_DebugGui: 0 - m_Persistent: 0 - m_StereoPacking: 0 - m_AlphaPacking: 0 - m_DisplayDebugStereoColorTint: 0 - m_FilterMode: 1 - m_WrapMode: 1 - m_AnisoLevel: 0 - m_events: - m_PersistentCalls: - m_Calls: [] - m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - _optionsWindows: - overridePath: 0 - pathLocation: 2 - path: - forceDirectShowApi: 0 - forceAudioOutputDeviceName: - _optionsMacOSX: - overridePath: 0 - pathLocation: 2 - path: - _optionsIOS: - overridePath: 0 - pathLocation: 2 - path: - _optionsTVOS: - overridePath: 0 - pathLocation: 2 - path: - _optionsAndroid: - overridePath: 0 - pathLocation: 2 - path: - _optionsWindowsPhone: - overridePath: 0 - pathLocation: 2 - path: - _optionsWindowsUWP: - overridePath: 0 - pathLocation: 2 - path: - _optionsWebGL: - overridePath: 0 - pathLocation: 2 - path: ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 198420} - m_IsPrefabParent: 1 - m_IsExploded: 1 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab.meta deleted file mode 100644 index c7efa4b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/360SphereVideo.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 5a12218ea7e5b7a4e8b89d25e07d237d -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab deleted file mode 100644 index 6713ebd..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab +++ /dev/null @@ -1,113 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &162392 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 462392} - - 114: {fileID: 11462392} - - 82: {fileID: 8262392} - m_Layer: 0 - m_Name: AudioOutput - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &462392 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 162392} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!82 &8262392 -AudioSource: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 162392} - m_Enabled: 1 - serializedVersion: 3 - m_audioClip: {fileID: 0} - m_PlayOnAwake: 0 - m_Volume: 1 - m_Pitch: 1 - Loop: 0 - Mute: 0 - Priority: 128 - DopplerLevel: 1 - MinDistance: 1 - MaxDistance: 500 - Pan2D: 0 - rolloffMode: 0 - BypassEffects: 0 - BypassListenerEffects: 0 - BypassReverbZones: 0 - rolloffCustomCurve: - serializedVersion: 2 - m_Curve: - - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - - time: 1 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - panLevelCustomCurve: - serializedVersion: 2 - m_Curve: - - time: 0 - value: 1 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 - spreadCustomCurve: - serializedVersion: 2 - m_Curve: - - time: 0 - value: 0 - inSlope: 0 - outSlope: 0 - tangentMode: 0 - m_PreInfinity: 2 - m_PostInfinity: 2 ---- !u!114 &11462392 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 162392} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3b05a64a5de3f8546bf586f42e37b979, type: 3} - m_Name: - m_EditorClassIdentifier: - _mediaPlayer: {fileID: 0} ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 162392} - m_IsPrefabParent: 1 - m_IsExploded: 1 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab.meta deleted file mode 100644 index fc4cd20..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/AudioOutput.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 23fac3371501b864a8a2468ac0bef6f3 -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab deleted file mode 100644 index bf09437..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab +++ /dev/null @@ -1,174 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &166464 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 466464} - m_Layer: 0 - m_Name: BackgroundVideo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &166466 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 466466} - - 33: {fileID: 3366464} - - 23: {fileID: 2366464} - - 114: {fileID: 11466464} - m_Layer: 0 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &166468 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 466468} - - 114: {fileID: 11466466} - m_Layer: 0 - m_Name: AVPro Video Media Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &466464 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166464} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 466468} - - {fileID: 466466} - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!4 &466466 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166466} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 466464} - m_RootOrder: 1 ---- !u!4 &466468 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166468} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 466464} - m_RootOrder: 0 ---- !u!23 &2366464 -Renderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166466} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_LightmapIndex: 255 - m_LightmapTilingOffset: {x: 1, y: 1, z: 0, w: 0} - m_Materials: - - {fileID: 2100000, guid: 7ccf4b555441d554484bbe799cb1c834, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_LightProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3366464 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166466} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &11466464 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166466} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f6d1977a52888584496b1acc7e998011, type: 3} - m_Name: - m_EditorClassIdentifier: - _mesh: {fileID: 2366464} - _media: {fileID: 11466466} - _defaultTexture: {fileID: 0} ---- !u!114 &11466466 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 166468} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} - m_Name: - m_EditorClassIdentifier: - m_VideoLocation: 2 - m_VideoPath: - m_AutoOpen: 1 - m_AutoStart: 1 - m_Loop: 1 - m_Volume: 1 - m_Muted: 0 - m_DebugGui: 0 - m_events: - m_PersistentCalls: - m_Calls: [] - m_TypeName: RenderHeads.Media.AVProVideo.MediaPlayerEvent, Assembly-CSharp, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_platformVideoPathOverride: 0000000000 - m_platformVideoPath: - - - - - - - - - - - m_platformVideoLocation: 0000000000000000000000000000000000000000 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 166464} - m_IsPrefabParent: 1 - m_IsExploded: 1 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab.meta deleted file mode 100644 index 58c10fc..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/BackgroundVideo.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 5dbef7d4930a98e4186b12a1b5f2cda6 -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab deleted file mode 100644 index 2ab1d88..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab +++ /dev/null @@ -1,82 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &192192 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 492192} - - 114: {fileID: 11492190} - - 114: {fileID: 11492192} - m_Layer: 0 - m_Name: FullscreenVideo - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &492192 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 192192} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!114 &11492190 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 192192} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} - m_Name: - m_EditorClassIdentifier: - m_VideoPath: - m_AutoOpen: 1 - m_AutoStart: 1 - m_Loop: 0 - m_Volume: 1 - m_Muted: 0 - m_DebugGui: 0 ---- !u!114 &11492192 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 192192} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 75f3b319d2d69934d8bf545ab45c918d, type: 3} - m_Name: - m_EditorClassIdentifier: - _mediaPlayer: {fileID: 11492190} - _scaleMode: 2 - _color: {r: 1, g: 1, b: 1, a: 1} - _alphaBlend: 0 - _fullScreen: 1 - _depth: 0 - _x: 0 - _y: 0 - _width: 1 - _height: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 192192} - m_IsPrefabParent: 1 - m_IsExploded: 1 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab.meta deleted file mode 100644 index aae0480..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Prefabs/FullscreenVideo.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 84fd971487e311c45a6573a72503271c -NativeFormatImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources.meta deleted file mode 100644 index 6cd7a44..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 870241155d4fedc4a86fa89eb85ae5c3 -folderAsset: yes -timeCreated: 1449047212 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png deleted file mode 100644 index 8bf79e3c3fb1a451eb3513c55a49a54ec16d4a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35129 zcmeENbyFNZw1r~D3lw)L?i5%YN^vjlvc=uK6!)bRcPPavu(&(BxXS{IySv-_y>IY7 zz{||do#c;9a^~Dj=H%XJbyYcR3^EJ^1O#ja`LEyp^UwcT?0eMzdYQOus{b6awUmk! z0s=Sz^VuBbzcIRtyuLdE0#48W8e(&z{mFlmBpxz)9-7Wp9^U3|mIyB9woV?LPL>`t zpEoO^XB{&ZZokXlZc{M3?3)rqyg zxn~v(@(YNidP8jI(!}Htm$N~Ci}o=sCNc;BP2#^2Ty!dP)ZbGSe0pZu49qaFxe)rI zbg$O`#M>~r=^mDPo)>jzX;(0?_nu=z0`F{O_Dk#pojy`k8Y z7EnkKM~zdrRt>a~Tn5{l3J=Fu0z=*~=*3-5+pKocFRzMN51eD?7`N+)NwL&c?YW2d4*Lld5Xvik|*{Squz#`aw#$ zns$NM9;n7&Vzt`kclvS^gu1uO{AhbzmVX==4=P#^$C?YAYh|*XH?>1*xvS!kP?6wg zwhp;3pi=@))cXHzVVtn9DqHnOI~xk{e+j}JRZtSJZ&Ssqd zQp^1ZiE~~NM|5l1$fQ_z8MQH7()T7|x)MRp{pzbnzVe9u+p0;Mn=^=T}8i z9X^qqx1t+p)qQ#57V)S)iu)12!X0;(;IvUZm<8{}OUhby!O0kjb02;#PL~>WkX5fH zC0i-oi%VEP@f%g-k-o|`T9CY=pgkLUIjE1VG;Hvik`gO<%&28%QRcQ1zrQ)BWaZ_%&Hv6Sb%@ zz+Yw2`4C_XE-^}aB5S|Py>wdi&+M3!Y_K9^*S`O-pjiE4t|;;*IjEQb8HW#&L>cy8dK|z9k1x8aH2A6atmZ{^)wRoaPRxdndEl)o}E*X zzWfVZT{@Bob#s+4*bKF?Ea*+JI|t|pHGO5D02*dgNJ&XdXBaG7$daQe+a86W{}bbG z4`*tX1<=A*K2+_l^}x@`_m2WGjlZbv*^}tJlCxuVg~Z<6oi|n^1Vv(;H@qNn7Qcm& zMmtMx9vzjh^2|PJEY-jvZ^Uo0aFNuSd}0BDZ!Y>upq7f9L1Kx zbTtfq%s%_?uwZr{mEF0@8#zLYD4SKy-2x-*uWKZT)fF`M_#K~HJHsKV)S?TbT!p-E z%Uj=)19h(72!`8B=IISc=iD#;qyAjO$II0`T6BsV<_QUy8ay*E`mO z03?5_2YCs;`UH4@@2&U7?_H+~g}H zhq$1hZI&prS9}9p*el$P@x)g3?$TO@X#Gu1a$iKq85)az%<|}ymX(k>FI>7ZPp}C(6-2OALx*(Dz`K{2!*KXswC+|F|%-ziHSh&tn`^=m}> zpujPO_C#0*0~^KzBsv>}7Hm~10fG}scQ=9c97tpQmS-cduj3=_nyi|;n;kwV*?ICd zN>7cN4{{VxJrsekhCg*MfoMNQ{EKVylrb%@d*|Sz7l!sblNR5Tehmo(anXd>%!TnU zD4b4JWSg^_>zmnN57_?gY5L+2b!e9FAJ=@LfMd44>2oxzeT>Pe8TzSs^~K5egg0zG z)8EiMLr%E!Q@9xG?*{5Yx#^1q7=MIydMGUXnAGCV)+0^E+U5QD(n*67Vp=8gLxMS3 zN%y67P0=DAcg*ddDc@1B6?#Sy$~LY)Clf3W5ni0g(~$AEmE+&{CR4u?fP` z@vUvW?94(*^u~84Ni<1+Qza7o3oeUrC95#|A@w=G_!VU7Iyi56oYzYg~1uqczRw1(wt9}cRI>EKPm8pZ0Nic^SX`bii9`21SNhmnTJPkzu z6P|>?yV7qtXNOSgiZ1_-Sx=i~v_<~NHf;<`W`^tSD z7yZec+EX21LHLQMM$2VWfGIU$d|ZL_KIuW9WEY+CO&5?*gX$(AjwioN#LD|ZE+CCn z{!ezxAD}x?j`_YtHfuG}l`*h=AW#6o09ppLltncXsHR?@9gO-P=6pXX+-Uvb! zy-oW)?sPxgB~jzI`p%$MVPV|XC;dC5M2$kpHbvaaTuaPiTEBS+tK=`M6TxqLpzSoI z!INBkmES)M?N^=68|Ohf@Ye?x(pVlCA4ZhXvD{3c^Lx^YL;)i~h8 z@&GQ_SV&D*!sP0&c-8D2UaZKHMlq}2C)cWpfPjEG)p=Ng# zexen&xyCo<_fb=`{QIx;Nc1p6`2oFN>Z51++#;s?4~(x46Ngbpgu%_L4S35XI2Oo( z_5^rQ51)`V;8#L9aGsJ-wv&DYHPWG3$5sEU(%Urgdn&EY0pRHs9b$sS`&G?=VCe9b zU9#c)BI;TGj3N7{)bl0$9azl5d!aLngm7cyU+_7kIuXppitdRigvXROM6nm@eEU)) zN@*l50bVIfpu5&*#sdXC?%Na}a8 z86M<47qAe!kB3P__rVGNH#U0J~Ce(cAako5x)%fA)wWIr6UquH(k zwuoBKO!zcPG{g2E&Z+>YiLbMUwg2eRVc1_P6Zw6)5=u!l$`8@|uNzTRlFY!cLp@S{ zXo$Qxc`)o1FY1f{6lTJo2 z0&*g?llY=KREvXbT0LI>_e2v^VKQ}(=C9j%zW|4F{Wwlh>8l%2XG7i@U-8=j8pX%K zqZ&GCwUhe=5%)G_xIrXE&m5s{6|GB~lrGZ9Y%O>rZ5R$IuAcsmAo>=K~@!0ZCNLt@ztH1uy{mdhWLV&-jm#6<`_&L5Zghe9KRr6&Z zSygXp46&khC_7beG3D>kaJWaIRM2J5J!e6w6dn0~ASUJSwm;FNp^>DlH5R4aV7i?{ z?&YJp{wCggRDSsNWZL&Qi^lA=6-uQxVGDg-|3ilaLacAY@-MoqN1Fd!Q{E|6o?1w$ zqvckwi}`xl3R<)8p9bqY@c+Q!ljUD_UblNDG*a%2h@DzE=QhuGWl2E9*2{IjN_*ZO zemGX#)0bNQ$Djo*e@OFk?}t|<6Wc|Z#a3^q3Y|jUenws_yl;F(Yn|f;-d^|r$rDZP zZjJk@;qk-TSxc|SpH35nYQ{EoiZ;!oD6|frbYU9%U%<_}HKTg~ieO>&y8R`gfv;}= zU#m)tQs^cpR&)O!Cr-WlSgzE#(gc2Rm)RJ+K(Ee>VSbca#>HsR6%VWq8Zqm6Pq<4k z)CU$Ye?LEZ5J{NS3cQF)O9C4qpl=b zL9pNSbL%um-qZV>Npi(WR1WrGmqX0M3*5sg#6c?S(B^(GRDZ&%p+XU5-?RI=PI1w(hT?=w!J!bv>Wj^FEH`h-jkhVI{oN4gnugA zdDW-V7=U6=Jl5O#iAS&LGf2L>bthV{>C1exLpEQR*H+}Ub zzzmpRe-jH;@EuM&dc ze@|F=MR>d-q;d+U;)h#z%qd83sSsn~AR%}RzAndWK>CW!7_rt3J4Z_=8C-~6>-}@7 zTYBag#lmn9v%0FcG826TaG~;-NyTt;P-_9jh!0^|VOQ+;{OMgYgGgH1-HRz-cLggH zbroa+Ww31equ%OpQ{T4ZQUaA1toau*w}n9gML0lpe>yAMPOcH!G51z2B9vPTHnTDmHl z&njB^etKGSZ(YQks_NbIRb+|x=uxgExfPpjwUUI?&TB9hWU66L*`~w|VI;RKxPD~z z>(@vianKV+ssN$^r=p0`M}GV9L^o8nu@03UGuN<)nY<93C1%vc&%rUTM7f>Igw zRR8D>{LvT#bGC8`uxEzFj}&Sh8Q1;v<6unvprozW5x3>GxMnN1H9G`AA?ncH($df*(ragrV!gxx=!t6c*^UX*{x@`Jh55BQCP%S%LdU&+E= zB~ZIZGE&}!D#-9@YSC=`M_|5RHI*d+lzocaysWtHTbJB(h0=A`O?;0;@y{we;2c4s zJBm=v7dT4L*7ZhSZ5X3hRMhh`t-seN2uFiK%Df-NE9;;5=OGlP9) z+qL^6qGtAu2`ipeBbBNEld^-_%=%KTzQQRuEbj$eo<^KkvMP2=_~fj97H#D`&&G>B z{t5J7oQchAzLu{_rBAbvGz5;?5{#Sw!3^X>HQG|-o_ZlOAK&3=Wl;)BJ*!1yvpJIy z>!`8&9_V0gwbm()zAVVWG;j8_+YlDV1`fmoYeNXjuT&~#^`afKbj^=;=U}zA9F4>N z8KvY$h`E*Q&g2jl6!h-%{Qn{CLzWj8C_N|{YIPZetZbM|3R_C z0nr(6(N64$aUaai_AmT-iDE~Y{LoazIB&L0)MM8GQUa$)*E$?K8c=j8JOOsC(m*24W&(BT4M7@#cRS%+yLg{MuiJiv} zWJNTfxwA*ae@d|Bg88L#d;H+Te|*#}~8?JD7$-Q#u%_TO3^g z^FS_d_Ch|D!~FyUDq$DySCKf+;hvdJIxQ%COa29JYL;bQhZ{g@+? ztY0*Q8xEROD~EicbrS}Q3wgX1W>?j!$!Ad<6oS`oeTU+&ao7A8z%T-bN)L6ZJer}A zI)l=F1iHU`f{#?MoR2mpeRwDI#_AH?6snh$;(Y0`8xoVnnJAkuxvEVH@*vN?UDIrE zc#q`~7tSI7k~#T8V@C;x7x$z?p=;xC!B<*x%G^VsdYml}}%k1Z}vqlD2up|6~KNmpa_8>ol1*SbO1RcG=d zJlwUEQ|4x~JZUt=P{keU(j)t*jFo4bJcP9%tv1q$DUy; zwz6&aAHhFfZH$J=9;+viN8i9Y0y)5_ZB3UxnAPY$&cu0Z4S|?mPHV$k9PN<1rpr|w z@h(f2My@Q7=S-_P3VO$`F4xi^Y1R+V^;K@}Tl_V*zROkdbU^@q7IDJ*(-pHlw%0K% zigKC7Ggayo_yb|h@m0ftTeS4Oi=Bih0N*>Yap3(Zn7&wknVZZ4A|qK=60Aw;}?d=7au(( zq0ZDzlGKJ`zSvEsx111mycIqc2nUxXFwI{C;1!;y;~r% zx!4_LhoE~0xqqAaC!~Rhi+Hg25a4*Z6aUHE zk?Gd#ZG45I$rb+d#bfk^;p}xxsU|PO{SDP(i(Ld0a-OBuZeU&BRq!3iH)v5 zHL~v+@lx-teiako)QMmAafD(VFN0(Bq}7Q#>w<_qVKS6n|Dc`!V!{4XfJ)N2kM_-I zwYQFN{}f8gJR99y%>JsZ`)JKDt?wDfQKcs4dO`rKBQ)*4$6#%+m-_ouEUdm{r@6`Gutot6wJ!%ePdsMa zNQ$5|H_~=ylxwC!rNY0TyqMG~&(0D~ zUf|$Z`^A-IkUjq360+#7@ZF5$llclKK>XF&U&w+?2OI^? z=19^?Z2L8blRy-pBAu_{>(3uIIbb_=5`iflkw<{LIMcC4cl-vt&BsxW`gd&?7t!^< z;8V|>a!QsnXAkS!T1n>cZ-~6} zc8MofC`LwIi}*oQS{w}rl>*}|7n?gT3pAY5MOBCXf|J-9>kWAa5^Xf{$EV2>qZTeKtH3g83EaaEKR@*y z^325V`H#4ot?5`0e`XmUhd$k{uXpAE>a7WIoHAk^c>-%(zcMsl->g4cIwLcnoRq`rstLSq zfL=u>f^iN}9aj-slk+HmW^XZ^W7?rRr$SXD0=YzAn*~;i@AGS2jAU)ZYW?F6^>UXq zhl0OuNtK_l`o>#keGfh!n-V8TWBrIE`HXY2sCcaIAzG8>^(P1Sq_~m;9hUeR!CrQ{ z>!8i>(RZ53xW#na!W6%$`nc^r1nJgwZN%cu|CjYgPBtir**iav;1!wk9wGefOzwJb z6RjCI@{30JH??p?X3yL@8#3%iXwTTAaavYJRAz#5wMSnpxXQvr45QDx`S{TGZ47*AGAL{`7V5Y}AAX!WTMTjKS`b zgbv9sSxZ=Q3(CFVz$4e=NpXI!by%<`ti=wM2xJ?&(?@P`^UDCMegpQoo>3$8X`=fx z`)|T8e8+Jo;h}8SoBN;?fZ`X5Pm7@AHKk)Zfz82Uz2o=;$XzHn{AfvNlCTY}Sp!Xn z#OUZU@kYVmuqKEQL;(l&Mc!_nOLca6BjHqLg7}k`fd{{q^hOlTR({D_c92I*?$RHc zZ^4RTy#M%axhTTv8E&V>0kvL4Uds0I97qBC1gbF!XC=mW zc>cbf&Sr$iWZSX-3Xj$&+sy&3wwxetGs?v-f=FB!F*NV3!QhI`eCNVHaB9aK@92#Nh;T(SLMDqNR8J1&wSW!p30< z&{@-UZ-XZys@@aapC=-M0H1&1Vlyg4B=ytVv#v?&);(gFFur}2OTD=?-fJ|Mf{6_h zprN*wad(HJ7G7bMMSOax*jj*8xzxS}7g@^SFMJ)EpROaz)UvW2UzLDi1R6YA$VZxa z*l&Xl#UV9~%oCNm8J49ibu2?p=BknZkkyu{xm*7U4w(>$M4|%MXs9VjwhPSG%(#xp zdT-6-nXNo7r1>O(%?Hoep4puP*-lvR`$E9pQ6e`de0|RH%7ObXIetXP4Leup zy2f#b>(yE+{;2Lb3=mowIsaZ9=+p8hiR<^DVmoeiXi4q#A>a_gZzUg;n$yAFg0ny` z>+bJD&Wcako|S)}$-{22tezt8H_q2t0bh^F6$2w4ffJ*tfEIIBRm#OMO(NkF`((l8*y&t@CZ~4%2V_WkzknUv-MA>`5{DD`n?cOi2UnFs zC~Qj(#|<8y^pv`BUTY5H&Ls8vCAa_)+vq$d-&COtsj)JWrhs#Y3s?3;1KV7lVTcqG zt<+4oj@_=Ph5wSWELPUbVdC|yd)J@Po6lavz`*=!iniGCkY}fuJw`BR9Lco0@LK9xYrm+O%*1&~qPMB!itE%Z*$$iqV%pVoq z=yHUe!mL|7n}8Rk|Na~=GG0r>IlV1@@x3DZ`h1`!`C?6Z8evTTQWN#!@T9H;OXG^P zV;^Gj#vXudY`{cj6I73f_l#YPg2_QH1y8<#M}uUe>r(HpfDt^e!5I*e6b_E}!i`1A z8GbeOG#8GZ`jEq(Ravy%V-ai>PX%t^{<)AboBIxdmHmifDYZ?^wm5&O8a4$9(NB7h zdZ0&op~q68w5W>@Grd53XJ(dojVqzn)C0z<>|1xf)v-p#%N?%^CE4ciUQ1^W2p|s2 zJ!&W!#}O^=DSb0{H9@Tyc%h%_j6kZq=?q5aYe5{U8kz4O7{j4l{w&!f;AuWE>fGIF zn0FEpAbD_58TmT4(kxW~0L*52<#X7K6k=sVNxy^KMIi`&dV@lr5h~EM`hG$-M|%S5&3Wf}{2i$odq%S!eI|D;yqA&ypX)Iewxj>`y#t#o zBc;NTTr>NH{T-N8a{yl{AO~AdF1Lez*|7e3GXudjNxPFbAIx<6Maixx$wIL2*zH(nJlwJWyguZe+Gln26Ngx}R z)I%;*TmziR$0_!nm_X~t2ZaD{H;Hj7ixFODnp;rSP}uHxAaPe(hih>V_d2e*Y|i8d zCSB0LVrWH6#0tPayK$ZDBgI-MADUh;J9z@-%(BJEIT;4+07%X@6xb)~qI|uXOIZMl zjFzsy`Z2sJx8jXc9m7FyXR(}|3gC1uj=Nw1~F#LHX2X zdL-_Du}pTphrJqS&Nhe6G2x-)7J`M>c%19V#9lFH%xA7wYA#3#pmWG7&)hu)pQ<#j z9`}|OFMl`g?rtf~OLfDiXyKR z@-VJ_gzRSb;0KDGh!N3}h!zd&akWCK5-D76&69kSnKopa(F+kRo>vSGX=S`SO!~9Z zax60{4-egJ3PmLBhP^hNfQ9J2&sdau?{lo6HHVe>i!DS`zo8~n^Mh% zX7l{fRl<5ILxi(`dOBjuk62Tt?hme$3f;vL-DZ$7viO-TZhX zF&-!)+Kam^`_;^-P4XVh%EQl$3$*e=!Z$G;_N{ZCYAfKI$HEvWNbH#%OA^-Bpt#~* zXpaq(5Pgy}f{PLmt2qpW^F_LD9BWumbLJW(&}WsH&4i)Cq^(od{eItys|2dzZY@QW z1zP$LQjm;EN@QwxSAqa-97M#b4$u}phS*>6h+n_wE#~}uag{KiNY4a(4tWB=lU_HY z#R}hnZNDL9!^E+PCn}*2b^flW$L5r*#Qs#D-5b>Z?fArCVx^_mWwQoS`ReN~M1cu;_&>#4Nd6f?_ zC$j18g{{?HVPQK-Psn5&;*&*1(4UwGiOGgkN*yruq97v$lkDRrR-TB+DEeN6kekPb zFQLg@Zx491vCzKIw2j8f20ypx0+)Si#89sgUx90}lWxd(aX2m`yQnj~?A!dIp?=c7 zK)Y2RFm+m%5O3WnW~gfxGS744;^D!cZ6PTnGD^88+r0ix@L5#QXdD;!LR)~nz?<0s znH*ei$>sdU0jYNdu3O}j?1U!K%Tovs>jzh+oDGwyy3By$u(tjBCcC0V+E1{}M{8lp ziz~^NZ4DQ9HkwdM9%(}ht24j%Od2YS<;ks)eRFs4L4`7 zUN~%@QL)! zT?Jb9MtXWBbU|3PM{yElg&fM9)CZmt$GWD43DyygJ7-6Xlr(N!h8HG#zDt{+>`AF> zbG?|PqcDV_Ju!u`J-PbTqp8MS_IFOzza+~78r&JHa+l*qh)HQUbJee#-R#&nopVA$ z>&Sq2^3>y7!J703gME}XYQhpP>)Xtal-1OvC*dnweJ*Z`@^=bIR+3D*D)@%|Z81^|cWoHAz-)p}kHx|5VudM0(~8snGUTXZ%1c8!z0 zhL^BXCjw+*W2HSs$G;zqVvXU-p~uyt_;w+GdlV-L#tWr~&eYGbRNWyU&2X0SS_p3) zR{;)N2y{8Aici$=>lebMo81B^+2VO%O3TzFkif!|iK$&WL;lE!x^2V+uIV(T9`{9h z%e>@0BaKshrZ)oS^LGlaULPrK>#q}~Y)DIS$^R2rEM6#E=RAAMc~rnb0UX&B1V7yi zS6qKEtZkrX?>$+|@m}#xQ)PUJ!QLV>lZ1YN8EBhH*hUS{3otZe`}<;|B1mg}>lBy< zGFp(TL1%fax|Bl>441mQmvCg~b-360w8c0S?ptBvowT5M?17A_&g=b@$yW@SM6AusB`@{zBA|TB>#}PgsEekK}HsJVA zs6g*fd&uR`TXDe#KmcT4oMiNOTvt|j^O6~D_-~=+?E&~ly(cmeZj_`W7qF2`n48yn zq(61A8;&5LlQP*J!Jmpvvj~lF32Il+QVTiS6_355WJpx&Z|J!(c6T}H!_ckH zhTM$Exo*81*`(yF3H>e#NS#R3v*?P&vPdIw;hc`xW7(s4*_kD2RKdEIv-&(R;7Q>6 zGU^3y4!~a^)Ms+pn*L!V2Bs)Uy@duxn*&tca#Q%@F7h32cW21>DrB}G11HU14**X< z#lGtnoD&WcCy?9w4E>>l#{~78Mr#f#BzczQU5xuaS!`0$+$499;LkMMUAEKbdb2M) zEF5!`_WjkppT(%FTfp)JK#^mV)-#gTc`B7>{QQa`HtR zF{p7>Jg{yNB35_(cbi{kM=bADf!zAqT(n&>pnH&C2wNdMXS$}dH?zS-8w-lgi=~;^ zzas<&P8C#K0=}pS=Sbvas(zIjkH6KTIN!dfp~%$2RFa#O+hgpkshti+LpGI~dAMD1FR%x)*7VEjd- z0tx>jH~y7(_dFY>ZlbdGCf(nrrc6~uVC&#IOXACZV+t~&fC@o`w|HGG>&XR`cmH;d zF3CY<%{0z3Z8m|(hNvWgd^#ejjmeg>9c+a>3pIa(7!*FrqTTgq|K57Eu{Hvpf5@*YnIcqAU)*tl+t8*YHY>_T6_ZZm*)5LO&ky{_{PI`SF zmwc?OhFAG>f-Owh_u&6TgSH-J4&88?xQ=^Ha_U@p%TaJ<*2Y0w{=n~VHky_{E_A&g zsdij~?o?yCGx&inq56+R(e6iwLWi!1P1U)7R7a;PwBgyu&{v5)U#V;FK4_rAB@aDwD!LI zS8%fDqre>@B{h}7@R!=i?3aibCjuHo8#>j`*<8;Aa*ygzbzj9q_UsHGX#!REE?P?K zwba@bfYR<)4Xer__89Pe@=a>i!4`Pix5sSq;T4jt2#Mg~C}2+B`h<81W3i`;G{5x& z`q3SC-DG%HDD4kh!jK($62}bJgajZX`29zFDahf=OdlDRA(dkAEP>E{u2Pkh2%Th(O4GL=u?mt3vq0*%*q^y$Eztqk~Fmu zA9#`GESJ`=VF=l|<97lo#n^x~j-~Zm?Z3rF(gv&xF1atyOJD$Zba05&?InO3&amMe zN6_ga(af~aEJ)p}je>>MPxu8?El-!<3C$?QQL(nHGZ+2FhhYry@?i2GTmvr@CUQfE=u;l4zz>+=^JSt)un#e7A`T8=t>Bb{bNn2hvT6!|_xr zG2+HZnEw)gIyiB-o=lz_n02Dn2NXfgSMU@8h>+EM znT!M%(W0ADC29}TxAOV_D{GLKl)#5b_h9$h5z9hkp^G zdluv1V3E-q`kOH+1h^?OsH#-O^Y_tB))w<0J1S_2v&}`3%5nKqV!chJiJ2gCs$xO3 zhr7fRA$i>@8Qs22lL}#m=E~IubXLPEDF6}hRpU9 z4HXQxH7Wcu+%jfKAkFln&cp9vWhWVXR)O{IPwQ01RKjq;K}~h+306H3mH)|*$b5&N zP%nID3oGRy#A#?^eH|xLD%Ce6)K>4mflmixBq1?U|Lx0yDv(LBVcE!kP zBMb*);41loq&2JgR@KNZh`lZo@}#w0sp8JxTzQdJB6Fq@X{~6l@1C0VI?q+vy<0hKuQc2iu( z`sZbVg#6^ifY8#qn}x{VM1_SmyR!fb6JTTs+)=R+ZaDck?-=2Y3z!)p3SNk z^X&8@5xiyG`l@Bf*i05Mk>$_yv|yB|3$w**-;k-N}5xx^8PD^pisDd``Cpry05JT0*)HGoL046>8?&S2JAOhW{DKh~`hmg_EJBcSAy6nvyr`>!=p&EiI#VH#qfp zncoo?&-G&K@UbvJRfH$CPiK6E9|~AJdBA}P<>@u=fczF_0~k_fe@4~~(CH1@ct6NZ zb{1ecbOtOWjjtE16Wu)>BAaIC4)Twk#P~<XP#P@bZ;~j)<I zRaMzcL1ivSZWx8~Bf9SGKob1P}s={Wb*&R<%`QvQ~4-$25LXjB(Gy}8Z*h%L78OX0 zfV{w&kGfeTqo&&Ozxu=?drLLSQM2JVdj~zlVu(a{?;kq0gqTS_I;lnX{~qTo+EKJa z)@FUj%ISPI$U<8EfLpkn9-&d*$B@rtCphsr5Nu*3lkDEtM6tV{I=Lv@Jn^&@A!FF<6Kmsk@VAdJQqI*Obh+2|K`u z;<_;91LIzcShUxtZwKpT@LwOTjtsF-b>;hCDm@p&aZN!O*Uhfxh zn9Ovw>?tfr10tjzpSSH4Yg#0;^FGG$8THv(&GSt;x>{~Az*}n2aWz#pXzR9+e!n0_ zUvZz%QJJiQk{y#=0{p~KRZ&;V#N~5(W2|Fv$5pUH`pck?wq&?o%|&fO`m z9(?cl&Y5OwTp!+5gO{d@4Q&yMclEXV@B(_8pz-r`qd_+%5Y)Yvf-Gt`2Sui+JYvJU z{IlGuzER`xcFIR0E-yCJu(nMFFJ7sl54Bg5Xd%;0y@n3hCdPCXyRJ>Muo-7)hPNeqC-_$c zXWO6JHXB#{4*-2Yg1_toD)1$_NfKV07K#HTNbgz}@U;FOCM;JCZSCn$&dk_O%-HtO zH@Akag$;DA?VxYNd)Bsu4GCwfK%da%xvrH3gM=aKg;hcPz}h%9t&Wl@ZcnE2Q>oBY z7o<*Qq@3oB>(fKnuhhlNUbPV7W25|2TU~2=RJL}cJUbY&H-a;OD1?V$JZHXcBC} z7DNxaCPpN?8H1J{tD8y~+aZv)sEwO5s#DJZ>KTL!(<88DY<+Z%u!ft}43PqSFgP9Sl zDQh7vt0`+^n4A0)11M|%#JadVtvdB5X({XG6zV-K0`vQXqES^VuS*EsjzCO*5@5!9*xXXRMD>^W+-=ec$V8wD{K@VgeUxG|J`@;t*$as*7 zM-Oh`@%=Nnb#@I7EFFSleCF(eF1Rqi6E4jYbjHPbT@|ujUe+JCx6i$ynaZl+Ks+uaFhEQV!|iDSxI8 z2AWj9myXBxu2Y{=xVb-x6-Ec{K@Hl_i(ILK2NPWt+?(X4oGbkKAmpC+wnFz@uh9sd8v#w-(L%C*4 zk|~4}Fc{c6K#$jT86@;cNF#H7G_T`>g(Dl|?5qZKz#v9>9B@4Grc}iribFr zbP|3>Ra}`Bfy2`pV{B_r1{4zBh_ErCO$=dc`knIc4mJ)B!}VG9I7cAY=*ju2;Qkak z#}t)~?{Kqk^WJ#|kB#FRqD?3Rj>$JLvoV6P9Rr%R5#|09ZK_*f8W)vrL#W*T#eZCvz%u@6x$n^8o}Sq6ysP;ote{!Hmybn_hoSP6 zWMAYu7_1)Mzk|n*?joDAvN_MqgY$7Bp))SC%DXewSK-Mc2JehXBt6&gQSdnp?oSpU zAo;lucc-#EpXSeMBLuhRw@2o&BxG@Ivi2<6Pjt_Ia0d6!ufdg-1L$+L$r)e1?}>*3 z>L7XuGPs|QcufO2m+P|E8g7@%paZ-EUKBh~6sgV(MZ(uKgQq14&vI2oCLxv`o!f>b zrxmYTvYciA$}-f1eY$*DWMFB*jBg7)J3ep6=WVR{oFN)Tcw*kLMmQJMRLSJ2jI#Hp zdEvn{5`ajZ;fI@ZB5<6&+>G9J5bVvYZLCK}W~L|E^%-CcEZJ7b=Lm$E6-W8{PAUjy zdI>oCHlm{w3D00-&dkTw!q>I}#j0o^ZCT z%#vDuu)^xV%oNVn2Iy4F8Jj2lh>LTY;?^uW#VnR|vsnVqsf$z8Q@&*g_tb}p@pmw> zGiBRjru=o@Fqeu*WLbY?|r%XX*V_zg;jh zsfcFP?XY}!JzS!msk5pgoxxP4gY2_70V6;6I(1qgvsM^xFYbYyQ%jKZ;5;%P)7dlc zBkR!v2tLneA2Ucieniqdy3PQ03K{3t zAa&yiT%OaA-f&iNuUc^6FcglV~PNe=Hxw zS(ufF1s&ef_*+<*{s2?<`%>N-*ph_yHY7YVJm2?sx4?uh)o^@vGu)u^Y0T#LX9nTH zOg}m#OI0rZT2wvkpWYI`vWItdl+xOW&d*YwCAyUHrWU50uQIGmNDPzjVL_O)hc;&^ zZEDFrnhvjT%U~mAJ%fOSsV;);f57CnRd8lz1EkKZ!Sw~w0D%lP)p3IvP=2!8GRTaX znR?5o+$6k#i3z-2%rLxjP3)M}k^N~KlBW?JvmPC%9?nNM!Es(&H?6vmdCUF>C828GN~ONTv&p<%yX2LhTL50kn>PQ=1d-EWgsi(0UmRn>?b7TlY7X? z<-P0-K9_~u>?~wI=5q{ExsPun$=!Nnc!w(;h%Q^Q2t|ygX zz+|A!%Q%lm7gplNvR_#(hBHa1{3w$IR^+Q8{CzAssiE+>%soN5EJoKqL2id`t`6ifxS4C=x%aCQ{~*e9?7qnptzf;JOI& zHioGg-?w5fZ6^W46qXjcs2S*pu1x|kq$B6+S_4BlZ|}C%(5aC>Y6jTD#zuaRZ>W4= zC!d_lKXR$z_#L7;yW?t9Biv<%e#F4?XnHX2F}q)!-5k+9YQmpYfTbCOi+rVJ?L^|6 z!`saoecDz>bicYt?i+>$y@Ro+S0EPl4#3>rL5S;915^9dL8ICpuy!_s9@nYsz$(Pn z0;UW^^0nPc29sOS4H(UXX;)u77Dt#)2bsc zh%MU{30jrVG}IPLn6WR%w@?Dknb|Ecp`{yw9V)V-px&&w3|Q$H87AK`Qb|&U_i=nmoe{RgifN`S*??^UM;YZ5V>dho^ja0d zm2gJp3zyv%ZkW$TrhjWG2`H&k`11Y?rT zz}grVR(c5WwL+@API!=wAzMYdOKrx)QUyp5pkX z3>uDhdT3M21#|k;#)b(ka9~y&9F1v)t%VK^yx`-(cUXOxSs20E zq&(`nSHQeqe3bz6V0LwG79%t>O*+fVLsOb!Xq!MdNM#~liAmdH?+hchE%r_}2=#YF z-5@*E3$#Rie^WH{Ge$#yBQ)?gMqPh11{oW8dON_x$sQG0RaAChupsG;E%o5%QVG*K z`!bLmNYrX<5zOUx1QIA&RhgRWqnf)h zrgW`}^RcaPKB@`!Olgkp;WltGW0hlL&gWQ_$hR1V-=J%x6}F9HnI2V(P98-0ew@n} zIn44obQalXaezm}ecIv{TZ(%ten#PiWhl(Pq-5!WC)p@`l7}J^zlhncDEAJ>TPVu9 zhN8z;Rbv*%>?_1&UOSJXjMFH(e*#6R2a$hy10EfijXNuU#jOOkA`IyFX8Y0Z9-Lc< zA|ri`#CaGMfSb|bI6JQc9$j9}c`l+b{~k$~iGqShC}aRCc)*t7#$n`K*^WHQ&b_>v zmBSijU*3$oJEu^Xbq9s41`2aCNL0R)#{hBfEYf#H;WB+Jl~vJw+W65dKh7(5@J2Sr z$J1G!%Lj-|aOv~f;4%B?qAae5gfA-K+Mi@{eI#D`2|PL&hwHITktQ}Jsh-TLf+sWG zD5nbHq3q>5kaa4@vR+ki$mY3_F;fB`D+LMkR}+6k`rg?nxPKG{Iky??SXpr1{G7We zV(XN7G!9o8=+o!aP?AQLvWKdD%%%+mIn*b27K4x)axPp}?y31*?ujV<4m|NhNY71p z6cx%|wE^aK_eU6eNE6fY%2#uKRZK9ZM{Vqw)(V&7n&Wm{Bc#Q$%!#dqyRi{Gu8mvq zjg&q-x^Dy`gY98%%XWZ0z7b1QQxe$C)fCMmT`{Ip2om~6GNac<9G@N1E&z2yY++}s z15;~5r5~0Lu51`I8r87JvQdq3F8)WBwT+oA>L4w;7E)s(nH_553QO#hQLV9hd@KCg z${%jF%zWmRVQusceynPU)dPc(8ruLFb3*WVb^spDuExruK2{B_h1L;Hu(H%;RbT@h zlD)En3-leFNg{ig$k$`0hRVN;Gd7i<{ZcoR$}r<-!GL7MAf{_&iOROls9@)UigwO0 zbar7?V#apkALv!r7H6h6LB}sQwICv9Lj&f^6?2BJdYbM`BV;ka6<>GH>j{K6lkc8`y!*_GeFGALdL}cxqjz?<; z;BGRVG%6eq=2XKYX7R_f#JAizzdQBtP<&0C^HEFyZpVb<{QM4-y#ggqE~B{cA(4%u z!pGE!)x-7uxVI-BDQidK-s*ltFQl#PgRge9f({ew=C{U2L0g<1Jk1evrv+C9wqq?P*O-66z04U+z zF_VFLd2eJ>&*H~dsQ-Q9F^clCIo?IdgQLhgFpVt<_j6VV-}O~wX!t7osPJ}{7xHF% zmqO0p-j`z%K2IJh3tklD$R^M@DJ(VC4yw+q#{SsgAFyZEZ4>E?&C@%Q>^~xHP8c4{ z3c}+#fykOeLvm9y=TybR=;{mv4Y6xl3-oIr0y{f>mYb%~XD_Zt=v$j9KhyPe)J24! zDe70XK)8=Fs@PY85d({~0Y(m1ENLyFLsEG#V~_kf0>`3TBb}spz+m)fb`Y{=2P$(v zoD+n5(P7LI4V3R_=d*gKA84X{T5h9P4n3Lic8_M+%9cTl{D|*8h^~Qa3>?$D_`}~# zk5z;TbnWd?iDa*2@5E!t)GiECPRcg|M#@)$Qtr!Fjy5o6aIkc+gSn$UD*^}TIJ!Z{ z$z2H;dQMU$P=BLu(K6TsTZYxdov6A>RUsd!NH)k8=cmnciEI+`QA{w>5^Ce%jQSYT z$^(ujU&EY1&)D7u7Hnx8t##3!8GY-dCfGlxo$_bA1Ki|~iAbQbCE@L1!G1r&#|-m& zF?h_bOD7JdbNg~{2_ZZkEnoIn=H)1a&!8<*q*Pql6HhO#Ly<%8VWgfg#+4Ebs@(3LS5INK@lXj2 zJ?B-Bn~I{8?a16ZlmUx@ldVK9-xWD3&Z@~SYoQ(U=XjSw&V|d$J>^*vzJQV7U3j5@ zH=b~FvgQQiZd4==POOWLHOyge@Hgducpco#9mk^D;cikhJSOpSXZxaHju#5&aDkjC zH_8u>ql0iip)SrRw#Ur=_2Fbw0S0tNeG)|1LB6UZ@#TX&YZI7R8NiBdf;CH6a~t_! z&>VUWHqdjlg@J=LDx2vcFwh=xqkdGf`@@7twHq$Xs*em-Az4vD%<@6F8(#-UXEZ>sMh?uT-?HyEM`cGx zRCIJ=wkE0BKN~YR8Ccnn=r+urEU(QhnbApPb4!-&7D_2?!JuSHJ@uH0b?j`pMh6A5 z1_QH7sNt@Q=q|pv9@UhjrtS<-it|S?3e#?4>s*$)S3N%3FfE=AAJ+hBg7|s_E4(;Wh4&yP3>i@@J?TF=%%-xwC)}qe+%GxK zm-#twA6ZN zX4XbJ%ixC$W*Je{8Axj(MOuM<%*=NVl9;zyp*$o}v+%rx?-sH;xV;^BHx0+lxcaz9 zy(BqF7A&9*@@JDUv_}qY^dN?9*Sg*)zPbj_*s46we#rL=X$zu|`ea@}-swe1SRs7-mib zM;nFk0e*If9o`a`NcfDnFywI#nX6=u2a2hyYR*6snpu2qOKczC06#@qz}x&Q)N(J6 z`F+?c#W%p?_%LJ(;aNW4qNA=H5`yL-CNO3Hu5ZU`g7a3kvnF{AU}jzs*7EIx(RZ-W z{}$GI-@=x#=CPHW8+-!?W5VoP7Ukk)aX!aPo?l_Fyd0P3cS1^BT|A5-nWL&v-(Y3TX4l9O~d2Nxxis1oCn8T!_%B+%v-h;AkNldJ6_*^!VRc34r z++iCm0rc^KIe1E$&kOJ2Sz#utiO1Ca5nklq#dG%bkM~SLDt$MD2`!iFRoRc^rrt%8 zXt|dH;cs!YPbrF+P|DsD{F(3+AkH8e`$;sNFqVC9LId`>k!Txa4p04Z=on;-JyTlZ z76U=%oa%~0m5_W-NxmXR>-=c;jIqqNi4CxSdQ>WvT5{qSM zCHB7ZhcDz$MH!h9?DGxnnf)b0GTZ8t^tu+t@Nl!Bqu0RcsFrvT7fIa$QOvoXa?#Id z%px%)4e^kKPnq8a%h;DUaQ`0uR$t@ShIZI7J_7fX>mxUz1~X|@$_T^7_(qu0#T}s@ z6=BBAXvnfzpP5vuju3xq^luY@=zfui?Hz)+oGJ69$d%(KNsq>xS1uYD^}=T@ zu|3)_wlVjtIi0$uLU@s1AcQB1g!E!BwIhh5Kc+p>qry~#ze>XArI74T=-?zgGvv#B z_O6$g;mU%Jtcq$=ZZ!t0K)xG5k`PhM;z|JHT8Ki*FQ!8lOBUxG`ScA{wowHgxvxqr zBs`Nuel)Wy37;;6U)%|KH%a(H623$T&nn}2HeME7V=!8Vj1}FHI;#fTkRaNNL7r>N zC3zpnw>;d>2V2LGB!{VU8eXtUdBGn1MKRwmx`UGRUAVt_FzzHZV9=_@s*r(}q{wC9 z6<^Qem`Rx_l$E}!2cBM|E!axDEX={nrzJ!Y?U6$=veZx8kF4EOSWUJ@n%Is>L>0uv z7Vkr@6XZpvBvBIgZhT#&E@)3O&&1Qz{dmdJ{RJzMr_{N)AcH}Qfrf#rfSLc{>fWrJ zX!odKMV&OTg{YDr=>5}XZbH#-@(opKi06rzNszf z7$gm&dJz}@l#72xvJ^AuNVLDt?07b=HKuh7hQHZY%Krx!^-Cbmv$xMou7xM@%uLKk z_Y&*j@a!fme{JAm^Bw0TNrj-)OFroPsX-O&n9>|+i#sslH^qawjqotJG0{Z9gSi~% z@|@Qn@P7J&R?L8%5jU_Nd|i#$bDJq&VakV&W@Z%;|&7f>+O;;MMa&jyZT;cpbS{m*eWfPPk9PKjD5CQf?9D7D+G>*+O*sOELGOgbwzM zWPhr5#6odKnUjQ9LG?^A6GUN@2MS_Hx>)K!yIft|ndSFdye_)Vxij(NMLu4T@UKYt zSJ##zb5&Q|nH`EpY{_!P`Nekhy&Tz7wi0)jbwl3SMR<{O8Lx`77`O^a)B=^P+;hl3 zn}|D0+mk>w=|h2d5<@~V_~yx8(0?TZKakIZ<~7HY{ZsMs(Mjs^5U(lY<+EbEcveV= zJ}G#fvJ<)cr{n&Tj!2J=Kn8vC5pAAHJdO!rvZSvGl;aR&vR#w1{0=M22P=O<&i)yA z!NBo4H-$FO!Yj57FG}+8toQ--zJ*s04CA^tD>n(c?6q(gFf{fv6p4@ z{lsR-W$#wN(!P*J&nF(!n0Jz!;qaVR7}GTv-c?8ddovh0viBv7nf2`K3{f-C7QI_n z#hm^PkUXRbruT@z&y740!ami?M!xfBUrf>)+S{|wH$)&wlhh|1S7Te@Q9?cB$A(hR zs$5urYF=i}w8W-ZH?ofMS9QHi{*JbRy4W;EuGd9wVs#RVr6AXn%06`EsCsBv%@S4? zl}S+5*Iy;>%)pQnEAKJ7N>79aMt%rW#ikN|t;e!{WG5U%xEG z>lZort@sA=uCBn1g`JVX%#_azRm2RhlFQ@}t;sCnSmHk+8RxW-kx{X)&calV7@L+y327U%a z`a_|z4}K`7EkvI@2A{`?k;q)#9Z#>W#Os_(`0Z&13D0VQ@?JcrOtu-nvFCn$Z$FBT z$0K9I06bXU1*vnJBQ>#+>T?YS?Xtf0*F2bv)Pw@KLUA%g75`|~tkg>80tI-JhS}+5npW+_^WgitAid|(Sc+w3kP(b5h6mR}>-=AX*{8GdR8qi;OR+xV);kCXl>Liw5OxK2T=D$HTdp4*Hq zgpp)-D?LQ|8e&m@$+Bz#qN~%e!89Bz7|E6lE(IiM0ZFQmRRNukPLh?tN@!+%jBM`@ zSGF)FmPRn8?h;Jo6ZWQohS)6M6flTnCxju7{dy4{wU}AGgb`VsO&}YaMSU+tHN>>; zA<8!yMivqP?O?!u-Pq2Fm4hoQAa|k)Dx;yO4v)2EDH#gVe4GI5-ne`0`|K>#&-V|R)-nEsu!IJ(_ zLLKTS6&>3+`bcpMWh>B-UY$5Nm)tL*4;3q9BB)OZA$rL(Dj%Z*$Fk>-V+%;x*VTl7 zL&E7P}hqG@eJ832YVZ0d{=)QjcUPn8skxXBnexC&J>BXK_ar!Fp;0HGIN@7E*BE@=lb^8H9i~}39MYWb|L$7 zW|OCqQG}QZIcaPun~0|*tdvlB@gcY!-w+E2h9ktK0xJhyn6hdxw--X{A<*G_%<57F zS7PcTJGl;nPc;;?XD^B4`*c_hNrW6v;zE&1S?k9&MtBu{Sh6jUYQf0K1qLL!zMTij z?#Te)s{E5&H;2mT)zBUnV;bX0VmM`p&R%#C<*7hOFBzHllI^qQ=a(zbCOATP{JUT%@RBf#zSq)A;YG@2!i;%tG7ebi!_8 z!^GB@+9M3L{mfuzQIVy%F`d#11}sDM+0PoAe1p#Q9kFj_bEL2r&Q6YCWe~_rDp8)1 zo2Aqp_UPLuG(denW=Q#?8zhafgDZ?}9ARlmxu)gOD$E|y{cB_E?Dja2&=qT@{D}TP z`XJJ?GCYjSp^=vk7WA!#n=J7kCr2VbArQrh%*x3%nFZ=&-Jlu>cdbNuB&8FHBwu}5 z>BGbF8_ekHhl^45SV4p-<(`yAVk{*HN~t7}bBUtFbH%tUD;Z24Ce>H|C}H~$V>nxp zq^wL#?5MwmAzZA#L)S0^9GcFJoY#m>9*UCq06dEq8E@whXA@h9taGtH;@4VMs3PBT zP=@@&B~@nkBJtf}YUcoRb5=}##z-E-?8fyLCWleS0KDKvzhv;1QT9^l>*&}rKBuF| zd?nOfJ}|ozTLak}d*P4N4fx~f9sK@^&iq?3et(^dKc3%2{!J2oNqan^Eeoh~G5zBy zbryY}@%Wh>6LRfc&_)bs0wpjK&lE@?PzOxjD@>@$^+w>vvQ8+zvkrfh+#;Ds&=;&S z*k1fzaEm4VN|y9L<1X6|DZ6DKUXlQ>=%X)5c+sPfRor8eIBk9#JiWLAzvth;A1||2 zBz=|3^<*)aT*IqdE0D9bH|{4za{X1g9)HU7r=ARylq-7Y(=Hj(CM;-*ygj4wTk1yq zUU-GJ$-wWw(O`&120TY9O3_ zNng_71>Y-sPf+fqVze^g1}IPj$|vt`3;>cHd`V1k!iG3FwGjq2azK#nH*jXA5Amps zRuQ&nTiaRr7h2UkOkiuJ0~2%hvDWfwwLJ`l@Ky#0_P0XxfJoe8M$V+M3ldl!QnpeK z(n*Vi^z2`+#T8DP5%%a%-xW=3+QQFO z2QF+k!d7XyTsW0hZFKB;pwh}s>WdE$B zS|o5YB=__~ga`FB{sG3ew5NkA%NyG{!^*}2E>`8yDbiXAqW77Ris&fMY0H-+`71&R z;I!`x2GtjANo0JYhu7PbcAXHvNJ>m|g#PmWn@Kkz~IW;g8>P@UIs)P;hHG zvu`_O&W#}9WvvV#bSNb&a{rW|_YQbn8Q`Rr+*Q^qUK|C(!jO&@*5{SmoO>%FKULYSo#O;RU&&$TZru>KuP75&*1i$ z_RLtswsre3JioFGzdt!mz3$RRk2&VzU%wUNk2ggmEdu}p%O4B|iv39BH?NqrU#Wt_ zA0+p`Nb)~O_TQiJ{xg#N`6DI3{*iYHB{w$V!S=DZv#2c|B-N%~Rq3+~k|eJxNQxhN z(T1M1xdd_&oc^Lo(sKNY&ugIgRGE8%a<6#t9mq=pZs<#vOwXgLaP;8Dc#)VaH4`I{ z&a!*k*xKk3X$~**zr)Vx?{FkpPv&5Y^jE~+xtjybmim8(KZDS)W=<^G>$9|Dc`GFwiC&!GPlB;ZNv@5vlWU2`#abzK?LRK}Nk-UZM z&F{t4#fBjvsKeI6+V~q-SsTE{))0&z5F@!SMrdY@?@1zBxUCkIwZCC*X+kcDkt(|dw?vKbyu7_fl$1kY2 zkX<2y5T68pMS{O#ssDRyUy(p1d-pE57G->Er+1)`UxFu*!2UET5Rc}vLRrxfPt(^@ zha33!%S_Jygkv`TRm4nvZ5f`d>5hz;Ft%F3lo6=->TB-HZ(OH9DjNC5AS*r$_ZN3S z@rii+E0+X)b)T7-0fdDA#%28LWjYD}82|pAwt7>*u>}7T@-tXUh4kjlQ~dV(bNo*H z!Q+3k75Ene!M|Q)GN|3fzX~qlw>vvfav}kl>j&cA{8o6(N;*G@`yoMxHheC2wY3rK z%_~rk@6oHCqw+W5A0)NFllVw(VzA;=LioJIVC2lJiwo20VL+%Ms#*LEPR3u6h~L1= z`k!dwTM>(Y^~SB3y2xYcDj8cGT8u2VP}&@cv~<`H5nddnBq5YlL~UH0Sr~;cD?Me9ZoiMs{CeQ5QGdo)wOQq?&YgI+wDUs*MrCKcx+d;)58VLfA%;1o8DS zvx5t2S1Av7wgonp6=7q+K*yFzY~Q_x5jG7C!Nd8@lz=S#yF_(`=t{7Xs!alb5MG5B z@(hVC_ReQk%wllMTip(?&d1_kg=g^Z=Xdb$7x(Ct%=WoQP<%ET=?h!X@oO*`k?=|e zS3&6+6>^uwe?fT8sn}9v@tLB;KxDGrN?Fnp#TQA^Cr9ybX8C`=NGIXb@JIehygW4r zPnNYsR!k`OrYfCU2(MbF1U4c33s$A_`;6R}s<32c z27laGi5FW2AU7eB$&7o);HOj{5{#(ZO9`5yre>fBkGX1YXk}}&BL>M z+wdmuG-WeLGN}Cf4TIBf*$gV|?d9{2-&mb6q7;U<=FO(S#D!8hGij>*n&;_g*MCWYk zEPqltx|2J84l~4$!TM+!q))l}7+A*)tNQvQC9V;ksH+nBq+bHGk`2n}E)J|}*Ccz9 zbe!i^q6Ao0Zmcx27t}-kw!V0Nbv~Y_uE+EA&3M7_<>?p{Z1@=u;%l+r4WeCzs3Mc| z(D9^K{4+Gy-`eSYXlyAxd=V?X9Qwl@CX>7^zv9KYSiDGCgBN!;P>*$Zc5N>5H~+%@ ztE2SqV(T|atX4RO(#O+RUrQB6Ka~&j3b;P`fmQbWMkv`m6fdtWz)Q9(FYj$(nZFS) zZ!E*JgOgCaq64doaQZg)P9eAGBx_Ug;5XXp6|cP@0ZZtc`H3OQXFK=iHpHD3?eTEO z5EPuDu9W@y(O&$PeGI?nF_`2tz&yEtKNOt9?>T4i=J64{dLSR@twzbISmd%rc(}M7 z15+Jj$JC&YhTs+V`xS$;kX!ixQPG77MG4euUz9bAUlPLEvZVfBBRmC5N&hO=lM_{; z5v$M`9?FLX#oU^VZ7u=km`?_3hYq z+gQV#8NP4F8aNQ!5f2tLXNC(`%3#IFB;->my}9Z6b0cwYK}+n7>4Mg^U127F9^1}_ zM0X+KroAn8eJb5Y$4>s&U`vd3FXO;YMw`VaQ{?UKnYX| z$yFqM&b<{!QnEAG_$VYqn$pC1}ev;uViYFC|&1N&PVZ*d`NL$nykLNXH#AHv%GFY-*9wTQqv#b1q?Z*6$SURQ!>IAW0HI=_4V@0yt zD<1&L*J#Gf`evLb)T0u{cJ#x+*)6F@Q#wj*rT-~rqffQ0iWj z=j;O$rB|wlB4)$1;=v;S+=qY_;tP0Xo7jwQMRtoZo zb0Igjgier8`{c0P%O&g6XANhAshmM`m2|468qvWul{;hGgY@K|Gm|0T%#gnU9? z%nYUkE80-(Ex*>xksms7-?Hd$k7;xH#JYfllZxaiTZU(>3`-QBR8Mf{8CxIqz=QeCkv^{l13`1#o!KQGvJDuG#At}@9*+KSgC{crL)%zK1af{~D2f|KxaXh*y(ipunsY5QSgM2z_A^YQE z1JfBGHG}ig>R`-ldEZHRM?4DkN0% zGI&vT0nhWehCIHXCo+jb`J6$KTZ{LpyR27{Qxi|Qh7zKf$0|7j_TOAr;XGNNYK?*d zBA@Hb<2<{GO}~;4+%o5~>PoJUhfIWzSgAao*8tgU zVRPwwPq=4!)J1G9I*A-*9`1q6Rl=n6jCjs~B0)zu_mY9h02CdI8_{yOMdRTu63E1|K+_XxK68qNmg;AHkUI9YrJABS&I$6ps6 zA}lbmy$808t&8i4t&~zJV?h&^PxWzZVgTlMw8!k`)|lDC1~XdNVOmo=OmAY3nT;I? zN6c(e7Q80+G-#|jw)+!ilo@AG=I4g#YAE*j7`VP^3T$~yG*&@b_h-ER&jDipnY4Ly z6KgDMZ;NY_*ltLRM=nZ|eXW%5{!F&&-dscaQoP6CzrbG;UIT^r8mIz5*+3wKe?h`O zOCsr${8)0buTehGsDpzbiSupa7oRYq;sim2mMfu#Q)VV2*a zy5+a1Vaw6s2UK&cfaGg0YsX21xUH?DRi39c}Y?EUX zLfUAHV!q^@V;M$c)@gjGQ0ACdF1_j$*NE-R@@;i2Uq-4?NtvvpORsLW8pWt4-&W}? z-@n~uYS?V;eeUo0JU>1^JU=|YKF{lUYCF0ge7@Z#~zZ*I=o9psW;+QSNesIZ?rdd&6M^)bl#w^Jt`1m-xA8y*zp zNU%!V3*V^|mN1%{A2Xa&y3ar8X<2Kn8GUB>KMXY)!pmQ95P03{^q45Jb-->JUwW!0 zI?mDc`)UaFHOK*%8Fk;{*g7{_43qmf!{y-p<^%f z`=7l1xG|hG<6X!h1XHhnlx`sk358|m-TllUK?I2Oc>T^c`s_lHLKI0gYL?vQmz!JO z?xt4FU*?qDKw{fzZE%Tg@s(^x7X+c*X7qX20kez~w2<2U zWO}}qcCI42=#^f^nZy)|ds^`aqpV8v)1|Y8^+-REw8C%&7i>`qYj$$Q>#)Z`gDLMq zq6)S8uM)s!;J!P8%{KJ+x)bHNxO*AQOI&E^88d7qnFX|mm!!W;^T=TGSD*_czsD%cV%RzhD24-nF?&gBYGD|iQi){xO>UOYL$}tS=>+YfDIK*uZKyF z!7@*~NXYHVp+Rvr+r_DL4sXG3ft>u3=y21TYZjIfoppHY$o8Oc1+vzD@UZwZ+j5yF-+OdD?TOZ9?a$nRy%I})c#fm)3ng}xUL9j4wJa#HSOXeDv#R%uR87r+-9~KR-9W{5nYzc* zvXxikw3nmBsyBMHN(uXZ*AntIyH|&bvX%-9rNZ#~gX~w)^Lu!|Hl0G>fJy^PgRoLB z!nlUNGI`GEA14b;XXWp1-M{PzTw2Y0O*#edPN`l(s?WHM%`|mQ%5W-<^6L?Z4D|UR zb$x?wGeK-nuE6xd{q?J|H{132h)^f!#d3blf|18;4$MuBa_whK7N{d#E>tXrx=2Ib z-eS72f1qV4{e^p%O(xbKH>-BJTZr0kM;UA-0GJuw>$TuuM#s(m^fh0;szpn}(e7xj z`Gcor6vh#F!TeWpkQ$7ZeWeEsKcS_WLAGB@<@VuL7nY0Unp2}+{ctJdjWyy$-$iEM z7kS(h5n*eR-p9PNgbec<@lb7Ol+OaHUqq?q7=;h#gy4Y4L15>R z%TYW#IY$oxj}FgF!8_;A)CMvY$F%TDjfu^Mi5w_63n1PZiO!vl#WZZRMys!TC77!7 zgp2T*-epjX$XVt6mH`@;`=<$~a!my8gVn2EI-~RT->mC46so; zBR}W7)4&!gQ&um~87FC|{{E)g#=?pyQ#95PL?7;Ho?gWw?=@Stz(6r2YYteNfewJ` z3`xRUO$^*qIYA{SBsTWYOmYv`mmlrD&)BcQNa=F{Mprd`-izmv#Sc(a8@p_~HlE?H z1|wPMhpKD!P95(#KBU%)LlMc9bGkDK0iLiEh} zcJps|0LPL-AqzyQ9G3Y0uQr(uv+2GH2(Cos#tn-2T=+{r{+Var#PQFi}+&M5LmH-=={9Xd0ORoMVih2sA)X z{Gl4GM`^?AQ37kS-9sh-ddQSb5(}yo@ce2;eC|&JFx{>JSR%{A?Eg({BJdD3P)oOK V)3SrKwFmSzK{yZ@+KNkJ{0n*T3E}_% diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png.meta deleted file mode 100644 index cc07bc1..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 8bef6179fcd26aa4c89b766c6b95490a -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 2048 - textureSettings: - filterMode: 2 - aniso: -1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png deleted file mode 100644 index 7fc77420ceb43151c790fccd847d251626e0771d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35322 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 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png.meta deleted file mode 100644 index 0c3eb53..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVPro1.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: 855eae39e9698944daf581d77f6cef3c -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - linearTexture: 0 - correctGamma: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -1 - maxTextureSize: 2048 - textureSettings: - filterMode: 2 - aniso: -1 - mipBias: -1 - wrapMode: 1 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png deleted file mode 100644 index 035c5182f75c7c0a4190eaac1e49abeb68fba362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27339 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 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png.meta deleted file mode 100644 index 5531ec6..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/AVProVideoIcon.png.meta +++ /dev/null @@ -1,47 +0,0 @@ -fileFormatVersion: 2 -guid: bb83b41b53a59874692b83eab5873998 -TextureImporter: - fileIDToRecycleName: {} - serializedVersion: 2 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - linearTexture: 1 - correctGamma: 1 - fadeOut: 0 - borderMipMap: 0 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: .25 - normalMapFilter: 0 - isReadable: 0 - grayScaleToAlpha: 0 - generateCubemap: 0 - seamlessCubemap: 0 - textureFormat: -3 - maxTextureSize: 1024 - textureSettings: - filterMode: -1 - aniso: 1 - mipBias: -1 - wrapMode: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: .5, y: .5} - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spritePixelsToUnits: 100 - alphaIsTransparency: 0 - textureType: 5 - buildTargetSettings: [] - spriteSheet: - sprites: [] - spritePackingTag: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders.meta deleted file mode 100644 index 621e5af..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: e04bc3dc12a5117428fce7e0f1245bd9 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader deleted file mode 100644 index 78600b4..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader +++ /dev/null @@ -1,95 +0,0 @@ -Shader "AVProVideo/Background/Full Screen" -{ - Properties - { - _MainTex ("Texture", 2D) = "black" {} - _ChromaTex ("Chroma", 2D) = "gray" {} - _Color("Main Color", Color) = (1,1,1,1) - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - SubShader - { - Tags { "Queue" = "Background" "RenderType"="Opaque" } - LOD 100 - Cull Off - ZWrite Off - ZTest Always - Lighting Off - - Pass - { - CGPROGRAM -// Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it uses non-square matrices -#pragma exclude_renderers gles - #pragma vertex vert - #pragma fragment frag - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct v2f - { - float4 vertex : SV_POSITION; - float2 uv : TEXCOORD0; - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform fixed4 _Color; - - v2f vert(appdata_img v) - { - v2f o; - - float2 scale = ScaleZoomToFit(_ScreenParams.x, _ScreenParams.y, _MainTex_TexelSize.z, _MainTex_TexelSize.w); - float2 pos = ((v.vertex.xy) * scale * 2.0); - - // we're rendering with upside-down flipped projection, - // so flip the vertical UV coordinate too - if (_ProjectionParams.x < 0.0) - { - pos.y = (1.0 - pos.y) - 1.0; - } - - o.vertex = float4(pos.xy, UNITY_NEAR_CLIP_VALUE, 1.0); - - o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); - - return o; - } - - fixed4 frag (v2f i) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, i.uv).r, tex2D(_ChromaTex, i.uv).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, i.uv).r, tex2D(_ChromaTex, i.uv).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - // Sample the texture - fixed4 col = tex2D(_MainTex, i.uv); -#endif -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - col *= _Color; - return fixed4(col.rgb, 1.0); - } - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader.meta deleted file mode 100644 index 4fb03b0..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreen.shader.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 71eb101954888314ba2a8b9fe74e1cae -timeCreated: 1447418752 -licenseType: Store -ShaderImporter: - defaultTextures: [] - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader deleted file mode 100644 index 8ed368b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader +++ /dev/null @@ -1,123 +0,0 @@ -Shader "AVProVideo/Background/Full Screen Transparent" -{ - Properties - { - _MainTex ("Texture", 2D) = "black" {} - _ChromaTex("Chroma", 2D) = "gray" {} - _Color("Main Color", Color) = (1,1,1,1) - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - SubShader - { - Tags { "Queue"="Background+1" "RenderType" = "Transparent" } - LOD 100 - Cull Off - ZWrite Off - ZTest Always - Lighting Off - Blend SrcAlpha OneMinusSrcAlpha - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct v2f - { - float4 vertex : SV_POSITION; - float4 uv : TEXCOORD0; - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform fixed4 _Color; - - v2f vert (appdata_img v) - { - v2f o; - - float2 scale = ScaleZoomToFit(_ScreenParams.x, _ScreenParams.y, _MainTex_TexelSize.z, _MainTex_TexelSize.w); - float2 pos = ((v.vertex.xy) * scale * 2.0); - - // we're rendering with upside-down flipped projection, - // so flip the vertical UV coordinate too - if (_ProjectionParams.x < 0.0) - { - pos.y = (1.0 - pos.y) - 1.0; - } - - o.vertex = float4(pos.xy, UNITY_NEAR_CLIP_VALUE, 1.0); - - o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex); - - // Horrible hack to undo the scale transform to fit into our UV packing layout logic... - if (_MainTex_ST.y < 0.0) - { - o.uv.y = 1.0 - o.uv.y; - } - - o.uv = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, o.uv.xy, _MainTex_ST.y < 0.0); - - return o; - } - - fixed4 frag (v2f i) : SV_Target - { - -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, i.uv.xy).r, tex2D(_ChromaTex, i.uv.xy).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, i.uv.xy).r, tex2D(_ChromaTex, i.uv.xy).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - // Sample RGB - fixed4 col = tex2D(_MainTex, i.uv.xy); -#endif - -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - // Sample the alpha - -#if USE_YPCBCR - col.a = tex2D(_MainTex, i.uv.zw).r; -#else - fixed4 alpha = tex2D(_MainTex, i.uv.zw); -#if APPLY_GAMMA - alpha.rgb = GammaToLinear(alpha.rgb); -#endif - col.a = (alpha.r + alpha.g + alpha.b) / 3.0; -#endif -#endif - - col *= _Color; - - return col; - } - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader.meta deleted file mode 100644 index 2a9b35c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Background-FullScreenTransparent.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 38b28fc6a6d12d144bf6d6de820d83ce -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader deleted file mode 100644 index 2af378c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader +++ /dev/null @@ -1,63 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2014-2017 RenderHeads Ltd. All rights reserved. -//----------------------------------------------------------------------------- - -Shader "AVProVideo/BlendFrames" -{ - Properties - { - _MainTex("Before Texture", 2D) = "white" {} - _AfterTex("After Texture", 2D) = "white" {} - _t("t", Float) = 0.5 - } - - SubShader - { - Pass - { - ZTest Always Cull Off ZWrite Off - Fog{ Mode off } - - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma exclude_renderers flash xbox360 ps3 gles - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - uniform sampler2D _MainTex; - uniform sampler2D _AfterTex; - uniform float _t; - - struct v2f - { - float4 pos : POSITION; - float4 uv : TEXCOORD0; - }; - - v2f vert(appdata_img v) - { - v2f o; - o.uv = float4(0.0, 0.0, 0.0, 0.0); - o.pos = XFormObjectToClip(v.vertex); - - o.uv.xy = v.texcoord.xy; - return o; - } - - float4 frag(v2f i) : COLOR - { - float4 before = tex2D(_MainTex, i.uv.xy); - float4 after = tex2D(_AfterTex, i.uv.xy); - - float4 result = ((1.0 -_t) * before) + (_t * after); - - return result; - } - - ENDCG - } - } - - FallBack Off -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader.meta deleted file mode 100644 index 6d4dad6..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-BlendFrames.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 8ebaafdbf44b0b9489f20bc27374d187 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader deleted file mode 100644 index d708ee7..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader +++ /dev/null @@ -1,179 +0,0 @@ -Shader "AVProVideo/Helper/Transition" -{ - Properties - { - _MainTex ("Texture To", 2D) = "white" {} - _FromTex ("Texture From", 2D) = "white" {} - } - SubShader - { - Tags { "RenderType"="Opaque" } - LOD 100 - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile LERP_NONE LERP_FADE LERP_BLACK LERP_WHITE LERP_TRANSP LERP_HORIZ LERP_HORIZ_MIRROR LERP_VERT LERP_VERT_MIRROR LERP_DIAG LERP_DIAG_MIRROR LERP_CIRCLE LERP_SCROLL_VERT LERP_SCROLL_HORIZ LERP_DIAMOND LERP_BLINDS LERP_RECTS_VERT LERP_ARROW LERP_SLIDE_HORIZ LERP_SLIDE_VERT LERP_ZOOM_FADE - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct appdata - { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - }; - - struct v2f - { - float2 uv : TEXCOORD0; - float4 vertex : SV_POSITION; - }; - - sampler2D _MainTex; - sampler2D _FromTex; - float4 _MainTex_ST; - float4 _FromTex_ST; - float _Fade; - - v2f vert (appdata v) - { - v2f o; - o.vertex = XFormObjectToClip(v.vertex); - o.uv = TRANSFORM_TEX(v.uv, _MainTex); - return o; - } - - fixed4 frag (v2f i) : SV_Target - { - float2 uv1 = i.uv; - float2 uv2 = i.uv; - -#if LERP_FADE - float t = _Fade; -#elif LERP_BLACK - float t = _Fade; - if (t < 0.5) - { - return lerp(tex2D(_FromTex, uv1), float4(0.0, 0.0, 0.0, 1.0), t * 2.0); - } - else - { - return lerp(float4(0.0, 0.0, 0.0, 1.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5)); - } -#elif LERP_WHITE - float t = _Fade; - if (t < 0.5) - { - return lerp(tex2D(_FromTex, uv1), float4(1.0, 1.0, 1.0, 1.0), t * 2.0); - } - else - { - return lerp(float4(1.0, 1.0, 1.0, 1.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5)); - } -#elif LERP_TRANSP - float t = _Fade; - if (t < 0.5) - { - return lerp(tex2D(_FromTex, uv1), float4(0.0, 0.0, 0.0, 0.0), t * 2.0); - } - else - { - return lerp(float4(0.0, 0.0, 0.0, 0.0), tex2D(_MainTex, uv2), 2.0 * (t - 0.5)); - } -#elif LERP_HORIZ - float t = step(i.uv.x, _Fade); -#elif LERP_HORIZ_MIRROR - float t = step(abs(i.uv.x - 0.5), _Fade); -#elif LERP_VERT - float t = step(i.uv.y, _Fade); -#elif LERP_VERT_MIRROR - float t = step(abs(i.uv.y - 0.5), _Fade); -#elif LERP_DIAG - float t = step((i.uv.y+i.uv.x)*0.5, _Fade); -#elif LERP_DIAG_MIRROR - float t = step(abs(i.uv.y - i.uv.x), _Fade); -#elif LERP_CIRCLE - float t = distance(float2(i.uv.x*1.777, i.uv.y), float2(0.5*1.7777, 0.5)); - t = step(t, _Fade*2.1); -#elif LERP_SCROLL_VERT - float t = _Fade; - uv1.y += _Fade; - t = step(1 - uv1.y, 0); -#elif LERP_SCROLL_HORIZ - float t = _Fade; - uv1.x += _Fade; - t = step(1 - uv1.x, 0); -#elif LERP_DIAMOND - float2 origin = float2(0.5 * 1.7777, 0.5); - - float t = abs(uv1.x*1.7777 - origin.x); - t += abs(uv1.y - origin.y); - - t = step(t, _Fade*1.4); -#elif LERP_BLINDS - - float x = frac(uv1.x*4.0); - float t = step(x, _Fade); - -#elif LERP_ARROW - // Arrow - float y = abs(i.uv.y - 0.5) * 0.5; - float x = lerp(0.5, 1.0, i.uv.x); - float t = step(x, y + _Fade); -#elif LERP_SLIDE_HORIZ - // Slide horiz - float t = _Fade; - uv1.x += _Fade; - uv2.x -= 1.0 - _Fade; - t = step(1 - uv1.x, 0); -#elif LERP_SLIDE_VERT - // slide vert - float t = _Fade; - uv1.y += _Fade; - uv2.y -= 1.0 - _Fade; - t = step(1 - uv1.y, 0); -#elif LERP_ZOOM_FADE - // zoom-fade - float scale = lerp(1.0, 0.15, _Fade); - float scale2 = lerp(1.0, 0.15, 1.0-_Fade); - uv1 -= 0.5; - uv2 -= 0.5; - uv1 *= scale; - uv2 *= scale2; - uv1 += 0.5; - uv2 += 0.5; - float t = smoothstep(0.5, 1.0, _Fade); - -#elif LERP_RECTS_VERT - - float x = uv1.x; - - float bf = _Fade / 1.5; - - bf = frac(uv1.y * 8.0); - bf = (int)fmod(uv1.y * 8.0, 8.0); - bf += 1.0; - - bf *= _Fade / 2.0; - - float t = step(abs(x - 0.5), bf); - -#endif - -#if LERP_NONE - return tex2D(_MainTex, uv1); -#else - float4 cola = tex2D(_FromTex, uv1); - float4 colb = tex2D(_MainTex, uv2); - - float4 col = lerp(cola, colb, t); - return col; -#endif - } - ENDCG - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader.meta deleted file mode 100644 index 2f9b129..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Helper-Transition.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 73f378cafe7b4a745907b70e76bb3259 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader deleted file mode 100644 index 9ec18cf..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader +++ /dev/null @@ -1,107 +0,0 @@ -Shader "AVProVideo/IMGUI/Texture Transparent" -{ - Properties - { - _MainTex("Texture", any) = "" {} - _ChromaTex("Chroma", any) = "" {} - _VertScale("Vertical Scale", Range(-1, 1)) = 1.0 - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - - SubShader - { - Tags { "ForceSupported" = "True" "RenderType" = "Overlay" } - - Lighting Off - Blend SrcAlpha OneMinusSrcAlpha - Cull Off - ZWrite Off - ZTest Always - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct appdata_t - { - float4 vertex : POSITION; - fixed4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f - { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - float4 texcoord : TEXCOORD0; - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform float _VertScale; - - v2f vert(appdata_t v) - { - v2f o; - o.vertex = XFormObjectToClip(v.vertex); - o.color = v.color; - o.texcoord = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, TRANSFORM_TEX(v.texcoord, _MainTex), _VertScale < 0.0); - - return o; - } - - fixed4 frag(v2f i) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, i.texcoord.xy).r, tex2D(_ChromaTex, i.texcoord.xy).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, i.texcoord.xy).r, tex2D(_ChromaTex, i.texcoord.xy).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - // Sample RGB - fixed4 col = tex2D(_MainTex, i.texcoord.xy); -#endif -#if APPLY_GAMMA - col.rgb = LinearToGamma(col.rgb); -#endif -#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - // Sample the alpha - #if USE_YPCBCR - col.a = tex2D(_MainTex, i.texcoord.zw).r; - #else - fixed4 alpha = tex2D(_MainTex, i.texcoord.zw); - #if APPLY_GAMMA - alpha.rgb = LinearToGamma(alpha.rgb); - #endif - col.a = (alpha.r + alpha.g + alpha.b) / 3.0; - #endif -#endif - return col * i.color; - } - ENDCG - } - } - - Fallback off -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader.meta deleted file mode 100644 index 7d703b6..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-IMGUI-Transparent.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: d1085d25f9ef09b4c91188f9f99f37a2 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader deleted file mode 100644 index 211a933..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader +++ /dev/null @@ -1,91 +0,0 @@ -Shader "AVProVideo/Lit/Diffuse (texture+color+fog+stereo support)" -{ - Properties - { - _Color("Main Color", Color) = (1,1,1,1) - _MainTex("Base (RGB)", 2D) = "white" {} - _ChromaTex("Chroma", 2D) = "white" {} - - [KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo("Stereo Mode", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - - SubShader - { - Tags { "Queue"="Geometry" "IgnoreProjector"="True" "RenderType"="Geometry" } - LOD 200 - - CGPROGRAM - #pragma surface surf Lambert vertex:VertexFunction - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "AVProVideo.cginc" - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform fixed4 _Color; - uniform float3 _cameraPosition; - - struct Input - { - float2 uv_MainTex; - float4 color; - }; - - void VertexFunction(inout appdata_full v, out Input o) - { - UNITY_INITIALIZE_OUTPUT(Input, o); - -#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), true); - o.uv_MainTex = v.texcoord.xy *= scaleOffset.xy; - o.uv_MainTex = v.texcoord.xy += scaleOffset.zw; -#elif STEREO_CUSTOM_UV - o.uv_MainTex = v.texcoord.xy; - if (!IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) - { - o.uv_MainTex = v.texcoord1.xy; - } -#endif - o.color = _Color; -#if STEREO_DEBUG - o.color *= GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); -#endif - } - - void surf(Input IN, inout SurfaceOutput o) - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, IN.uv_MainTex).r, tex2D(_ChromaTex, IN.uv_MainTex).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, IN.uv_MainTex).r, tex2D(_ChromaTex, IN.uv_MainTex).ra); - #endif - fixed4 c = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0f); -#else - fixed4 c = tex2D(_MainTex, IN.uv_MainTex); -#endif -#if APPLY_GAMMA - c.rgb = GammaToLinear(c.rgb); -#endif - c *= IN.color; - o.Albedo = c.rgb; - o.Alpha = c.a; - } - ENDCG - } - - Fallback "Legacy Shaders/Transparent/VertexLit" -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader.meta deleted file mode 100644 index 3b3e95e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Diffuse.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 06b0cff0150d7eb41b3d269f7e11daa3 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader deleted file mode 100644 index 115d783..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader +++ /dev/null @@ -1,92 +0,0 @@ -Shader "AVProVideo/Lit/Transparent Diffuse (texture+color+fog+packed alpha)" -{ - Properties - { - _Color("Main Color", Color) = (1,1,1,1) - _MainTex("Base (RGB)", 2D) = "black" {} - _ChromaTex("Chroma", 2D) = "black" {} - - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - - SubShader - { - Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } - LOD 200 - ZWrite Off - Blend SrcAlpha OneMinusSrcAlpha - Cull Off - - CGPROGRAM - #pragma surface surf Lambert vertex:VertexFunction alpha - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "AVProVideo.cginc" - - uniform sampler2D _MainTex; - //uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform fixed4 _Color; - uniform float3 _cameraPosition; - - struct Input - { - float4 texcoords; - }; - - void VertexFunction(inout appdata_full v, out Input o) - { - UNITY_INITIALIZE_OUTPUT(Input, o); - - o.texcoords = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, v.texcoord.xy, true);// _MainTex_ST.y < 0.0); - } - - void surf(Input IN, inout SurfaceOutput o) - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoords.xy).r, tex2D(_ChromaTex, IN.texcoords.xy).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoords.xy).r, tex2D(_ChromaTex, IN.texcoords.xy).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0f); -#else - fixed4 col = tex2D(_MainTex, IN.texcoords.xy); -#endif -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - // Sample the alpha - #if USE_YPCBCR - col.a = tex2D(_MainTex, IN.texcoords.zw).r; - #else - fixed4 alpha = tex2D(_MainTex, IN.texcoords.zw); - #if APPLY_GAMMA - alpha.rgb = GammaToLinear(alpha.rgb); - #endif - col.a = (alpha.r + alpha.g + alpha.b) / 3.0; - #endif -#endif - col *= _Color; - o.Albedo = col.rgb; - o.Alpha = col.a; - } - ENDCG - } - - Fallback "Legacy Shaders/Transparent/VertexLit" -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader.meta deleted file mode 100644 index 6feec9c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Lit-Transparent-Diffuse.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 751148eda67f7b34fbd51bfb7951084f -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader deleted file mode 100644 index e035f71..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader +++ /dev/null @@ -1,140 +0,0 @@ -Shader "AVProVideo/UI/AndroidOES" -{ - Properties - { - [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} - [PerRendererData] _ChromaTex("Sprite Texture", 2D) = "white" {} - _Color("Tint", Color) = (1,1,1,1) - - _StencilComp("Stencil Comparison", Float) = 8 - _Stencil("Stencil ID", Float) = 0 - _StencilOp("Stencil Operation", Float) = 0 - _StencilWriteMask("Stencil Write Mask", Float) = 255 - _StencilReadMask("Stencil Read Mask", Float) = 255 - - _ColorMask("Color Mask", Float) = 15 - - [KeywordEnum(None, Top_Bottom, Left_Right)] Stereo("Stereo Mode", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 - } - - SubShader - { - Tags - { - "Queue" = "Transparent" - "IgnoreProjector" = "True" - "RenderType" = "Transparent" - "PreviewType" = "Plane" - "CanUseSpriteAtlas" = "True" - } - - Stencil - { - Ref[_Stencil] - Comp[_StencilComp] - Pass[_StencilOp] - ReadMask[_StencilReadMask] - WriteMask[_StencilWriteMask] - } - - Cull Off - Lighting Off - ZWrite Off - ZTest[unity_GUIZTestMode] - Fog{ Mode Off } - Blend SrcAlpha OneMinusSrcAlpha - ColorMask[_ColorMask] - - Pass - { - GLSLPROGRAM - #pragma only_renderers gles gles3 - - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - - #extension GL_OES_EGL_image_external : require - #extension GL_OES_EGL_image_external_essl3 : enable - - precision mediump float; - - -#ifdef VERTEX - -#include "UnityCG.glslinc" -#define SHADERLAB_GLSL -#include "AVProVideo.cginc" - uniform mat4 _ViewMatrix; - uniform vec3 _cameraPosition; - varying vec2 texVal; - -#if defined(STEREO_DEBUG) - varying vec4 tint; -#endif - - void main() - { - gl_Position = XFormObjectToClip(gl_Vertex); - texVal = gl_MultiTexCoord0.xy; - texVal.y = 1.0 - texVal.y; - -#if defined(STEREO_TOP_BOTTOM) | defined(STEREO_LEFT_RIGHT) - bool isLeftEye = IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz); - - vec4 scaleOffset = GetStereoScaleOffset(isLeftEye, false); - - texVal.xy *= scaleOffset.xy; - texVal.xy += scaleOffset.zw; -#elif defined (STEREO_CUSTOM_UV) - if (!IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz)) - { - texVal = gl_MultiTexCoord1.xy; - texVal = vec2(1.0, 1.0) - texVal; - } -#endif - -#if defined(STEREO_DEBUG) - tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz)); -#endif - - } -#endif - -#ifdef FRAGMENT - varying vec2 texVal; - -#if defined(STEREO_DEBUG) - varying vec4 tint; -#endif - - uniform vec4 _Color; - uniform samplerExternalOES _MainTex; - - void main() - { -#if defined(SHADER_API_GLES) || defined(SHADER_API_GLES3) - -#if __VERSION__ < 300 - gl_FragColor = texture2D(_MainTex, texVal.xy) * _Color; -#else - gl_FragColor = texture(_MainTex, texVal.xy) * _Color; -#endif - -#else - gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); -#endif - -#if defined(STEREO_DEBUG) - gl_FragColor *= tint; -#endif - } - -#endif - - ENDGLSL - } - } - - Fallback "AVProVideo/UI/Stereo" -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader.meta deleted file mode 100644 index 5c5ff65..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-AndroidOES.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: f9f51999155859b419ff715c8127688a -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader deleted file mode 100644 index 7743311..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader +++ /dev/null @@ -1,141 +0,0 @@ -Shader "AVProVideo/UI/Stereo" -{ - Properties - { - [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} - [PerRendererData] _ChromaTex ("Sprite Texture", 2D) = "white" {} - _Color ("Tint", Color) = (1,1,1,1) - - _StencilComp ("Stencil Comparison", Float) = 8 - _Stencil ("Stencil ID", Float) = 0 - _StencilOp ("Stencil Operation", Float) = 0 - _StencilWriteMask ("Stencil Write Mask", Float) = 255 - _StencilReadMask ("Stencil Read Mask", Float) = 255 - - _ColorMask ("Color Mask", Float) = 15 - - [KeywordEnum(None, Top_Bottom, Left_Right)] Stereo("Stereo Mode", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - - SubShader - { - Tags - { - "Queue"="Transparent" - "IgnoreProjector"="True" - "RenderType"="Transparent" - "PreviewType"="Plane" - "CanUseSpriteAtlas"="True" - } - - Stencil - { - Ref [_Stencil] - Comp [_StencilComp] - Pass [_StencilOp] - ReadMask [_StencilReadMask] - WriteMask [_StencilWriteMask] - } - - Cull Off - Lighting Off - ZWrite Off - ZTest [unity_GUIZTestMode] - Fog { Mode Off } - Blend SrcAlpha OneMinusSrcAlpha - ColorMask [_ColorMask] - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct appdata_t - { - float4 vertex : POSITION; - float4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f - { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - half2 texcoord : TEXCOORD0; - }; - - uniform fixed4 _Color; - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform float3 _cameraPosition; - - v2f vert(appdata_t IN) - { - v2f OUT; - - OUT.vertex = XFormObjectToClip(IN.vertex); - -#ifdef UNITY_HALF_TEXEL_OFFSET - OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); -#endif - - OUT.texcoord.xy = IN.texcoord.xy; - -#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); - OUT.texcoord.xy *= scaleOffset.xy; - OUT.texcoord.xy += scaleOffset.zw; -#endif - - OUT.color = IN.color * _Color; - -#if STEREO_DEBUG - OUT.color *= GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); -#endif - return OUT; - } - - fixed4 frag(v2f IN) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord).r, tex2D(_ChromaTex, IN.texcoord).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord).r, tex2D(_ChromaTex, IN.texcoord).ra); - #endif - half4 color = half4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - half4 color = tex2D(_MainTex, IN.texcoord.xy); -#endif -#if APPLY_GAMMA - color.rgb = GammaToLinear(color.rgb); -#endif - - color *= IN.color; - return color; - } - - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader.meta deleted file mode 100644 index 41d1975..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Stereo.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 018fe741dec71f14bb43801a31a07303 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader deleted file mode 100644 index 778ba0e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader +++ /dev/null @@ -1,174 +0,0 @@ -Shader "AVProVideo/UI/Transparent Packed" -{ - Properties - { - [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} - [PerRendererData] _ChromaTex ("Sprite Texture", 2D) = "white" {} - _Color ("Tint", Color) = (1,1,1,1) - - _StencilComp ("Stencil Comparison", Float) = 8 - _Stencil ("Stencil ID", Float) = 0 - _StencilOp ("Stencil Operation", Float) = 0 - _StencilWriteMask ("Stencil Write Mask", Float) = 255 - _StencilReadMask ("Stencil Read Mask", Float) = 255 - - _ColorMask ("Color Mask", Float) = 15 - - _VertScale("Vertical Scale", Range(-1, 1)) = 1.0 - - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - - SubShader - { - Tags - { - "Queue"="Transparent" - "IgnoreProjector"="True" - "RenderType"="Transparent" - "PreviewType"="Plane" - "CanUseSpriteAtlas"="True" - } - - Stencil - { - Ref [_Stencil] - Comp [_StencilComp] - Pass [_StencilOp] - ReadMask [_StencilReadMask] - WriteMask [_StencilWriteMask] - } - - Cull Off - Lighting Off - ZWrite Off - ZTest [unity_GUIZTestMode] - Fog { Mode Off } - Blend SrcAlpha OneMinusSrcAlpha - ColorMask [_ColorMask] - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - -#if APPLY_GAMMA - //#pragma target 3.0 -#endif - #include "UnityCG.cginc" - // TODO: once we drop support for Unity 4.x then we can include this - //#include "UnityUI.cginc" - #include "AVProVideo.cginc" - - struct appdata_t - { - float4 vertex : POSITION; - float4 color : COLOR; - float2 texcoord : TEXCOORD0; - }; - - struct v2f - { - float4 vertex : SV_POSITION; - fixed4 color : COLOR; - half4 texcoord : TEXCOORD0; - float4 worldPosition : TEXCOORD1; - }; - - uniform fixed4 _Color; - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_TexelSize; - uniform float _VertScale; - uniform float4 _ClipRect; - -#if UNITY_VERSION >= 520 - inline float UnityGet2DClipping (in float2 position, in float4 clipRect) - { - float2 inside = step(clipRect.xy, position.xy) * step(position.xy, clipRect.zw); - return inside.x * inside.y; - } -#endif - - v2f vert(appdata_t IN) - { - v2f OUT; - OUT.worldPosition = IN.vertex; - - OUT.vertex = XFormObjectToClip(IN.vertex); - -#ifdef UNITY_HALF_TEXEL_OFFSET - OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1); -#endif - - OUT.texcoord.xy = IN.texcoord.xy; - - // Horrible hack to undo the scale transform to fit into our UV packing layout logic... - if (_VertScale < 0.0) - { - OUT.texcoord.y = 1.0 - OUT.texcoord.y; - } - - OUT.texcoord = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, OUT.texcoord.xy, _VertScale < 0.0); - - OUT.color = IN.color * _Color; - return OUT; - } - - fixed4 frag(v2f IN) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord.xy).r, tex2D(_ChromaTex, IN.texcoord.xy).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, IN.texcoord.xy).r, tex2D(_ChromaTex, IN.texcoord.xy).ra); - #endif - half4 color = half4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0f); -#else - // Sample RGB - half4 color = tex2D(_MainTex, IN.texcoord.xy); -#endif -#if APPLY_GAMMA - color.rgb = GammaToLinear(color.rgb); -#endif - -#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - #if USE_YPCBCR - color.a = tex2D(_MainTex, IN.texcoord.zw).r; - #else - // Sample the alpha - half4 alpha = tex2D(_MainTex, IN.texcoord.zw); - #if APPLY_GAMMA - alpha.rgb = GammaToLinear(alpha.rgb); - #endif - color.a = (alpha.r + alpha.g + alpha.b) / 3.0; - #endif -#endif - color *= IN.color; - -#if UNITY_VERSION >= 520 - color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); -#endif - clip(color.a - 0.001); - - return color; - } - - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader.meta deleted file mode 100644 index 74b7080..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-UI-Default-Transparent.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: f32079bbb2560394abb63e40e1d53da7 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader deleted file mode 100644 index 2e16d1f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader +++ /dev/null @@ -1,74 +0,0 @@ -Shader "AVProVideo/Unlit/Opaque (texture+color support) - Android OES ONLY" -{ - Properties - { - _MainTex ("Base (RGB)", 2D) = "black" {} - _ChromaTex("Chroma", 2D) = "gray" {} - _Color("Main Color", Color) = (1,1,1,1) - - [KeywordEnum(None, Top_Bottom, Left_Right)] Stereo("Stereo Mode", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Opaque" "IgnoreProjector"="False" "Queue"="Geometry" } - LOD 100 - Lighting Off - Cull Off - - Pass - { - GLSLPROGRAM - - #pragma only_renderers gles gles3 - #extension GL_OES_EGL_image_external : require - #extension GL_OES_EGL_image_external_essl3 : enable - precision mediump float; - - #ifdef VERTEX - - #include "UnityCG.glslinc" - #define SHADERLAB_GLSL - #include "AVProVideo.cginc" - - varying vec2 texVal; - uniform vec4 _MainTex_ST; - - /// @fix: explicit TRANSFORM_TEX(); Unity's preprocessor chokes when attempting to use the TRANSFORM_TEX() macro in UnityCG.glslinc - /// (as of Unity 4.5.0f6; issue dates back to 2011 or earlier: http://forum.unity3d.com/threads/glsl-transform_tex-and-tiling.93756/) - vec2 transformTex(vec4 texCoord, vec4 texST) - { - return (texCoord.xy * texST.xy + texST.zw); - } - - void main() - { - gl_Position = XFormObjectToClip(gl_Vertex); - texVal = transformTex(gl_MultiTexCoord0, _MainTex_ST); - //texVal.x = 1.0 - texVal.x; - texVal.y = 1.0 - texVal.y; - } - #endif - - #ifdef FRAGMENT - - varying vec2 texVal; - - uniform samplerExternalOES _MainTex; - - void main() - { -#if defined(SHADER_API_GLES) || defined(SHADER_API_GLES3) - gl_FragColor = texture2D(_MainTex, texVal.xy); -#else - gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); -#endif - } - #endif - - ENDGLSL - } - } - - Fallback "AVProVideo/Unlit/Opaque (texture+color+fog+stereo support)" -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader.meta deleted file mode 100644 index a9c31d1..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-AndroidOES.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: eb44a525a7e2c6640a8cd90fd7fabce4 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader deleted file mode 100644 index 01005e4..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader +++ /dev/null @@ -1,129 +0,0 @@ -Shader "AVProVideo/Unlit/Transparent (texture+color+fog+packed alpha)" -{ - Properties - { - _MainTex ("Base (RGB) Trans (A)", 2D) = "black" {} - _Color("Main Color", Color) = (1,1,1,1) - _ChromaTex("Chroma", 2D) = "gray" {} - - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Transparent" "IgnoreProjector"="True" "Queue"="Transparent" } - LOD 100 - ZWrite Off - Blend SrcAlpha OneMinusSrcAlpha - Lighting Off - Cull Off - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile_fog - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct appdata - { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; - }; - - struct v2f - { - float4 vertex : SV_POSITION; - float4 uv : TEXCOORD0; - -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) -#endif - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform fixed4 _Color; - - v2f vert (appdata v) - { - v2f o; - - o.vertex = XFormObjectToClip(v.vertex); - o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); - - // Horrible hack to undo the scale transform to fit into our UV packing layout logic... - if (_MainTex_ST.y < 0.0) - { - o.uv.y = 1.0 - o.uv.y; - } - - o.uv = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, o.uv.xy, _MainTex_ST.y < 0.0); - -#if UNITY_VERSION >= 500 - UNITY_TRANSFER_FOG(o, o.vertex); -#endif - - return o; - } - - fixed4 frag (v2f i) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, i.uv.xy).r, tex2D(_ChromaTex, i.uv.xy).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, i.uv.xy).r, tex2D(_ChromaTex, i.uv.xy).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - // Sample RGB - fixed4 col = tex2D(_MainTex, i.uv.xy); -#endif - -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - // Sample the alpha - #if USE_YPCBCR - col.a = tex2D(_MainTex, i.uv.zw).r; - #else - fixed4 alpha = tex2D(_MainTex, i.uv.zw); - #if APPLY_GAMMA - alpha.rgb = GammaToLinear(alpha.rgb); - #endif - col.a = (alpha.r + alpha.g + alpha.b) / 3.0; - //col.a = (alpha.r + alpha.g + alpha.g + alpha.b) / 4.0; - //clip(col.a - 0.01); - #endif -#endif - col *= _Color; - -#if UNITY_VERSION >= 500 - UNITY_APPLY_FOG(i.fogCoord, col); -#endif - - return col; - } - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader.meta deleted file mode 100644 index ee08a0b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit-Transparent.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 0ed1fb9218ad96f49acfdb428d5b5aab -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader deleted file mode 100644 index 4bde45e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader +++ /dev/null @@ -1,128 +0,0 @@ -Shader "AVProVideo/Unlit/Opaque (texture+color+fog+stereo support)" -{ - Properties - { - _MainTex ("Base (RGB)", 2D) = "black" {} - _ChromaTex ("Chroma", 2D) = "gray" {} - _Color("Main Color", Color) = (1,1,1,1) - - [KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo("Stereo Mode", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Opaque" "IgnoreProjector"="False" "Queue"="Geometry" } - LOD 100 - Lighting Off - Cull Off - - Pass - { - CGPROGRAM - #pragma vertex vert - #pragma fragment frag - #pragma multi_compile_fog - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - - struct appdata - { - float4 vertex : POSITION; - float2 uv : TEXCOORD0; -#if STEREO_CUSTOM_UV - float2 uv2 : TEXCOORD1; // Custom uv set for right eye (left eye is in TEXCOORD0) -#endif - }; - - struct v2f - { - float4 vertex : SV_POSITION; - float2 uv : TEXCOORD0; -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) -#endif -#if STEREO_DEBUG - float4 tint : COLOR; -#endif - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform fixed4 _Color; - uniform float3 _cameraPosition; - - v2f vert (appdata v) - { - v2f o; - - o.vertex = XFormObjectToClip(v.vertex); - o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); - -#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); - o.uv.xy *= scaleOffset.xy; - o.uv.xy += scaleOffset.zw; -#elif STEREO_CUSTOM_UV - if (!IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) - { - o.uv.xy = TRANSFORM_TEX(v.uv2, _MainTex); - } -#endif - -#if STEREO_DEBUG - o.tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); -#endif - -#if UNITY_VERSION >= 500 - UNITY_TRANSFER_FOG(o, o.vertex); -#endif - - return o; - } - - fixed4 frag (v2f i) : SV_Target - { -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, i.uv).r, tex2D(_ChromaTex, i.uv).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, i.uv).r, tex2D(_ChromaTex, i.uv).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - fixed4 col = tex2D(_MainTex, i.uv.xy); -#endif - col *= _Color; -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if STEREO_DEBUG - col *= i.tint; -#endif - -#if UNITY_VERSION >= 500 - UNITY_APPLY_FOG(i.fogCoord, col); -#endif - - return fixed4(col.rgb, 1.0); - } - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader.meta deleted file mode 100644 index 7a60d83..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-Unlit.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 1ca6555d94ddb204c87e9fe549085b3c -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader deleted file mode 100644 index 5b72d07..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader +++ /dev/null @@ -1,111 +0,0 @@ -Shader "AVProVideo/VR/InsideSphere Unlit (stereo) - Android OES ONLY" -{ - Properties - { - _MainTex ("Base (RGB)", 2D) = "black" {} - _Color("Color", Color) = (0.0, 1.0, 0.0, 1.0) - [KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo("Stereo Mode", Float) = 0 - [KeywordEnum(None, EquiRect180)] Layout("Layout", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug("Stereo Debug Tinting", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - } - SubShader - { - Tags{ "Queue" = "Geometry" } - Pass - { - Cull Front - //ZTest Always - ZWrite On - Lighting Off - - GLSLPROGRAM - - #pragma only_renderers gles gles3 - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - #pragma multi_compile __ STEREO_DEBUG - #pragma multi_compile LAYOUT_NONE LAYOUT_EQUIRECT180 - //#pragma multi_compile __ GOOGLEVR - - #extension GL_OES_EGL_image_external : require - #extension GL_OES_EGL_image_external_essl3 : enable - precision mediump float; - - #ifdef VERTEX - -#include "UnityCG.glslinc" -#define SHADERLAB_GLSL -#include "AVProVideo.cginc" - - varying vec2 texVal; - uniform vec3 _cameraPosition; - uniform mat4 _ViewMatrix; - -#if defined(STEREO_DEBUG) - varying vec4 tint; -#endif - - void main() - { - gl_Position = XFormObjectToClip(gl_Vertex); - texVal = gl_MultiTexCoord0.xy; - texVal = vec2(1.0, 1.0) - texVal; -#if defined(EQUIRECT180) - texVal.x = ((texVal.x - 0.5) * 2.0) + 0.5; -#endif -#if defined(STEREO_TOP_BOTTOM) | defined(STEREO_LEFT_RIGHT) - bool isLeftEye = IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz); - - vec4 scaleOffset = GetStereoScaleOffset(isLeftEye, false); - - texVal.xy *= scaleOffset.xy; - texVal.xy += scaleOffset.zw; -#elif defined (STEREO_CUSTOM_UV) - if (!IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz)) - { - texVal = gl_MultiTexCoord1.xy; - texVal = vec2(1.0, 1.0) - texVal; - } -#endif -#if defined(STEREO_DEBUG) - tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, _ViewMatrix[0].xyz)); -#endif - } - #endif - - #ifdef FRAGMENT - - varying vec2 texVal; -#if defined(STEREO_DEBUG) - varying vec4 tint; -#endif - - uniform vec4 _Color; - uniform samplerExternalOES _MainTex; - - void main() - { -#if defined(SHADER_API_GLES) || defined(SHADER_API_GLES3) - -#if __VERSION__ < 300 - gl_FragColor = texture2D(_MainTex, texVal.xy) * _Color; -#else - gl_FragColor = texture(_MainTex, texVal.xy) * _Color; -#endif - -#else - gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); -#endif - -#if defined(STEREO_DEBUG) - gl_FragColor *= tint; -#endif - } - #endif - - ENDGLSL - } - } - - Fallback "AVProVideo/VR/InsideSphere Unlit (stereo+fog)" -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader.meta deleted file mode 100644 index c556a3f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-AndroidOES.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: a22a9f37cda6a3b48be178ec57376024 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader deleted file mode 100644 index fcc3bbe..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader +++ /dev/null @@ -1,114 +0,0 @@ -Shader "AVProVideo/VR/InsideSphere Unlit (stereo+fog) Stereo UV" -{ - Properties - { - _MainTex ("Texture", 2D) = "black" {} - - [Toggle(STEREO_DEBUG)] _StereoDebug ("Stereo Debug Tinting", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Opaque" "IgnoreProjector" = "True" "Queue" = "Background" } - ZWrite On - //ZTest Always - Cull Front - Lighting Off - - Pass - { - CGPROGRAM - #include "UnityCG.cginc" - #include "AVProVideo.cginc" - //#pragma target 3.0 - #pragma vertex vert - #pragma fragment frag - - //#define STEREO_DEBUG 1 - //#define HIGH_QUALITY 1 - - #pragma multi_compile_fog - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - - struct appdata - { - float4 vertex : POSITION; // vertex position - float2 uv : TEXCOORD0; // texture coordinate 1 - float2 uv2 : TEXCOORD1; // texture coordinate 2 - }; - - struct v2f - { - float4 vertex : SV_POSITION; // clip space position - float2 uv : TEXCOORD0; // texture coordinate - -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) -#endif - -#if STEREO_DEBUG - float4 tint : COLOR; -#endif - }; - - uniform sampler2D _MainTex; - uniform float4 _MainTex_ST; - uniform float3 _cameraPosition; - - v2f vert(appdata v) - { - v2f o; - o.vertex = XFormObjectToClip(v.vertex); - - if (IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) - { - o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); - o.uv.xy = float2(1.0 - o.uv.x, o.uv.y); - } - else - { - o.uv.xy = TRANSFORM_TEX(v.uv2, _MainTex); - o.uv.xy = float2(1.0 - o.uv.x, o.uv.y); - } - - #if STEREO_DEBUG - o.tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); - #endif - -#if UNITY_VERSION >= 500 - UNITY_TRANSFER_FOG(o, o.vertex); -#endif - - return o; - } - - fixed4 frag (v2f i) : SV_Target - { - float2 uv; - uv = i.uv; - - fixed4 col = tex2D(_MainTex, uv); - -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if STEREO_DEBUG - col *= i.tint; -#endif - -#if UNITY_VERSION >= 500 - UNITY_APPLY_FOG(i.fogCoord, col); -#endif - - return fixed4(col.rgb, 1.0); - } - ENDCG - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader.meta deleted file mode 100644 index e58d3ec..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-StereoUV.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 08ccc6021f136814494572dcad0c489d -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader deleted file mode 100644 index 8e5f030..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader +++ /dev/null @@ -1,282 +0,0 @@ -Shader "AVProVideo/VR/InsideSphere Unlit Transparent(stereo+color+fog+alpha)" -{ - Properties - { - _MainTex ("Texture", 2D) = "black" {} - _ChromaTex("Chroma", 2D) = "white" {} - _Color("Main Color", Color) = (1,1,1,1) - - [KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo ("Stereo Mode", Float) = 0 - [KeywordEnum(None, Top_Bottom, Left_Right)] AlphaPack("Alpha Pack", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug ("Stereo Debug Tinting", Float) = 0 - [KeywordEnum(None, EquiRect180)] Layout("Layout", Float) = 0 - [Toggle(HIGH_QUALITY)] _HighQuality ("High Quality", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - _EdgeFeather("Edge Feather", Range (0, 1)) = 0.02 - } - SubShader - { - Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } - ZWrite On - //ZTest Always - Blend SrcAlpha OneMinusSrcAlpha - Cull Front - Lighting Off - - Pass - { - CGPROGRAM - #include "UnityCG.cginc" - #include "AVProVideo.cginc" -#if HIGH_QUALITY || APPLY_GAMMA - #pragma target 3.0 -#endif - #pragma vertex vert - #pragma fragment frag - - #pragma multi_compile_fog - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - #pragma multi_compile ALPHAPACK_NONE ALPHAPACK_TOP_BOTTOM ALPHAPACK_LEFT_RIGHT - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile HIGH_QUALITY_OFF HIGH_QUALITY - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - #pragma multi_compile LAYOUT_NONE LAYOUT_EQUIRECT180 - - struct appdata - { - float4 vertex : POSITION; // vertex position -#if HIGH_QUALITY - float3 normal : NORMAL; -#else - float2 uv : TEXCOORD0; // texture coordinate - #if STEREO_CUSTOM_UV - float2 uv2 : TEXCOORD1; // Custom uv set for right eye (left eye is in TEXCOORD0) - #endif -#endif - - }; - - struct v2f - { - float4 vertex : SV_POSITION; // clip space position -#if HIGH_QUALITY - float3 normal : TEXCOORD0; - - #if STEREO_TOP_BOTTOM || STEREO_LEFT_RIGHT - float4 scaleOffset : TEXCOORD1; // texture coordinate - #if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(2) - #endif - #else - #if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) - #endif - #endif -#else - float4 uv : TEXCOORD0; // texture coordinate - #if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) - #endif -#endif - -#if STEREO_DEBUG - float4 tint : COLOR; -#endif - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float4 _MainTex_TexelSize; - uniform float3 _cameraPosition; - uniform fixed4 _Color; - uniform float _EdgeFeather; - - v2f vert (appdata v) - { - v2f o; - o.vertex = XFormObjectToClip(v.vertex); -#if !HIGH_QUALITY - o.uv.zw = 0.0; - o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); - #if LAYOUT_EQUIRECT180 - o.uv.x = ((o.uv.x - 0.5) * 2.0) + 0.5; - // Set value for clipping if UV area is behind viewer - o.uv.z = -1.0; - if (v.uv.x > 0.25 && v.uv.x < 0.75) - { - o.uv.z = 1.0; - } - #endif - o.uv.xy = float2(1.0-o.uv.x, o.uv.y); -#endif - -#if STEREO_TOP_BOTTOM || STEREO_LEFT_RIGHT - float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); - - #if !HIGH_QUALITY - o.uv.xy *= scaleOffset.xy; - o.uv.xy += scaleOffset.zw; - #else - o.scaleOffset = scaleOffset; - #endif -#elif STEREO_CUSTOM_UV && !HIGH_QUALITY - if (!IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) - { - o.uv.xy = TRANSFORM_TEX(v.uv2, _MainTex); - o.uv.xy = float2(1.0 - o.uv.x, o.uv.y); - } -#endif - -#if !HIGH_QUALITY - #if ALPHAPACK_TOP_BOTTOM || ALPHAPACK_LEFT_RIGHT - o.uv = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, o.uv.xy, _MainTex_ST.y > 0.0); - #endif -#endif - -#if HIGH_QUALITY - o.normal = v.normal; -#endif - - #if STEREO_DEBUG - o.tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); - #endif - -#if UNITY_VERSION >= 500 - UNITY_TRANSFER_FOG(o, o.vertex); -#endif - return o; - } - - - fixed4 frag (v2f i) : SV_Target - { - float4 uv = 0; -#if HIGH_QUALITY - float3 n = normalize(i.normal); - #if LAYOUT_EQUIRECT180 - clip(-n.z); // Clip pixels on the back of the sphere - #endif - - float M_1_PI = 1.0 / 3.1415926535897932384626433832795; - float M_1_2PI = 1.0 / 6.283185307179586476925286766559; - uv.x = 0.5 - atan2(n.z, n.x) * M_1_2PI; - uv.y = 0.5 - asin(-n.y) * M_1_PI; - uv.x += 0.75; - uv.x = fmod(uv.x, 1.0); - //uv.x = uv.x % 1.0; - uv.xy = TRANSFORM_TEX(uv, _MainTex); - #if LAYOUT_EQUIRECT180 - uv.x = ((uv.x - 0.5) * 2.0) + 0.5; - #endif - #if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - uv.xy *= i.scaleOffset.xy; - uv.xy += i.scaleOffset.zw; - #endif - #if ALPHAPACK_TOP_BOTTOM | ALPHAPACK_LEFT_RIGHT - uv = OffsetAlphaPackingUV(_MainTex_TexelSize.xy, uv.xy, _MainTex_ST.y < 0.0); - #endif -#else - uv = i.uv; - #if LAYOUT_EQUIRECT180 - clip(i.uv.z); // Clip pixels on the back of the sphere - #endif -#endif - -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - fixed4 col = tex2D(_MainTex, uv); -#endif - -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if ALPHAPACK_TOP_BOTTOM || ALPHAPACK_LEFT_RIGHT - // Sample the alpha - fixed4 alpha = tex2D(_MainTex, uv.zw); -#if APPLY_GAMMA - alpha.rgb = GammaToLinear(alpha.rgb); -#endif - - col.a = (alpha.r + alpha.g + alpha.b) / 3.0; - //col.a = (alpha.r + alpha.g + alpha.g + alpha.b) / 4.0; - - //clip(col.a - 0.01); -#endif - -#if STEREO_DEBUG - col *= i.tint; -#endif - - col *= _Color; - -#if UNITY_VERSION >= 500 - UNITY_APPLY_FOG(i.fogCoord, col); -#endif - -#if LAYOUT_EQUIRECT180 - // Apply edge feathering based on UV mapping - this is useful if you're using a hemisphere mesh for 180 degree video and want to have soft edges - if (_EdgeFeather > 0.0) - { - float4 featherDirection = float4(0.0, 0.0, 1.0, 1.0); - -#if STEREO_TOP_BOTTOM - if (uv.y > 0.5) - { - featherDirection.y = 0.5; - } - else - { - featherDirection.w = 0.5; - } -#endif - -#if STEREO_LEFT_RIGHT - if (uv.x > 0.5) - { - featherDirection.x = 0.5; - } - else - { - featherDirection.z = 0.5; - } -#endif - - -#if ALPHAPACK_TOP_BOTTOM - featherDirection.w *= 0.5; -#endif - -#if ALPHAPACK_LEFT_RIGHT - featherDirection.z *= 0.5; -#endif - - float d = min(uv.x - featherDirection.x, min((uv.y - featherDirection.y), min(featherDirection.z - uv.x, featherDirection.w - uv.y))); - float a = smoothstep(0.0, _EdgeFeather, d); - col.a *= a; - } -#endif - - return col; - - } - ENDCG - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader.meta deleted file mode 100644 index bc61466..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere-Transparent.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 867ec56bd96e5504a95f991314cd5706 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader deleted file mode 100644 index ff12953..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader +++ /dev/null @@ -1,201 +0,0 @@ -Shader "AVProVideo/VR/InsideSphere Unlit (stereo+fog)" -{ - Properties - { - _MainTex ("Texture", 2D) = "black" {} - _ChromaTex("Chroma", 2D) = "white" {} - - [KeywordEnum(None, Top_Bottom, Left_Right, Custom_UV)] Stereo ("Stereo Mode", Float) = 0 - [KeywordEnum(None, Left, Right)] ForceEye ("Force Eye Mode", Float) = 0 - [Toggle(STEREO_DEBUG)] _StereoDebug ("Stereo Debug Tinting", Float) = 0 - [KeywordEnum(None, EquiRect180)] Layout("Layout", Float) = 0 - [Toggle(HIGH_QUALITY)] _HighQuality ("High Quality", Float) = 0 - [Toggle(APPLY_GAMMA)] _ApplyGamma("Apply Gamma", Float) = 0 - [Toggle(USE_YPCBCR)] _UseYpCbCr("Use YpCbCr", Float) = 0 - } - SubShader - { - Tags { "RenderType"="Opaque" "IgnoreProjector" = "True" "Queue" = "Background" } - ZWrite On - //ZTest Always - Cull Front - Lighting Off - - Pass - { - CGPROGRAM - #include "UnityCG.cginc" - #include "AVProVideo.cginc" -#if HIGH_QUALITY || APPLY_GAMMA - #pragma target 3.0 -#endif - #pragma vertex vert - #pragma fragment frag - - //#define STEREO_DEBUG 1 - //#define HIGH_QUALITY 1 - - #pragma multi_compile_fog - #pragma multi_compile MONOSCOPIC STEREO_TOP_BOTTOM STEREO_LEFT_RIGHT STEREO_CUSTOM_UV - - // TODO: Change XX_OFF to __ for Unity 5.0 and above - // this was just added for Unity 4.x compatibility as __ causes - // Android and iOS builds to fail the shader - #pragma multi_compile STEREO_DEBUG_OFF STEREO_DEBUG - #pragma multi_compile FORCEEYE_NONE FORCEEYE_LEFT FORCEEYE_RIGHT - #pragma multi_compile HIGH_QUALITY_OFF HIGH_QUALITY - #pragma multi_compile APPLY_GAMMA_OFF APPLY_GAMMA - #pragma multi_compile USE_YPCBCR_OFF USE_YPCBCR - #pragma multi_compile LAYOUT_NONE LAYOUT_EQUIRECT180 - - struct appdata - { - float4 vertex : POSITION; // vertex position -#if HIGH_QUALITY - float3 normal : NORMAL; -#else - float2 uv : TEXCOORD0; // texture coordinate -#if STEREO_CUSTOM_UV - float2 uv2 : TEXCOORD1; // Custom uv set for right eye (left eye is in TEXCOORD0) -#endif -#endif - - }; - - struct v2f - { - float4 vertex : SV_POSITION; // clip space position -#if HIGH_QUALITY - float3 normal : TEXCOORD0; - -#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - float4 scaleOffset : TEXCOORD1; // texture coordinate -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(2) -#endif -#else -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) -#endif -#endif -#else - float2 uv : TEXCOORD0; // texture coordinate - -#if UNITY_VERSION >= 500 - UNITY_FOG_COORDS(1) -#endif -#endif - -#if STEREO_DEBUG - float4 tint : COLOR; -#endif - }; - - uniform sampler2D _MainTex; -#if USE_YPCBCR - uniform sampler2D _ChromaTex; - uniform float4x4 _YpCbCrTransform; -#endif - uniform float4 _MainTex_ST; - uniform float3 _cameraPosition; - - v2f vert (appdata v) - { - v2f o; - - o.vertex = XFormObjectToClip(v.vertex); - -#if !HIGH_QUALITY - o.uv.xy = TRANSFORM_TEX(v.uv, _MainTex); - #if LAYOUT_EQUIRECT180 - o.uv.x = ((o.uv.x - 0.5) * 2.0) + 0.5; - #endif - o.uv.xy = float2(1.0-o.uv.x, o.uv.y); -#endif - -#if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - float4 scaleOffset = GetStereoScaleOffset(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz), _MainTex_ST.y < 0.0); - - #if !HIGH_QUALITY - o.uv.xy *= scaleOffset.xy; - o.uv.xy += scaleOffset.zw; - #else - o.scaleOffset = scaleOffset; - #endif -#elif STEREO_CUSTOM_UV && !HIGH_QUALITY - if (!IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)) - { - o.uv.xy = TRANSFORM_TEX(v.uv2, _MainTex); - o.uv.xy = float2(1.0 - o.uv.x, o.uv.y); - } -#endif - -#if HIGH_QUALITY - o.normal = v.normal; -#endif - - #if STEREO_DEBUG - o.tint = GetStereoDebugTint(IsStereoEyeLeft(_cameraPosition, UNITY_MATRIX_V[0].xyz)); - #endif - -#if UNITY_VERSION >= 500 - UNITY_TRANSFER_FOG(o, o.vertex); -#endif - - return o; - } - - - fixed4 frag (v2f i) : SV_Target - { - float2 uv; - -#if HIGH_QUALITY - float3 n = normalize(i.normal); - - float M_1_PI = 1.0 / 3.1415926535897932384626433832795; - float M_1_2PI = 1.0 / 6.283185307179586476925286766559; - uv.x = 0.5 - atan2(n.z, n.x) * M_1_2PI; - uv.y = 0.5 - asin(-n.y) * M_1_PI; - uv.x += 0.75; - uv.x = fmod(uv.x, 1.0); - //uv.x = uv.x % 1.0; - uv.xy = TRANSFORM_TEX(uv, _MainTex); - #if LAYOUT_EQUIRECT180 - uv.x = ((uv.x - 0.5) * 2.0) + 0.5; - #endif - #if STEREO_TOP_BOTTOM | STEREO_LEFT_RIGHT - uv.xy *= i.scaleOffset.xy; - uv.xy += i.scaleOffset.zw; - #endif -#else - uv = i.uv; -#endif -#if USE_YPCBCR - #if SHADER_API_METAL || SHADER_API_GLES || SHADER_API_GLES3 - float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).rg); - #else - float3 ypcbcr = float3(tex2D(_MainTex, uv).r, tex2D(_ChromaTex, uv).ra); - #endif - fixed4 col = fixed4(ConvertYpCbCrToRGB(ypcbcr, _YpCbCrTransform), 1.0); -#else - fixed4 col = tex2D(_MainTex, uv); -#endif -#if APPLY_GAMMA - col.rgb = GammaToLinear(col.rgb); -#endif - -#if STEREO_DEBUG - col *= i.tint; -#endif - -#if UNITY_VERSION >= 500 - UNITY_APPLY_FOG(i.fogCoord, col); -#endif - - return fixed4(col.rgb, 1.0); - } - ENDCG - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader.meta deleted file mode 100644 index 0753cd1..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo-VR-InsideSphere.shader.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 46b84ca7ab6291e4fb6c57ac48d01e8f -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc deleted file mode 100644 index 9a3e2be..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc +++ /dev/null @@ -1,306 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2017 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if defined (SHADERLAB_GLSL) - #define INLINE - #define HALF2 vec2 - #define HALF3 vec3 - #define HALF4 vec4 - #define FLOAT2 vec2 - #define FLOAT3 vec3 - #define FLOAT4 vec4 - #define FLOAT3X3 mat3 - #define FLOAT4X4 mat4 -#else - #define INLINE inline - #define HALF2 half2 - #define HALF3 half3 - #define HALF4 half4 - #define FLOAT2 float2 - #define FLOAT3 float3 - #define FLOAT4 float4 - #define FLOAT3X3 float3x3 - #define FLOAT4X4 float4x4 -#endif - -// Specify this so Unity doesn't automatically update our shaders. -#define UNITY_SHADER_NO_UPGRADE 1 - -// We use this method so that when Unity automatically updates the shader from the old -// mul(UNITY_MATRIX_MVP.. to UnityObjectToClipPos that it only changes in one place. -INLINE FLOAT4 XFormObjectToClip(FLOAT4 vertex) -{ -#if defined(SHADERLAB_GLSL) - return gl_ModelViewProjectionMatrix * vertex; -#else -#if (UNITY_VERSION >= 560) - return UnityObjectToClipPos(vertex); -#else - return mul(UNITY_MATRIX_MVP, vertex); -#endif -#endif -} - -INLINE bool IsStereoEyeLeft(FLOAT3 worldNosePosition, FLOAT3 worldCameraRight) -{ -#if defined(FORCEEYE_LEFT) - return true; -#elif defined(FORCEEYE_RIGHT) - return false; -#elif defined(UNITY_SINGLE_PASS_STEREO) || defined (UNITY_STEREO_INSTANCING_ENABLED) - // Unity 5.4 has this new variable - return (unity_StereoEyeIndex == 0); -#elif defined (UNITY_DECLARE_MULTIVIEW) - // OVR_multiview extension - return (UNITY_VIEWID == 0); -#else - -//#if (UNITY_VERSION > 540) && defined(GOOGLEVR) && !defined(SHADERLAB_GLSL) - // Daydream support uses the skew component of the projection matrix - // (But unity_CameraProjection doesn't seem to be declared when using GLSL) - // NOTE: we've had to remove this minor optimisationg as it was causing too many isues. - // eg. Unity 5.4.1 in GLSL mode complained UNITY_VERSION and unity_CameraProjection aren't defined - //return (unity_CameraProjection[0][2] > 0.0); -//#else - // worldNosePosition is the camera positon passed in from Unity via script - // We need to determine whether _WorldSpaceCameraPos (Unity shader variable) is to the left or to the right of _cameraPosition - float dRight = distance(worldNosePosition + worldCameraRight, _WorldSpaceCameraPos); - float dLeft = distance(worldNosePosition - worldCameraRight, _WorldSpaceCameraPos); - return (dRight > dLeft); -//#endif - -#endif -} - -#if defined(STEREO_TOP_BOTTOM) || defined(STEREO_LEFT_RIGHT) -FLOAT4 GetStereoScaleOffset(bool isLeftEye, bool isYFlipped) -{ - FLOAT2 scale = FLOAT2(1.0, 1.0); - FLOAT2 offset = FLOAT2(0.0, 0.0); - - // Top-Bottom -#if defined(STEREO_TOP_BOTTOM) - - scale.y = 0.5; - offset.y = 0.0; - - if (!isLeftEye) - { - offset.y = 0.5; - } - -#if !defined(SHADERLAB_GLSL) -#if !defined(UNITY_UV_STARTS_AT_TOP) // UNITY_UV_STARTS_AT_TOP is for directx - if (!isYFlipped) - { - // Currently this only runs for Android and Windows using DirectShow - offset.y = 0.5 - offset.y; - } -#endif -#endif - - // Left-Right -#elif defined(STEREO_LEFT_RIGHT) - - scale.x = 0.5; - offset.x = 0.0; - if (!isLeftEye) - { - offset.x = 0.5; - } - -#endif - - return FLOAT4(scale, offset); -} -#endif - -#if defined(STEREO_DEBUG) -INLINE FLOAT4 GetStereoDebugTint(bool isLeftEye) -{ - FLOAT4 tint = FLOAT4(1.0, 1.0, 1.0, 1.0); - -#if defined(STEREO_TOP_BOTTOM) || defined(STEREO_LEFT_RIGHT) || defined(STEREO_CUSTOM_UV) - FLOAT4 leftEyeColor = FLOAT4(0.0, 1.0, 0.0, 1.0); // green - FLOAT4 rightEyeColor = FLOAT4(1.0, 0.0, 0.0, 1.0); // red - - if (isLeftEye) - { - tint = leftEyeColor; - } - else - { - tint = rightEyeColor; - } -#endif - -#if defined(UNITY_UV_STARTS_AT_TOP) - tint.b = 0.5; -#endif -/*#if defined(UNITY_SINGLE_PASS_STEREO) || defined(UNITY_STEREO_INSTANCING_ENABLED) || defined(UNITY_DECLARE_MULTIVIEW) - tint.b = 1.0; -#endif*/ - - return tint; -} -#endif - -FLOAT2 ScaleZoomToFit(float targetWidth, float targetHeight, float sourceWidth, float sourceHeight) -{ -#if defined(ALPHAPACK_TOP_BOTTOM) - sourceHeight *= 0.5; -#elif defined(ALPHAPACK_LEFT_RIGHT) - sourceWidth *= 0.5; -#endif - float targetAspect = targetHeight / targetWidth; - float sourceAspect = sourceHeight / sourceWidth; - FLOAT2 scale = FLOAT2(1.0, sourceAspect / targetAspect); - if (targetAspect < sourceAspect) - { - scale = FLOAT2(targetAspect / sourceAspect, 1.0); - } - return scale; -} - -FLOAT4 OffsetAlphaPackingUV(FLOAT2 texelSize, FLOAT2 uv, bool flipVertical) -{ - FLOAT4 result = uv.xyxy; - - // We don't want bilinear interpolation to cause bleeding - // when reading the pixels at the edge of the packed areas. - // So we shift the UV's by a fraction of a pixel so the edges don't get sampled. - -#if defined(ALPHAPACK_TOP_BOTTOM) - float offset = texelSize.y * 1.5; - result.y = lerp(0.0 + offset, 0.5 - offset, uv.y); - result.w = result.y + 0.5; - - if (flipVertical) - { - // Flip vertically (and offset to put back in 0..1 range) - result.yw = 1.0 - result.yw; - result.yw = result.wy; - } - else - { -#if !defined(UNITY_UV_STARTS_AT_TOP) - // For opengl we flip - result.yw = result.wy; -#endif - } - -#elif defined(ALPHAPACK_LEFT_RIGHT) - float offset = texelSize.x * 1.5; - result.x = lerp(0.0 + offset, 0.5 - offset, uv.x); - result.z = result.x + 0.5; - - if (flipVertical) - { - // Flip vertically (and offset to put back in 0..1 range) - result.yw = 1.0 - result.yw; - } - -#else - - if (flipVertical) - { - // Flip vertically (and offset to put back in 0..1 range) - result.yw = 1.0 - result.yw; - } - -#endif - - return result; -} - - -// http://entropymine.com/imageworsener/srgbformula/ -INLINE HALF3 GammaToLinear(HALF3 col) -{ -// Forced cheap version -#if defined(CHEAP_GAMMATOLINEAR) -#if defined (SHADERLAB_GLSL) - return pow(col, vec3(2.2, 2.2, 2.2)); -#else - // Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1 - return col * (col * (col * 0.305306011h + 0.682171111h) + 0.012522878h); -#endif -#else - -#if SHADER_TARGET < 30 -// Cheaper approximation -#if defined (SHADERLAB_GLSL) - return col * (col * (col * 0.305306011 + 0.682171111) + 0.012522878); -#else - return col * (col * (col * 0.305306011h + 0.682171111h) + 0.012522878h); -#endif -#else -// Accurate version - if (col.r <= 0.04045) - col.r = col.r / 12.92; - else - col.r = pow((col.r + 0.055) / 1.055, 2.4); - - if (col.g <= 0.04045) - col.g = col.g / 12.92; - else - col.g = pow((col.g + 0.055) / 1.055, 2.4); - - if (col.b <= 0.04045) - col.b = col.b / 12.92; - else - col.b = pow((col.b + 0.055) / 1.055, 2.4); -#endif -#endif - return col; -} - -INLINE HALF3 LinearToGamma(HALF3 col) -{ -// Forced cheap version -#if defined(CHEAP_GAMMATOLINEAR) -#if defined (SHADERLAB_GLSL) - return pow(col, vec3(1.0 / 2.2, 1.0 / 2.2, 1.0 / 2.2)); -#else - // Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1 - return max(1.055h * pow(col, 0.416666667h) - 0.055h, 0.0h); -#endif -#else - -#if SHADER_TARGET < 30 -// Cheaper approximation -#if defined (SHADERLAB_GLSL) - return max(1.055 * pow(col, vec3(0.416666667, 0.416666667, 0.416666667)) - 0.055, 0.0); -#else - return max(1.055h * pow(col, 0.416666667h) - 0.055h, 0.0h); -#endif -#else -// Accurate version - if (col.r <= 0.0031308) - col.r = col.r * 12.92; - else - col.r = 1.055 * pow(col.r, 0.4166667) - 0.055; - - if (col.g <= 0.0031308) - col.g = col.g * 12.92; - else - col.g = 1.055 * pow(col.g, 0.4166667) - 0.055; - - if (col.b <= 0.0031308) - col.b = col.b * 12.92; - else - col.b = 1.055 * pow(col.b, 0.4166667) - 0.055; -#endif -#endif - return col; -} - -INLINE FLOAT3 ConvertYpCbCrToRGB(FLOAT3 YpCbCr, FLOAT4X4 YpCbCrTransform) -{ -#if defined(SHADERLAB_GLSL) - return (FLOAT3X3)YpCbCrTransform * (YpCbCr + YpCbCrTransform[3].xyz); -#else - return mul((FLOAT3X3)YpCbCrTransform, YpCbCr + YpCbCrTransform[3].xyz); -#endif -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc.meta deleted file mode 100644 index 903ef78..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Resources/Shaders/AVProVideo.cginc.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 5bcf2893fead7a14a8c737d1bb6cdd09 -ShaderImporter: - defaultTextures: [] - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts.meta deleted file mode 100644 index 164cbc6..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 48d8a0fb8367d5e40b369691646ad6e3 -folderAsset: yes -timeCreated: 1438695622 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components.meta deleted file mode 100644 index 249890f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 40d7664ce355730488a96ff5305f1b5d -folderAsset: yes -timeCreated: 1438698284 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs deleted file mode 100644 index 0dcfa9e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs +++ /dev/null @@ -1,283 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Sets up a material to display the video from a MediaPlayer - /// - [AddComponentMenu("AVPro Video/Apply To Material", 300)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class ApplyToMaterial : MonoBehaviour - { - public Vector2 _offset = Vector2.zero; - public Vector2 _scale = Vector2.one; - public Material _material; - public string _texturePropertyName; - public MediaPlayer _media; - public Texture2D _defaultTexture; - - private Texture _originalTexture; - private Vector2 _originalScale = Vector2.one; - private Vector2 _originalOffset = Vector2.zero; - - private static int _propStereo; - private static int _propAlphaPack; - private static int _propApplyGamma; - private static int _propLayout; - - private const string PropChromaTexName = "_ChromaTex"; - private static int _propChromaTex; - - private const string PropYpCbCrTransformName = "_YpCbCrTransform"; - private static int _propYpCbCrTransform; - - private const string PropUseYpCbCrName = "_UseYpCbCr"; - private static int _propUseYpCbCr; - - private void Awake() - { - if (_propStereo == 0) - { - _propStereo = Shader.PropertyToID("Stereo"); - } - if (_propAlphaPack == 0) - { - _propAlphaPack = Shader.PropertyToID("AlphaPack"); - } - if (_propApplyGamma == 0) - { - _propApplyGamma = Shader.PropertyToID("_ApplyGamma"); - } - if (_propLayout == 0) - { - _propLayout = Shader.PropertyToID("Layout"); - } - if (_propChromaTex == 0) - { - _propChromaTex = Shader.PropertyToID(PropChromaTexName); - } - if (_propYpCbCrTransform == 0) - { - _propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); - } - if (_propUseYpCbCr == 0) - { - _propUseYpCbCr = Shader.PropertyToID(PropUseYpCbCrName); - } - } - - // We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() - private void LateUpdate() - { - bool applied = false; - - if (_media != null && _media.TextureProducer != null) - { - int planeCount = _media.m_Resample ? 1 : _media.TextureProducer.GetTextureCount(); - for (int plane = 0; plane < planeCount; ++plane) - { - Texture resamplerTex = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[plane]; - Texture texture = _media.m_Resample ? resamplerTex : _media.TextureProducer.GetTexture(plane); - if (texture != null) - { - ApplyMapping(texture, _media.TextureProducer.RequiresVerticalFlip(), plane); - applied = true; - } - } - } - - if (!applied) - { - if (_material != null && _material.HasProperty(_propUseYpCbCr)) - { - _material.DisableKeyword("USE_YPCBCR"); - } - ApplyMapping(_defaultTexture, false); - } - } - - private void ApplyMapping(Texture texture, bool requiresYFlip, int plane = 0) - { - if (_material != null) - { - if (plane == 0) - { - if (string.IsNullOrEmpty(_texturePropertyName)) - { - _material.mainTexture = texture; - - if (texture != null) - { - if (requiresYFlip) - { - _material.mainTextureScale = new Vector2(_scale.x, -_scale.y); - _material.mainTextureOffset = Vector2.up + _offset; - } - else - { - _material.mainTextureScale = _scale; - _material.mainTextureOffset = _offset; - } - } - } - else - { - _material.SetTexture(_texturePropertyName, texture); - - if (texture != null) - { - if (requiresYFlip) - { - _material.SetTextureScale(_texturePropertyName, new Vector2(_scale.x, -_scale.y)); - _material.SetTextureOffset(_texturePropertyName, Vector2.up + _offset); - } - else - { - _material.SetTextureScale(_texturePropertyName, _scale); - _material.SetTextureOffset(_texturePropertyName, _offset); - } - } - } - } - else if (plane == 1) - { - if (_material.HasProperty(_propUseYpCbCr)) - { - _material.EnableKeyword("USE_YPCBCR"); - } - if (_material.HasProperty(_propChromaTex)) - { - _material.SetTexture(_propChromaTex, texture); - _material.SetMatrix(_propYpCbCrTransform, _media.TextureProducer.GetYpCbCrTransform()); - if (texture != null) - { - #if UNITY_5_6_OR_NEWER - if (requiresYFlip) - { - _material.SetTextureScale(_propChromaTex, new Vector2(_scale.x, -_scale.y)); - _material.SetTextureOffset(_propChromaTex, Vector2.up + _offset); - } - else - { - _material.SetTextureScale(_propChromaTex, _scale); - _material.SetTextureOffset(_propChromaTex, _offset); - } - #else - if (requiresYFlip) - { - _material.SetTextureScale(PropChromaTexName, new Vector2(_scale.x, -_scale.y)); - _material.SetTextureOffset(PropChromaTexName, Vector2.up + _offset); - } - else - { - _material.SetTextureScale(PropChromaTexName, _scale); - _material.SetTextureOffset(PropChromaTexName, _offset); - } - #endif - } - } - } - - if (_media != null) - { - // Apply changes for layout - if (_material.HasProperty(_propLayout)) - { - Helper.SetupLayoutMaterial(_material, _media.VideoLayoutMapping); - } - // Apply changes for stereo videos - if (_material.HasProperty(_propStereo)) - { - Helper.SetupStereoMaterial(_material, _media.m_StereoPacking, _media.m_DisplayDebugStereoColorTint); - } - // Apply changes for alpha videos - if (_material.HasProperty(_propAlphaPack)) - { - Helper.SetupAlphaPackedMaterial(_material, _media.m_AlphaPacking); - } -#if UNITY_PLATFORM_SUPPORTS_LINEAR - // Apply gamma - if (_material.HasProperty(_propApplyGamma) && _media.Info != null) - { - Helper.SetupGammaMaterial(_material, _media.Info.PlayerSupportsLinearColorSpace()); - } -#else - _propApplyGamma |= 0; -#endif - } - } - } - - private void Start() - { - SaveProperties(); - LateUpdate(); - } - - private void OnEnable() - { - SaveProperties(); - LateUpdate(); - } - - private void OnDisable() - { - RestoreProperties(); - } - - private void SaveProperties() - { - if (_material != null) - { - if (string.IsNullOrEmpty(_texturePropertyName)) - { - _originalTexture = _material.mainTexture; - _originalScale = _material.mainTextureScale; - _originalOffset = _material.mainTextureOffset; - } - else - { - _originalTexture = _material.GetTexture(_texturePropertyName); - _originalScale = _material.GetTextureScale(_texturePropertyName); - _originalOffset = _material.GetTextureOffset(_texturePropertyName); - } - } - } - - private void RestoreProperties() - { - if (_material != null) - { - if (string.IsNullOrEmpty(_texturePropertyName)) - { - _material.mainTexture = _originalTexture; - _material.mainTextureScale = _originalScale; - _material.mainTextureOffset = _originalOffset; - } - else - { - _material.SetTexture(_texturePropertyName, _originalTexture); - _material.SetTextureScale(_texturePropertyName, _originalScale); - _material.SetTextureOffset(_texturePropertyName, _originalOffset); - } - } - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs.meta deleted file mode 100644 index de75a96..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMaterial.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d2feedce2e2e63647b8f875ec0894a15 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs deleted file mode 100644 index 74e0e95..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs +++ /dev/null @@ -1,384 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Sets up a mesh to display the video from a MediaPlayer - /// - [AddComponentMenu("AVPro Video/Apply To Mesh", 300)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class ApplyToMesh : MonoBehaviour - { - // TODO: add specific material / material index to target in the mesh if there are multiple materials - - [Header("Media Source")] - - [SerializeField] - private MediaPlayer _media = null; - - public MediaPlayer Player - { - get { return _media; } - set { ChangeMediaPlayer(value); } - } - - [Tooltip("Default texture to display when the video texture is preparing")] - [SerializeField] - private Texture2D _defaultTexture = null; - - public Texture2D DefaultTexture - { - get { return _defaultTexture; } - set { if (_defaultTexture != value) { _defaultTexture = value; _isDirty = true; } } - } - - [Space(8f)] - [Header("Renderer Target")] - - [SerializeField] - private Renderer _mesh = null; - - public Renderer MeshRenderer - { - get { return _mesh; } - set { if (_mesh != value) { _mesh = value; _isDirty = true; } } - } - - [SerializeField] - private string _texturePropertyName = "_MainTex"; - - public string TexturePropertyName - { - get { return _texturePropertyName; } - set - { - if (_texturePropertyName != value) - { - _texturePropertyName = value; -#if UNITY_5_6_OR_NEWER - _propTexture = Shader.PropertyToID(_texturePropertyName); -#endif - _isDirty = true; - } - } - } - - [SerializeField] - private Vector2 _offset = Vector2.zero; - - public Vector2 Offset - { - get { return _offset; } - set { if (_offset != value) { _offset = value; _isDirty = true; } } - } - - [SerializeField] - private Vector2 _scale = Vector2.one; - - public Vector2 Scale - { - get { return _scale; } - set { if (_scale != value) { _scale = value; _isDirty = true; } } - } - - private bool _isDirty = false; - private Texture _lastTextureApplied; -#if UNITY_5_6_OR_NEWER - private int _propTexture; -#endif - - private static int _propStereo; - private static int _propAlphaPack; - private static int _propApplyGamma; - private static int _propLayout; - - private const string PropChromaTexName = "_ChromaTex"; - private static int _propChromaTex; - private const string PropYpCbCrTransformName = "_YpCbCrTransform"; - private static int _propYpCbCrTransform; - private const string PropUseYpCbCrName = "_UseYpCbCr"; - private static int _propUseYpCbCr; - - private void Awake() - { - if (_propStereo == 0) - { - _propStereo = Shader.PropertyToID("Stereo"); - } - if (_propAlphaPack == 0) - { - _propAlphaPack = Shader.PropertyToID("AlphaPack"); - } - if (_propApplyGamma == 0) - { - _propApplyGamma = Shader.PropertyToID("_ApplyGamma"); - } - if (_propLayout == 0) - { - _propLayout = Shader.PropertyToID("Layout"); - } - if (_propChromaTex == 0) - { - _propChromaTex = Shader.PropertyToID(PropChromaTexName); - } - if (_propYpCbCrTransform == 0) - { - _propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); - } - if (_propUseYpCbCr == 0) - { - _propUseYpCbCr = Shader.PropertyToID(PropUseYpCbCrName); - } - - if (_media != null) - { - _media.Events.AddListener(OnMediaPlayerEvent); - } - } - - public void ForceUpdate() - { - _isDirty = true; - LateUpdate(); - } - - // Callback function to handle events - private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.FirstFrameReady: - case MediaPlayerEvent.EventType.PropertiesChanged: - ForceUpdate(); - break; - } - } - - private void ChangeMediaPlayer(MediaPlayer player) - { - if (_media != player) - { - if (_media != null) - { - _media.Events.RemoveListener(OnMediaPlayerEvent); - } - _media = player; - if (_media != null) - { - _media.Events.AddListener(OnMediaPlayerEvent); - } - _isDirty = true; - } - } - - // We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() - private void LateUpdate() - { - bool applied = false; - - // Try to apply texture from media - if (_media != null && _media.TextureProducer != null) - { - Texture resamplerTex = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[0]; - Texture texture = _media.m_Resample ? resamplerTex : _media.TextureProducer.GetTexture(0); - if (texture != null) - { - // Check for changing texture - if (texture != _lastTextureApplied) - { - _isDirty = true; - } - - if (_isDirty) - { - int planeCount = _media.m_Resample ? 1 : _media.TextureProducer.GetTextureCount(); - for (int plane = 0; plane < planeCount; plane++) - { - Texture resamplerTexPlane = _media.FrameResampler == null || _media.FrameResampler.OutputTexture == null ? null : _media.FrameResampler.OutputTexture[plane]; - texture = _media.m_Resample ? resamplerTexPlane : _media.TextureProducer.GetTexture(plane); - if (texture != null) - { - ApplyMapping(texture, _media.TextureProducer.RequiresVerticalFlip(), plane); - } - } - } - applied = true; - } - } - - // If the media didn't apply a texture, then try to apply the default texture - if (!applied) - { - if (_defaultTexture != _lastTextureApplied) - { - _isDirty = true; - } - if (_isDirty) - { - ApplyMapping(_defaultTexture, false); - } - } - } - - private void ApplyMapping(Texture texture, bool requiresYFlip, int plane = 0) - { - if (_mesh != null) - { - _isDirty = false; - - Material[] meshMaterials = _mesh.materials; - if (meshMaterials != null) - { - for (int i = 0; i < meshMaterials.Length; i++) - { - Material mat = meshMaterials[i]; - if (mat != null) - { - if (plane == 0) - { -#if UNITY_5_6_OR_NEWER - mat.SetTexture(_propTexture, texture); -#else - mat.SetTexture(_texturePropertyName, texture); -#endif - - _lastTextureApplied = texture; - - if (texture != null) - { -#if UNITY_5_6_OR_NEWER - if (requiresYFlip) - { - mat.SetTextureScale(_propTexture, new Vector2(_scale.x, -_scale.y)); - mat.SetTextureOffset(_propTexture, Vector2.up + _offset); - } - else - { - mat.SetTextureScale(_propTexture, _scale); - mat.SetTextureOffset(_propTexture, _offset); - } -#else - if (requiresYFlip) - { - mat.SetTextureScale(_texturePropertyName, new Vector2(_scale.x, -_scale.y)); - mat.SetTextureOffset(_texturePropertyName, Vector2.up + _offset); - } - else - { - mat.SetTextureScale(_texturePropertyName, _scale); - mat.SetTextureOffset(_texturePropertyName, _offset); - } -#endif - } - } - else if (plane == 1) - { - if (mat.HasProperty(_propUseYpCbCr) && mat.HasProperty(_propChromaTex)) - { - mat.EnableKeyword("USE_YPCBCR"); - mat.SetTexture(_propChromaTex, texture); - mat.SetMatrix(_propYpCbCrTransform, _media.TextureProducer.GetYpCbCrTransform()); -#if UNITY_5_6_OR_NEWER - if (requiresYFlip) - { - mat.SetTextureScale(_propChromaTex, new Vector2(_scale.x, -_scale.y)); - mat.SetTextureOffset(_propChromaTex, Vector2.up + _offset); - } - else - { - mat.SetTextureScale(_propChromaTex, _scale); - mat.SetTextureOffset(_propChromaTex, _offset); - } -#else - if (requiresYFlip) - { - mat.SetTextureScale(PropChromaTexName, new Vector2(_scale.x, -_scale.y)); - mat.SetTextureOffset(PropChromaTexName, Vector2.up + _offset); - } - else - { - mat.SetTextureScale(PropChromaTexName, _scale); - mat.SetTextureOffset(PropChromaTexName, _offset); - } -#endif - } - } - - if (_media != null) - { - // Apply changes for layout - if (mat.HasProperty(_propLayout)) - { - Helper.SetupLayoutMaterial(mat, _media.VideoLayoutMapping); - } - // Apply changes for stereo videos - if (mat.HasProperty(_propStereo)) - { - Helper.SetupStereoMaterial(mat, _media.m_StereoPacking, _media.m_DisplayDebugStereoColorTint); - } - // Apply changes for alpha videos - if (mat.HasProperty(_propAlphaPack)) - { - Helper.SetupAlphaPackedMaterial(mat, _media.m_AlphaPacking); - } -#if UNITY_PLATFORM_SUPPORTS_LINEAR - // Apply gamma - if (mat.HasProperty(_propApplyGamma) && _media.Info != null) - { - Helper.SetupGammaMaterial(mat, _media.Info.PlayerSupportsLinearColorSpace()); - } -#else - _propApplyGamma |= 0; -#endif - } - } - } - } - } - } - - private void OnEnable() - { - if (_mesh == null) - { - _mesh = this.GetComponent(); - if (_mesh == null) - { - Debug.LogWarning("[AVProVideo] No mesh renderer set or found in gameobject"); - } - } - -#if UNITY_5_6_OR_NEWER - _propTexture = Shader.PropertyToID(_texturePropertyName); -#endif - - _isDirty = true; - if (_mesh != null) - { - LateUpdate(); - } - } - - private void OnDisable() - { - ApplyMapping(_defaultTexture, false); - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs.meta deleted file mode 100644 index 536c00f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/ApplyToMesh.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f6d1977a52888584496b1acc7e998011 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs deleted file mode 100644 index 7ca1c3f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs +++ /dev/null @@ -1,121 +0,0 @@ -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// This is an experimental feature and only works in Windows currently - /// Audio is grabbed from the MediaPlayer and rendered via Unity - /// This allows audio to have 3D spatial control, effects applied and to be spatialised for VR - /// - [RequireComponent(typeof(AudioSource))] - [AddComponentMenu("AVPro Video/Audio Output", 400)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class AudioOutput : MonoBehaviour - { - public enum AudioOutputMode - { - Single, - Multiple - } - - public AudioOutputMode _audioOutputMode = AudioOutputMode.Multiple; - - [SerializeField] - private MediaPlayer _mediaPlayer; - - private AudioSource _audioSource; - - [HideInInspector] - public int _channelMask = -1; - - void Awake() - { - _audioSource = this.GetComponent(); - } - - void Start() - { - ChangeMediaPlayer(_mediaPlayer); -#if (!UNITY_5 && !UNITY_5_4_OR_NEWER) - Debug.LogWarning("[AVProVideo] AudioOutput component requires Unity 5.x or above", this); -#endif - } - - void OnDestroy() - { - ChangeMediaPlayer(null); - } - - void Update() - { - if (_mediaPlayer != null && _mediaPlayer.Control != null && _mediaPlayer.Control.IsPlaying()) - { - ApplyAudioSettings(_mediaPlayer, _audioSource); - } - } - - public void ChangeMediaPlayer(MediaPlayer newPlayer) - { - // When changing the media player, handle event subscriptions - if (_mediaPlayer != null) - { - _mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - _mediaPlayer = null; - } - - _mediaPlayer = newPlayer; - if (_mediaPlayer != null) - { - _mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - } - - // Callback function to handle events - private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Closing: - _audioSource.Stop(); - break; - case MediaPlayerEvent.EventType.Started: - ApplyAudioSettings(_mediaPlayer, _audioSource); - _audioSource.Play(); - break; - } - } - - private static void ApplyAudioSettings(MediaPlayer player, AudioSource audioSource) - { - // Apply volume and mute from the MediaPlayer to the AudioSource - if (player != null && player.Control != null) - { - float volume = player.Control.GetVolume(); - bool isMuted = player.Control.IsMuted(); - float rate = player.Control.GetPlaybackRate(); - audioSource.volume = volume; - audioSource.mute = isMuted; - audioSource.pitch = rate; - } - } - -#if (UNITY_5 || UNITY_5_4_OR_NEWER) -#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_WSA_10_0 || UNITY_WINRT_8_1 - void OnAudioFilterRead(float[] data, int channels) - { - AudioOutputManager.Instance.RequestAudio(this, _mediaPlayer, data, _channelMask, channels, _audioOutputMode); - } -#endif -#endif - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs.meta deleted file mode 100644 index 5dbcd4e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/AudioOutput.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3b05a64a5de3f8546bf586f42e37b979 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs deleted file mode 100644 index 9d64727..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs +++ /dev/null @@ -1,397 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Builds a cube mesh for displaying a 360 degree "Cubemap 3x2 facebook layout" texture in VR - /// - [RequireComponent(typeof(MeshRenderer))] - [RequireComponent(typeof(MeshFilter))] - //[ExecuteInEditMode] - [AddComponentMenu("AVPro Video/Cubemap Cube (VR)", 400)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class CubemapCube : MonoBehaviour - { - public enum Layout - { - FacebookTransform32, // Layout for Facebooks FFMPEG Transform plugin with 3:2 layout - Facebook360Capture, // Layout for Facebooks 360-Capture-SDK - } - - private Mesh _mesh; - protected MeshRenderer _renderer; - - [SerializeField] - protected Material _material = null; - - [SerializeField] - private MediaPlayer _mediaPlayer = null; - - // This value comes from the facebook transform ffmpeg filter and is used to prevent seams appearing along the edges due to bilinear filtering - [SerializeField] - private float expansion_coeff = 1.01f; - - [SerializeField] - private Layout _layout = Layout.FacebookTransform32; - - private Texture _texture; - private bool _verticalFlip; - private int _textureWidth; - private int _textureHeight; - private static int _propApplyGamma; - - private static int _propUseYpCbCr; - private const string PropChromaTexName = "_ChromaTex"; - private static int _propChromaTex; - private const string PropYpCbCrTransformName = "_YpCbCrTransform"; - private static int _propYpCbCrTransform; - - public MediaPlayer Player - { - set { _mediaPlayer = value; } - get { return _mediaPlayer; } - } - - - void Awake() - { - if (_propApplyGamma == 0) - { - _propApplyGamma = Shader.PropertyToID("_ApplyGamma"); - } - if (_propUseYpCbCr == 0) - _propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); - if (_propChromaTex == 0) - _propChromaTex = Shader.PropertyToID(PropChromaTexName); - if (_propYpCbCrTransform == 0) - _propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); - } - - void Start() - { - if (_mesh == null) - { - _mesh = new Mesh(); - _mesh.MarkDynamic(); - MeshFilter filter = this.GetComponent(); - if (filter != null) - { - filter.mesh = _mesh; - } - _renderer = this.GetComponent(); - if (_renderer != null) - { - _renderer.material = _material; - } - BuildMesh(); - } - } - - void OnDestroy() - { - if (_mesh != null) - { - MeshFilter filter = this.GetComponent(); - if (filter != null) - { - filter.mesh = null; - } - -#if UNITY_EDITOR - Mesh.DestroyImmediate(_mesh); -#else - Mesh.Destroy(_mesh); -#endif - _mesh = null; - } - - if (_renderer != null) - { - _renderer.material = null; - _renderer = null; - } - } - - // We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() - void LateUpdate() - { - if (Application.isPlaying) - { - Texture texture = null; - bool requiresVerticalFlip = false; - if (_mediaPlayer != null && _mediaPlayer.Control != null) - { - if (_mediaPlayer.TextureProducer != null) - { - Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[0]; - texture = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(); - requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); - - // Detect changes that we need to apply to the material/mesh - if (_texture != texture || - _verticalFlip != requiresVerticalFlip || - (texture != null && (_textureWidth != texture.width || _textureHeight != texture.height)) - ) - { - _texture = texture; - if (texture != null) - { - UpdateMeshUV(texture.width, texture.height, requiresVerticalFlip); - } - } - -#if UNITY_PLATFORM_SUPPORTS_LINEAR - // Apply gamma - if (_renderer.material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) - { - Helper.SetupGammaMaterial(_renderer.material, _mediaPlayer.Info.PlayerSupportsLinearColorSpace()); - } -#endif - if (_renderer.material.HasProperty(_propUseYpCbCr) && _mediaPlayer.TextureProducer.GetTextureCount() == 2) - { - _renderer.material.EnableKeyword("USE_YPCBCR"); - Texture resamplerTexYCRCB = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; - _renderer.material.SetTexture(_propChromaTex, _mediaPlayer.m_Resample ? resamplerTexYCRCB : _mediaPlayer.TextureProducer.GetTexture(1)); - _renderer.material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); - } - } - - _renderer.material.mainTexture = _texture; - } - else - { - _renderer.material.mainTexture = null; - } - } - } - - private void BuildMesh() - { - Vector3 offset = new Vector3(-0.5f, -0.5f, -0.5f); - Vector3[] v = new Vector3[] - { - // Left - new Vector3(0f,-1f,0f) - offset, - new Vector3(0f,0f,0f) - offset, - new Vector3(0f,0f,-1f) - offset, - new Vector3(0f,-1f,-1f) - offset, - // Front - new Vector3(0f,0f,0f) - offset, - new Vector3(-1f,0f,0f) - offset, - new Vector3(-1f,0f,-1f) - offset, - new Vector3(0f,0f,-1f) - offset, - // Right - new Vector3(-1f,0f,0f) - offset, - new Vector3(-1f,-1f,0f) - offset, - new Vector3(-1f,-1f,-1f) - offset, - new Vector3(-1f,0f,-1f) - offset, - // Back - new Vector3(-1f,-1f,0f) - offset, - new Vector3(0f,-1f,0f) - offset, - new Vector3(0f,-1f,-1f) - offset, - new Vector3(-1f,-1f,-1f) - offset, - // Bottom - new Vector3(0f,-1f,-1f) - offset, - new Vector3(0f,0f,-1f) - offset, - new Vector3(-1f,0f,-1f) - offset, - new Vector3(-1f,-1f,-1f) - offset, - // Top - new Vector3(-1f,-1f,0f) - offset, - new Vector3(-1f,0f,0f) - offset, - new Vector3(0f,0f,0f) - offset, - new Vector3(0f,-1f,0f) - offset, - }; - - Matrix4x4 rot = Matrix4x4.TRS(Vector3.zero, Quaternion.AngleAxis(-90f, Vector3.right), Vector3.one); - for (int i = 0; i < v.Length; i++) - { - v[i] = rot.MultiplyPoint(v[i]); - } - - _mesh.vertices = v; - - _mesh.triangles = new int[] - { - 0,1,2, - 0,2,3, - 4,5,6, - 4,6,7, - 8,9,10, - 8,10,11, - 12,13,14, - 12,14,15, - 16,17,18, - 16,18,19, - 20,21,22, - 20,22,23, - }; - - _mesh.normals = new Vector3[] - { - // Left - new Vector3(-1f,0f,0f), - new Vector3(-1f,0f,0f), - new Vector3(-1f,0f,0f), - new Vector3(-1f,0f,0f), - // Front - new Vector3(0f,-1f,0f), - new Vector3(0f,-1f,0f), - new Vector3(0f,-1f,0f), - new Vector3(0f,-1f,0f), - // Right - new Vector3(1f,0f,0f), - new Vector3(1f,0f,0f), - new Vector3(1f,0f,0f), - new Vector3(1f,0f,0f), - // Back - new Vector3(0f,1f,0f), - new Vector3(0f,1f,0f), - new Vector3(0f,1f,0f), - new Vector3(0f,1f,0f), - // Bottom - new Vector3(0f,0f,1f), - new Vector3(0f,0f,1f), - new Vector3(0f,0f,1f), - new Vector3(0f,0f,1f), - // Top - new Vector3(0f,0f,-1f), - new Vector3(0f,0f,-1f), - new Vector3(0f,0f,-1f), - new Vector3(0f,0f,-1f) - }; - - UpdateMeshUV(512, 512, false); - } - - private void UpdateMeshUV(int textureWidth, int textureHeight, bool flipY) - { - _textureWidth = textureWidth; - _textureHeight = textureHeight; - _verticalFlip = flipY; - - float texWidth = textureWidth; - float texHeight = textureHeight; - - float blockWidth = texWidth / 3f; - float pixelOffset = Mathf.Floor(((expansion_coeff * blockWidth) - blockWidth) / 2f); - - float wO = pixelOffset / texWidth; - float hO = pixelOffset / texHeight; - - const float third = 1f / 3f; - const float half = 0.5f; - - Vector2[] uv = null; - if (_layout == Layout.Facebook360Capture) - { - uv = new Vector2[] - { - //front (texture middle top) correct left - new Vector2(third+wO, half-hO), - new Vector2((third*2f)-wO, half-hO), - new Vector2((third*2f)-wO, 0f+hO), - new Vector2(third+wO, 0f+hO), - - //left (texture middle bottom) correct front - new Vector2(third+wO,1f-hO), - new Vector2((third*2f)-wO, 1f-hO), - new Vector2((third*2f)-wO, half+hO), - new Vector2(third+wO, half+hO), - - //bottom (texture left top) correct right - new Vector2(0f+wO, half-hO), - new Vector2(third-wO, half-hO), - new Vector2(third-wO, 0f+hO), - new Vector2(0f+wO, 0f+hO), - - //top (texture right top) correct rear - new Vector2((third*2f)+wO, 1f-hO), - new Vector2(1f-wO, 1f-hO), - new Vector2(1f-wO, half+hO), - new Vector2((third*2f)+wO, half+hO), - - //back (texture right bottom) correct ground - new Vector2((third*2f)+wO, 0f+hO), - new Vector2((third*2f)+wO, half-hO), - new Vector2(1f-wO, half-hO), - new Vector2(1f-wO, 0f+hO), - - //right (texture left bottom) correct sky - new Vector2(third-wO, 1f-hO), - new Vector2(third-wO, half+hO), - new Vector2(0f+wO, half+hO), - new Vector2(0f+wO, 1f-hO), - }; - } - else if (_layout == Layout.FacebookTransform32) - { - uv = new Vector2[] - { - //left - new Vector2(third+wO,1f-hO), - new Vector2((third*2f)-wO, 1f-hO), - new Vector2((third*2f)-wO, half+hO), - new Vector2(third+wO, half+hO), - - //front - new Vector2(third+wO, half-hO), - new Vector2((third*2f)-wO, half-hO), - new Vector2((third*2f)-wO, 0f+hO), - new Vector2(third+wO, 0f+hO), - - //right - new Vector2(0f+wO, 1f-hO), - new Vector2(third-wO, 1f-hO), - new Vector2(third-wO, half+hO), - new Vector2(0f+wO, half+hO), - - //back - new Vector2((third*2f)+wO, half-hO), - new Vector2(1f-wO, half-hO), - new Vector2(1f-wO, 0f+hO), - new Vector2((third*2f)+wO, 0f+hO), - - //bottom - new Vector2(0f+wO, 0f+hO), - new Vector2(0f+wO, half-hO), - new Vector2(third-wO, half-hO), - new Vector2(third-wO, 0f+hO), - - //top - new Vector2(1f-wO, 1f-hO), - new Vector2(1f-wO, half+hO), - new Vector2((third*2f)+wO, half+hO), - new Vector2((third*2f)+wO, 1f-hO) - }; - } - - if (flipY) - { - for (int i = 0; i < uv.Length; i++) - { - uv[i].y = 1f - uv[i].y; - } - } - - _mesh.uv = uv; - _mesh.UploadMeshData(false); - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs.meta deleted file mode 100644 index 65f2b7b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/CubemapCube.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 683e7713922f8044c81bf497a0b5887e -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs deleted file mode 100644 index df89b17..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs +++ /dev/null @@ -1,271 +0,0 @@ -//#define AVPROVIDEO_DISABLE_DEBUG_GUI // INTERNAL TESTING -//#define AVPROVIDEO_DEBUG_DISPLAY_EVENTS // DEV FEATURE: show event logs in the gui display -//#define AVPROVIDEO_DEBUG_FRAMESYNC // INTERNAL TESTING - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Uses IMGUI to display a UI to show information about the MediaPlayer - /// - [AddComponentMenu("AVPro Video/Debug Overlay", -99)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class DebugOverlay : MonoBehaviour - { - [SerializeField] - private MediaPlayer _mediaPlayer = null; - -#pragma warning disable 414 - [SerializeField] - private int _guiDepth = -1000; - - [SerializeField] - private float _displaySize = 1f; - - private int _debugOverlayCount; -#pragma warning restore 414 - - [SerializeField] - private bool _displayControls = true; - - public bool DisplayControls - { - get { return _displayControls; } - set { _displayControls = value; } - } - - public MediaPlayer CurrentMediaPlayer - { - get - { - return _mediaPlayer; - } - set - { - if (_mediaPlayer != value) - { -#if AVPROVIDEO_DEBUG_DISPLAY_EVENTS - if (_mediaPlayer != null) - { - _mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } -#endif - _mediaPlayer = value; - } - } - } - - private const int s_GuiStartWidth = 10; - private const int s_GuiWidth = 180; -#if AVPROVIDEO_DISABLE_DEBUG_GUI && !UNITY_EDITOR -#else - private int m_GuiPositionX = s_GuiStartWidth; -#endif - - private void SetGuiPositionFromVideoIndex(int index) - { -#if AVPROVIDEO_DISABLE_DEBUG_GUI && !UNITY_EDITOR -#else - m_GuiPositionX = Mathf.FloorToInt((s_GuiStartWidth * _displaySize) + (s_GuiWidth * index * _displaySize)); -#endif - } - -#if AVPROVIDEO_DEBUG_FRAMESYNC - private int _lastFrameCount = 0; - private int _sameFrameCount = 1; - - public int SameFrameCount - { - get { return _sameFrameCount; } - } - - private void UpdateFrameSyncDebugging() - { - int frameCount = TextureProducer.GetTextureFrameCount(); - if (frameCount == _lastFrameCount) - { - _sameFrameCount++; - } - else - { - _sameFrameCount = 1; - } - _lastFrameCount = frameCount; - } -#endif - -#if AVPROVIDEO_DEBUG_DISPLAY_EVENTS - private Queue _eventLog = new Queue(8); - private float _eventTimer = 1f; - - private void AddEvent(MediaPlayerEvent.EventType et) - { - Helper.LogInfo("[MediaPlayer] Event: " + et.ToString(), this); - _eventLog.Enqueue(et.ToString()); - if (_eventLog.Count > 5) - { - _eventLog.Dequeue(); - _eventTimer = 1f; - } - } - - private void UpdateEventLogs() - { - if (_eventLog != null && _eventLog.Count > 0) - { - _eventTimer -= Time.deltaTime; - if (_eventTimer < 0f) - { - _eventLog.Dequeue(); - _eventTimer = 1f; - } - } - } - - // Callback function to handle events - private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - AddEvent(et); - } -#endif - - private void Update() - { - _debugOverlayCount = 0; -#if AVPROVIDEO_DISABLE_DEBUG_GUI - // Stub code so that the variables are used and don't produce a warning - _guiDepth = -1000; - _displaySize = 1f; - _debugOverlayCount = 0; -#endif - } - -#if AVPROVIDEO_DISABLE_DEBUG_GUI && !UNITY_EDITOR -#else - void OnGUI() - { - if (Event.current.type == EventType.Layout) - { - SetGuiPositionFromVideoIndex(_debugOverlayCount++); - } - - if (_mediaPlayer != null && _mediaPlayer.Info != null) - { - IMediaInfo info = _mediaPlayer.Info; - IMediaControl control = _mediaPlayer.Control; - IMediaProducer textureProducer = _mediaPlayer.TextureProducer; - - GUI.depth = _guiDepth; - GUI.matrix = Matrix4x4.TRS(new Vector3(m_GuiPositionX, 10f, 0f), Quaternion.identity, new Vector3(_displaySize, _displaySize, 1.0f)); - - GUILayout.BeginVertical("box", GUILayout.MaxWidth(s_GuiWidth)); - GUILayout.Label(System.IO.Path.GetFileName(_mediaPlayer.m_VideoPath)); - GUILayout.Label("Dimensions: " + info.GetVideoWidth() + "x" + info.GetVideoHeight() + "@" + info.GetVideoFrameRate().ToString("F2")); - GUILayout.Label("Time: " + (control.GetCurrentTimeMs() * 0.001f).ToString("F1") + "s / " + (info.GetDurationMs() * 0.001f).ToString("F1") + "s"); - GUILayout.Label("Rate: " + info.GetVideoDisplayRate().ToString("F2") + "Hz"); - - if (_mediaPlayer.m_Resample && _mediaPlayer.FrameResampler != null) - { - Resampler resampler = _mediaPlayer.FrameResampler; - GUILayout.BeginVertical(); - GUILayout.Label("Resampler Info:"); - GUILayout.Label("Resampler timestamp: " + resampler.TextureTimeStamp); - GUILayout.Label("Resampler frames dropped: " + resampler.DroppedFrames); - GUILayout.Label("Resampler frame displayed timer: " + resampler.FrameDisplayedTimer); - GUILayout.EndVertical(); - } - - if (textureProducer != null && textureProducer.GetTexture() != null) - { -#if REAL_ANDROID - // In OES mode we can't display the texture without using a special shader, so just don't display it - if (!_optionsAndroid.useFastOesPath) -#endif - { - // Show texture without and with alpha blending - GUILayout.BeginHorizontal(); - Rect r1 = GUILayoutUtility.GetRect(32f, 32f); - GUILayout.Space(8f); - Rect r2 = GUILayoutUtility.GetRect(32f, 32f); - Matrix4x4 prevMatrix = GUI.matrix; - if (textureProducer.RequiresVerticalFlip()) - { - GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, r1.y + (r1.height / 2f))); - } - GUI.DrawTexture(r1, textureProducer.GetTexture(), ScaleMode.ScaleToFit, false); - GUI.DrawTexture(r2, textureProducer.GetTexture(), ScaleMode.ScaleToFit, true); - GUI.matrix = prevMatrix; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - } - } - - if (_displayControls) - { - GUILayout.BeginHorizontal(); - if (control.IsPaused()) - { - if (GUILayout.Button("Play", GUILayout.Width(50))) - { - control.Play(); - } - } - else - { - if (GUILayout.Button("Pause", GUILayout.Width(50))) - { - control.Pause(); - } - } - - float duration = info.GetDurationMs(); - float time = control.GetCurrentTimeMs(); - float newTime = GUILayout.HorizontalSlider(time, 0f, duration); - if (newTime != time) - { - control.Seek(newTime); - } - GUILayout.EndHorizontal(); - } - -#if AVPROVIDEO_DEBUG_DISPLAY_EVENTS - // Dirty code to hack in an event monitor - if (Event.current.type == EventType.Repaint) - { - _mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - _mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - UpdateEventLogs(); - } - - if (_eventLog != null && _eventLog.Count > 0) - { - GUILayout.Label("Recent Events: "); - GUILayout.BeginVertical("box"); - int eventIndex = 0; - foreach (string eventString in _eventLog) - { - GUI.color = Color.white; - if (eventIndex == 0) - { - GUI.color = new Color(1f, 1f, 1f, _eventTimer); - } - GUILayout.Label(eventString); - eventIndex++; - } - GUILayout.EndVertical(); - GUI.color = Color.white; - } -#endif - GUILayout.EndVertical(); - } - } -#endif - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs.meta deleted file mode 100644 index 97b0e77..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DebugOverlay.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7954bb33da8af354bbe3cdece033bfdc -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs deleted file mode 100644 index f539622..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Draws video over the whole background using the special "background" tag on the shader. - /// Useful for augmented reality. - /// NOTE: This doesn't work with the camera clear mode set to 'skybox' - /// - [AddComponentMenu("AVPro Video/Display Background", 200)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - [ExecuteInEditMode] - public class DisplayBackground : MonoBehaviour - { - public IMediaProducer _source; - - public Texture2D _texture; - public Material _material; - - //------------------------------------------------------------------------- - - void OnRenderObject() - { - if (_material == null || _texture == null) - return; - - Vector4 uv = new Vector4(0f, 0f, 1f, 1f); - _material.SetPass(0); - GL.PushMatrix(); - GL.LoadOrtho(); - GL.Begin(GL.QUADS); - - GL.TexCoord2(uv.x, uv.y); - GL.Vertex3(0.0f, 0.0f, 0.1f); - - GL.TexCoord2(uv.z, uv.y); - GL.Vertex3(1.0f, 0.0f, 0.1f); - - GL.TexCoord2(uv.z, uv.w); - GL.Vertex3(1.0f, 1.0f, 0.1f); - - GL.TexCoord2(uv.x, uv.w); - GL.Vertex3(0.0f, 1.0f, 0.1f); - - GL.End(); - GL.PopMatrix(); - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs.meta deleted file mode 100644 index 8d1833b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayBackground.cs.meta +++ /dev/null @@ -1,10 +0,0 @@ -fileFormatVersion: 2 -guid: 6265373c6a2e0b24f8cd817d3bb88b51 -MonoImporter: - serializedVersion: 2 - defaultReferences: - - _texture: {instanceID: 0} - - _material: {fileID: 2100000, guid: 7ccf4b555441d554484bbe799cb1c834, type: 2} - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs deleted file mode 100644 index 2bdaf15..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs +++ /dev/null @@ -1,314 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Displays the video from MediaPlayer component using IMGUI - /// - [AddComponentMenu("AVPro Video/Display IMGUI", 200)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - [ExecuteInEditMode] - public class DisplayIMGUI : MonoBehaviour - { - private const string PropChromaTexName = "_ChromaTex"; - private const string PropYpCbCrTransformName = "_YpCbCrTransform"; - - public MediaPlayer _mediaPlayer; - - public bool _displayInEditor = true; - public ScaleMode _scaleMode = ScaleMode.ScaleToFit; - public Color _color = Color.white; - public bool _alphaBlend = false; - - [SerializeField] - private bool _useDepth = false; - - public int _depth = 0; - public bool _fullScreen = true; - [Range(0f, 1f)] - public float _x = 0.0f; - [Range(0f, 1f)] - public float _y = 0.0f; - [Range(0f, 1f)] - public float _width = 1.0f; - [Range(0f, 1f)] - public float _height = 1.0f; - - private static int _propAlphaPack; - private static int _propVertScale; - private static int _propApplyGamma; - private static int _propChromaTex; - private static int _propYpCbCrTransform; - private static Shader _shaderAlphaPacking; - private Material _material; - - void Awake() - { - if (_propAlphaPack == 0) - { - _propAlphaPack = Shader.PropertyToID("AlphaPack"); - _propVertScale = Shader.PropertyToID("_VertScale"); - _propApplyGamma = Shader.PropertyToID("_ApplyGamma"); - _propChromaTex = Shader.PropertyToID(PropChromaTexName); - _propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); - } - } - - void Start() - { - // Disabling this lets you skip the GUI layout phase which helps performance, but this also breaks the GUI.depth usage. - if (!_useDepth) - { - this.useGUILayout = false; - } - - if (_shaderAlphaPacking == null) - { - _shaderAlphaPacking = Shader.Find("AVProVideo/IMGUI/Texture Transparent"); - if (_shaderAlphaPacking == null) - { - Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/IMGUI/Transparent Packed"); - } - } - } - - void OnDestroy() - { - // Destroy existing material - if (_material != null) - { -#if UNITY_EDITOR - Material.DestroyImmediate(_material); -#else - Material.Destroy(_material); -#endif - _material = null; - } - } - - private Shader GetRequiredShader() - { - Shader result = null; - - switch (_mediaPlayer.m_AlphaPacking) - { - case AlphaPacking.None: - break; - case AlphaPacking.LeftRight: - case AlphaPacking.TopBottom: - result = _shaderAlphaPacking; - break; - } - -#if UNITY_PLATFORM_SUPPORTS_LINEAR - if (result == null && _mediaPlayer.Info != null) - { - // If the player does support generating sRGB textures then we need to use a shader to convert them for display via IMGUI - if (QualitySettings.activeColorSpace == ColorSpace.Linear && _mediaPlayer.Info.PlayerSupportsLinearColorSpace()) - { - result = _shaderAlphaPacking; - } - } -#endif - if (result == null && _mediaPlayer.TextureProducer != null) - { - if (_mediaPlayer.TextureProducer.GetTextureCount() == 2) - { - result = _shaderAlphaPacking; - } - } - return result; - } - - void Update() - { - if (_mediaPlayer != null) - { - // Get required shader - Shader currentShader = null; - if (_material != null) - { - currentShader = _material.shader; - } - Shader nextShader = GetRequiredShader(); - - // If the shader requirement has changed - if (currentShader != nextShader) - { - // Destroy existing material - if (_material != null) - { -#if UNITY_EDITOR - Material.DestroyImmediate(_material); -#else - Material.Destroy(_material); -#endif - _material = null; - } - - // Create new material - if (nextShader != null) - { - _material = new Material(nextShader); - } - } - - // Apply material changes - if (_material != null) - { - if (_material.HasProperty(_propAlphaPack)) - { - Helper.SetupAlphaPackedMaterial(_material, _mediaPlayer.m_AlphaPacking); - } -#if UNITY_PLATFORM_SUPPORTS_LINEAR - // Apply gamma - if (_material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) - { - Helper.SetupGammaMaterial(_material, !_mediaPlayer.Info.PlayerSupportsLinearColorSpace()); - } -#else - _propApplyGamma |= 0; -#endif - } - - } - } - - void OnGUI() - { -#if UNITY_EDITOR - if (!Application.isPlaying && _displayInEditor) - { - GUI.depth = _depth; - GUI.color = _color; - Rect rect = GetRect(); - Texture2D icon = Resources.Load("AVProVideoIcon"); - Rect uv = rect; - uv.x /= Screen.width; - uv.width /= Screen.width; - uv.y /= Screen.height; - uv.height /= Screen.height; - uv.width *= 16f; - uv.height *= 16f; - uv.x += 0.5f; - uv.y += 0.5f; - GUI.DrawTextureWithTexCoords(rect, icon, uv); - return; - } -#endif - - if (_mediaPlayer == null) - { - return; - } - - bool requiresVerticalFlip = false; - Texture texture = null; - - if (_displayInEditor) - { -#if UNITY_EDITOR - texture = Texture2D.whiteTexture; -#endif - } - - if (_mediaPlayer.Info != null && !_mediaPlayer.Info.HasVideo()) - { - texture = null; - } - - if (_mediaPlayer.TextureProducer != null) - { - if (_mediaPlayer.m_Resample) - { - if (_mediaPlayer.FrameResampler.OutputTexture != null && _mediaPlayer.FrameResampler.OutputTexture[0] != null) - { - texture = _mediaPlayer.FrameResampler.OutputTexture[0]; - requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); - } - } - else - { - if (_mediaPlayer.TextureProducer.GetTexture() != null) - { - texture = _mediaPlayer.TextureProducer.GetTexture(); - requiresVerticalFlip = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); - } - } - - if (_mediaPlayer.TextureProducer.GetTextureCount() == 2 && _material != null) - { - Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; - Texture chroma = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(1); - _material.SetTexture(_propChromaTex, chroma); - _material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); - _material.EnableKeyword("USE_YPCBCR"); - } - } - - if (texture != null) - { - if (!_alphaBlend || _color.a > 0f) - { - GUI.depth = _depth; - GUI.color = _color; - - Rect rect = GetRect(); - - if (_material != null) - { - if (requiresVerticalFlip) - { - _material.SetFloat(_propVertScale, -1f); - } - else - { - _material.SetFloat(_propVertScale, 1f); - } - Helper.DrawTexture(rect, texture, _scaleMode, _mediaPlayer.m_AlphaPacking, _material); - } - else - { - if (requiresVerticalFlip) - { - GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0f, rect.y + (rect.height / 2f))); - } - GUI.DrawTexture(rect, texture, _scaleMode, _alphaBlend); - } - } - } - } - - public Rect GetRect() - { - Rect rect; - if (_fullScreen) - { - rect = new Rect(0.0f, 0.0f, Screen.width, Screen.height); - } - else - { - rect = new Rect(_x * (Screen.width - 1), _y * (Screen.height - 1), _width * Screen.width, _height * Screen.height); - } - - return rect; - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs.meta deleted file mode 100644 index ff9f7a3..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayIMGUI.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 75f3b319d2d69934d8bf545ab45c918d -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs deleted file mode 100644 index 08bce97..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs +++ /dev/null @@ -1,663 +0,0 @@ -#if UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_5 || UNITY_5_4_OR_NEWER - #define UNITY_FEATURE_UGUI -#endif - -#if UNITY_ANDROID && !UNITY_EDITOR - #define REAL_ANDROID -#endif - -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif - -// Some older versions of Unity don't set the _TexelSize variable from uGUI so we need to set this manually -#if ((!UNITY_5_4_OR_NEWER && !UNITY_5) || UNITY_5_0 || UNITY_5_1 || UNITY_5_2 || UNITY_5_3_0 || UNITY_5_3_1 || UNITY_5_3_2 || UNITY_5_3_3) - #define UNITY_UGUI_NOSET_TEXELSIZE -#endif - -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using System.Collections.Generic; -#if UNITY_FEATURE_UGUI -using UnityEngine; -using UnityEngine.UI; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Displays the video from MediaPlayer component using uGUI - /// - [ExecuteInEditMode] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - [AddComponentMenu("AVPro Video/Display uGUI", 200)] - public class DisplayUGUI : UnityEngine.UI.MaskableGraphic - { - [SerializeField] - public MediaPlayer _mediaPlayer; - - [SerializeField] - public Rect m_UVRect = new Rect(0f, 0f, 1f, 1f); - - [SerializeField] - public bool _setNativeSize = false; - - [SerializeField] - public ScaleMode _scaleMode = ScaleMode.ScaleToFit; - - [SerializeField] - public bool _noDefaultDisplay = true; - - [SerializeField] - public bool _displayInEditor = true; - - [SerializeField] - public Texture _defaultTexture; - - private int _lastWidth; - private int _lastHeight; - private bool _flipY; - private Texture _lastTexture; - private static Shader _shaderStereoPacking; - private static Shader _shaderAlphaPacking; -#if REAL_ANDROID - private static Shader _shaderAndroidOES; -#endif - private static int _propAlphaPack; - private static int _propVertScale; - private static int _propStereo; - private static int _propApplyGamma; - private static int _propUseYpCbCr; - private const string PropChromaTexName = "_ChromaTex"; - private static int _propChromaTex; - private const string PropYpCbCrTransformName = "_YpCbCrTransform"; - private static int _propYpCbCrTransform; - -#if UNITY_UGUI_NOSET_TEXELSIZE - private static int _propMainTextureTexelSize; -#endif - private bool _userMaterial = true; - private Material _material; - -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2_0 && !UNITY_5_2_1) - private List _vertices = new List(4); - private static List QuadIndices = new List(new int[] { 0, 1, 2, 2, 3, 0 }); -#endif - - protected override void Awake() - { - if (_propAlphaPack == 0) - { - _propStereo = Shader.PropertyToID("Stereo"); - _propAlphaPack = Shader.PropertyToID("AlphaPack"); - _propVertScale = Shader.PropertyToID("_VertScale"); - _propApplyGamma = Shader.PropertyToID("_ApplyGamma"); - _propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); - _propChromaTex = Shader.PropertyToID(PropChromaTexName); - _propUseYpCbCr = Shader.PropertyToID("_UseYpCbCr"); - _propYpCbCrTransform = Shader.PropertyToID(PropYpCbCrTransformName); -#if UNITY_UGUI_NOSET_TEXELSIZE - _propMainTextureTexelSize = Shader.PropertyToID("_MainTex_TexelSize"); -#endif - } - - if (_shaderAlphaPacking == null) - { - _shaderAlphaPacking = Shader.Find("AVProVideo/UI/Transparent Packed"); - if (_shaderAlphaPacking == null) - { - Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/Transparent Packed"); - } - } - if (_shaderStereoPacking == null) - { - _shaderStereoPacking = Shader.Find("AVProVideo/UI/Stereo"); - if (_shaderStereoPacking == null) - { - Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/Stereo"); - } - } -#if REAL_ANDROID - if (_shaderAndroidOES == null) - { - _shaderAndroidOES = Shader.Find("AVProVideo/UI/AndroidOES"); - if (_shaderAndroidOES == null) - { - Debug.LogWarning("[AVProVideo] Missing shader AVProVideo/UI/AndroidOES"); - } - } -#endif - base.Awake(); - } - - protected override void Start() - { - _userMaterial = (this.m_Material != null); - - base.Start(); - } - - - protected override void OnDestroy() - { - // Destroy existing material - if (_material != null) - { - this.material = null; - -#if UNITY_EDITOR - Material.DestroyImmediate(_material); -#else - Material.Destroy(_material); -#endif - _material = null; - } - base.OnDestroy(); - } - - private Shader GetRequiredShader() - { - Shader result = null; - - switch (_mediaPlayer.m_StereoPacking) - { - case StereoPacking.None: - break; - case StereoPacking.LeftRight: - case StereoPacking.TopBottom: - result = _shaderStereoPacking; - break; - } - - switch (_mediaPlayer.m_AlphaPacking) - { - case AlphaPacking.None: - break; - case AlphaPacking.LeftRight: - case AlphaPacking.TopBottom: - result = _shaderAlphaPacking; - break; - } - -#if UNITY_PLATFORM_SUPPORTS_LINEAR - if (result == null && _mediaPlayer.Info != null) - { - if (QualitySettings.activeColorSpace == ColorSpace.Linear && !_mediaPlayer.Info.PlayerSupportsLinearColorSpace()) - { - result = _shaderAlphaPacking; - } - } -#endif - if (result == null && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTextureCount() == 2) - { - result = _shaderAlphaPacking; - } - -#if REAL_ANDROID - if (_mediaPlayer.PlatformOptionsAndroid.useFastOesPath) - { - result = _shaderAndroidOES; - } -#endif - return result; - } - - /// - /// Returns the texture used to draw this Graphic. - /// - public override Texture mainTexture - { - get - { - Texture result = Texture2D.whiteTexture; - if (HasValidTexture()) - { - Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[0]; - result = _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(); - } - else - { - if (_noDefaultDisplay) - { - result = null; - } - else if (_defaultTexture != null) - { - result = _defaultTexture; - } - -#if UNITY_EDITOR - if (result == null && _displayInEditor) - { - result = Resources.Load("AVProVideoIcon"); - } -#endif - } - return result; - } - } - - public bool HasValidTexture() - { - return (_mediaPlayer != null && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTexture() != null); - } - - private void UpdateInternalMaterial() - { - if (_mediaPlayer != null) - { - // Get required shader - Shader currentShader = null; - if (_material != null) - { - currentShader = _material.shader; - } - Shader nextShader = GetRequiredShader(); - - // If the shader requirement has changed - if (currentShader != nextShader) - { - // Destroy existing material - if (_material != null) - { - this.material = null; -#if UNITY_EDITOR - Material.DestroyImmediate(_material); -#else - Material.Destroy(_material); -#endif - _material = null; - } - - // Create new material - if (nextShader != null) - { - _material = new Material(nextShader); - } - } - - this.material = _material; - } - } - - // We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() - void LateUpdate() - { - if (_setNativeSize) - { - SetNativeSize(); - } - - if (_lastTexture != mainTexture) - { - _lastTexture = mainTexture; - SetVerticesDirty(); - SetMaterialDirty(); - } - - if (HasValidTexture()) - { - if (mainTexture != null) - { - if (mainTexture.width != _lastWidth || mainTexture.height != _lastHeight) - { - _lastWidth = mainTexture.width; - _lastHeight = mainTexture.height; - SetVerticesDirty(); - SetMaterialDirty(); - } - } - } - - if (!_userMaterial && Application.isPlaying) - { - UpdateInternalMaterial(); - } - - if (material != null && _mediaPlayer != null) - { - // YpCbCr support - if (material.HasProperty(_propUseYpCbCr) && _mediaPlayer.TextureProducer != null && _mediaPlayer.TextureProducer.GetTextureCount() == 2) - { - material.EnableKeyword("USE_YPCBCR"); - material.SetMatrix(_propYpCbCrTransform, _mediaPlayer.TextureProducer.GetYpCbCrTransform()); - Texture resamplerTex = _mediaPlayer.FrameResampler == null || _mediaPlayer.FrameResampler.OutputTexture == null ? null : _mediaPlayer.FrameResampler.OutputTexture[1]; - material.SetTexture(_propChromaTex, _mediaPlayer.m_Resample ? resamplerTex : _mediaPlayer.TextureProducer.GetTexture(1)); - } - - // Apply changes for alpha videos - if (material.HasProperty(_propAlphaPack)) - { - Helper.SetupAlphaPackedMaterial(material, _mediaPlayer.m_AlphaPacking); - - if (_flipY && _mediaPlayer.m_AlphaPacking != AlphaPacking.None) - { - material.SetFloat(_propVertScale, -1f); - } - else - { - material.SetFloat(_propVertScale, 1f); - } - -#if UNITY_UGUI_NOSET_TEXELSIZE - if (mainTexture != null) - { - material.SetVector(_propMainTextureTexelSize, new Vector4(1.0f / mainTexture.width, 1.0f / mainTexture.height, mainTexture.width, mainTexture.height)); - } -#endif - } - - // Apply changes for stereo videos - if (material.HasProperty(_propStereo)) - { - Helper.SetupStereoMaterial(material, _mediaPlayer.m_StereoPacking, _mediaPlayer.m_DisplayDebugStereoColorTint); - } -#if UNITY_PLATFORM_SUPPORTS_LINEAR - if (material.HasProperty(_propApplyGamma) && _mediaPlayer.Info != null) - { - Helper.SetupGammaMaterial(material, _mediaPlayer.Info.PlayerSupportsLinearColorSpace()); - } -#else - _propApplyGamma |= 0; -#endif - } - } - - /// - /// Texture to be used. - /// - public MediaPlayer CurrentMediaPlayer - { - get - { - return _mediaPlayer; - } - set - { - if (_mediaPlayer != value) - { - _mediaPlayer = value; - //SetVerticesDirty(); - SetMaterialDirty(); - } - } - } - - /// - /// UV rectangle used by the texture. - /// - public Rect uvRect - { - get - { - return m_UVRect; - } - set - { - if (m_UVRect == value) - { - return; - } - m_UVRect = value; - SetVerticesDirty(); - } - } - - /// - /// Adjust the scale of the Graphic to make it pixel-perfect. - /// - [ContextMenu("Set Native Size")] - public override void SetNativeSize() - { - Texture tex = mainTexture; - if (tex != null) - { - int w = Mathf.RoundToInt(tex.width * uvRect.width); - int h = Mathf.RoundToInt(tex.height * uvRect.height); - - if (_mediaPlayer != null) - { -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - if (_mediaPlayer.Info != null) - { - Orientation ori = Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform()); - if (ori == Orientation.Portrait || ori == Orientation.PortraitFlipped) - { - w = Mathf.RoundToInt(tex.height * uvRect.width); - h = Mathf.RoundToInt(tex.width * uvRect.height); - } - } -#endif - if (_mediaPlayer.m_AlphaPacking == AlphaPacking.LeftRight || _mediaPlayer.m_StereoPacking == StereoPacking.LeftRight) - { - w /= 2; - } - else if (_mediaPlayer.m_AlphaPacking == AlphaPacking.TopBottom || _mediaPlayer.m_StereoPacking == StereoPacking.TopBottom) - { - h /= 2; - } - } - - rectTransform.anchorMax = rectTransform.anchorMin; - rectTransform.sizeDelta = new Vector2(w, h); - } - } - - /// - /// Update all renderer data. - /// - // OnFillVBO deprecated by 5.2 - // OnPopulateMesh(Mesh mesh) deprecated by 5.2 patch 1 -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2_0) -/* protected override void OnPopulateMesh(Mesh mesh) - { - List verts = new List(); - _OnFillVBO( verts ); - - var quad = new UIVertex[4]; - for (int i = 0; i < vbo.Count; i += 4) - { - vbo.CopyTo(i, quad, 0, 4); - vh.AddUIVertexQuad(quad); - } - vh.FillMesh( toFill ); - }*/ - -#if !UNITY_5_2_1 - protected override void OnPopulateMesh(VertexHelper vh) - { - vh.Clear(); - - _OnFillVBO(_vertices); - - vh.AddUIVertexStream(_vertices, QuadIndices ); - } -#endif -#endif - -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1) - [System.Obsolete("This method is not called from Unity 5.2 and above")] -#endif - protected override void OnFillVBO(List vbo) - { - _OnFillVBO(vbo); - } - - private void _OnFillVBO(List vbo) - { - _flipY = false; - if (HasValidTexture()) - { - _flipY = _mediaPlayer.TextureProducer.RequiresVerticalFlip(); - } - - Rect uvRect = m_UVRect; - Vector4 v = GetDrawingDimensions(_scaleMode, ref uvRect); - -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - Matrix4x4 m = Matrix4x4.identity; - if (HasValidTexture()) - { - m = Helper.GetMatrixForOrientation(Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform())); - } -#endif - vbo.Clear(); - - var vert = UIVertex.simpleVert; - vert.color = color; - - vert.position = new Vector2(v.x, v.y); - - vert.uv0 = new Vector2(uvRect.xMin, uvRect.yMin); - if (_flipY) - { - vert.uv0 = new Vector2(uvRect.xMin, 1.0f - uvRect.yMin); - } -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - vert.uv0 = m.MultiplyPoint3x4(vert.uv0); -#endif - vbo.Add(vert); - - vert.position = new Vector2(v.x, v.w); - vert.uv0 = new Vector2(uvRect.xMin, uvRect.yMax); - if (_flipY) - { - vert.uv0 = new Vector2(uvRect.xMin, 1.0f - uvRect.yMax); - } -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - vert.uv0 = m.MultiplyPoint3x4(vert.uv0); -#endif - vbo.Add(vert); - - vert.position = new Vector2(v.z, v.w); - vert.uv0 = new Vector2(uvRect.xMax, uvRect.yMax); - if (_flipY) - { - vert.uv0 = new Vector2(uvRect.xMax, 1.0f - uvRect.yMax); - } -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - vert.uv0 = m.MultiplyPoint3x4(vert.uv0); -#endif - vbo.Add(vert); - - vert.position = new Vector2(v.z, v.y); - vert.uv0 = new Vector2(uvRect.xMax, uvRect.yMin); - if (_flipY) - { - vert.uv0 = new Vector2(uvRect.xMax, 1.0f - uvRect.yMin); - } -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - vert.uv0 = m.MultiplyPoint3x4(vert.uv0); -#endif - vbo.Add(vert); - } - - private Vector4 GetDrawingDimensions(ScaleMode scaleMode, ref Rect uvRect) - { - Vector4 returnSize = Vector4.zero; - - if (mainTexture != null) - { - var padding = Vector4.zero; - - var textureSize = new Vector2(mainTexture.width, mainTexture.height); - { - // Adjust textureSize based on orientation -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - if (HasValidTexture()) - { - Matrix4x4 m = Helper.GetMatrixForOrientation(Helper.GetOrientation(_mediaPlayer.Info.GetTextureTransform())); - textureSize = m.MultiplyVector(textureSize); - textureSize.x = Mathf.Abs(textureSize.x); - textureSize.y = Mathf.Abs(textureSize.y); - } -#endif - // Adjust textureSize based on alpha packing - if (_mediaPlayer != null) - { - if (_mediaPlayer.m_AlphaPacking == AlphaPacking.LeftRight || _mediaPlayer.m_StereoPacking == StereoPacking.LeftRight) - { - textureSize.x /= 2f; - } - else if (_mediaPlayer.m_AlphaPacking == AlphaPacking.TopBottom || _mediaPlayer.m_StereoPacking == StereoPacking.TopBottom) - { - textureSize.y /= 2f; - } - } - } - - Rect r = GetPixelAdjustedRect(); - - // Fit the above textureSize into rectangle r - int spriteW = Mathf.RoundToInt( textureSize.x ); - int spriteH = Mathf.RoundToInt( textureSize.y ); - - var size = new Vector4( padding.x / spriteW, - padding.y / spriteH, - (spriteW - padding.z) / spriteW, - (spriteH - padding.w) / spriteH ); - - - { - if (textureSize.sqrMagnitude > 0.0f) - { - if (scaleMode == ScaleMode.ScaleToFit) - { - float spriteRatio = textureSize.x / textureSize.y; - float rectRatio = r.width / r.height; - - if (spriteRatio > rectRatio) - { - float oldHeight = r.height; - r.height = r.width * (1.0f / spriteRatio); - r.y += (oldHeight - r.height) * rectTransform.pivot.y; - } - else - { - float oldWidth = r.width; - r.width = r.height * spriteRatio; - r.x += (oldWidth - r.width) * rectTransform.pivot.x; - } - } - else if (scaleMode == ScaleMode.ScaleAndCrop) - { - float aspectRatio = textureSize.x / textureSize.y; - float screenRatio = r.width / r.height; - if (screenRatio > aspectRatio) - { - float adjust = aspectRatio / screenRatio; - uvRect = new Rect(0f, (1f - adjust) * 0.5f, 1f, adjust); - } - else - { - float adjust = screenRatio / aspectRatio; - uvRect = new Rect(0.5f - adjust * 0.5f, 0f, adjust, 1f); - } - } - } - } - - returnSize = new Vector4( r.x + r.width * size.x, - r.y + r.height * size.y, - r.x + r.width * size.z, - r.y + r.height * size.w ); - - } - - return returnSize; - } - } -} - -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs.meta deleted file mode 100644 index a365c50..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/DisplayUGUI.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0f17cdc186456a4469a139a104d2ca72 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs deleted file mode 100644 index 2af7781..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs +++ /dev/null @@ -1,2233 +0,0 @@ -//#define AVPROVIDEO_BETA_SUPPORT_TIMESCALE // BETA FEATURE: comment this in if you want to support frame stepping based on changes in Time.timeScale or Time.captureFramerate -//#define AVPROVIDEO_FORCE_NULL_MEDIAPLAYER // DEV FEATURE: comment this out to make all mediaplayers use the null mediaplayer -//#define AVPROVIDEO_DISABLE_LOGGING // DEV FEATURE: disables Debug.Log from AVPro Video -#if UNITY_ANDROID && !UNITY_EDITOR - #define REAL_ANDROID -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; -using System.Collections; -using System.Collections.Generic; - -#if NETFX_CORE -using Windows.Storage.Streams; -#endif - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// This is the primary AVPro Video component and handles all media loading, - /// seeking, information retrieving etc. This component does not do any display - /// of the video. Instead this is handled by other components such as - /// ApplyToMesh, ApplyToMaterial, DisplayIMGUI, DisplayUGUI. - /// - [AddComponentMenu("AVPro Video/Media Player", -100)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class MediaPlayer : MonoBehaviour - { - // These fields are just used to setup the default properties for a new video that is about to be loaded - // Once a video has been loaded you should use the interfaces exposed in the properties to - // change playback properties (eg volume, looping, mute) - public FileLocation m_VideoLocation = FileLocation.RelativeToStreamingAssetsFolder; - - public string m_VideoPath; - - public bool m_AutoOpen = true; - public bool m_AutoStart = true; - public bool m_Loop = false; - - [Range(0.0f, 1.0f)] - public float m_Volume = 1.0f; - - [SerializeField] - [Range(-1.0f, 1.0f)] - private float m_Balance = 0.0f; - - public bool m_Muted = false; - - [SerializeField] - [Range(-4.0f, 4.0f)] - public float m_PlaybackRate = 1.0f; - - public bool m_Resample = false; - public Resampler.ResampleMode m_ResampleMode = Resampler.ResampleMode.POINT; - - [Range(3, 10)] - public int m_ResampleBufferSize = 5; - private Resampler m_Resampler = null; - - public Resampler FrameResampler - { - get { return m_Resampler; } - } - - [System.Serializable] - public class Setup - { - public bool persistent; - } - - // Component Properties - [SerializeField] - private bool m_Persistent = false; - - public bool Persistent - { - get { return m_Persistent; } - set { m_Persistent = value; } - } - - [SerializeField] - private VideoMapping m_videoMapping = VideoMapping.Unknown; - - public VideoMapping VideoLayoutMapping - { - get { return m_videoMapping; } - set { m_videoMapping = value; } - } - - public StereoPacking m_StereoPacking = StereoPacking.None; - - public AlphaPacking m_AlphaPacking = AlphaPacking.None; - - public bool m_DisplayDebugStereoColorTint = false; - - public FilterMode m_FilterMode = FilterMode.Bilinear; - - public TextureWrapMode m_WrapMode = TextureWrapMode.Clamp; - - [Range(0, 16)] - public int m_AnisoLevel = 0; - - [SerializeField] - private bool m_LoadSubtitles; - - [SerializeField] - private FileLocation m_SubtitleLocation = FileLocation.RelativeToStreamingAssetsFolder; - private FileLocation m_queueSubtitleLocation; - - [SerializeField] - private string m_SubtitlePath; - private string m_queueSubtitlePath; - private Coroutine m_loadSubtitlesRoutine; - - [SerializeField] - private Transform m_AudioHeadTransform; - [SerializeField] - private bool m_AudioFocusEnabled; - [SerializeField] - private Transform m_AudioFocusTransform; - [SerializeField, Range(40, 120)] - private float m_AudioFocusWidthDegrees = 90; - [SerializeField, Range(-24, 0)] - private float m_AudioFocusOffLevelDB = 0; - - [SerializeField] - private MediaPlayerEvent m_events = null; - - [SerializeField] - private int m_eventMask = -1; - - [SerializeField] - private FileFormat m_forceFileFormat = FileFormat.Unknown; - - [SerializeField] - private bool _pauseMediaOnAppPause = true; - - [SerializeField] - private bool _playMediaOnAppUnpause = true; - - private IMediaControl m_Control; - private IMediaProducer m_Texture; - private IMediaInfo m_Info; - private IMediaPlayer m_Player; - private IMediaSubtitles m_Subtitles; - private System.IDisposable m_Dispose; - - // State - private bool m_VideoOpened = false; - private bool m_AutoStartTriggered = false; - private bool m_WasPlayingOnPause = false; - private Coroutine _renderingCoroutine = null; - - // Global init - private static bool s_GlobalStartup = false; - - // Event state - private bool m_EventFired_ReadyToPlay = false; - private bool m_EventFired_Started = false; - private bool m_EventFired_FirstFrameReady = false; - private bool m_EventFired_FinishedPlaying = false; - private bool m_EventFired_MetaDataReady = false; - private bool m_EventState_PlaybackStalled = false; - private bool m_EventState_PlaybackBuffering = false; - private bool m_EventState_PlaybackSeeking = false; - private int m_EventState_PreviousWidth = 0; - private int m_EventState_PreviousHeight = 0; - private int m_previousSubtitleIndex = -1; - - private static Camera m_DummyCamera = null; - private bool m_FinishedFrameOpenCheck = false; - - [SerializeField] - private uint m_sourceSampleRate = 0; - [SerializeField] - private uint m_sourceChannels = 0; - [SerializeField] - private bool m_manuallySetAudioSourceProperties = false; - - public enum FileLocation - { - AbsolutePathOrURL, - RelativeToProjectFolder, - RelativeToStreamingAssetsFolder, - RelativeToDataFolder, - RelativeToPeristentDataFolder, - // TODO: Resource, AssetBundle? - } - - [System.Serializable] - public class PlatformOptions - { - public bool overridePath = false; - public FileLocation pathLocation = FileLocation.RelativeToStreamingAssetsFolder; - public string path; - - public virtual bool IsModified() - { - return overridePath; // The other variables don't matter if overridePath is false - } - - // Decryption support - public virtual string GetKeyServerURL() { return null; } - public virtual string GetKeyServerAuthToken() { return null; } - public virtual string GetDecryptionKey() { return null; } - } - - [System.Serializable] - public class OptionsWindows : PlatformOptions - { - public Windows.VideoApi videoApi = Windows.VideoApi.MediaFoundation; - public bool useHardwareDecoding = true; - public bool useUnityAudio = false; - public bool forceAudioResample = true; - public bool useTextureMips = false; - public bool hintAlphaChannel = false; - public bool useLowLatency = false; - public string forceAudioOutputDeviceName = string.Empty; - public List preferredFilters = new List(); - public bool enableAudio360 = false; - public Audio360ChannelMode audio360ChannelMode = Audio360ChannelMode.TBE_8_2; - - public override bool IsModified() - { - return (base.IsModified() || !useHardwareDecoding || useTextureMips || hintAlphaChannel || useLowLatency || useUnityAudio || videoApi != Windows.VideoApi.MediaFoundation || !forceAudioResample || enableAudio360 || audio360ChannelMode != Audio360ChannelMode.TBE_8_2 || !string.IsNullOrEmpty(forceAudioOutputDeviceName) || preferredFilters.Count != 0); - } - } - - [System.Serializable] - public class OptionsApple : PlatformOptions - { - [Multiline] - public string httpHeaderJson = null; - - // Support for handling encrypted HLS streams - public string keyServerURLOverride = null; - public string keyServerAuthToken = null; - [Multiline] - public string base64EncodedKeyBlob = null; - - public override bool IsModified() - { - return (base.IsModified()) - || (string.IsNullOrEmpty(httpHeaderJson) == false) - || (string.IsNullOrEmpty(keyServerURLOverride) == false) - || (string.IsNullOrEmpty(keyServerAuthToken) == false) - || (string.IsNullOrEmpty(base64EncodedKeyBlob) == false); - } - - public override string GetKeyServerURL() { return keyServerURLOverride; } - public override string GetKeyServerAuthToken() { return keyServerAuthToken; } - public override string GetDecryptionKey() { return base64EncodedKeyBlob; } - } - - [System.Serializable] - public class OptionsMacOSX : OptionsApple - { - - } - - [System.Serializable] - public class OptionsIOS : OptionsApple - { - public bool useYpCbCr420Textures = true; - - public override bool IsModified() - { - return (base.IsModified()) - || (useYpCbCr420Textures == false); - } - } - - [System.Serializable] - public class OptionsTVOS : OptionsIOS - { - - } - - [System.Serializable] - public class OptionsAndroid : PlatformOptions - { - public Android.VideoApi videoApi = Android.VideoApi.ExoPlayer; - public bool useFastOesPath = false; - public bool showPosterFrame = false; - public bool enableAudio360 = false; - public Audio360ChannelMode audio360ChannelMode = Audio360ChannelMode.TBE_8_2; - public bool preferSoftwareDecoder = false; - - [Multiline] - public string httpHeaderJson = null; - - [SerializeField, Tooltip("Byte offset into the file where the media file is located. This is useful when hiding or packing media files within another file.")] - public int fileOffset = 0; - - public override bool IsModified() - { - return (base.IsModified() || fileOffset != 0 || useFastOesPath || showPosterFrame || videoApi != Android.VideoApi.ExoPlayer || !string.IsNullOrEmpty(httpHeaderJson) - || enableAudio360 || audio360ChannelMode != Audio360ChannelMode.TBE_8_2 || preferSoftwareDecoder); - } - } - [System.Serializable] - public class OptionsWindowsPhone : PlatformOptions - { - public bool useHardwareDecoding = true; - public bool useUnityAudio = false; - public bool forceAudioResample = true; - public bool useTextureMips = false; - public bool useLowLatency = false; - - public override bool IsModified() - { - return (base.IsModified() || !useHardwareDecoding || useTextureMips || useLowLatency || useUnityAudio || !forceAudioResample); - } - } - [System.Serializable] - public class OptionsWindowsUWP : PlatformOptions - { - public bool useHardwareDecoding = true; - public bool useUnityAudio = false; - public bool forceAudioResample = true; - public bool useTextureMips = false; - public bool useLowLatency = false; - - public override bool IsModified() - { - return (base.IsModified() || !useHardwareDecoding || useTextureMips || useLowLatency || useUnityAudio || !forceAudioResample); - } - } - [System.Serializable] - public class OptionsWebGL : PlatformOptions - { - public WebGL.ExternalLibrary externalLibrary = WebGL.ExternalLibrary.None; - public bool useTextureMips = false; - - public override bool IsModified() - { - return (base.IsModified() || externalLibrary != WebGL.ExternalLibrary.None || useTextureMips); - } - } - - [System.Serializable] - public class OptionsPS4 : PlatformOptions - { - - } - - public delegate void ProcessExtractedFrame(Texture2D extractedFrame); - - // TODO: move these to a Setup object - [SerializeField] - private OptionsWindows _optionsWindows = new OptionsWindows(); - [SerializeField] - private OptionsMacOSX _optionsMacOSX = new OptionsMacOSX(); - [SerializeField] - private OptionsIOS _optionsIOS = new OptionsIOS(); - [SerializeField] - private OptionsTVOS _optionsTVOS = new OptionsTVOS(); - [SerializeField] - private OptionsAndroid _optionsAndroid = new OptionsAndroid(); - [SerializeField] - private OptionsWindowsPhone _optionsWindowsPhone = new OptionsWindowsPhone(); - [SerializeField] - private OptionsWindowsUWP _optionsWindowsUWP = new OptionsWindowsUWP(); - [SerializeField] - private OptionsWebGL _optionsWebGL = new OptionsWebGL(); - [SerializeField] - private OptionsPS4 _optionsPS4 = new OptionsPS4(); - - /// - /// Properties - /// - - public virtual IMediaInfo Info - { - get { return m_Info; } - } - public virtual IMediaControl Control - { - get { return m_Control; } - } - - public virtual IMediaPlayer Player - { - get { return m_Player; } - } - - public virtual IMediaProducer TextureProducer - { - get { return m_Texture; } - } - - public virtual IMediaSubtitles Subtitles - { - get { return m_Subtitles; } - } - - public MediaPlayerEvent Events - { - get - { - if (m_events == null) - { - m_events = new MediaPlayerEvent(); - } - return m_events; - } - } - - public bool VideoOpened - { - get { return m_VideoOpened; } - } - - public bool PauseMediaOnAppPause - { - get { return _pauseMediaOnAppPause; } - set { _pauseMediaOnAppPause = value; } - } - - public bool PlayMediaOnAppUnpause - { - get { return _playMediaOnAppUnpause; } - set { _playMediaOnAppUnpause = value; } - } - - public FileFormat ForceFileFormat { get { return m_forceFileFormat; } set { m_forceFileFormat = value; } } - - public Transform AudioHeadTransform { set { m_AudioHeadTransform = value; } get { return m_AudioHeadTransform; } } - public bool AudioFocusEnabled { get { return m_AudioFocusEnabled; } set { m_AudioFocusEnabled = value; } } - public float AudioFocusOffLevelDB { get { return m_AudioFocusOffLevelDB; } set { m_AudioFocusOffLevelDB = value; } } - public float AudioFocusWidthDegrees { get { return m_AudioFocusWidthDegrees; } set { m_AudioFocusWidthDegrees = value; } } - public Transform AudioFocusTransform { get { return m_AudioFocusTransform; } set { m_AudioFocusTransform = value; } } - - public OptionsWindows PlatformOptionsWindows { get { return _optionsWindows; } } - public OptionsMacOSX PlatformOptionsMacOSX { get { return _optionsMacOSX; } } - public OptionsIOS PlatformOptionsIOS { get { return _optionsIOS; } } - public OptionsTVOS PlatformOptionsTVOS { get { return _optionsTVOS; } } - public OptionsAndroid PlatformOptionsAndroid { get { return _optionsAndroid; } } - public OptionsWindowsPhone PlatformOptionsWindowsPhone { get { return _optionsWindowsPhone; } } - public OptionsWindowsUWP PlatformOptionsWindowsUWP { get { return _optionsWindowsUWP; } } - public OptionsWebGL PlatformOptionsWebGL { get { return _optionsWebGL; } } - public OptionsPS4 PlatformOptionsPS4 { get { return _optionsPS4; } } - - /// - /// Methods - /// - - void Awake() - { - if (m_Persistent) - { - // TODO: set "this.transform.root.gameObject" to also DontDestroyOnLoad? - DontDestroyOnLoad(this.gameObject); - } - } - - protected void Initialise() - { - BaseMediaPlayer mediaPlayer = CreatePlatformMediaPlayer(); - if (mediaPlayer != null) - { - // Set-up interface - m_Control = mediaPlayer; - m_Texture = mediaPlayer; - m_Info = mediaPlayer; - m_Player = mediaPlayer; - m_Subtitles = mediaPlayer; - m_Dispose = mediaPlayer; - - if (!s_GlobalStartup) - { -#if UNITY_5 || UNITY_5_4_OR_NEWER - Helper.LogInfo(string.Format("Initialising AVPro Video (script v{0} plugin v{1}) on {2}/{3} (MT {4}) on {5}", Helper.ScriptVersion, mediaPlayer.GetVersion(), SystemInfo.graphicsDeviceName, SystemInfo.graphicsDeviceVersion, SystemInfo.graphicsMultiThreaded, Application.platform)); -#else - Helper.LogInfo(string.Format("Initialising AVPro Video (script v{0} plugin v{1}) on {2}/{3} on {4}", Helper.ScriptVersion, mediaPlayer.GetVersion(), SystemInfo.graphicsDeviceName, SystemInfo.graphicsDeviceVersion, Application.platform)); -#endif - -#if AVPROVIDEO_BETA_SUPPORT_TIMESCALE - Debug.LogWarning("[AVProVideo] TimeScale support used. This could affect performance when changing Time.timeScale or Time.captureFramerate. This feature is useful for supporting video capture system that adjust time scale during capturing."); -#endif - -#if (UNITY_HAS_GOOGLEVR || UNITY_DAYDREAM) && (UNITY_ANDROID) - // NOte: WE've removed this minor optimisation until Daydream support is more offical.. - // It seems to work with the official release, but in 5.6beta UNITY_HAS_GOOGLEVR is always defined - // even for GearVR, which causes a problem as it doesn't use the same stereo eye determination method - - // TODO: add iOS support for this once Unity supports it - //Helper.LogInfo("Enabling Google Daydream support"); - //Shader.EnableKeyword("GOOGLEVR"); -#endif - - s_GlobalStartup = true; - } - } - } - - void Start() - { -#if UNITY_WEBGL - m_Resample = false; -#endif - - if (m_Control == null) - { - Initialise(); - } - - if (m_Control != null) - { - if (m_AutoOpen) - { - OpenVideoFromFile(); - - if (m_LoadSubtitles && m_Subtitles != null && !string.IsNullOrEmpty(m_SubtitlePath)) - { - EnableSubtitles(m_SubtitleLocation, m_SubtitlePath); - } - } - - StartRenderCoroutine(); - } - } - - public bool OpenVideoFromFile(FileLocation location, string path, bool autoPlay = true) - { - m_VideoLocation = location; - m_VideoPath = path; - m_AutoStart = autoPlay; - - if (m_Control == null) - { - m_AutoOpen = false; // If OpenVideoFromFile() is called before Start() then set m_AutoOpen to false so that it doesn't load the video a second time during Start() - Initialise(); - } - - return OpenVideoFromFile(); - } - - public bool OpenVideoFromBuffer(byte[] buffer, bool autoPlay = true) - { - m_VideoLocation = FileLocation.AbsolutePathOrURL; - m_VideoPath = "buffer"; - m_AutoStart = autoPlay; - - if (m_Control == null) - { - Initialise(); - } - - return OpenVideoFromBufferInternal(buffer); - } - - public bool StartOpenChunkedVideoFromBuffer(ulong length, bool autoPlay = true) - { - m_VideoLocation = FileLocation.AbsolutePathOrURL; - m_VideoPath = "buffer"; - m_AutoStart = autoPlay; - - if (m_Control == null) - { - Initialise(); - } - - return StartOpenVideoFromBufferInternal(length); - } - - public bool AddChunkToVideoBuffer(byte[] chunk, ulong offset, ulong chunkSize) - { - return AddChunkToBufferInternal(chunk, offset, chunkSize); - } - - public bool EndOpenChunkedVideoFromBuffer() - { - return EndOpenVideoFromBufferInternal(); - } - -#if NETFX_CORE - public bool OpenVideoFromStream(IRandomAccessStream ras, string path, bool autoPlay = true) - { - m_VideoLocation = FileLocation.AbsolutePathOrURL; - m_VideoPath = path; - m_AutoStart = autoPlay; - - if (m_Control == null) - { - Initialise(); - } - - return OpenVideoFromStream(ras); - } -#endif - - public bool SubtitlesEnabled - { - get { return m_LoadSubtitles; } - } - - public string SubtitlePath - { - get { return m_SubtitlePath; } - } - - public FileLocation SubtitleLocation - { - get { return m_SubtitleLocation; } - } - - public bool EnableSubtitles(FileLocation fileLocation, string filePath) - { - bool result = false; - if (m_Subtitles != null) - { - if (!string.IsNullOrEmpty(filePath)) - { - string fullPath = GetPlatformFilePath(GetPlatform(), ref filePath, ref fileLocation); - - bool checkForFileExist = true; - if (fullPath.Contains("://")) - { - checkForFileExist = false; - } -#if (UNITY_ANDROID || (UNITY_5_2 && UNITY_WSA)) - checkForFileExist = false; -#endif - - if (checkForFileExist && !System.IO.File.Exists(fullPath)) - { - Debug.LogError("[AVProVideo] Subtitle file not found: " + fullPath, this); - } - else - { - Helper.LogInfo("Opening subtitles " + fullPath, this); - - m_previousSubtitleIndex = -1; - - try - { - if (fullPath.Contains("://")) - { - // Use coroutine and WWW class for loading - if (m_loadSubtitlesRoutine != null) - { - StopCoroutine(m_loadSubtitlesRoutine); - m_loadSubtitlesRoutine = null; - } - m_loadSubtitlesRoutine = StartCoroutine(LoadSubtitlesCoroutine(fullPath, fileLocation, filePath)); - } - else - { - // Load directly from file -#if !UNITY_WEBPLAYER - string subtitleData = System.IO.File.ReadAllText(fullPath); - if (m_Subtitles.LoadSubtitlesSRT(subtitleData)) - { - m_SubtitleLocation = fileLocation; - m_SubtitlePath = filePath; - m_LoadSubtitles = false; - result = true; - } - else -#endif - { - Debug.LogError("[AVProVideo] Failed to load subtitles" + fullPath, this); - } - } - - } - catch (System.Exception e) - { - Debug.LogError("[AVProVideo] Failed to load subtitles " + fullPath, this); - Debug.LogException(e, this); - } - } - } - else - { - Debug.LogError("[AVProVideo] No subtitle file path specified", this); - } - } - else - { - m_queueSubtitleLocation = fileLocation; - m_queueSubtitlePath = filePath; - } - - return result; - } - - private IEnumerator LoadSubtitlesCoroutine(string url, FileLocation fileLocation, string filePath) - { - WWW www = new WWW(url); - - yield return www; - - string subtitleData = string.Empty; - if (string.IsNullOrEmpty(www.error)) - { - subtitleData = www.text; - } - else - { - Debug.LogError("[AVProVideo] Error loading subtitles '" + www.error + "' from " + url); - } - - if (m_Subtitles.LoadSubtitlesSRT(subtitleData)) - { - m_SubtitleLocation = fileLocation; - m_SubtitlePath = filePath; - m_LoadSubtitles = false; - } - else - { - Debug.LogError("[AVProVideo] Failed to load subtitles" + url, this); - } - - m_loadSubtitlesRoutine = null; - - www.Dispose(); - } - - public void DisableSubtitles() - { - if (m_loadSubtitlesRoutine != null) - { - StopCoroutine(m_loadSubtitlesRoutine); - m_loadSubtitlesRoutine = null; - } - - if (m_Subtitles != null) - { - m_previousSubtitleIndex = -1; - m_LoadSubtitles = false; - m_Subtitles.LoadSubtitlesSRT(string.Empty); - } - else - { - m_queueSubtitlePath = string.Empty; - } - } - - private bool OpenVideoFromBufferInternal(byte[] buffer) - { - bool result = false; - // Open the video file - if (m_Control != null) - { - CloseVideo(); - - m_VideoOpened = true; - m_AutoStartTriggered = !m_AutoStart; - - Helper.LogInfo("Opening buffer of length " + buffer.Length, this); - - if (!m_Control.OpenVideoFromBuffer(buffer)) - { - Debug.LogError("[AVProVideo] Failed to open buffer", this); - if (GetCurrentPlatformOptions() != PlatformOptionsWindows || PlatformOptionsWindows.videoApi != Windows.VideoApi.DirectShow) - { - Debug.LogError("[AVProVideo] Loading from buffer is currently only supported in Windows when using the DirectShow API"); - } - } - else - { - SetPlaybackOptions(); - result = true; - StartRenderCoroutine(); - } - } - return result; - } - - private bool StartOpenVideoFromBufferInternal(ulong length) - { - bool result = false; - // Open the video file - if (m_Control != null) - { - CloseVideo(); - - m_VideoOpened = true; - m_AutoStartTriggered = !m_AutoStart; - - Helper.LogInfo("Starting Opening buffer of length " + length, this); - - if (!m_Control.StartOpenVideoFromBuffer(length)) - { - Debug.LogError("[AVProVideo] Failed to start open video from buffer", this); - if (GetCurrentPlatformOptions() != PlatformOptionsWindows || PlatformOptionsWindows.videoApi != Windows.VideoApi.DirectShow) - { - Debug.LogError("[AVProVideo] Loading from buffer is currently only supported in Windows when using the DirectShow API"); - } - } - else - { - SetPlaybackOptions(); - result = true; - StartRenderCoroutine(); - } - } - return result; - } - - private bool AddChunkToBufferInternal(byte[] chunk, ulong offset, ulong chunkSize) - { - if(Control != null) - { - return Control.AddChunkToVideoBuffer(chunk, offset, chunkSize); - } - - return false; - } - - private bool EndOpenVideoFromBufferInternal() - { - if(Control != null) - { - return Control.EndOpenVideoFromBuffer(); - } - - return false; - } - - private bool OpenVideoFromFile() - { - bool result = false; - // Open the video file - if (m_Control != null) - { - CloseVideo(); - - m_VideoOpened = true; - m_AutoStartTriggered = !m_AutoStart; - m_FinishedFrameOpenCheck = true; - - // Potentially override the file location - long fileOffset = GetPlatformFileOffset(); - string fullPath = GetPlatformFilePath(GetPlatform(), ref m_VideoPath, ref m_VideoLocation); - - if (!string.IsNullOrEmpty(m_VideoPath)) - { - string httpHeaderJson = null; - - bool checkForFileExist = true; - if (fullPath.Contains("://")) - { - checkForFileExist = false; - httpHeaderJson = GetPlatformHttpHeaderJson(); - // TODO: validate the above JSON - } -#if (UNITY_ANDROID || (UNITY_5_2 && UNITY_WSA)) - checkForFileExist = false; -#endif - - if (checkForFileExist && !System.IO.File.Exists(fullPath)) - { - Debug.LogError("[AVProVideo] File not found: " + fullPath, this); - } - else - { - Helper.LogInfo("Opening " + fullPath + " (offset " + fileOffset + ")", this); - -#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN - if (_optionsWindows.enableAudio360) - { - m_Control.SetAudioChannelMode(_optionsWindows.audio360ChannelMode); - } - else - { - m_Control.SetAudioChannelMode(Audio360ChannelMode.INVALID); - } -#endif - if (!m_Control.OpenVideoFromFile(fullPath, fileOffset, httpHeaderJson, m_manuallySetAudioSourceProperties ? m_sourceSampleRate : 0, - m_manuallySetAudioSourceProperties ? m_sourceChannels : 0, (int)m_forceFileFormat)) - { - Debug.LogError("[AVProVideo] Failed to open " + fullPath, this); - } - else - { - SetPlaybackOptions(); - result = true; - StartRenderCoroutine(); - } - } - } - else - { - Debug.LogError("[AVProVideo] No file path specified", this); - } - } - return result; - } - -#if NETFX_CORE - private bool OpenVideoFromStream(IRandomAccessStream ras) - { - bool result = false; - // Open the video file - if (m_Control != null) - { - CloseVideo(); - - m_VideoOpened = true; - m_AutoStartTriggered = !m_AutoStart; - - // Potentially override the file location - long fileOffset = GetPlatformFileOffset(); - - if (!m_Control.OpenVideoFromFile(ras, m_VideoPath, fileOffset, null, m_manuallySetAudioSourceProperties ? m_sourceSampleRate : 0, - m_manuallySetAudioSourceProperties ? m_sourceChannels : 0)) - { - Debug.LogError("[AVProVideo] Failed to open " + m_VideoPath, this); - } - else - { - SetPlaybackOptions(); - result = true; - StartRenderCoroutine(); - } - } - return result; - } -#endif - - private void SetPlaybackOptions() - { - // Set playback options - if (m_Control != null) - { - m_Control.SetLooping(m_Loop); - m_Control.SetPlaybackRate(m_PlaybackRate); - m_Control.SetVolume(m_Volume); - m_Control.SetBalance(m_Balance); - m_Control.MuteAudio(m_Muted); - m_Control.SetTextureProperties(m_FilterMode, m_WrapMode, m_AnisoLevel); - - // Encryption support - PlatformOptions options = GetCurrentPlatformOptions(); - if (options != null) - { - m_Control.SetKeyServerURL(options.GetKeyServerURL()); - m_Control.SetKeyServerAuthToken(options.GetKeyServerAuthToken()); - m_Control.SetDecryptionKeyBase64(options.GetDecryptionKey()); - } - } - } - - public void CloseVideo() - { - // Close the video file - if (m_Control != null) - { - if (m_events != null && m_VideoOpened && m_events.HasListeners() && IsHandleEvent(MediaPlayerEvent.EventType.Closing)) - { - m_events.Invoke(this, MediaPlayerEvent.EventType.Closing, ErrorCode.None); - } - - m_AutoStartTriggered = false; - m_VideoOpened = false; - m_EventFired_MetaDataReady = false; - m_EventFired_ReadyToPlay = false; - m_EventFired_Started = false; - m_EventFired_FirstFrameReady = false; - m_EventFired_FinishedPlaying = false; - m_EventState_PlaybackBuffering = false; - m_EventState_PlaybackSeeking = false; - m_EventState_PlaybackStalled = false; - m_EventState_PreviousWidth = 0; - m_EventState_PreviousHeight = 0; - - if (m_loadSubtitlesRoutine != null) - { - StopCoroutine(m_loadSubtitlesRoutine); - m_loadSubtitlesRoutine = null; - } - m_previousSubtitleIndex = -1; - - m_Control.CloseVideo(); - } - - if (m_Resampler != null) - { - m_Resampler.Reset(); - } - - StopRenderCoroutine(); - } - - public void Play() - { - if (m_Control != null && m_Control.CanPlay()) - { - m_Control.Play(); - - // Mark this event as done because it's irrelevant once playback starts - m_EventFired_ReadyToPlay = true; - } - else - { - // Can't play, perhaps it's still loading? Queuing play using m_AutoStart to play after loading - m_AutoStart = true; - m_AutoStartTriggered = false; - } - } - - public void Pause() - { - if (m_Control != null && m_Control.IsPlaying()) - { - m_Control.Pause(); - } - m_WasPlayingOnPause = false; -#if AVPROVIDEO_BETA_SUPPORT_TIMESCALE - _timeScaleIsControlling = false; -#endif - } - - public void Stop() - { - if (m_Control != null) - { - m_Control.Stop(); - } -#if AVPROVIDEO_BETA_SUPPORT_TIMESCALE - _timeScaleIsControlling = false; -#endif - } - - public void Rewind(bool pause) - { - if (m_Control != null) - { - if (pause) - { - Pause(); - } - m_Control.Rewind(); - } - } - - protected virtual void Update() - { - // Auto start the playback - if (m_Control != null) - { - if (m_VideoOpened && m_AutoStart && !m_AutoStartTriggered && m_Control.CanPlay()) - { - m_AutoStartTriggered = true; - Play(); - } - - if (_renderingCoroutine == null && m_Control.CanPlay()) - { - StartRenderCoroutine(); - } - - if (m_Subtitles != null && !string.IsNullOrEmpty(m_queueSubtitlePath)) - { - EnableSubtitles(m_queueSubtitleLocation, m_queueSubtitlePath); - m_queueSubtitlePath = string.Empty; - } - -#if AVPROVIDEO_BETA_SUPPORT_TIMESCALE - UpdateTimeScale(); -#endif - - UpdateAudioHeadTransform(); - UpdateAudioFocus(); - // Update - m_Player.Update(); - - // Render (done in co-routine) - //m_Player.Render(); - - UpdateErrors(); - UpdateEvents(); - } - } - - private void LateUpdate() - { -#if !UNITY_WEBGL - if (m_Resample) - { - if (m_Resampler == null) - { - m_Resampler = new Resampler(this, gameObject.name, m_ResampleBufferSize, m_ResampleMode); - } - } -#else - m_Resample = false; -#endif - - if (m_Resampler != null) - { - m_Resampler.Update(); - m_Resampler.UpdateTimestamp(); - } - } - - void OnEnable() - { - if (m_Control != null && m_WasPlayingOnPause) - { - m_AutoStart = true; - m_AutoStartTriggered = false; - m_WasPlayingOnPause = false; - } - - if(m_Player != null) - { - m_Player.OnEnable(); - } - - StartRenderCoroutine(); - } - - void OnDisable() - { - if (m_Control != null) - { - if (m_Control.IsPlaying()) - { - m_WasPlayingOnPause = true; - Pause(); - } - } - - StopRenderCoroutine(); - } - - protected virtual void OnDestroy() - { - CloseVideo(); - - if (m_Dispose != null) - { - m_Dispose.Dispose(); - m_Dispose = null; - } - m_Control = null; - m_Texture = null; - m_Info = null; - m_Player = null; - - if(m_Resampler != null) - { - m_Resampler.Release(); - m_Resampler = null; - } - - // TODO: possible bug if MediaPlayers are created and destroyed manually (instantiated), OnApplicationQuit won't be called! - } - - void OnApplicationQuit() - { - if (s_GlobalStartup) - { - Helper.LogInfo("Shutdown"); - - // Clean up any open media players - MediaPlayer[] players = Resources.FindObjectsOfTypeAll(); - if (players != null && players.Length > 0) - { - for (int i = 0; i < players.Length; i++) - { - players[i].CloseVideo(); - players[i].OnDestroy(); - } - } - -#if UNITY_EDITOR - #if UNITY_EDITOR_WIN - WindowsMediaPlayer.DeinitPlatform(); - #endif -#else - #if (UNITY_STANDALONE_WIN) - WindowsMediaPlayer.DeinitPlatform(); - #elif (UNITY_ANDROID) - AndroidMediaPlayer.DeinitPlatform(); - #endif -#endif - s_GlobalStartup = false; - } - } - -#region Rendering Coroutine - - private void StartRenderCoroutine() - { - if (_renderingCoroutine == null) - { - // Use the method instead of the method name string to prevent garbage - _renderingCoroutine = StartCoroutine(FinalRenderCapture()); - } - } - - private void StopRenderCoroutine() - { - if (_renderingCoroutine != null) - { - StopCoroutine(_renderingCoroutine); - _renderingCoroutine = null; - } - } - - private IEnumerator FinalRenderCapture() - { - // Preallocate the YieldInstruction to prevent garbage - YieldInstruction wait = new WaitForEndOfFrame(); - while (Application.isPlaying) - { - // NOTE: in editor, if the game view isn't visible then WaitForEndOfFrame will never complete - yield return wait; - - if (this.enabled) - { - if (m_Player != null) - { - m_Player.Render(); - } - } - } - } -#endregion - -#region Platform and Path - public static Platform GetPlatform() - { - Platform result = Platform.Unknown; - - // Setup for running in the editor (Either OSX, Windows or Linux) -#if UNITY_EDITOR -#if (UNITY_EDITOR_OSX && UNITY_EDITOR_64) - result = Platform.MacOSX; -#elif UNITY_EDITOR_WIN - result = Platform.Windows; -#endif -#else - // Setup for running builds -#if (UNITY_STANDALONE_WIN) - result = Platform.Windows; -#elif (UNITY_STANDALONE_OSX) - result = Platform.MacOSX; -#elif (UNITY_IPHONE || UNITY_IOS) - result = Platform.iOS; -#elif (UNITY_TVOS) - result = Platform.tvOS; -#elif (UNITY_ANDROID) - result = Platform.Android; -#elif (UNITY_WP8 || UNITY_WP81 || UNITY_WINRT_8_1) - result = Platform.WindowsPhone; -#elif (UNITY_WSA_10_0) - result = Platform.WindowsUWP; -#elif (UNITY_WEBGL) - result = Platform.WebGL; -#elif (UNITY_PS4) - result = Platform.PS4; -#endif - -#endif - return result; - } - - public PlatformOptions GetCurrentPlatformOptions() - { - PlatformOptions result = null; - -#if UNITY_EDITOR -#if (UNITY_EDITOR_OSX && UNITY_EDITOR_64) - result = _optionsMacOSX; -#elif UNITY_EDITOR_WIN - result = _optionsWindows; -#endif -#else - // Setup for running builds - -#if (UNITY_STANDALONE_WIN) - result = _optionsWindows; -#elif (UNITY_STANDALONE_OSX) - result = _optionsMacOSX; -#elif (UNITY_IPHONE || UNITY_IOS) - result = _optionsIOS; -#elif (UNITY_TVOS) - result = _optionsTVOS; -#elif (UNITY_ANDROID) - result = _optionsAndroid; -#elif (UNITY_WP8 || UNITY_WP81 || UNITY_WINRT_8_1) - result = _optionsWindowsPhone; -#elif (UNITY_WSA_10_0) - result = _optionsWindowsUWP; -#elif (UNITY_WEBGL) - result = _optionsWebGL; -#elif (UNITY_PS4) - result = _optionsPS4; -#endif - -#endif - return result; - } - -#if UNITY_EDITOR - public PlatformOptions GetPlatformOptions(Platform platform) - { - PlatformOptions result = null; - - switch (platform) - { - case Platform.Windows: - result = _optionsWindows; - break; - case Platform.MacOSX: - result = _optionsMacOSX; - break; - case Platform.Android: - result = _optionsAndroid; - break; - case Platform.iOS: - result = _optionsIOS; - break; - case Platform.tvOS: - result = _optionsTVOS; - break; - case Platform.WindowsPhone: - result = _optionsWindowsPhone; - break; - case Platform.WindowsUWP: - result = _optionsWindowsUWP; - break; - case Platform.WebGL: - result = _optionsWebGL; - break; - case Platform.PS4: - result = _optionsPS4; - break; - } - - return result; - } - - public static string GetPlatformOptionsVariable(Platform platform) - { - string result = string.Empty; - - switch (platform) - { - case Platform.Windows: - result = "_optionsWindows"; - break; - case Platform.MacOSX: - result = "_optionsMacOSX"; - break; - case Platform.iOS: - result = "_optionsIOS"; - break; - case Platform.tvOS: - result = "_optionsTVOS"; - break; - case Platform.Android: - result = "_optionsAndroid"; - break; - case Platform.WindowsPhone: - result = "_optionsWindowsPhone"; - break; - case Platform.WindowsUWP: - result = "_optionsWindowsUWP"; - break; - case Platform.WebGL: - result = "_optionsWebGL"; - break; - case Platform.PS4: - result = "_optionsPS4"; - break; - } - - return result; - } -#endif - - public static string GetPath(FileLocation location) - { - string result = string.Empty; - switch (location) - { - case FileLocation.AbsolutePathOrURL: - break; - case FileLocation.RelativeToDataFolder: - result = Application.dataPath; - break; - case FileLocation.RelativeToPeristentDataFolder: - result = Application.persistentDataPath; - break; - case FileLocation.RelativeToProjectFolder: -#if !UNITY_WINRT_8_1 - string path = ".."; -#if UNITY_STANDALONE_OSX && !UNITY_EDITOR_OSX - path += "/.."; -#endif - result = System.IO.Path.GetFullPath(System.IO.Path.Combine(Application.dataPath, path)); - result = result.Replace('\\', '/'); -#endif - break; - case FileLocation.RelativeToStreamingAssetsFolder: - result = Application.streamingAssetsPath; - break; - } - return result; - } - - public static string GetFilePath(string path, FileLocation location) - { - string result = string.Empty; - if (!string.IsNullOrEmpty(path)) - { - switch (location) - { - case FileLocation.AbsolutePathOrURL: - result = path; - break; - case FileLocation.RelativeToDataFolder: - case FileLocation.RelativeToPeristentDataFolder: - case FileLocation.RelativeToProjectFolder: - case FileLocation.RelativeToStreamingAssetsFolder: - result = System.IO.Path.Combine(GetPath(location), path); - break; - } - } - return result; - } - - private long GetPlatformFileOffset() - { - long result = 0; -#if UNITY_EDITOR_OSX -#elif UNITY_EDITOR_WIN -#elif UNITY_EDITOR_LINUX -#elif UNITY_ANDROID - result = _optionsAndroid.fileOffset; -#endif - return result; - } - - private string GetPlatformHttpHeaderJson() - { - string result = null; - -#if UNITY_EDITOR_OSX - result = _optionsMacOSX.httpHeaderJson; -#elif UNITY_EDITOR_WIN -#elif UNITY_EDITOR_LINUX -#elif UNITY_STANDALONE_OSX - result = _optionsMacOSX.httpHeaderJson; -#elif UNITY_STANDALONE_WIN -#elif UNITY_WSA_10_0 -#elif UNITY_WINRT_8_1 -#elif UNITY_IOS || UNITY_IPHONE - result = _optionsIOS.httpHeaderJson; -#elif UNITY_TVOS - result = _optionsTVOS.httpHeaderJson; -#elif UNITY_ANDROID - result = _optionsAndroid.httpHeaderJson; -#elif UNITY_WEBGL -#endif - - if (!string.IsNullOrEmpty(result)) - { - result = result.Trim(); - } - - return result; - } - - private string GetPlatformFilePath(Platform platform, ref string filePath, ref FileLocation fileLocation) - { - string result = string.Empty; - - // Replace file path and location if overriden by platform options - if (platform != Platform.Unknown) - { - PlatformOptions options = GetCurrentPlatformOptions(); - if (options != null) - { - if (options.overridePath) - { - filePath = options.path; - fileLocation = options.pathLocation; - } - } - } - - result = GetFilePath(filePath, fileLocation); - - return result; - } -#endregion - - public virtual BaseMediaPlayer CreatePlatformMediaPlayer() - { - BaseMediaPlayer mediaPlayer = null; - -#if !AVPROVIDEO_FORCE_NULL_MEDIAPLAYER - - // Setup for running in the editor (Either OSX, Windows or Linux) -#if UNITY_EDITOR -#if (UNITY_EDITOR_OSX) -#if UNITY_EDITOR_64 - mediaPlayer = new OSXMediaPlayer(); -#else - Debug.LogWarning("[AVProVideo] 32-bit OS X Unity editor not supported. 64-bit required."); -#endif -#elif UNITY_EDITOR_WIN - if (WindowsMediaPlayer.InitialisePlatform()) - { - mediaPlayer = new WindowsMediaPlayer(_optionsWindows.videoApi, _optionsWindows.useHardwareDecoding, _optionsWindows.useTextureMips, _optionsWindows.hintAlphaChannel, _optionsWindows.useLowLatency, _optionsWindows.forceAudioOutputDeviceName, _optionsWindows.useUnityAudio, _optionsWindows.forceAudioResample, _optionsWindows.preferredFilters); - } -#endif -#else - // Setup for running builds -#if (UNITY_STANDALONE_WIN || UNITY_WSA_10_0 || UNITY_WINRT_8_1) - if (WindowsMediaPlayer.InitialisePlatform()) - { -#if UNITY_STANDALONE_WIN - mediaPlayer = new WindowsMediaPlayer(_optionsWindows.videoApi, _optionsWindows.useHardwareDecoding, _optionsWindows.useTextureMips, _optionsWindows.hintAlphaChannel, _optionsWindows.useLowLatency, _optionsWindows.forceAudioOutputDeviceName, _optionsWindows.useUnityAudio, _optionsWindows.forceAudioResample, _optionsWindows.preferredFilters); -#elif UNITY_WSA_10_0 - mediaPlayer = new WindowsMediaPlayer(Windows.VideoApi.MediaFoundation, _optionsWindowsUWP.useHardwareDecoding, _optionsWindowsUWP.useTextureMips, false, _optionsWindowsUWP.useLowLatency, string.Empty, _optionsWindowsUWP.useUnityAudio, _optionsWindowsUWP.forceAudioResample, _optionsWindows.preferredFilters); -#elif UNITY_WINRT_8_1 - mediaPlayer = new WindowsMediaPlayer(Windows.VideoApi.MediaFoundation, _optionsWindowsPhone.useHardwareDecoding, _optionsWindowsPhone.useTextureMips, false, _optionsWindowsPhone.useLowLatency, string.Empty, _optionsWindowsPhone.useUnityAudio, _optionsWindowsPhone.forceAudioResample, _optionsWindows.preferredFilters); -#endif - } -#elif (UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS) -#if UNITY_TVOS - mediaPlayer = new OSXMediaPlayer(_optionsTVOS.useYpCbCr420Textures); -#elif (UNITY_IOS || UNITY_IPHONE) - mediaPlayer = new OSXMediaPlayer(_optionsIOS.useYpCbCr420Textures); -#else - mediaPlayer = new OSXMediaPlayer(); -#endif - -#elif (UNITY_ANDROID) - // Initialise platform (also unpacks videos from StreamingAsset folder (inside a jar), to the persistent data path) - if (AndroidMediaPlayer.InitialisePlatform()) - { - mediaPlayer = new AndroidMediaPlayer(_optionsAndroid.useFastOesPath, _optionsAndroid.showPosterFrame, _optionsAndroid.videoApi, - _optionsAndroid.enableAudio360, _optionsAndroid.audio360ChannelMode, _optionsAndroid.preferSoftwareDecoder); - } -#elif (UNITY_WEBGL) - WebGLMediaPlayer.InitialisePlatform(); - mediaPlayer = new WebGLMediaPlayer(_optionsWebGL.externalLibrary, _optionsWebGL.useTextureMips); -#elif (UNITY_PS4) - mediaPlayer = new PS4MediaPlayer(); -#endif -#endif - -#endif - // Fallback - if (mediaPlayer == null) - { - Debug.LogError(string.Format("[AVProVideo] Not supported on this platform {0} {1} {2} {3}. Using null media player!", Application.platform, SystemInfo.deviceModel, SystemInfo.processorType, SystemInfo.operatingSystem)); - - mediaPlayer = new NullMediaPlayer(); - } - - return mediaPlayer; - } - -#region Support for Time Scale -#if AVPROVIDEO_BETA_SUPPORT_TIMESCALE - // Adjust this value to get faster performance but may drop frames. - // Wait longer to ensure there is enough time for frames to process - private const float TimeScaleTimeoutMs = 20f; - private bool _timeScaleIsControlling; - private float _timeScaleVideoTime; - - private void UpdateTimeScale() - { - if (Time.timeScale != 1f || Time.captureFramerate != 0) - { - if (m_Control.IsPlaying()) - { - m_Control.Pause(); - _timeScaleIsControlling = true; - _timeScaleVideoTime = m_Control.GetCurrentTimeMs(); - } - - if (_timeScaleIsControlling) - { - // Progress time - _timeScaleVideoTime += (Time.deltaTime * 1000f); - - // Handle looping - if (m_Control.IsLooping() && _timeScaleVideoTime >= Info.GetDurationMs()) - { - // TODO: really we should seek to (_timeScaleVideoTime % Info.GetDurationMs()) - _timeScaleVideoTime = 0f; - } - - int preSeekFrameCount = m_Texture.GetTextureFrameCount(); - - // Seek to the new time - { - float preSeekTime = Control.GetCurrentTimeMs(); - - // Seek - m_Control.Seek(_timeScaleVideoTime); - - // Early out, if after the seek the time hasn't changed, the seek was probably too small to go to the next frame. - // TODO: This behaviour may be different on other platforms (not Windows) and needs more testing. - if (Mathf.Approximately(preSeekTime, m_Control.GetCurrentTimeMs())) - { - return; - } - } - - // Wait for the new frame to arrive - if (!m_Control.WaitForNextFrame(GetDummyCamera(), preSeekFrameCount)) - { - // If WaitForNextFrame fails (e.g. in android single threaded), we run the below code to asynchronously wait for the frame - System.DateTime startTime = System.DateTime.Now; - int lastFrameCount = TextureProducer.GetTextureFrameCount(); - - while (m_Control != null && (System.DateTime.Now - startTime).TotalMilliseconds < (double)TimeScaleTimeoutMs) - { - m_Player.Update(); - m_Player.Render(); - GetDummyCamera().Render(); - if (lastFrameCount != TextureProducer.GetTextureFrameCount()) - { - break; - } - } - } - } - } - else - { - // Restore playback when timeScale becomes 1 - if (_timeScaleIsControlling) - { - m_Control.Play(); - _timeScaleIsControlling = false; - } - } - } -#endif -#endregion - - private bool ForceWaitForNewFrame(int lastFrameCount, float timeoutMs) - { - bool result = false; - // Wait for the frame to change, or timeout to happen (for the case that there is no new frame for this time) - System.DateTime startTime = System.DateTime.Now; - int iterationCount = 0; - while (Control != null && (System.DateTime.Now - startTime).TotalMilliseconds < (double)timeoutMs) - { - m_Player.Update(); - - // TODO: check if Seeking has completed! Then we don't have to wait - - // If frame has changed we can continue - // NOTE: this will never happen because GL.IssuePlugin.Event is never called in this loop - if (lastFrameCount != TextureProducer.GetTextureFrameCount()) - { - result = true; - break; - } - - iterationCount++; - - // NOTE: we tried to add Sleep for 1ms but it was very slow, so switched to this time based method which burns more CPU but about double the speed - // NOTE: had to add the Sleep back in as after too many iterations (over 1000000) of GL.IssuePluginEvent Unity seems to lock up - // NOTE: seems that GL.IssuePluginEvent can't be called if we're stuck in a while loop and they just stack up - //System.Threading.Thread.Sleep(0); - } - - m_Player.Render(); - - return result; - } - - private void UpdateAudioFocus() - { - // TODO: we could use gizmos to draw the focus area - m_Control.SetAudioFocusEnabled(m_AudioFocusEnabled); - m_Control.SetAudioFocusProperties(m_AudioFocusOffLevelDB, m_AudioFocusWidthDegrees); - m_Control.SetAudioFocusRotation(m_AudioFocusTransform == null ? Quaternion.identity : m_AudioFocusTransform.rotation); - } - - private void UpdateAudioHeadTransform() - { - if (m_AudioHeadTransform != null) - { - m_Control.SetAudioHeadRotation(m_AudioHeadTransform.rotation); - } - else - { - m_Control.ResetAudioHeadRotation(); - } - } - - private void UpdateErrors() - { - ErrorCode errorCode = m_Control.GetLastError(); - if (ErrorCode.None != errorCode) - { - Debug.LogError("[AVProVideo] Error: " + Helper.GetErrorMessage(errorCode)); - - if (m_events != null && m_events.HasListeners() && IsHandleEvent(MediaPlayerEvent.EventType.Error)) - { - m_events.Invoke(this, MediaPlayerEvent.EventType.Error, errorCode); - } - } - } - - private void UpdateEvents() - { - if (m_events != null && m_Control != null && m_events.HasListeners()) - { - //NOTE: Fixes a bug where the event was being fired immediately, so when a file is opened, the finishedPlaying fired flag gets set but - //is then set to true immediately afterwards due to the returned value - m_FinishedFrameOpenCheck = false; - if (IsHandleEvent(MediaPlayerEvent.EventType.FinishedPlaying)) - { - if (FireEventIfPossible(MediaPlayerEvent.EventType.FinishedPlaying, m_EventFired_FinishedPlaying)) - { - m_EventFired_FinishedPlaying = !m_FinishedFrameOpenCheck; - } - } - - // Reset some event states that can reset during playback - { - // Keep track of whether the Playing state has changed - if (m_EventFired_Started && IsHandleEvent(MediaPlayerEvent.EventType.Started) && - m_Control != null && !m_Control.IsPlaying() && !m_Control.IsSeeking()) - { - // Playing has stopped - m_EventFired_Started = false; - } - - // NOTE: We check m_Control isn't null in case the scene is unloaded in response to the FinishedPlaying event - if (m_EventFired_FinishedPlaying && IsHandleEvent(MediaPlayerEvent.EventType.FinishedPlaying) && - m_Control != null && m_Control.IsPlaying() && !m_Control.IsFinished()) - { - bool reset = true; -#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_WSA - reset = false; - if (m_Info.HasVideo()) - { - // Don't reset if within a frame of the end of the video, important for time > duration workaround - float msPerFrame = 1000f / m_Info.GetVideoFrameRate(); - //Debug.Log(m_Info.GetDurationMs() - m_Control.GetCurrentTimeMs() + " " + msPerFrame); - if(m_Info.GetDurationMs() - m_Control.GetCurrentTimeMs() > msPerFrame) - { - reset = true; - } - } - else - { - // For audio only media just check if we're not beyond the duration - if (m_Control.GetCurrentTimeMs() < m_Info.GetDurationMs()) - { - reset = true; - } - } -#endif - if (reset) - { - //Debug.Log("Reset"); - m_EventFired_FinishedPlaying = false; - } - } - } - - // Events that can only fire once - m_EventFired_MetaDataReady = FireEventIfPossible(MediaPlayerEvent.EventType.MetaDataReady, m_EventFired_MetaDataReady); - m_EventFired_ReadyToPlay = FireEventIfPossible(MediaPlayerEvent.EventType.ReadyToPlay, m_EventFired_ReadyToPlay); - m_EventFired_Started = FireEventIfPossible(MediaPlayerEvent.EventType.Started, m_EventFired_Started); - m_EventFired_FirstFrameReady = FireEventIfPossible(MediaPlayerEvent.EventType.FirstFrameReady, m_EventFired_FirstFrameReady); - - // Events that can fire multiple times - { - // Subtitle changing - if (FireEventIfPossible(MediaPlayerEvent.EventType.SubtitleChange, false)) - { - m_previousSubtitleIndex = m_Subtitles.GetSubtitleIndex(); - } - - // Resolution changing - if (FireEventIfPossible(MediaPlayerEvent.EventType.ResolutionChanged, false)) - { - m_EventState_PreviousWidth = m_Info.GetVideoWidth(); - m_EventState_PreviousHeight = m_Info.GetVideoHeight(); - } - - // Stalling - if (IsHandleEvent(MediaPlayerEvent.EventType.Stalled)) - { - bool newState = m_Info.IsPlaybackStalled(); - if (newState != m_EventState_PlaybackStalled) - { - m_EventState_PlaybackStalled = newState; - - var newEvent = m_EventState_PlaybackStalled ? MediaPlayerEvent.EventType.Stalled : MediaPlayerEvent.EventType.Unstalled; - FireEventIfPossible(newEvent, false); - } - } - // Seeking - if (IsHandleEvent(MediaPlayerEvent.EventType.StartedSeeking)) - { - bool newState = m_Control.IsSeeking(); - if (newState != m_EventState_PlaybackSeeking) - { - m_EventState_PlaybackSeeking = newState; - - var newEvent = m_EventState_PlaybackSeeking ? MediaPlayerEvent.EventType.StartedSeeking : MediaPlayerEvent.EventType.FinishedSeeking; - FireEventIfPossible(newEvent, false); - } - } - // Buffering - if (IsHandleEvent(MediaPlayerEvent.EventType.StartedBuffering)) - { - bool newState = m_Control.IsBuffering(); - if (newState != m_EventState_PlaybackBuffering) - { - m_EventState_PlaybackBuffering = newState; - - var newEvent = m_EventState_PlaybackBuffering ? MediaPlayerEvent.EventType.StartedBuffering : MediaPlayerEvent.EventType.FinishedBuffering; - FireEventIfPossible(newEvent, false); - } - } - } - } - } - - protected bool IsHandleEvent(MediaPlayerEvent.EventType eventType) - { - return ((uint)m_eventMask & (1 << (int)eventType)) != 0; - } - - private bool FireEventIfPossible(MediaPlayerEvent.EventType eventType, bool hasFired) - { - if (CanFireEvent(eventType, hasFired)) - { - hasFired = true; - m_events.Invoke(this, eventType, ErrorCode.None); - } - return hasFired; - } - - private bool CanFireEvent(MediaPlayerEvent.EventType et, bool hasFired) - { - bool result = false; - if (m_events != null && m_Control != null && !hasFired && IsHandleEvent(et)) - { - switch (et) - { - case MediaPlayerEvent.EventType.FinishedPlaying: - //Debug.Log(m_Control.GetCurrentTimeMs() + " " + m_Info.GetDurationMs()); - result = (!m_Control.IsLooping() && m_Control.CanPlay() && m_Control.IsFinished()) -#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_WSA - || (m_Control.GetCurrentTimeMs() > m_Info.GetDurationMs() && !m_Control.IsLooping()) -#endif - ; - break; - case MediaPlayerEvent.EventType.MetaDataReady: - result = (m_Control.HasMetaData()); - break; - case MediaPlayerEvent.EventType.FirstFrameReady: - result = (m_Texture != null && m_Control.CanPlay() && m_Texture.GetTextureFrameCount() > 0); - break; - case MediaPlayerEvent.EventType.ReadyToPlay: - result = (!m_Control.IsPlaying() && m_Control.CanPlay() && !m_AutoStart); - break; - case MediaPlayerEvent.EventType.Started: - result = (m_Control.IsPlaying()); - break; - case MediaPlayerEvent.EventType.SubtitleChange: - result = (m_previousSubtitleIndex != m_Subtitles.GetSubtitleIndex()); - break; - case MediaPlayerEvent.EventType.Stalled: - result = m_Info.IsPlaybackStalled(); - break; - case MediaPlayerEvent.EventType.Unstalled: - result = !m_Info.IsPlaybackStalled(); - break; - case MediaPlayerEvent.EventType.StartedSeeking: - result = m_Control.IsSeeking(); - break; - case MediaPlayerEvent.EventType.FinishedSeeking: - result = !m_Control.IsSeeking(); - break; - case MediaPlayerEvent.EventType.StartedBuffering: - result = m_Control.IsBuffering(); - break; - case MediaPlayerEvent.EventType.FinishedBuffering: - result = !m_Control.IsBuffering(); - break; - case MediaPlayerEvent.EventType.ResolutionChanged: - result = (m_Info != null && (m_EventState_PreviousWidth != m_Info.GetVideoWidth() || m_EventState_PreviousHeight != m_Info.GetVideoHeight())); - break; - default: - Debug.LogWarning("[AVProVideo] Unhandled event type"); - break; - } - } - return result; - } - -#region Application Focus and Pausing -#if !UNITY_EDITOR - void OnApplicationFocus(bool focusStatus) - { -#if !(UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) -// Debug.Log("OnApplicationFocus: focusStatus: " + focusStatus); - - if (focusStatus) - { - if (m_Control != null && m_WasPlayingOnPause) - { - m_WasPlayingOnPause = false; - m_Control.Play(); - - Helper.LogInfo("OnApplicationFocus: playing video again"); - } - } -#endif - } - - void OnApplicationPause(bool pauseStatus) - { -#if !(UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) -// Debug.Log("OnApplicationPause: pauseStatus: " + pauseStatus); - - if (pauseStatus) - { - if (_pauseMediaOnAppPause) - { - if (m_Control!= null && m_Control.IsPlaying()) - { - m_WasPlayingOnPause = true; - m_Control.Pause(); - - Helper.LogInfo("OnApplicationPause: pausing video"); - } - } - } - else - { - if (_playMediaOnAppUnpause) - { - // Catch coming back from power off state when no lock screen - OnApplicationFocus(true); - } - } -#endif - } -#endif -#endregion - -#region Save Frame To PNG -#if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR - [ContextMenu("Save Frame To PNG")] - public void SaveFrameToPng() - { - Texture2D frame = ExtractFrame(null); - if (frame != null) - { - byte[] imageBytes = frame.EncodeToPNG(); - if (imageBytes != null) - { -#if !UNITY_WEBPLAYER - string timecode = Mathf.FloorToInt(Control.GetCurrentTimeMs()).ToString("D8"); - System.IO.File.WriteAllBytes("frame-" + timecode + ".png", imageBytes); -#else - Debug.LogError("Web Player platform doesn't support file writing. Change platform in Build Settings."); -#endif - } - - Destroy(frame); - } - } -#endif -#endregion - -#region Extract Frame - /// - /// Create or return (if cached) a camera that is inactive and renders nothing - /// This camera is used to call .Render() on which causes the render thread to run - /// This is useful for forcing GL.IssuePluginEvent() to run and is used for - /// wait for frames to render for ExtractFrame() and UpdateTimeScale() - /// - private static Camera GetDummyCamera() - { - if (m_DummyCamera == null) - { - const string goName = "AVPro Video Dummy Camera"; - GameObject go = GameObject.Find(goName); - if (go == null) - { - go = new GameObject(goName); - go.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave; - go.SetActive(false); - Object.DontDestroyOnLoad(go); - - m_DummyCamera = go.AddComponent(); - m_DummyCamera.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave; - m_DummyCamera.cullingMask = 0; - m_DummyCamera.clearFlags = CameraClearFlags.Nothing; - m_DummyCamera.enabled = false; - } - else - { - m_DummyCamera = go.GetComponent(); - } - } - //Debug.Assert(m_DummyCamera != null); - return m_DummyCamera; - } - - private IEnumerator ExtractFrameCoroutine(Texture2D target, ProcessExtractedFrame callback, float timeSeconds = -1f, bool accurateSeek = true, int timeoutMs = 1000) - { -#if REAL_ANDROID || UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX || UNITY_IOS || UNITY_TVOS - Texture2D result = target; - - Texture frame = null; - - if (m_Control != null) - { - if (timeSeconds >= 0f) - { - Pause(); - - float seekTimeMs = timeSeconds * 1000f; - - // If the frame is already available just grab it - if (TextureProducer.GetTexture() != null && m_Control.GetCurrentTimeMs() == seekTimeMs) - { - frame = TextureProducer.GetTexture(); - } - else - { - int preSeekFrameCount = m_Texture.GetTextureFrameCount(); - - // Seek to the frame - if (accurateSeek) - { - m_Control.Seek(seekTimeMs); - } - else - { - m_Control.SeekFast(seekTimeMs); - } - - // Wait for the new frame to arrive - if (!m_Control.WaitForNextFrame(GetDummyCamera(), preSeekFrameCount)) - { - // If WaitForNextFrame fails (e.g. in android single threaded), we run the below code to asynchronously wait for the frame - int currFc = TextureProducer.GetTextureFrameCount(); - int iterations = 0; - int maxIterations = 50; - - //+1 as often there will be an extra frame produced after pause (so we need to wait for the second frame instead) - while((currFc + 1) >= TextureProducer.GetTextureFrameCount() && iterations++ < maxIterations) - { - yield return null; - } - } - frame = TextureProducer.GetTexture(); - } - } - else - { - frame = TextureProducer.GetTexture(); - } - } - - if (frame != null) - { - result = Helper.GetReadableTexture(frame, TextureProducer.RequiresVerticalFlip(), Helper.GetOrientation(Info.GetTextureTransform()), target); - } -#else - Texture2D result = ExtractFrame(target, timeSeconds, accurateSeek, timeoutMs); -#endif - callback(result); - - yield return null; - } - - public void ExtractFrameAsync(Texture2D target, ProcessExtractedFrame callback, float timeSeconds = -1f, bool accurateSeek = true, int timeoutMs = 1000) - { - StartCoroutine(ExtractFrameCoroutine(target, callback, timeSeconds, accurateSeek, timeoutMs)); - } - - // "target" can be null or you can pass in an existing texture. - public Texture2D ExtractFrame(Texture2D target, float timeSeconds = -1f, bool accurateSeek = true, int timeoutMs = 1000) - { - Texture2D result = target; - - // Extract frames returns the interal frame of the video player - Texture frame = ExtractFrame(timeSeconds, accurateSeek, timeoutMs); - if (frame != null) - { - result = Helper.GetReadableTexture(frame, TextureProducer.RequiresVerticalFlip(), Helper.GetOrientation(Info.GetTextureTransform()), target); - } - - return result; - } - - private Texture ExtractFrame(float timeSeconds = -1f, bool accurateSeek = true, int timeoutMs = 1000) - { - Texture result = null; - - if (m_Control != null) - { - if (timeSeconds >= 0f) - { - Pause(); - - float seekTimeMs = timeSeconds * 1000f; - - // If the frame is already available just grab it - if (TextureProducer.GetTexture() != null && m_Control.GetCurrentTimeMs() == seekTimeMs) - { - result = TextureProducer.GetTexture(); - } - else - { - // Store frame count before seek - int frameCount = TextureProducer.GetTextureFrameCount(); - - // Seek to the frame - if (accurateSeek) - { - m_Control.Seek(seekTimeMs); - } - else - { - m_Control.SeekFast(seekTimeMs); - } - - // Wait for frame to change - ForceWaitForNewFrame(frameCount, timeoutMs); - result = TextureProducer.GetTexture(); - } - } - else - { - result = TextureProducer.GetTexture(); - } - } - return result; - } -#endregion - -#region Play/Pause Support for Unity Editor - // This code handles the pause/play buttons in the editor -#if UNITY_EDITOR - static MediaPlayer() - { -#if UNITY_2017_2_OR_NEWER - UnityEditor.EditorApplication.pauseStateChanged -= OnUnityPauseModeChanged; - UnityEditor.EditorApplication.pauseStateChanged += OnUnityPauseModeChanged; -#else - UnityEditor.EditorApplication.playmodeStateChanged -= OnUnityPlayModeChanged; - UnityEditor.EditorApplication.playmodeStateChanged += OnUnityPlayModeChanged; -#endif - } - -#if UNITY_2017_2_OR_NEWER - private static void OnUnityPauseModeChanged(UnityEditor.PauseState state) - { - OnUnityPlayModeChanged(); - } -#endif - private static void OnUnityPlayModeChanged() - { - if (UnityEditor.EditorApplication.isPlaying) - { - if (UnityEditor.EditorApplication.isPaused) - { - MediaPlayer[] players = Resources.FindObjectsOfTypeAll(); - foreach (MediaPlayer player in players) - { - player.EditorPause(); - } - } - else - { - MediaPlayer[] players = Resources.FindObjectsOfTypeAll(); - foreach (MediaPlayer player in players) - { - player.EditorUnpause(); - } - } - } - } - - private void EditorPause() - { - if (this.isActiveAndEnabled) - { - if (m_Control != null && m_Control.IsPlaying()) - { - m_WasPlayingOnPause = true; - m_Control.Pause(); - } - StopRenderCoroutine(); - } - } - - private void EditorUnpause() - { - if (this.isActiveAndEnabled) - { - if (m_Control != null && m_WasPlayingOnPause) - { - m_AutoStart = true; - m_WasPlayingOnPause = false; - m_AutoStartTriggered = false; - } - StartRenderCoroutine(); - } - } -#endif -#endregion - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs.meta deleted file mode 100644 index 004dafd..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/MediaPlayer.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 638c870cac4da414fba921606d504407 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs deleted file mode 100644 index 1ce5d67..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs +++ /dev/null @@ -1,901 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - [System.Serializable] - public class MediaPlaylist - { - [System.Serializable] - public class MediaItem - { - /*public enum SourceType - { - AVProMediaPlayer, - Texture2D, - } - - [SerializeField] - public SourceType sourceType;*/ - - [SerializeField] - public MediaPlayer.FileLocation fileLocation = MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder; - - [SerializeField] - public string filePath; - - /*[SerializeField] - public Texture2D texture; - - [SerializeField] - public float textureDuration;*/ - - [SerializeField] - public bool loop = false; - - [SerializeField] - public PlaylistMediaPlayer.StartMode startMode = PlaylistMediaPlayer.StartMode.Immediate; - - [SerializeField] - public PlaylistMediaPlayer.ProgressMode progressMode = PlaylistMediaPlayer.ProgressMode.OnFinish; - - [SerializeField] - public float progressTimeSeconds = 0.5f; - - [SerializeField] - public bool autoPlay = true; - - [SerializeField] - public StereoPacking stereoPacking = StereoPacking.None; - - [SerializeField] - public AlphaPacking alphaPacking = AlphaPacking.None; - - [SerializeField] - public bool isOverrideTransition = false; - - [SerializeField] - public PlaylistMediaPlayer.Transition overrideTransition = PlaylistMediaPlayer.Transition.None; - - [SerializeField] - public float overrideTransitionDuration = 1f; - - [SerializeField] - public PlaylistMediaPlayer.Easing overrideTransitionEasing; - } - - [SerializeField] - private List _items = new List(8); - - public List Items { get { return _items; } } - - public bool HasItemAt(int index) - { - return (index >= 0 && index < _items.Count); - } - } - - /// - /// This is a BETA component - /// - [AddComponentMenu("AVPro Video/Playlist Media Player (BETA)", -100)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class PlaylistMediaPlayer : MediaPlayer, IMediaProducer - { - public enum Transition - { - None, - Fade, - Black, - White, - Transparent, - Horiz, - Vert, - Diag, - MirrorH, - MirrorV, - MirrorD, - ScrollV, - ScrollH, - Circle, - Diamond, - Blinds, - Arrows, - SlideH, - SlideV, - Zoom, - RectV, - Random, - } - - public enum PlaylistLoopMode - { - None, - Loop, - } - - public enum StartMode - { - Immediate, - //AfterSeconds, - Manual, - } - - public enum ProgressMode - { - OnFinish, - BeforeFinish, - //AfterTime, - Manual, - } - - [SerializeField] - private MediaPlayer _playerA; - - [SerializeField] - private MediaPlayer _playerB; - - [SerializeField] - private bool _playlistAutoProgress = true; - - [SerializeField] - private PlaylistLoopMode _playlistLoopMode = PlaylistLoopMode.None; - - [SerializeField] - private MediaPlaylist _playlist = new MediaPlaylist(); - - [SerializeField] - [Tooltip("Pause the previously playing video. This is useful for systems that will struggle to play 2 videos at once")] - private bool _pausePreviousOnTransition = true; - - [SerializeField] - private Transition _nextTransition = Transition.None; - - [SerializeField] - private float _transitionDuration = 1f; - - [SerializeField] - private Easing _transitionEasing; - - private static int _propFromTex; - private static int _propT; - - private int _playlistIndex = 0; - private MediaPlayer _nextPlayer; - private Shader _shader; - private Material _material; - private Transition _currentTransition = Transition.None; - private string _currentTransitionName = "LERP_NONE"; - private float _currentTransitionDuration = 1f; - private Easing.Preset _currentTransitionEasing; - private float _textureTimer; - private float _transitionTimer; - private System.Func _easeFunc; - private RenderTexture _rt; - private MediaPlaylist.MediaItem _currentItem; - private MediaPlaylist.MediaItem _nextItem; - - public MediaPlayer CurrentPlayer - { - get - { - if (NextPlayer == _playerA) - { - return _playerB; - } - return _playerA; - } - } - - public MediaPlayer NextPlayer - { - get - { - return _nextPlayer; - } - } - - public MediaPlaylist Playlist { get { return _playlist; } } - - public int PlaylistIndex { get { return _playlistIndex; } } - - public MediaPlaylist.MediaItem PlaylistItem { get { if (_playlist.HasItemAt(_playlistIndex)) return _playlist.Items[_playlistIndex]; return null; } } - - public PlaylistLoopMode LoopMode { get { return _playlistLoopMode; } set { _playlistLoopMode = value; } } - - public bool AutoProgress { get { return _playlistAutoProgress; } set { _playlistAutoProgress = value; } } - - public override IMediaInfo Info - { - get { if (CurrentPlayer != null) return CurrentPlayer.Info; return null; } - } - - public override IMediaControl Control - { - get { if (CurrentPlayer != null) return CurrentPlayer.Control; return null; } - } - - public override IMediaProducer TextureProducer - { - get - { - if (CurrentPlayer != null) - { - if (IsTransitioning()) - { - return this; - } - /*if (_currentItem != null && _currentItem.sourceType == MediaPlaylist.MediaItem.SourceType.Texture2D && _currentItem.texture != null) - { - return this; - }*/ - return CurrentPlayer.TextureProducer; - } - return null; - } - } - - private void SwapPlayers() - { - // Pause the previously playing video - // This is useful for systems that will struggle to play 2 videos at once - if (_pausePreviousOnTransition) - { - CurrentPlayer.Pause(); - } - - // Tell listeners that the playlist item has changed - Events.Invoke(this, MediaPlayerEvent.EventType.PlaylistItemChanged, ErrorCode.None); - - // Start the transition - if (_currentTransition != Transition.None) - { - // Create a new transition texture if required - Texture currentTexture = GetCurrentTexture(); - Texture nextTexture = GetNextTexture(); - if (currentTexture != null && nextTexture != null) - { - int maxWidth = Mathf.Max(nextTexture.width, currentTexture.width); - int maxHeight = Mathf.Max(nextTexture.height, currentTexture.height); - if (_rt != null) - { - if (_rt.width != maxWidth || _rt.height != maxHeight) - { - RenderTexture.ReleaseTemporary(_rt = null); - } - } - - if (_rt == null) - { - _rt = RenderTexture.GetTemporary(maxWidth, maxHeight, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Default, 1); - Graphics.Blit(currentTexture, _rt); - } - - _material.SetTexture(_propFromTex, currentTexture); - - _easeFunc = Easing.GetFunction(_currentTransitionEasing); - _transitionTimer = 0f; - } - else - { - _transitionTimer = _currentTransitionDuration; - } - } - - // Swap the videos - if (NextPlayer == _playerA) - { - _nextPlayer = _playerB; - } - else - { - _nextPlayer = _playerA; - } - - // Swap the items - _currentItem = _nextItem; - _nextItem = null; - } - - private Texture GetCurrentTexture() - { - /*if (_currentItem != null && _currentItem.sourceType == MediaPlaylist.MediaItem.SourceType.Texture2D && _currentItem.texture != null) - { - return _currentItem.texture; - }*/ - if (CurrentPlayer != null && CurrentPlayer.TextureProducer != null) - { - return CurrentPlayer.TextureProducer.GetTexture(); - } - return null; - } - - private Texture GetNextTexture() - { - /*if (_nextItem != null && _nextItem.sourceType == MediaPlaylist.MediaItem.SourceType.Texture2D && _nextItem.texture != null) - { - return _nextItem.texture; - }*/ - if (_nextPlayer != null && _nextPlayer.TextureProducer != null) - { - return _nextPlayer.TextureProducer.GetTexture(); - } - return null; - } - - private void Awake() - { - _nextPlayer = _playerA; - _shader = Shader.Find("AVProVideo/Helper/Transition"); - _material = new Material(_shader); - _propFromTex = Shader.PropertyToID("_FromTex"); - _propT = Shader.PropertyToID("_Fade"); - _easeFunc = Easing.GetFunction(_transitionEasing.preset); - } - - protected override void OnDestroy() - { - if (_rt != null) - { - RenderTexture.ReleaseTemporary(_rt); - _rt = null; - } - if (_material != null) - { - Material.Destroy(_material); - _material = null; - } - base.OnDestroy(); - } - - private void Start() - { - if (CurrentPlayer) - { - CurrentPlayer.Events.AddListener(OnVideoEvent); - - if (NextPlayer) - { - NextPlayer.Events.AddListener(OnVideoEvent); - } - } - - JumpToItem(0); - } - - public void OnVideoEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - if (mp == CurrentPlayer) - { - Events.Invoke(mp, et, errorCode); - } - - switch (et) - { - case MediaPlayerEvent.EventType.FirstFrameReady: - if (mp == NextPlayer) - { - SwapPlayers(); - Events.Invoke(mp, et, errorCode); - } - break; - case MediaPlayerEvent.EventType.FinishedPlaying: - if (_playlistAutoProgress && mp == CurrentPlayer && _currentItem.progressMode == ProgressMode.OnFinish) - { - NextItem(); - } - break; - } - } - - public bool PrevItem() - { - return JumpToItem(_playlistIndex - 1); - } - - public bool NextItem() - { - bool result = JumpToItem(_playlistIndex + 1); - if (!result) - { - Events.Invoke(this, MediaPlayerEvent.EventType.PlaylistFinished, ErrorCode.None); - } - return result; - } - - public bool CanJumpToItem(int index) - { - if (_playlistLoopMode == PlaylistLoopMode.Loop) - { - if (_playlist.Items.Count > 0) - { - index %= _playlist.Items.Count; - if (index < 0) - { - index += _playlist.Items.Count; - } - } - } - return _playlist.HasItemAt(index); - } - - public bool JumpToItem(int index) - { - if (_playlistLoopMode == PlaylistLoopMode.Loop) - { - if (_playlist.Items.Count > 0) - { - index %= _playlist.Items.Count; - if (index < 0) - { - index += _playlist.Items.Count; - } - } - } - if (_playlist.HasItemAt(index)) - { - _playlistIndex = index; - _nextItem = _playlist.Items[_playlistIndex]; - OpenVideoFile(_nextItem); - return true; - } - return false; - } - - public void OpenVideoFile(MediaPlaylist.MediaItem mediaItem) - { - bool isMediaAlreadyLoaded = false; - if (NextPlayer.m_VideoPath == mediaItem.filePath && NextPlayer.m_VideoLocation == mediaItem.fileLocation) - { - isMediaAlreadyLoaded = true; - } - - if (mediaItem.isOverrideTransition) - { - SetTransition(mediaItem.overrideTransition, mediaItem.overrideTransitionDuration, mediaItem.overrideTransitionEasing.preset); - } - else - { - SetTransition(_nextTransition, _transitionDuration, _transitionEasing.preset); - } - - this.m_Loop = NextPlayer.m_Loop = mediaItem.loop; - this.m_AutoStart = NextPlayer.m_AutoStart = mediaItem.autoPlay; - this.m_VideoLocation = NextPlayer.m_VideoLocation = mediaItem.fileLocation; - this.m_VideoPath = NextPlayer.m_VideoPath = mediaItem.filePath; - this.m_StereoPacking = NextPlayer.m_StereoPacking = mediaItem.stereoPacking; - this.m_AlphaPacking = NextPlayer.m_AlphaPacking = mediaItem.alphaPacking; - - if (isMediaAlreadyLoaded) - { - NextPlayer.Rewind(false); - if (_nextItem.startMode == StartMode.Immediate) - { - NextPlayer.Play(); - } - // TODO: We probably want to wait until the new frame arrives before swapping after a Rewind() - SwapPlayers(); - } - else - { - if (string.IsNullOrEmpty(NextPlayer.m_VideoPath)) - { - NextPlayer.CloseVideo(); - } - else - { - //NextPlayer.m_AutoStart = false; - NextPlayer.OpenVideoFromFile(NextPlayer.m_VideoLocation, NextPlayer.m_VideoPath, _nextItem.startMode == StartMode.Immediate); - } - } - } - - private bool IsTransitioning() - { - if (_rt != null && _transitionTimer < _currentTransitionDuration && _currentTransition != Transition.None) - { - return true; - } - return false; - } - - private void SetTransition(Transition transition, float duration, Easing.Preset easing) - { - if (transition == Transition.Random) - { - transition = (Transition)Random.Range(0, (int)Transition.Random); - } - - if (transition != _currentTransition) - { - // Disable the previous transition - if (!string.IsNullOrEmpty(_currentTransitionName)) - { - _material.DisableKeyword(_currentTransitionName); - } - - // Enable the next transition - _currentTransition = transition; - _currentTransitionName = GetTransitionName(transition); - _material.EnableKeyword(_currentTransitionName); - } - - _currentTransitionDuration = duration; - _currentTransitionEasing = easing; - } - - protected override void Update() - { - if (IsTransitioning()) - { - _transitionTimer += Time.deltaTime; - float t = _easeFunc(Mathf.Clamp01(_transitionTimer / _currentTransitionDuration)); - - // Fade the audio volume - NextPlayer.Control.SetVolume(1f - t); - CurrentPlayer.Control.SetVolume(t); - - // TODO: support going from mono to stereo - // TODO: support videos of different aspect ratios by rendering with scaling to fit - // This can be done by blitting twice, once for each eye - // If the stereo mode is different for playera/b then both should be set to stereo during the transition - // if (CurrentPlayer.m_StereoPacking == StereoPacking.TopBottom).... - _material.SetFloat(_propT, t); - _rt.DiscardContents(); - Graphics.Blit(GetCurrentTexture(), _rt, _material); - - // After the transition is complete, pause the previous video - if (!_pausePreviousOnTransition && !IsTransitioning()) - { - if (NextPlayer != null && NextPlayer.Control.IsPlaying()) - { - NextPlayer.Pause(); - } - } - } - else - { - if (_playlistAutoProgress && _nextItem == null && _currentItem != null && _currentItem.progressMode == ProgressMode.BeforeFinish && Control != null && Control.GetCurrentTimeMs() >= (Info.GetDurationMs() - (_currentItem.progressTimeSeconds * 1000f))) - { - this.NextItem(); - } - } - - base.Update(); - } - - public Texture GetTexture(int index = 0) - { - // TODO: support iOS YCbCr by supporting multiple textures - /*if (!IsTransitioning()) - { - if (_currentItem != null && _currentItem.sourceType == MediaPlaylist.MediaItem.SourceType.Texture2D && _currentItem.texture != null) - { - return _currentItem.texture; - } - }*/ - return _rt; - } - - public int GetTextureCount() - { - return CurrentPlayer.TextureProducer.GetTextureCount(); - } - - public int GetTextureFrameCount() - { - return CurrentPlayer.TextureProducer.GetTextureFrameCount(); - } - - public bool SupportsTextureFrameCount() - { - return CurrentPlayer.TextureProducer.SupportsTextureFrameCount(); - } - - public long GetTextureTimeStamp() - { - return CurrentPlayer.TextureProducer.GetTextureTimeStamp(); - } - - public bool RequiresVerticalFlip() - { - return CurrentPlayer.TextureProducer.RequiresVerticalFlip(); - } - - public Matrix4x4 GetYpCbCrTransform() - { - return CurrentPlayer.TextureProducer.GetYpCbCrTransform(); - } - - private static string GetTransitionName(Transition transition) - { - switch (transition) - { - case Transition.None: return "LERP_NONE"; - case Transition.Fade: return "LERP_FADE"; - case Transition.Black: return "LERP_BLACK"; - case Transition.White: return "LERP_WHITE"; - case Transition.Transparent:return "LERP_TRANSP"; - case Transition.Horiz: return "LERP_HORIZ"; - case Transition.Vert: return "LERP_VERT"; - case Transition.Diag: return "LERP_DIAG"; - case Transition.MirrorH: return "LERP_HORIZ_MIRROR"; - case Transition.MirrorV: return "LERP_VERT_MIRROR"; - case Transition.MirrorD: return "LERP_DIAG_MIRROR"; - case Transition.ScrollV: return "LERP_SCROLL_VERT"; - case Transition.ScrollH: return "LERP_SCROLL_HORIZ"; - case Transition.Circle: return "LERP_CIRCLE"; - case Transition.Diamond: return "LERP_DIAMOND"; - case Transition.Blinds: return "LERP_BLINDS"; - case Transition.Arrows: return "LERP_ARROW"; - case Transition.SlideH: return "LERP_SLIDE_HORIZ"; - case Transition.SlideV: return "LERP_SLIDE_VERT"; - case Transition.Zoom: return "LERP_ZOOM_FADE"; - case Transition.RectV: return "LERP_RECTS_VERT"; - } - return string.Empty; - } - -#region Easing - - /// - /// Easing functions - /// - [System.Serializable] - public class Easing - { - public Preset preset = Preset.Linear; - - public enum Preset - { - Step, - Linear, - InQuad, - OutQuad, - InOutQuad, - InCubic, - OutCubic, - InOutCubic, - InQuint, - OutQuint, - InOutQuint, - InQuart, - OutQuart, - InOutQuart, - InExpo, - OutExpo, - InOutExpo, - Random, - RandomNotStep, - } - - public static System.Func GetFunction(Preset preset) - { - System.Func result = null; - switch (preset) - { - case Preset.Step: - result = Step; - break; - case Preset.Linear: - result = Linear; - break; - case Preset.InQuad: - result = InQuad; - break; - case Preset.OutQuad: - result = OutQuad; - break; - case Preset.InOutQuad: - result = InOutQuad; - break; - case Preset.InCubic: - result = InCubic; - break; - case Preset.OutCubic: - result = OutCubic; - break; - case Preset.InOutCubic: - result = InOutCubic; - break; - case Preset.InQuint: - result = InQuint; - break; - case Preset.OutQuint: - result = OutQuint; - break; - case Preset.InOutQuint: - result = InOutQuint; - break; - case Preset.InQuart: - result = InQuart; - break; - case Preset.OutQuart: - result = OutQuart; - break; - case Preset.InOutQuart: - result = InOutQuart; - break; - case Preset.InExpo: - result = InExpo; - break; - case Preset.OutExpo: - result = OutExpo; - break; - case Preset.InOutExpo: - result = InOutExpo; - break; - case Preset.Random: - result = GetFunction((Preset)Random.Range(0, (int)Preset.Random)); - break; - case Preset.RandomNotStep: - result = GetFunction((Preset)Random.Range((int)Preset.Step+1, (int)Preset.Random)); - break; - } - return result; - } - - public static float PowerEaseIn(float t, float power) - { - return Mathf.Pow(t, power); - } - - public static float PowerEaseOut(float t, float power) - { - return 1f - Mathf.Abs(Mathf.Pow(t - 1f, power)); - } - - public static float PowerEaseInOut(float t, float power) - { - float result; - if (t < 0.5f) - { - result = PowerEaseIn(t * 2f, power) / 2f; - } - else - { - result = PowerEaseOut(t * 2f - 1f, power) / 2f + 0.5f; - } - return result; - } - - public static float Step(float t) - { - float result = 0f; - if (t >= 0.5f) - { - result = 1f; - } - return result; - } - - public static float Linear(float t) - { - return t; - } - - public static float InQuad(float t) - { - return PowerEaseIn(t, 2f); - } - - public static float OutQuad(float t) - { - return PowerEaseOut(t, 2f); - //return t * (2f - t); - } - - public static float InOutQuad(float t) - { - return PowerEaseInOut(t, 2f); - //return t < 0.5 ? (2f * t * t) : (-1f + (4f - 2f * t) * t); - } - - public static float InCubic(float t) - { - return PowerEaseIn(t, 3f); - //return t * t * t; - } - - public static float OutCubic(float t) - { - return PowerEaseOut(t, 3f); - //return (--t) * t * t + 1f; - } - - public static float InOutCubic(float t) - { - return PowerEaseInOut(t, 3f); - //return t < .5f ? (4f * t * t * t) : ((t - 1f) * (2f * t - 2f) * (2f * t - 2f) + 1f); - } - - public static float InQuart(float t) - { - return PowerEaseIn(t, 4f); - //return t * t * t * t; - } - - public static float OutQuart(float t) - { - return PowerEaseOut(t, 4f); - //return 1f - (--t) * t * t * t; - } - - public static float InOutQuart(float t) - { - return PowerEaseInOut(t, 4f); - //return t < 0.5f ? (8f * t * t * t * t) : (1f - 8f * (--t) * t * t * t); - } - - public static float InQuint(float t) - { - return PowerEaseIn(t, 5f); - //return t * t * t * t * t; - } - - public static float OutQuint(float t) - { - return PowerEaseOut(t, 5f); - //return 1f + (--t) * t * t * t * t; - } - - public static float InOutQuint(float t) - { - return PowerEaseInOut(t, 5f); - //return t < 0.5f ? (16f * t * t * t * t * t) : (1f + 16f * (--t) * t * t * t * t); - } - - public static float InExpo(float t) - { - float result = 0f; - if (t != 0f) - { - result = Mathf.Pow(2f, 10f * (t - 1f)); - } - return result; - } - - public static float OutExpo(float t) - { - float result = 1f; - if (t != 1f) - { - result = -Mathf.Pow(2f, -10f * t) + 1f; - } - return result; - } - - public static float InOutExpo(float t) - { - float result = 0f; - if (t > 0f) - { - result = 1f; - if (t < 1f) - { - t *= 2f; - if (t < 1f) - { - result = 0.5f * Mathf.Pow(2f, 10f * (t - 1f)); - } - else - { - t--; - result = 0.5f * (-Mathf.Pow(2f, -10f * t) + 2f); - } - } - } - return result; - } - } -#endregion Easing - - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs.meta deleted file mode 100644 index 3cc5bf7..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/PlaylistMediaPlayer.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e9ea31f33222f4b418e4e051a8a5ed24 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs deleted file mode 100644 index 66eb750..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs +++ /dev/null @@ -1,129 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -using System.Threading; -using System.Collections.Generic; -using UnityEngine; -using System; - -namespace RenderHeads.Media.AVProVideo -{ - [System.Serializable] - public class StreamParserEvent : UnityEngine.Events.UnityEvent - { - public enum EventType - { - Success, - Failed - } - } - - /// - /// Utility class for parsing adaptive media streams, such as HLS - /// A URL is specified, loaded and then the hierarchy of the stream elements are exposed - /// - public class StreamParser : MonoBehaviour // TODO: make this not a component - { - public enum StreamType { HLS } - - public string _url; - public StreamType _streamType; - public bool _autoLoad = true; - - private Stream _parser; - private bool _loaded = false; - private List _substreams; - private List _chunks; - private StreamParserEvent _events; - - public StreamParserEvent Events - { - get - { - if (_events == null) - { - _events = new StreamParserEvent(); - } - - return _events; - } - } - - private void LoadFile() - { - try - { - switch(_streamType) - { - case StreamType.HLS: - _parser = new HLSStream(_url); - break; - default: - _parser = new HLSStream(_url); - break; - } - - _substreams = _parser.GetAllStreams(); - _chunks = _parser.GetAllChunks(); - - _loaded = true; - - Debug.Log("[AVProVideo] Stream parser completed parsing stream file " + _url); - if (_events != null) - { - _events.Invoke(this, StreamParserEvent.EventType.Success); - } - } - catch (Exception e) - { - _loaded = false; - - Debug.LogError("[AVProVideo] Parser unable to read stream " + e.Message); - - if (_events != null) - { - _events.Invoke(this, StreamParserEvent.EventType.Failed); - } - } - } - - public bool Loaded - { - get { return _loaded; } - } - - public Stream Root - { - get { return _loaded ? _parser : null; } - } - - public List SubStreams - { - get { return _loaded ? _substreams : null; } - } - - public List Chunks - { - get { return _loaded ? _chunks : null; } - } - - public void ParseStream() - { -#if UNITY_WSA_10_0 || UNITY_WINRT_8_1 || UNITY_WSA - LoadFile(); -#else - Thread loadThread = new Thread(new ThreadStart(LoadFile)); - loadThread.Start(); -#endif - } - - void Start() - { - if(_autoLoad) - { - ParseStream(); - } - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs.meta deleted file mode 100644 index 2a240b8..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/StreamParser.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0a25ab4952e3b924c8d193758f43e236 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs deleted file mode 100644 index f32bf3c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs +++ /dev/null @@ -1,76 +0,0 @@ -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; -using UnityEngine.UI; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Update a standard uGUI Text element with subtitle text as it plays from the MediaPlayer - /// - [AddComponentMenu("AVPro Video/Subtitles uGUI", 201)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class SubtitlesUGUI : MonoBehaviour - { - [SerializeField] - private MediaPlayer _mediaPlayer = null; - - [SerializeField] - private Text _text = null; - - void Start() - { - ChangeMediaPlayer(_mediaPlayer); - } - - void OnDestroy() - { - ChangeMediaPlayer(null); - } - - public void ChangeMediaPlayer(MediaPlayer newPlayer) - { - // When changing the media player, handle event subscriptions - if (_mediaPlayer != null) - { - _mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - _mediaPlayer = null; - } - - if (newPlayer != null) - { - newPlayer.Events.AddListener(OnMediaPlayerEvent); - _mediaPlayer = newPlayer; - } - } - - // Callback function to handle events - private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.SubtitleChange: - { - string text = _mediaPlayer.Subtitles.GetSubtitleText(); - - // Change RichText for Unity uGUI Text - text = text.Replace("", ""); - text = text.Replace("", string.Empty); - text = text.Replace("", string.Empty); - - _text.text = text; - } - break; - } - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs.meta deleted file mode 100644 index ea5abc0..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/SubtitlesUGUI.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2d4bbe43657314a49a5f730e66dafebd -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support.meta deleted file mode 100644 index e8c809a..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 1d0986c1ab4c9b24fae2420421f4463f -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI.meta deleted file mode 100644 index 38e9a86..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 2cdcd5c0df033154a8ee88d8ef66a304 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs deleted file mode 100644 index d5b5b2d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs +++ /dev/null @@ -1,182 +0,0 @@ -//#define NGUI -using UnityEngine; -using System.Collections; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if NGUI -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Integrates AVPro Video with NGUI - /// Applies the video texture to the NGUI UITexture component - /// - [AddComponentMenu("AVPro Video/Display NGUI")] - public class ApplyToTextureWidgetNGUI : MonoBehaviour - { - #region Fields - [SerializeField] - private UITexture _uiTexture = null; - - [SerializeField] - private MediaPlayer _mediaPlayer = null; - - public MediaPlayer Player - { - get { return _mediaPlayer; } - set { if (_mediaPlayer != value) { ChangeMediaPlayer(value); _isDirty = true; } } - } - - [SerializeField] - private Texture2D _defaultTexture; - - public Texture2D DefaultTexture - { - get { return _defaultTexture; } - set { if (_defaultTexture != value) { _defaultTexture = value; _isDirty = true; } } - } - - [SerializeField] - private bool _makePixelPerfect = false; - - public bool MakePixelPerfect - { - get { return _makePixelPerfect; } - set { if (_makePixelPerfect != value) { _makePixelPerfect = value; _isDirty = true; } } - } - - private bool _isDirty; - private Texture _lastTextureApplied; - #endregion - - private void TryUpdateTexture() - { - bool applied = false; - - // Try to apply texture from media - if (_mediaPlayer != null && _mediaPlayer.TextureProducer != null) - { - Texture texture = _mediaPlayer.TextureProducer.GetTexture(); - if (texture != null) - { - // Check for changing texture - if (texture != _lastTextureApplied) - { - _isDirty = true; - } - - if (_isDirty) - { - Apply(texture, _mediaPlayer.TextureProducer.RequiresVerticalFlip()); - } - applied = true; - } - } - - // If the media didn't apply a texture, then try to apply the default texture - if (!applied) - { - if (_defaultTexture != _lastTextureApplied) - { - _isDirty = true; - } - if (_isDirty) - { - Apply(_defaultTexture, false); - } - } - } - - private void Apply(Texture texture, bool requiresYFlip) - { - if (_uiTexture != null) - { - _isDirty = false; - if (requiresYFlip) - { - _uiTexture.flip = UITexture.Flip.Vertically; - } - else - { - _uiTexture.flip = UITexture.Flip.Nothing; - } - - _lastTextureApplied = _uiTexture.mainTexture = texture; - - if (_makePixelPerfect) - { - _uiTexture.MakePixelPerfect(); - } - } - } - - private void ChangeMediaPlayer(MediaPlayer newPlayer) - { - // When changing the media player, handle event subscriptions - if (_mediaPlayer != null) - { - _mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - _mediaPlayer = null; - } - - _mediaPlayer = newPlayer; - if (_mediaPlayer != null) - { - _mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - } - - // Callback function to handle events - private void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Closing: - Apply(_defaultTexture, false); - break; - case MediaPlayerEvent.EventType.Started: - case MediaPlayerEvent.EventType.FirstFrameReady: - TryUpdateTexture(); - break; - } - } - - void Start() - { - if (_defaultTexture == null) - { - _defaultTexture = Texture2D.blackTexture; - } - ChangeMediaPlayer(_mediaPlayer); - } - - void Update() - { - TryUpdateTexture(); - } - - // We do a LateUpdate() to allow for any changes in the texture that may have happened in Update() - void LateUpdate() - { - TryUpdateTexture(); - } - - void OnEnable() - { - TryUpdateTexture(); - } - - void OnDisable() - { - Apply(_defaultTexture, false); - } - - void OnDestroy() - { - ChangeMediaPlayer(null); - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs.meta deleted file mode 100644 index 86bfd75..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/NGUI/ApplyToTextureWidgetNGUI.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 706300e4503130449aa3a10d0b54516d -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker.meta deleted file mode 100644 index 427a25d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 9d82b8b5ea0494b3992233eb5e47a12f -folderAsset: yes -timeCreated: 1490962214 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions.meta deleted file mode 100644 index 64a3b1d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: e534f83f7f15547868b8cbc8ce335151 -folderAsset: yes -timeCreated: 1490962219 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs deleted file mode 100644 index 8d281d6..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs +++ /dev/null @@ -1,2194 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - [ActionCategory("AVProVideo")] - [Tooltip("Get the CanPlay value of a MediaPlayer media controller.")] - public class AVProVideoControlCanPlay : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the CanPlay.")] - public FsmBool canPlay; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is looping")] - public FsmEvent canPlayEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not looping")] - public FsmEvent canNotPlayEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _canPlay = -1; - - public override void Reset() - { - gameObject = null; - canPlay = null; - canPlayEvent = null; - canNotPlayEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject))) - { - ExecuteAction (); - } - - if (!everyframe) - { - Finish (); - } - } - public override void OnUpdate() - { - if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject))) - { - ExecuteAction (); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event (missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.CanPlay ()) - { - canPlay.Value = true; - if (_canPlay!=1) - { - Fsm.Event (canPlayEvent); - } - _canPlay = 1; - } else - { - canPlay.Value = false; - if (_canPlay != 0) - { - Fsm.Event (canNotPlayEvent); - } - _canPlay = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Close the video of a MediaPlayer.")] - public class AVProVideoControlCloseVideo : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer media controller.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.CloseVideo(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the Buffered Time Range of a MediaPlayer media controller.")] - public class AVProVideoControlGetBufferedTimeRange : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The Buffered index ( from AVProControlGetBufferedTimeRangeCount )")] - public FsmInt index; - - [ActionSection("Result")] - - [UIHint(UIHint.Variable)] - [Tooltip("The start time of that buffer index")] - public FsmFloat startTime; - - [UIHint(UIHint.Variable)] - [Tooltip("The end time of that buffer index")] - public FsmFloat endtime; - - [UIHint(UIHint.Variable)] - [Tooltip("buffer flag")] - public FsmBool isBuffered; - - [Tooltip("Event Sent if the result of this buffer range is true")] - public FsmEvent isBufferedEvent; - - [Tooltip("Event Sent if the result of this buffer range is false")] - public FsmEvent isNotBufferedEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - float _startTime; - float _endTime; - bool _result; - - - public override void Reset() - { - gameObject = null; - - index = null; - - startTime = null; - endtime = null; - isBuffered = null; - isBufferedEvent = null; - isNotBufferedEvent = null; - - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - _result = this.mediaPlayer.Control.GetBufferedTimeRange(index.Value, ref _startTime, ref _endTime); - startTime.Value = _startTime; - endtime.Value = _endTime; - - if (_result) - { - isBuffered.Value = true; - Fsm.Event(isBufferedEvent); - } - else - { - isBuffered.Value = false; - Fsm.Event(isNotBufferedEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the Buffered Time Range progress of a MediaPlayer media controller.")] - public class AVProVideoControlGetBufferedTimeRangeCount : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The Buffered Time Range count")] - public FsmInt bufferedTimeRange; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - bufferedTimeRange = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - bufferedTimeRange.Value = this.mediaPlayer.Control.GetBufferedTimeRangeCount(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the buffering progress of a MediaPlayer media controller.")] - public class AVProVideoControlGetBufferingProgress : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The buffering progress")] - public FsmFloat bufferingProgress; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - bufferingProgress = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - bufferingProgress.Value = this.mediaPlayer.Control.GetBufferingProgress(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the current audio track id of a MediaPlayer media controller.")] - public class AVProVideoControlGetCurrentAudioTrack : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The current audio track Id")] - public FsmInt trackId; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - trackId = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - trackId.Value = this.mediaPlayer.Control.GetCurrentAudioTrack(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the current playback time in ms of a MediaPlayer media controller.")] - public class AVProVideoControlGetCurrentTime : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The current time in ms")] - public FsmFloat currentTime; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - currentTime = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - currentTime.Value = this.mediaPlayer.Control.GetCurrentTimeMs(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the current video track id of a MediaPlayer media controller.")] - public class AVProVideoControlGetCurrentVideoTrack : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The current video track Id")] - public FsmInt trackId; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - trackId = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - trackId.Value = this.mediaPlayer.Control.GetCurrentVideoTrack(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the last error of a MediaPlayer controller.")] - public class AVProVideoControlGetLastError : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The last error code as int")] - public FsmInt lastErrorAsInt; - - [UIHint(UIHint.Variable)] - [Tooltip("The last error code")] - [ObjectType(typeof(ErrorCode))] - public FsmEnum lastError; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - lastError = ErrorCode.None; - lastErrorAsInt = null; - - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - lastError.Value = this.mediaPlayer.Control.GetLastError(); - lastErrorAsInt.Value = (int)this.mediaPlayer.Control.GetLastError(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the playback rate of a MediaPlayer media controller.")] - public class AVProVideoControlGetPlayBackRate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The playback rate")] - public FsmFloat playbackRate; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - playbackRate = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - playbackRate.Value = this.mediaPlayer.Control.GetPlaybackRate(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the volume value of a MediaPlayer media controller.")] - public class AVProVideoControlGetVolume : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the volume.")] - public FsmFloat volume; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - volume = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - volume.Value = this.mediaPlayer.Control.GetVolume(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the hasMetada value of a MediaPlayer media controller.")] - public class AVProVideoControlHasMetaData : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("Flag wether Media has metadata or not.")] - public FsmBool hasMetaData; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media has metaData")] - public FsmEvent hasMetadataEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media does not have metaData")] - public FsmEvent hasNotMetadataEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _hasMetaData = -1; - - public override void Reset() - { - gameObject = null; - hasMetaData = null; - hasMetadataEvent = null; - hasNotMetadataEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.HasMetaData()) - { - hasMetaData.Value = true; - if (_hasMetaData != 1) - { - Fsm.Event(hasMetadataEvent); - } - _hasMetaData = 1; - } - else - { - hasMetaData.Value = false; - if (_hasMetaData != 0) - { - Fsm.Event(hasNotMetadataEvent); - } - _hasMetaData = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsBuffering value of a MediaPlayer media controller.")] - public class AVProVideoControlIsBuffering : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the IsBuffering.")] - public FsmBool isBuffering; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is buffering")] - public FsmEvent isBufferingEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not buffering")] - public FsmEvent isNotBufferingEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isBuffering = -1; - - public override void Reset() - { - gameObject = null; - isBuffering = null; - isBufferingEvent = null; - isNotBufferingEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsBuffering()) - { - isBuffering.Value = true; - if (_isBuffering != 1) - { - Fsm.Event(isBufferingEvent); - } - _isBuffering = 1; - } - else - { - isBuffering.Value = false; - if (_isBuffering != 0) - { - Fsm.Event(isNotBufferingEvent); - } - _isBuffering = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsFinished value of a MediaPlayer media controller.")] - public class AVProVideoControlIsFinished : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the IsFinished.")] - public FsmBool isFinished; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is finished")] - public FsmEvent isFinishedEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not finished")] - public FsmEvent isNotFinishedEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isFinished = -1; - - public override void Reset() - { - gameObject = null; - isFinished = null; - isFinishedEvent = null; - isNotFinishedEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsFinished()) - { - isFinished.Value = true; - if (_isFinished != 1) - { - Fsm.Event(isFinishedEvent); - } - _isFinished = 1; - } - else - { - isFinished.Value = false; - if (_isFinished != 0) - { - Fsm.Event(isNotFinishedEvent); - } - _isFinished = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsLooping value of a MediaPlayer media controller.")] - public class AVProVideoControlIsLooping : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the looping.")] - public FsmBool isLooping; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is looping")] - public FsmEvent isLoopingEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not looping")] - public FsmEvent isNotLoopingEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isLooping = -1; - - public override void Reset() - { - gameObject = null; - isLooping = null; - isLoopingEvent = null; - isNotLoopingEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsLooping()) - { - isLooping.Value = true; - if (_isLooping != 1) - { - Fsm.Event(isLoopingEvent); - } - _isLooping = 1; - } - else - { - isLooping.Value = false; - if (_isLooping != 0) - { - Fsm.Event(isNotLoopingEvent); - } - _isLooping = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsMuted value of a MediaPlayer media controller.")] - public class AVProVideoControlIsMuted : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the isMuted.")] - public FsmBool isMuted; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is Muted")] - public FsmEvent isMutedEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not Muted")] - public FsmEvent isNotMutedEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isMuted = -1; - - public override void Reset() - { - gameObject = null; - isMuted = null; - isMutedEvent = null; - isNotMutedEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsMuted()) - { - isMuted.Value = true; - if (_isMuted != 1) - { - Fsm.Event(isMutedEvent); - } - _isMuted = 1; - } - else - { - isMuted.Value = false; - if (_isMuted != 0) - { - Fsm.Event(isNotMutedEvent); - } - _isMuted = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsPaused value of a MediaPlayer media controller.")] - public class AVProVideoControlIsPaused : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the isPaused.")] - public FsmBool isPaused; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is paused")] - public FsmEvent isPausedEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not paused")] - public FsmEvent isNotPausedEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isPaused = -1; - - public override void Reset() - { - gameObject = null; - isPaused = null; - isPausedEvent = null; - isNotPausedEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsPaused()) - { - isPaused.Value = true; - if (_isPaused != 1) - { - Fsm.Event(isPausedEvent); - } - _isPaused = 1; - } - else - { - isPaused.Value = false; - if (_isPaused != 0) - { - Fsm.Event(isNotPausedEvent); - } - _isPaused = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsPlaying value of a MediaPlayer media controller.")] - public class AVProVideoControlIsPlaying : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the isPlaying.")] - public FsmBool isPlaying; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is playing")] - public FsmEvent isPlayingEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not playing")] - public FsmEvent isNotPlayingEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isPlaying = -1; - - public override void Reset() - { - gameObject = null; - isPlaying = null; - isPlayingEvent = null; - isNotPlayingEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsPlaying()) - { - isPlaying.Value = true; - if (_isPlaying != 1) - { - Fsm.Event(isPlayingEvent); - } - _isPlaying = 1; - } - else - { - isPlaying.Value = false; - if (_isPlaying != 0) - { - Fsm.Event(isNotPlayingEvent); - } - _isPlaying = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Get the IsSeeking value of a MediaPlayer media controller.")] - public class AVProVideoControlIsSeeking : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the isSeeking.")] - public FsmBool isSeeking; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is seeking")] - public FsmEvent isSeekingEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media is not seeking")] - public FsmEvent isNotSeekingEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - // cache to check if event needs sending or not - int _isSeeking = -1; - - public override void Reset() - { - gameObject = null; - isSeeking = null; - isSeekingEvent = null; - isNotSeekingEvent = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.IsSeeking()) - { - isSeeking.Value = true; - if (_isSeeking != 1) - { - Fsm.Event(isSeekingEvent); - } - _isSeeking = 1; - } - else - { - isSeeking.Value = false; - if (_isSeeking != 0) - { - Fsm.Event(isNotSeekingEvent); - } - _isSeeking = 0; - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Sets the audio mute value of a MediaPlayer media controller.")] - public class AVProVideoControlMuteAudio : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The value of the audio mute.")] - public FsmBool mute; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - mute = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.MuteAudio(mute.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Pauses playback of a MediaPlayer.")] - public class AVProVideoControlPause : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer media controller.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.Pause(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Starts playback of a MediaPlayer media controller.")] - public class AVProVideoControlPlay : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event Sent if playback started")] - public FsmEvent successEvent; - - [Tooltip("Event Sent if MediaPlayer can not play")] - public FsmEvent canNotPlayEvent; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - - canNotPlayEvent = null; - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (this.mediaPlayer.Control.CanPlay()) - { - this.mediaPlayer.Control.Play(); - } - else - { - Fsm.Event(canNotPlayEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Rewinds a MediaPlayer media controller.")] - public class AVProVideoControlRewind : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.Rewind(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Seeks on a MediaPlayer media controller.")] - public class AVProVideoControlSeek : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The value of seek in ms.")] - public FsmFloat seek; - - [Tooltip("If true will seek with a faster system")] - public FsmBool seekFast; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - - seek = null; - seekFast = null; - - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - if (seekFast.Value) - { - this.mediaPlayer.Control.SeekFast(seek.Value); - } - else - { - this.mediaPlayer.Control.Seek(seek.Value); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Sets the audio track of a MediaPlayer media controller.")] - public class AVProVideoControlSetAudioTrack : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The audio track")] - public FsmInt audioTrack; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - audioTrack = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetAudioTrack(audioTrack.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Set the looping value of a MediaPlayer media controller.")] - public class AVProVideoControlSetLooping : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The value of the looping.")] - public FsmBool isLooping; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - isLooping = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetLooping(isLooping.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Sets the playback rate of a MediaPlayer media controller.")] - public class AVProVideoControlSetPlayBackRate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The playback rate")] - public FsmFloat playbackRate; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - playbackRate = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetPlaybackRate(playbackRate.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Set the texture properties of a MediaPlayer media controller.")] - public class AVProVideoControlSetTextureProperties : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("The filter mode")] - [ObjectType(typeof(FilterMode))] - public FsmEnum filterMode; - - [Tooltip("The textureWrapMode mode")] - [ObjectType(typeof(TextureWrapMode))] - public FsmEnum textureWrapMode; - - [Tooltip("The anisoLevel Value")] - public FsmInt anisoLevel; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - filterMode = FilterMode.Bilinear; - textureWrapMode = TextureWrapMode.Clamp; - anisoLevel = 1; - - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetTextureProperties((FilterMode)filterMode.Value, (TextureWrapMode)textureWrapMode.Value, anisoLevel.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Sets the video track of a MediaPlayer media controller.")] - public class AVProVideoControlSetVideoTrack : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The video track")] - public FsmInt videoTrack; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - - public override void Reset() - { - gameObject = null; - videoTrack = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetVideoTrack(videoTrack.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Set the volume value of a MediaPlayer media controller.")] - public class AVProVideoControlSetVolume : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The value of the volume.")] - public FsmFloat volume; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - [Tooltip("Execute action everyframe.")] - public bool everyframe; - - public override void Reset() - { - gameObject = null; - volume = null; - missingControlEvent = null; - everyframe = false; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - if (!everyframe) - { - Finish(); - } - } - - public override void OnUpdate() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.SetVolume(volume.Value); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Stops playback of a MediaPlayer media controller.")] - public class AVProVideoControlStop : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event Sent if MediaPlayer media control is missing (null)")] - public FsmEvent missingControlEvent; - - public override void Reset() - { - gameObject = null; - missingControlEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Control == null) - { - Fsm.Event(missingControlEvent); - return; - } - - this.mediaPlayer.Control.Stop(); - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs.meta deleted file mode 100644 index ca5794c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoControl.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 3cff8309e08b7e844a0d84f74b6dc6ad -timeCreated: 1495729132 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs deleted file mode 100644 index 735a296..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs +++ /dev/null @@ -1,65 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - [ActionCategory("AVProVideo")] - [Tooltip("Gets the MediaPlayer of a DisplayUGUI Component.")] - public class AVProVideoDisplayUGUIGetMediaPlayer : ComponentAction - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(DisplayUGUI))] - [Tooltip("The GameObject with a DisplayUGUI component.")] - public FsmOwnerDefault gameObject; - - [Tooltip(“The MediaPlayer GameObject.”)] - [UIHint(UIHint.Variable)] - public FsmGameObject mediaPlayerGameObject; - - [Tooltip("Event Sent if no MediaPlayer is referenced on the DisplayUGUI component")] - public FsmEvent missingMediaPlayerEvent; - - - public override void Reset() - { - gameObject = null; - mediaPlayerGameObject = null; - missingMediaPlayerEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - mediaPlayerGameObject.Value = this.cachedComponent._mediaPlayer ? this.cachedComponent._mediaPlayer.gameObject : null; - - if (missingMediaPlayerEvent != null && this.cachedComponent._mediaPlayer == null) - { - Fsm.Event(missingMediaPlayerEvent); - } - } - } -} - -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs.meta deleted file mode 100644 index cfee6f8..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoDisplayUGUI.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 62092c03003fbff4ab67d7eeef490d23 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs deleted file mode 100644 index b162b58..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs +++ /dev/null @@ -1,563 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the Closing Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventClosing: AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a Closing event")] - public FsmEvent closingEvent; - - public override void Reset() - { - gameObject = null; - closingEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Closing: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget (gameObject); - Fsm.Event (closingEvent); - Finish(); - break; - - } - } - - public override void OnEnter() - { - if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject))) - { - this.mediaPlayer.Events.AddListener (OnMediaPlayerEvent); - } else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer!=null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the Error Event of a MediaPlayer and sends an event. Error Code is passed in the event data as an int. 100 = loadFailed 200 = decodeFailed")] - public class AVProVideoEventError : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a Error event")] - public FsmEvent errorEvent; - - public override void Reset() - { - gameObject = null; - errorEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Error: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.EventData.IntData = (int)errorCode; - Fsm.Event(errorEvent); - Finish(); - break; - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the FinishedPlaying Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventFinishedPlaying : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a FinishedPlaying event")] - public FsmEvent finishedPlayingEvent; - - public override void Reset() - { - gameObject = null; - finishedPlayingEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.FinishedPlaying: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(finishedPlayingEvent); - Finish(); - break; - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the FirstFrameReady Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventFirstFrameReady : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a FirstFrameReady event")] - public FsmEvent firstFrameReadyEvent; - - public override void Reset() - { - gameObject = null; - firstFrameReadyEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.FirstFrameReady: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(firstFrameReadyEvent); - Finish(); - break; - - } - } - - public override void OnEnter() - { - - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the MetaDataReady Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventMetaDataReady : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a metaDataReady event")] - public FsmEvent metaDataReadyEvent; - - public override void Reset() - { - gameObject = null; - metaDataReadyEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.MetaDataReady: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(metaDataReadyEvent); - Finish(); - break; - - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the ReadytoPlay Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventReadyToPlay : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a ReadyToPlay event")] - public FsmEvent readyToPlayEvent; - - public override void Reset() - { - gameObject = null; - readyToPlayEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.ReadyToPlay: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(readyToPlayEvent); - Finish(); - break; - - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the Stalled Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventStalled : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a Stalled event")] - public FsmEvent stalledEvent; - - public override void Reset() - { - gameObject = null; - stalledEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Stalled: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(stalledEvent); - Finish(); - break; - - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the ReadytoPlay Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventStarted : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a Started event")] - public FsmEvent startedEvent; - - public override void Reset() - { - gameObject = null; - startedEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Started: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(startedEvent); - Finish(); - break; - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the SubtitleChange Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventSubtitleChange : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a SubtitleChange event")] - public FsmEvent subtitleChangeEvent; - - public override void Reset() - { - gameObject = null; - subtitleChangeEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.SubtitleChange: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(subtitleChangeEvent); - Finish(); - break; - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Listen to the Unstalled Event of a MediaPlayer and sends an event.")] - public class AVProVideoEventUnstalled : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("Event fired when MediaPlayer sends a Unstalled event")] - public FsmEvent unstalledEvent; - - public override void Reset() - { - gameObject = null; - unstalledEvent = null; - } - - // Callback function to handle events - public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.Unstalled: - Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject); - Fsm.Event(unstalledEvent); - Finish(); - break; - } - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent); - } - else - { - Finish(); - } - } - - public override void OnExit() - { - if (this.mediaPlayer != null) - { - this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent); - } - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs.meta deleted file mode 100644 index 33d8d44..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoEvent.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: ad557c974d443cc44a6839862e394f55 -timeCreated: 1495729140 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs deleted file mode 100644 index 0aa27be..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs +++ /dev/null @@ -1,836 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - [ActionCategory("AVProVideo")] - [Tooltip("Gets Whether this MediaPlayer instance supports linear color space from media info a MediaPlayer. If it doesn't then a correction may have to be made in the shader")] - public class AVProVideoInfoDoesSupportsLinearColorSpace : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("True if player supports linear color space")] - public FsmBool doesSupportsLCS; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if player supports linear color space")] - public FsmEvent doesSupportsLCSEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if player does not supports linear color space")] - public FsmEvent doesNotSupportsLCSEvent; - - [Tooltip("Event Sent if MediaPlayer media media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - doesSupportsLCS = null; - doesSupportsLCSEvent = null; - doesNotSupportsLCSEvent = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject))) - { - ExecuteAction (); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event (missingMediaInfoEvent); - return; - } - - if (this.mediaPlayer.Info.PlayerSupportsLinearColorSpace()) - { - doesSupportsLCS.Value = true; - Fsm.Event (doesSupportsLCSEvent); - - } else - { - doesSupportsLCS.Value = false; - Fsm.Event (doesNotSupportsLCSEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the number of audio tracks from media info a MediaPlayer.")] - public class AVProVideoInfoGetAudioTrackCount : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The number of audio tracks")] - public FsmInt trackCount; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackCount = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackCount.Value = this.mediaPlayer.Info.GetAudioTrackCount(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the current audio bitrate from media info a MediaPlayer.")] - public class AVProVideoInfoGetCurrentAudioTrackBitrate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The current audio bitrate")] - public FsmInt trackBitrate; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackBitrate = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackBitrate.Value = this.mediaPlayer.Info.GetCurrentAudioTrackBitrate(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the current audio track identification from media info a MediaPlayer.")] - public class AVProVideoInfoGetCurrentAudioTrackId : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The current audio track identification")] - public FsmString trackId; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackId = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackId.Value = this.mediaPlayer.Info.GetCurrentAudioTrackId(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the current video bitrate from media info a MediaPlayer.")] - public class AVProVideoInfoGetCurrentVideoTrackBitrate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The current video bitrate")] - public FsmInt trackBitrate; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackBitrate = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackBitrate.Value = this.mediaPlayer.Info.GetCurrentVideoTrackBitrate(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the current video track identification from media info a MediaPlayer.")] - public class AVProVideoInfoGetCurrentVideoTrackId : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The current video track identification")] - public FsmString trackId; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackId = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackId.Value = this.mediaPlayer.Info.GetCurrentVideoTrackId(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets video duration from media info a MediaPlayer.")] - public class AVProVideoInfoGetDurationMs : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the video duration in ms.")] - public FsmFloat duration; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - duration = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - duration.Value = this.mediaPlayer.Info.GetDurationMs(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the description of which playback path is used internally from media info a MediaPlayer.")] - public class AVProVideoInfoAVProInfoGetPlayerDescription : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The description of the playback")] - public FsmString description; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - description = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - description.Value = this.mediaPlayer.Info.GetPlayerDescription(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the current achieved display rate in frames per second from media info a MediaPlayer.")] - public class AVProVideoInfoGetVideoDisplayRate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [RequiredField] - [Tooltip("The achieved framerate of the video")] - public FsmFloat framerate; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - framerate = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - framerate.Value = this.mediaPlayer.Info.GetVideoDisplayRate(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets video frame rate from media info a MediaPlayer.")] - public class AVProVideoInfoGetVideoFrameRate : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The framerate of the video")] - public FsmFloat framerate; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - framerate = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - framerate.Value = this.mediaPlayer.Info.GetVideoFrameRate(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets video size ( width and height ) from media info a MediaPlayer.")] - public class AVProVideoInfoGetVideoSize : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The width of the video")] - public FsmFloat width; - - [UIHint(UIHint.Variable)] - [Tooltip("The height of the video")] - public FsmFloat height; - - [UIHint(UIHint.Variable)] - [Tooltip("The width and height of the video")] - public FsmVector2 size; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - width = null; - height = null; - size = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - if (!width.IsNone) width.Value = this.mediaPlayer.Info.GetVideoWidth(); - if (!height.IsNone) height.Value = this.mediaPlayer.Info.GetVideoHeight(); - - if (!size.IsNone) size.Value = new Vector2(this.mediaPlayer.Info.GetVideoWidth(), this.mediaPlayer.Info.GetVideoHeight()); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets the number of video tracks from media info a MediaPlayer.")] - public class AVProVideoInfoGetVideoTrackCount : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [RequiredField] - [UIHint(UIHint.Variable)] - [Tooltip("The number of video tracks")] - public FsmInt trackCount; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - trackCount = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - trackCount.Value = this.mediaPlayer.Info.GetVideoTrackCount(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets hasAudio from media info a MediaPlayer.")] - public class AVProVideoInfoHasAudio : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the hasAudio.")] - public FsmBool hasAudio; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media has audio")] - public FsmEvent hasAudioEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media doesn't have audio")] - public FsmEvent hasNoAudioEvent; - - [Tooltip("Event Sent if MediaPlayer media media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - hasAudio = null; - hasAudioEvent = null; - hasNoAudioEvent = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - if (this.mediaPlayer.Info.HasAudio()) - { - hasAudio.Value = true; - Fsm.Event(hasNoAudioEvent); - } - else - { - hasAudio.Value = false; - Fsm.Event(hasNoAudioEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Gets hasVideo from media info a MediaPlayer.")] - public class AVProVideoInfoHasVideo : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("The value of the hasVideo.")] - public FsmBool hasVideo; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media has video")] - public FsmEvent hasVideoEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if media doesn't have video")] - public FsmEvent hasNoVideoEvent; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - hasVideo = null; - hasVideoEvent = null; - hasNoVideoEvent = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - if (this.mediaPlayer.Info.HasVideo()) - { - hasVideo.Value = true; - Fsm.Event(hasNoVideoEvent); - } - else - { - hasVideo.Value = false; - Fsm.Event(hasNoVideoEvent); - } - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Checks if the playback is in a stalled state from media info a MediaPlayer.")] - public class AVProVideoInfoIsPlaybackStalled : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [ActionSection("Result")] - [UIHint(UIHint.Variable)] - [Tooltip("True if the playback is in a stalled state")] - public FsmBool isStalled; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if the playback is in a stalled state")] - public FsmEvent isStalledEvent; - - [UIHint(UIHint.Variable)] - [Tooltip("Event Sent if the playback is not in a stalled state")] - public FsmEvent isNotStalledEvent; - - [Tooltip("Event Sent if MediaPlayer media info is missing (null)")] - public FsmEvent missingMediaInfoEvent; - - public override void Reset() - { - gameObject = null; - isStalled = null; - isStalledEvent = null; - isNotStalledEvent = null; - missingMediaInfoEvent = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - if (this.mediaPlayer.Info == null) - { - Fsm.Event(missingMediaInfoEvent); - return; - } - - if (this.mediaPlayer.Info.IsPlaybackStalled()) - { - isStalled.Value = true; - Fsm.Event(isStalledEvent); - } - else - { - isStalled.Value = false; - Fsm.Event(isNotStalledEvent); - } - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs.meta deleted file mode 100644 index accb98b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoInfo.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 92b2a1405a335834c8c9b198fb66b9a3 -timeCreated: 1495729148 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs deleted file mode 100644 index 74d4637..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs +++ /dev/null @@ -1,335 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - [ActionCategory("AVProVideo")] - [Tooltip("Closes Video of a MediaPlayer.")] - public class AVProVideoPlayerCloseVideo : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - public override void Reset() - { - gameObject = null; - - } - - public override void OnEnter() - { - if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject))) - { - ExecuteAction (); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.CloseVideo (); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Disable subtitles of a MediaPlayer.")] - public class AVProVideoPlayerDisableSubtitles : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - public override void Reset() - { - gameObject = null; - - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.DisableSubtitles(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Enable subtitles of a MediaPlayer.")] - public class AVProVideoPlayerEnableSubtitles : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The file location")] - [ObjectType(typeof(MediaPlayer.FileLocation))] - public FsmEnum fileLocation; - - [RequiredField] - [Tooltip("The file path, depending on the file Location")] - public FsmString filePath; - - [ActionSection("Result")] - - [Tooltip("true if subtitle were enabled")] - public FsmBool success; - - [Tooltip("event sent if subtitle enabling succeded")] - public FsmEvent successEvent; - - [Tooltip("event sent if subtitle enabling failed")] - public FsmEvent failureEvent; - - public override void Reset() - { - gameObject = null; - fileLocation = MediaPlayer.FileLocation.AbsolutePathOrURL; - filePath = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - bool ok = this.mediaPlayer.EnableSubtitles((MediaPlayer.FileLocation)fileLocation.Value, filePath.Value); - - success.Value = ok; - - Fsm.Event(ok ? successEvent : failureEvent); - - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Open a video at a location in a MediaPlayer.")] - public class AVProVideoPlayerOpenVideoLocation : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [RequiredField] - [Tooltip("The file location")] - [ObjectType(typeof(MediaPlayer.FileLocation))] - public FsmEnum fileLocation; - - [RequiredField] - [Tooltip("The file path, depending on the file Location")] - public FsmString filePath; - - [Tooltip("Auto play when video is loaded")] - public FsmBool autoPlay; - - [ActionSection("Result")] - - [Tooltip("true if video is loading successfully")] - public FsmBool success; - - [Tooltip("event sent if video is loading successfully")] - public FsmEvent successEvent; - - [Tooltip("event sent if video loading failed")] - public FsmEvent failureEvent; - - public override void Reset() - { - gameObject = null; - fileLocation = MediaPlayer.FileLocation.AbsolutePathOrURL; - filePath = null; - autoPlay = true; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - bool ok = this.mediaPlayer.OpenVideoFromFile((MediaPlayer.FileLocation)fileLocation.Value, filePath.Value, autoPlay.Value); - - success.Value = ok; - - Fsm.Event(ok ? successEvent : failureEvent); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Pauses playback of a MediaPlayer.")] - public class AVProVideoPlayerPause : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - public override void Reset() - { - gameObject = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.Pause(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Starts playback of a MediaPlayer.")] - public class AVProVideoPlayerPlay : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - public override void Reset() - { - gameObject = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.Play(); - } - } - - [ActionCategory("AVProVideo")] - [Tooltip("Rewinds the video of a MediaPlayer.")] - public class AVProVideoPlayerRewind : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - [Tooltip("The pause value when calling rewind. leave to none for default")] - public FsmBool pause; - - public override void Reset() - { - gameObject = null; - pause = new FsmBool() { UseVariable = true }; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.Rewind(pause.Value); - } - } - [ActionCategory("AVProVideo")] - [Tooltip("Stops playback of a MediaPlayer.")] - public class AVProVideoPlayerStop : AVProVideoActionBase - { - public AVProVideoActionHeader headerImage; - - [RequiredField] - [CheckForComponent(typeof(MediaPlayer))] - [Tooltip("The GameObject with a MediaPlayer component.")] - public FsmOwnerDefault gameObject; - - public override void Reset() - { - gameObject = null; - } - - public override void OnEnter() - { - if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject))) - { - ExecuteAction(); - } - - Finish(); - } - - void ExecuteAction() - { - this.mediaPlayer.Stop(); - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs.meta deleted file mode 100644 index b44e18f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/AVProVideoPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 22ab3ed79468e454fb4d81f6d449b193 -timeCreated: 1495729169 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal.meta deleted file mode 100644 index 1181181..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: a68611aad62c44efebd86c1318f2d3e4 -folderAsset: yes -timeCreated: 1493967530 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs deleted file mode 100644 index 36041fe..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs +++ /dev/null @@ -1,49 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; - -using HutongGames.PlayMaker; -using HutongGames.PlayMaker.Actions; -using Tooltip = HutongGames.PlayMaker.TooltipAttribute; - -using RenderHeads.Media.AVProVideo; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - public class AVProVideoActionHeader - { - - } - - /// - /// AVProVideo action base. - /// Gets and Caches MediaPlayer for perfs and code reuse - /// - public abstract class AVProVideoActionBase : FsmStateAction - { - protected GameObject cachedGameObject; - - protected MediaPlayer mediaPlayer; - - protected bool UpdateCache(GameObject go) - { - if (go == null) - { - return false; - } - - if (mediaPlayer == null || cachedGameObject != go) - { - mediaPlayer = go.GetComponent(); - cachedGameObject = go; - } - - return mediaPlayer != null; - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs.meta deleted file mode 100644 index 48ece26..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Actions/Internal/AVProVideoActionBase.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 26061aaf4d9de48eabaacb0e6f46de11 -timeCreated: 1493967542 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor.meta deleted file mode 100644 index eac2b05..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 8fd62e7c161a3244c884a26dd4545b9c -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs deleted file mode 100644 index 2ffcaf0..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs +++ /dev/null @@ -1,79 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if PLAYMAKER - -using UnityEngine; -using HutongGames.PlayMakerEditor; - -namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions -{ - /// - /// Draws the AVPro Video logo above each PlayMaker action - /// - [PropertyDrawer(typeof(AVProVideoActionHeader))] - public class AVProVideoActionHeaderPropertyDrawer : PropertyDrawer - { - private Rect _rect; - - public override object OnGUI(GUIContent label, object obj, bool isSceneObject, params object[] attributes) - { - // always keep this enabled to avoid transparency artifact ( unless someone tells me how to style up GUIStyle for disable state) - bool _enabled = GUI.enabled; - GUI.enabled = true; - - _rect = GUILayoutUtility.GetLastRect(); - GUIDrawRect(_rect, Color.black); - - _rect.Set(_rect.x,_rect.y+1,_rect.width,_rect.height-2); - if (HeaderTexture != null) - { - GUI.DrawTexture(_rect, HeaderTexture, ScaleMode.ScaleToFit); - } - - GUI.enabled = _enabled; - - return null; - } - - private static Texture2D _headerTexture = null; - internal static Texture2D HeaderTexture - { - get - { - if (_headerTexture == null) - _headerTexture = Resources.Load("AVProVideoIcon"); - if (_headerTexture != null) - _headerTexture.hideFlags = HideFlags.DontSaveInEditor; - return _headerTexture; - } - } - - private static Texture2D _staticRectTexture; - private static GUIStyle _staticRectStyle; - - // Note that this function is only meant to be called from OnGUI() functions. - public static void GUIDrawRect(Rect position, Color color) - { - if (_staticRectTexture == null) - { - _staticRectTexture = new Texture2D(1, 1); - } - - if (_staticRectStyle == null) - { - _staticRectStyle = new GUIStyle(); - } - - _staticRectTexture.SetPixel(0, 0, color); - _staticRectTexture.Apply(); - - _staticRectStyle.normal.background = _staticRectTexture; - - GUI.Box(position, GUIContent.none, _staticRectStyle); - } - } -} - -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs.meta deleted file mode 100644 index 6ab76ea..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/Support/PlayMaker/Editor/AVProVideoActionHeaderPropertyDrawer.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e6c8e0ab6139dc34093af8219078a671 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs deleted file mode 100644 index 15b6787..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs +++ /dev/null @@ -1,112 +0,0 @@ -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0) - #define UNITY_HELPATTRIB -#endif - -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// This script is needed to send the camera position to the stereo shader so that - /// it can determine which eye it is rendering. In the future this script won't - /// be needed once we have support for single-pass stereo rendering. - /// - [AddComponentMenu("AVPro Video/Update Stereo Material", 400)] -#if UNITY_HELPATTRIB - [HelpURL("http://renderheads.com/product/avpro-video/")] -#endif - public class UpdateStereoMaterial : MonoBehaviour - { - [Header("Stereo camera")] - public Camera _camera; - - [Header("Rendering elements")] - public MeshRenderer _renderer; - public UnityEngine.UI.Graphic _uGuiComponent; - public Material _material; - - [SerializeField] - private StereoEye _forceEyeMode; - - private static int _cameraPositionId; - private static int _viewMatrixId; - private StereoEye _setForceEyeMode = StereoEye.Both; - public StereoEye ForceEyeMode { get { return _forceEyeMode; } set { _forceEyeMode = value; } } - - private Camera _foundCamera; - - void Awake() - { - if (_cameraPositionId == 0) - { - _cameraPositionId = Shader.PropertyToID("_cameraPosition"); - } - if (_viewMatrixId == 0) - { - _viewMatrixId = Shader.PropertyToID("_ViewMatrix"); - } - if (_camera == null) - { - Debug.LogWarning("[AVProVideo] No camera set for UpdateStereoMaterial component. If you are rendering in stereo then it is recommended to set this."); - } - } - - private void SetupMaterial(Material m, Camera camera) - { - m.SetVector(_cameraPositionId, camera.transform.position); - m.SetMatrix(_viewMatrixId, camera.worldToCameraMatrix.transpose); - if (_forceEyeMode != _setForceEyeMode) - { - Helper.SetupStereoEyeModeMaterial(m, _forceEyeMode); - _setForceEyeMode = _forceEyeMode; - } - } - - // We do a LateUpdate() to allow for any changes in the camera position that may have happened in Update() - private void LateUpdate() - { - if (_camera != null && _foundCamera != _camera) - { - _foundCamera = _camera; - } - if (_foundCamera == null) - { - _foundCamera = Camera.main; - if (_foundCamera == null) - { - Debug.LogWarning("[AVPro Video] Cannot find main camera for UpdateStereoMaterial, this can lead to eyes flickering"); - if (Camera.allCameras.Length > 0) - { - _foundCamera = Camera.allCameras[0]; - Debug.LogWarning("[AVPro Video] UpdateStereoMaterial using camera " + _foundCamera.name); - } - } - } - - if (_renderer == null && _material == null) - { - _renderer = this.gameObject.GetComponent(); - } - - if (_foundCamera != null) - { - if (_renderer != null) - { - SetupMaterial(_renderer.material, _foundCamera); - } - if (_material != null) - { - SetupMaterial(_material, _foundCamera); - } - if (_uGuiComponent != null) - { - SetupMaterial(_uGuiComponent.material, _foundCamera); - } - } - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs.meta deleted file mode 100644 index 9a3ad13..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Components/UpdateStereoMaterial.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4ed685e8c5f1f584aa28b32dcf9bdab1 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: bb83b41b53a59874692b83eab5873998, type: 3} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor.meta deleted file mode 100644 index 2f7c69a..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 37a82bdb47c2a6f4cad5a64014975955 -folderAsset: yes -timeCreated: 1438707297 -licenseType: Store -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs deleted file mode 100644 index 3db083e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs +++ /dev/null @@ -1,102 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for the ApplyToMesh component - /// - [CanEditMultipleObjects] - [CustomEditor(typeof(ApplyToMesh))] - public class ApplyToMeshEditor : UnityEditor.Editor - { - private static readonly GUIContent _guiTextTextureProperty = new GUIContent("Texture Property"); - - private SerializedProperty _propTextureOffset; - private SerializedProperty _propTextureScale; - private SerializedProperty _propMediaPlayer; - private SerializedProperty _propRenderer; - private SerializedProperty _propTexturePropertyName; - private SerializedProperty _propDefaultTexture; - private GUIContent[] _materialTextureProperties = new GUIContent[0]; - - void OnEnable() - { - _propTextureOffset = serializedObject.FindProperty("_offset"); - _propTextureScale = serializedObject.FindProperty("_scale"); - _propMediaPlayer = serializedObject.FindProperty("_media"); - _propRenderer = serializedObject.FindProperty("_mesh"); - _propTexturePropertyName = serializedObject.FindProperty("_texturePropertyName"); - _propDefaultTexture = serializedObject.FindProperty("_defaultTexture"); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - if (_propRenderer == null) - { - return; - } - - EditorGUILayout.PropertyField(_propMediaPlayer); - EditorGUILayout.PropertyField(_propDefaultTexture); - EditorGUILayout.PropertyField(_propRenderer); - - bool hasKeywords = false; - int texturePropertyIndex = 0; - if (_propRenderer.objectReferenceValue != null) - { - Renderer r = (Renderer)(_propRenderer.objectReferenceValue); - - Material[] materials = r.sharedMaterials; - - MaterialProperty[] matProps = MaterialEditor.GetMaterialProperties(materials); - - foreach (Material mat in materials) - { - if (mat.shaderKeywords.Length > 0) - { - hasKeywords = true; - break; - } - } - - List items = new List(8); - foreach (MaterialProperty matProp in matProps) - { - if (matProp.type == MaterialProperty.PropType.Texture) - { - if (matProp.name == _propTexturePropertyName.stringValue) - { - texturePropertyIndex = items.Count; - } - items.Add(new GUIContent(matProp.name)); - } - } - _materialTextureProperties = items.ToArray(); - } - - int newTexturePropertyIndex = EditorGUILayout.Popup(_guiTextTextureProperty, texturePropertyIndex, _materialTextureProperties); - if (newTexturePropertyIndex != texturePropertyIndex) - { - _propTexturePropertyName.stringValue = _materialTextureProperties[newTexturePropertyIndex].text; - } - - if (hasKeywords && _propTexturePropertyName.stringValue != "_MainTex") - { - EditorGUILayout.HelpBox("When using an uber shader you may need to enable the keywords on a material for certain texture slots to take effect. You can sometimes achieve this (eg with Standard shader) by putting a dummy texture into the texture slot.", MessageType.Info); - } - - EditorGUILayout.PropertyField(_propTextureOffset); - EditorGUILayout.PropertyField(_propTextureScale); - - serializedObject.ApplyModifiedProperties(); - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs.meta deleted file mode 100644 index 62838bc..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/ApplyToMeshEditor.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 114ac842bfcaf0745a5e45cb2a7d6559 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs deleted file mode 100644 index 2be2beb..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs +++ /dev/null @@ -1,59 +0,0 @@ -using UnityEditor; -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for the AudioOutput component - /// - [CanEditMultipleObjects] - [CustomEditor(typeof(AudioOutput))] - public class AudioOutputEditor : UnityEditor.Editor - { - private static readonly GUIContent _guiTextChannel = new GUIContent("Channel"); - private static readonly GUIContent _guiTextChannels = new GUIContent("Channels"); - private static readonly string[] _channelMaskOptions = { "1", "2", "3", "4", "5", "6", "7", "8" }; - - private AudioOutput _target; - private SerializedProperty _channelMaskProperty; - - void OnEnable() - { - _target = (this.target) as AudioOutput; - _channelMaskProperty = serializedObject.FindProperty("_channelMask"); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - DrawDefaultInspector(); - - if(_target._audioOutputMode == AudioOutput.AudioOutputMode.Multiple) - { - _channelMaskProperty.intValue = EditorGUILayout.MaskField(_guiTextChannels, _channelMaskProperty.intValue, _channelMaskOptions); - } - else - { - int prevVal = 0; - for(int i = 0; i < 8; ++i) - { - if((_channelMaskProperty.intValue & (1 << i)) > 0) - { - prevVal = i; - break; - } - } - - int newVal = Mathf.Clamp(EditorGUILayout.IntSlider(_guiTextChannel, prevVal, 0, 7), 0, 7); - _channelMaskProperty.intValue = 1 << newVal; - } - - serializedObject.ApplyModifiedProperties(); - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs.meta deleted file mode 100644 index 8c87243..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/AudioOutputEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: f7852924144fc064aad785e5985b5402 -timeCreated: 1495783665 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs deleted file mode 100644 index b57a15f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs +++ /dev/null @@ -1,170 +0,0 @@ -#if UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_5 || UNITY_5_4_OR_NEWER - #define UNITY_FEATURE_UGUI -#endif - -using UnityEngine; -using UnityEditor; -#if UNITY_FEATURE_UGUI -using UnityEditor.UI; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for the DisplayUGUI component - /// - [CustomEditor(typeof(DisplayUGUI), true)] - [CanEditMultipleObjects] - public class DisplayUGUIEditor : GraphicEditor - { - // Note we have precedence for calling rectangle for just rect, even in the Inspector. - // For example in the Camera component's Viewport Rect. - // Hence sticking with Rect here to be consistent with corresponding property in the API. - private static readonly GUIContent m_guiTextUVRectContent = new GUIContent("UV Rect"); - - private SerializedProperty m_Movie; - private SerializedProperty m_UVRect; - private SerializedProperty m_DefaultTexture; - private SerializedProperty m_NoDefaultDisplay; - private SerializedProperty m_DisplayInEditor; - private SerializedProperty m_SetNativeSize; - private SerializedProperty m_ScaleMode; - - [MenuItem("GameObject/UI/AVPro Video uGUI", false, 0)] - public static void CreateGameObject() - { - GameObject parent = Selection.activeGameObject; - RectTransform parentCanvasRenderer = ( parent != null ) ? parent.GetComponent() : null; - if( parentCanvasRenderer ) - { - GameObject go = new GameObject("AVPro Video"); - go.transform.SetParent(parent.transform, false); - go.AddComponent(); - go.AddComponent(); - go.AddComponent(); - Selection.activeGameObject = go; - } - else - { - EditorUtility.DisplayDialog("AVPro Video", "You must make the AVPro Video uGUI object as a child of a Canvas.", "Ok"); - } - } - - public override bool RequiresConstantRepaint() - { - DisplayUGUI displayComponent = target as DisplayUGUI; - return (displayComponent != null && displayComponent.HasValidTexture()); - } - - protected override void OnEnable() - { - base.OnEnable(); - - m_Movie = serializedObject.FindProperty("_mediaPlayer"); - m_UVRect = serializedObject.FindProperty("m_UVRect"); - m_SetNativeSize = serializedObject.FindProperty("_setNativeSize"); - m_ScaleMode = serializedObject.FindProperty("_scaleMode"); - - m_NoDefaultDisplay = serializedObject.FindProperty("_noDefaultDisplay"); - m_DisplayInEditor = serializedObject.FindProperty("_displayInEditor"); - m_DefaultTexture = serializedObject.FindProperty("_defaultTexture"); - - SetShowNativeSize(true); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - EditorGUILayout.PropertyField(m_Movie); - EditorGUILayout.PropertyField(m_DefaultTexture); - EditorGUILayout.PropertyField(m_NoDefaultDisplay); - EditorGUILayout.PropertyField(m_DisplayInEditor); - AppearanceControlsGUI(); -#if UNITY_5_2 || UNITY_5_3 || UNITY_5_4_OR_NEWER - RaycastControlsGUI(); -#endif - EditorGUILayout.PropertyField(m_UVRect, m_guiTextUVRectContent); - - EditorGUILayout.PropertyField(m_SetNativeSize); - EditorGUILayout.PropertyField(m_ScaleMode); - - SetShowNativeSize(false); - NativeSizeButtonGUI(); - - serializedObject.ApplyModifiedProperties(); - } - - private void SetShowNativeSize(bool instant) - { - base.SetShowNativeSize(m_Movie.objectReferenceValue != null, instant); - } - - /// - /// Allow the texture to be previewed. - /// - public override bool HasPreviewGUI() - { - DisplayUGUI rawImage = target as DisplayUGUI; - return rawImage != null; - } - - /// - /// Draw the Image preview. - /// - public override void OnPreviewGUI(Rect drawArea, GUIStyle background) - { - DisplayUGUI rawImage = target as DisplayUGUI; - Texture tex = rawImage.mainTexture; - - if (tex == null) - return; - - // Create the texture rectangle that is centered inside rect. - Rect outerRect = drawArea; - - Matrix4x4 m = GUI.matrix; - // Flip the image vertically - if (rawImage.HasValidTexture()) - { - if (rawImage._mediaPlayer.TextureProducer.RequiresVerticalFlip()) - { - GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, outerRect.y + (outerRect.height / 2f))); - } - } - - EditorGUI.DrawTextureTransparent(outerRect, tex, ScaleMode.ScaleToFit);//, outer.width / outer.height); - //SpriteDrawUtility.DrawSprite(tex, rect, outer, rawImage.uvRect, rawImage.canvasRenderer.GetColor()); - - GUI.matrix = m; - } - - /// - /// Info String drawn at the bottom of the Preview - /// - public override string GetInfoString() - { - DisplayUGUI rawImage = target as DisplayUGUI; - - string text = string.Empty; - if (rawImage.HasValidTexture()) - { - text += string.Format("Video Size: {0}x{1}\n", - Mathf.RoundToInt(Mathf.Abs(rawImage.mainTexture.width)), - Mathf.RoundToInt(Mathf.Abs(rawImage.mainTexture.height))); - } - - // Image size Text - text += string.Format("Display Size: {0}x{1}", - Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.width)), - Mathf.RoundToInt(Mathf.Abs(rawImage.rectTransform.rect.height))); - - return text; - } - } -} - -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs.meta deleted file mode 100644 index 46439c5..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/DisplayUGUIEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 0e20933bfdb909544b98bc0de2926c4c -timeCreated: 1438726873 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs deleted file mode 100644 index b8e189c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs +++ /dev/null @@ -1,2874 +0,0 @@ -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3_0) - #define AVPRO_UNITY_PLATFORM_TVOS -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2_0) - #define AVPRO_UNITY_IOS_ALLOWHTTPDOWNLOAD -#endif -#if !UNITY_5 && !UNITY_5_4_OR_NEWER - #define AVPRO_UNITY_METRO -#endif -#if UNITY_5_4_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3_0) - #define AVPRO_UNITY_WP8_DEPRECATED -#endif -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for the MediaPlayer component - /// - [CanEditMultipleObjects] - [CustomEditor(typeof(MediaPlayer))] - public class MediaPlayerEditor : UnityEditor.Editor - { - private SerializedProperty _propLocation; - private SerializedProperty _propPath; - private SerializedProperty _propAutoOpen; - private SerializedProperty _propAutoStart; - private SerializedProperty _propLoop; - private SerializedProperty _propRate; - private SerializedProperty _propVolume; - private SerializedProperty _propBalance; - private SerializedProperty _propMuted; - private SerializedProperty _propPersistent; - private SerializedProperty _propEvents; - private SerializedProperty _propEventMask; - private SerializedProperty _propPauseMediaOnAppPause; - private SerializedProperty _propPlayMediaOnAppUnpause; - private SerializedProperty _propFilter; - private SerializedProperty _propWrap; - private SerializedProperty _propAniso; - private SerializedProperty _propStereoPacking; - private SerializedProperty _propAlphaPacking; - private SerializedProperty _propDisplayStereoTint; - private SerializedProperty _propSubtitles; - private SerializedProperty _propSubtitleLocation; - private SerializedProperty _propSubtitlePath; - private SerializedProperty _propResample; - private SerializedProperty _propResampleMode; - private SerializedProperty _propResampleBufferSize; - private SerializedProperty _propAudioHeadTransform; - private SerializedProperty _propAudioEnableFocus; - private SerializedProperty _propAudioFocusOffLevelDB; - private SerializedProperty _propAudioFocusWidthDegrees; - private SerializedProperty _propAudioFocusTransform; - private SerializedProperty _propSourceAudioSampleRate; - private SerializedProperty _propSourceAudioChannels; - private SerializedProperty _propManualSetAudioProps; - private SerializedProperty _propVideoMapping; - private SerializedProperty _propForceFileFormat; - - private static bool _isTrialVersion = false; - private static Texture2D _icon; - private static int _platformIndex = -1; - private static bool _expandPlatformOverrides = false; - private static bool _expandMediaProperties = false; - private static bool _expandGlobalSettings = false; - private static bool _expandMain = true; - private static bool _expandAudio = false; - private static bool _expandEvents = false; - private static bool _expandPreview = false; - private static bool _expandAbout = false; - private static bool _expandSubtitles = false; - private static List _recentFiles = new List(16); - - private static GUIStyle _mediaNameStyle = null; - private static GUIStyle _sectionBoxStyle = null; - - private static bool _showMessage_UpdatStereoMaterial = false; - - private const string SettingsPrefix = "AVProVideo-MediaPlayerEditor-"; - private const int MaxRecentFiles = 16; - -#if UNITY_EDITOR_OSX - private const string MediaExtensions = "mp4,m4v,mov,avi,mp3,m4a,aac,ac3,au,aiff,wav"; - private const string SubtitleExtensions = "srt"; -#else - private const string MediaExtensions = "Media Files;*.mp4;*.mov;*.m4v;*.avi;*.mkv;*.ts;*.webm;*.flv;*.vob;*.ogg;*.ogv;*.mpg;*.wmv;*.3gp;Audio Files;*wav;*.mp3;*.mp2;*.m4a;*.wma;*.aac;*.au;*.flac"; - private const string SubtitleExtensions = "Subtitle Files;*.srt"; -#endif - - public const string LinkPluginWebsite = "http://renderheads.com/product/avpro-video/"; - public const string LinkForumPage = "http://forum.unity3d.com/threads/released-avpro-video-complete-video-playback-solution.385611/"; - public const string LinkForumLastPage = "http://forum.unity3d.com/threads/released-avpro-video-complete-video-playback-solution.385611/page-60"; - public const string LinkAssetStorePage = "https://www.assetstore.unity3d.com/#!/content/56355"; - public const string LinkEmailSupport = "mailto:unitysupport@renderheads.com"; - public const string LinkUserManual = "http://downloads.renderheads.com/docs/UnityAVProVideo.pdf"; - public const string LinkScriptingClassReference = "http://www.renderheads.com/content/docs/AVProVideoClassReference/"; - - private const string SupportMessage = "If you are reporting a bug, please include any relevant files and details so that we may remedy the problem as fast as possible.\n\n" + - "Essential details:\n" + - "+ Error message\n" + - " + The exact error message\n" + - " + The console/output log if possible\n" + - "+ Hardware\n" + - " + Phone / tablet / device type and OS version\n" + - "+ Development environment\n" + - " + Unity version\n" + - " + Development OS version\n" + - " + AVPro Video plugin version\n" + - " + Video details\n" + - " + Resolution\n" + - " + Codec\n" + - " + Frame Rate\n" + - " + Better still, include a link to the video file\n"; - - private static bool _showAlpha = false; - private static string[] _platformNames; - - [MenuItem("GameObject/AVPro Video/Media Player", false, 0)] - public static void CreateMediaPlayerEditor() - { - GameObject go = new GameObject("MediaPlayer"); - go.AddComponent(); - Selection.activeGameObject = go; - } - -#if UNITY_5 || UNITY_5_4_OR_NEWER - [MenuItem("GameObject/AVPro Video/Media Player with Unity Audio", false, 0)] - public static void CreateMediaPlayerWithUnityAudioEditor() - { - GameObject go = new GameObject("MediaPlayer"); - go.AddComponent(); - go.AddComponent(); - AudioOutput ao = go.AddComponent(); - // Move the AudioOutput component above the AudioSource so that it acts as the audio generator - UnityEditorInternal.ComponentUtility.MoveComponentUp(ao); - Selection.activeGameObject = go; - } -#endif - - private static void LoadSettings() - { - _expandPlatformOverrides = EditorPrefs.GetBool(SettingsPrefix + "ExpandPlatformOverrides", false); - _expandMediaProperties = EditorPrefs.GetBool(SettingsPrefix + "ExpandMediaProperties", false); - _expandGlobalSettings = EditorPrefs.GetBool(SettingsPrefix + "ExpandGlobalSettings", false); - _expandMain = EditorPrefs.GetBool(SettingsPrefix + "ExpandMain", true); - _expandAudio = EditorPrefs.GetBool(SettingsPrefix + "ExpandAudio", false); - _expandEvents = EditorPrefs.GetBool(SettingsPrefix + "ExpandEvents", false); - _expandPreview = EditorPrefs.GetBool(SettingsPrefix + "ExpandPreview", false); - _expandSubtitles = EditorPrefs.GetBool(SettingsPrefix + "ExpandSubtitles", false); - _platformIndex = EditorPrefs.GetInt(SettingsPrefix + "PlatformIndex", -1); - _showAlpha = EditorPrefs.GetBool(SettingsPrefix + "ShowAlphaChannel", false); - - string recentFilesString = EditorPrefs.GetString(SettingsPrefix + "RecentFiles", string.Empty); - _recentFiles = new List(recentFilesString.Split(new string[] { ";" }, System.StringSplitOptions.RemoveEmptyEntries)); - } - - private static void SaveSettings() - { - EditorPrefs.SetBool(SettingsPrefix + "ExpandPlatformOverrides", _expandPlatformOverrides); - EditorPrefs.SetBool(SettingsPrefix + "ExpandMediaProperties", _expandMediaProperties); - EditorPrefs.SetBool(SettingsPrefix + "ExpandGlobalSettings", _expandGlobalSettings); - EditorPrefs.SetBool(SettingsPrefix + "ExpandMain", _expandMain); - EditorPrefs.SetBool(SettingsPrefix + "ExpandAudio", _expandAudio); - EditorPrefs.SetBool(SettingsPrefix + "ExpandEvents", _expandEvents); - EditorPrefs.SetBool(SettingsPrefix + "ExpandPreview", _expandPreview); - EditorPrefs.SetBool(SettingsPrefix + "ExpandSubtitles", _expandSubtitles); - EditorPrefs.SetInt(SettingsPrefix + "PlatformIndex", _platformIndex); - EditorPrefs.SetBool(SettingsPrefix + "ShowAlphaChannel", _showAlpha); - - string recentFilesString = string.Empty; - if (_recentFiles.Count > 0) - { - recentFilesString = string.Join(";", _recentFiles.ToArray()); - } - EditorPrefs.SetString(SettingsPrefix + "RecentFiles", recentFilesString); - } - - private static bool IsTrialVersion() - { - string version = GetPluginVersion(); - return version.Contains("t"); - } - - private void OnEnable() - { - LoadSettings(); - - _isTrialVersion = IsTrialVersion(); - _platformNames = Helper.GetPlatformNames(); - - _propLocation = serializedObject.FindProperty("m_VideoLocation"); - _propPath = serializedObject.FindProperty("m_VideoPath"); - _propAutoOpen = serializedObject.FindProperty("m_AutoOpen"); - _propAutoStart = serializedObject.FindProperty("m_AutoStart"); - _propLoop = serializedObject.FindProperty("m_Loop"); - _propRate = serializedObject.FindProperty("m_PlaybackRate"); - _propVolume = serializedObject.FindProperty("m_Volume"); - _propBalance = serializedObject.FindProperty("m_Balance"); - _propMuted = serializedObject.FindProperty("m_Muted"); - _propPersistent = serializedObject.FindProperty("m_Persistent"); - _propEvents = serializedObject.FindProperty("m_events"); - _propEventMask = serializedObject.FindProperty("m_eventMask"); - _propPauseMediaOnAppPause = serializedObject.FindProperty("_pauseMediaOnAppPause"); - _propPlayMediaOnAppUnpause = serializedObject.FindProperty("_playMediaOnAppUnpause"); - _propFilter = serializedObject.FindProperty("m_FilterMode"); - _propWrap = serializedObject.FindProperty("m_WrapMode"); - _propAniso = serializedObject.FindProperty("m_AnisoLevel"); - _propStereoPacking = serializedObject.FindProperty("m_StereoPacking"); - _propAlphaPacking = serializedObject.FindProperty("m_AlphaPacking"); - _propDisplayStereoTint = serializedObject.FindProperty("m_DisplayDebugStereoColorTint"); - _propVideoMapping = serializedObject.FindProperty("m_videoMapping"); - _propForceFileFormat = serializedObject.FindProperty("m_forceFileFormat"); - - _propSubtitles = serializedObject.FindProperty("m_LoadSubtitles"); - _propSubtitleLocation = serializedObject.FindProperty("m_SubtitleLocation"); - _propSubtitlePath = serializedObject.FindProperty("m_SubtitlePath"); - _propResample = serializedObject.FindProperty("m_Resample"); - _propResampleMode = serializedObject.FindProperty("m_ResampleMode"); - _propResampleBufferSize = serializedObject.FindProperty("m_ResampleBufferSize"); - _propAudioHeadTransform = serializedObject.FindProperty("m_AudioHeadTransform"); - _propAudioEnableFocus = serializedObject.FindProperty("m_AudioFocusEnabled"); - _propAudioFocusOffLevelDB = serializedObject.FindProperty("m_AudioFocusOffLevelDB"); - _propAudioFocusWidthDegrees = serializedObject.FindProperty("m_AudioFocusWidthDegrees"); - _propAudioFocusTransform = serializedObject.FindProperty("m_AudioFocusTransform"); - _propSourceAudioSampleRate = serializedObject.FindProperty("m_sourceSampleRate"); - _propSourceAudioChannels = serializedObject.FindProperty("m_sourceChannels"); - _propManualSetAudioProps = serializedObject.FindProperty("m_manuallySetAudioSourceProperties"); - - CheckStereoPackingField(); - } - - private void OnDisable() - { - SaveSettings(); - } - - private static bool IsPathWithin(string fullPath, string targetPath) - { - return fullPath.StartsWith(targetPath); - } - - private static string GetPathRelativeTo(string root, string fullPath) - { - string result = fullPath.Remove(0, root.Length); - if (result.StartsWith(System.IO.Path.DirectorySeparatorChar.ToString()) || result.StartsWith(System.IO.Path.AltDirectorySeparatorChar.ToString())) - { - result = result.Remove(0, 1); - } - return result; - } - - public override bool RequiresConstantRepaint() - { - MediaPlayer media = (this.target) as MediaPlayer; - return (_expandPreview && media != null && media.Control != null && media.isActiveAndEnabled); - } - - public override void OnInspectorGUI() - { - MediaPlayer media = (this.target) as MediaPlayer; - - serializedObject.Update(); - - if (media == null || _propLocation == null) - { - return; - } - - if (_sectionBoxStyle == null) - { - _sectionBoxStyle = new GUIStyle(GUI.skin.box); - _sectionBoxStyle.padding.top = 0; - _sectionBoxStyle.padding.bottom = 0; - } - - - GUILayout.Space(6f); - - _icon = GetIcon(_icon); - if (_icon != null) - { - GUI.backgroundColor = new Color(0.96f, 0.25f, 0.47f); - if (GUILayout.Button("â—„ AVPro Video â–º\nHelp & Support")) - { - SupportWindow.Init(); - } - GUI.backgroundColor = Color.white; - } - - // Describe the watermark for trial version - if (_isTrialVersion && Application.isPlaying) - { - string message = string.Empty; -#if UNITY_EDITOR_WIN - message = "The watermark is the horizontal bar that moves vertically and the small 'AVPRO TRIAL' text."; - if (media.Info != null && media.Info.GetPlayerDescription().Contains("MF-MediaEngine-Hardware")) - { - message = "The watermark is the RenderHeads logo that moves around the image."; - } -#elif UNITY_EDITOR_OSX - message = "The RenderHeads logo is the watermark."; -#endif - - GUI.backgroundColor = Color.yellow; - EditorGUILayout.BeginVertical(GUI.skin.box); - GUI.color = Color.yellow; - GUILayout.Label("AVPRO VIDEO - TRIAL WATERMARK", EditorStyles.boldLabel); - GUI.color = Color.white; - GUILayout.Label(message, EditorStyles.wordWrappedLabel); - EditorGUILayout.EndVertical(); - GUI.backgroundColor = Color.white; - GUI.color = Color.white; - } - - // Warning about not using multi-threaded rendering - { - bool showWarningMT = false; - - if (/*EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.iOS || -#if AVPRO_UNITY_PLATFORM_TVOS - EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.tvOS || -#endif*/ - EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.Android) - { -#if UNITY_2017_2_OR_NEWER - showWarningMT = !UnityEditor.PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android); -#else - showWarningMT = !UnityEditor.PlayerSettings.mobileMTRendering; -#endif - } - /*if (EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.WSA) - { - }*/ - if (showWarningMT) - { - GUI.backgroundColor = Color.yellow; - EditorGUILayout.BeginVertical(GUI.skin.box); - GUI.color = Color.yellow; - GUILayout.Label("Performance Warning", EditorStyles.boldLabel); - GUI.color = Color.white; - GUILayout.Label("Deploying to Android with multi-threaded rendering disabled is not recommended. Enable multi-threaded rendering in the Player Settings > Other Settings panel.", EditorStyles.wordWrappedLabel); - EditorGUILayout.EndVertical(); - GUI.backgroundColor = Color.white; - GUI.color = Color.white; - } - } - - /* -#if UNITY_WEBGL - // Warning about not using WebGL 2.0 or above - { - bool showWarningWebGL2 = false; - if (EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.WebGL) - { -#if UNITY_2017_1_OR_NEWER - showWarningWebGL2 = UnityEditor.PlayerSettings.GetUseDefaultGraphicsAPIs(BuildTarget.WebGL); - if (!showWarningWebGL2) - { - UnityEngine.Rendering.GraphicsDeviceType[] devices = UnityEditor.PlayerSettings.GetGraphicsAPIs(BuildTarget.WebGL); - foreach (UnityEngine.Rendering.GraphicsDeviceType device in devices) - { - if (device != UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2) - { - showWarningWebGL2 = true; - break; - } - } - } -#else - showWarningWebGL2 = -#endif - } - if (showWarningWebGL2) - { - GUI.backgroundColor = Color.yellow; - EditorGUILayout.BeginVertical(GUI.skin.box); - GUI.color = Color.yellow; - GUILayout.Label("Compatibility Warning", EditorStyles.boldLabel); - GUI.color = Color.white; - GUILayout.Label("WebGL 2.0 is not supported. Please go to Player Settings > Other Settings > Auto Graphics API and remove WebGL 2.0 from the list. Only WebGL 1.0 is supported.", EditorStyles.wordWrappedLabel); - EditorGUILayout.EndVertical(); - GUI.backgroundColor = Color.white; - GUI.color = Color.white; - } - } -#endif*/ - - // Warning about linear colour space with GPU decoding - /*if (Application.isPlaying && media.Control != null) - { - if (QualitySettings.activeColorSpace == ColorSpace.Linear && media.Info.GetPlayerDescription().Contains("MF-MediaEngine-Hardware")) - { - GUI.backgroundColor = Color.magenta; - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("NOTE", EditorStyles.boldLabel); - GUILayout.Label("You're using the GPU video decoder with linear color-space set in Unity. This can cause videos to become washed out due to our GPU decoder path not supporting sRGB textures.\n\nThis can be fixed easily by:\n1) Switching back to Gamma colour space in Player Settings\n2) Disabling hardware decoding\n3) Adding 'col.rgb = pow(col.rgb, 2.2);' to any shader rendering the video texture.\n\nIf you're using the InsideSphere shader, make sure to tick 'Apply Gamma' on the material.", EditorStyles.wordWrappedLabel); - EditorGUILayout.EndVertical(); - GUI.backgroundColor = Color.white; - } - }*/ - - /////////////////// FILE PATH - - // Display the file name and buttons to load new files - { - EditorGUILayout.BeginVertical("box"); - - OnInspectorGUI_CopyableFilename(media.m_VideoPath); - - EditorGUILayout.LabelField("Source Path", EditorStyles.boldLabel); - - EditorGUILayout.PropertyField(_propLocation, GUIContent.none); - - { - string oldPath = _propPath.stringValue; - string newPath = EditorGUILayout.TextField(string.Empty, _propPath.stringValue); - if (newPath != oldPath) - { - // Check for invalid characters - if (0 > newPath.IndexOfAny(System.IO.Path.GetInvalidPathChars())) - { - _propPath.stringValue = newPath.Replace("\\", "/"); - EditorUtility.SetDirty(target); - } - } - } - - //if (!Application.isPlaying) - { - GUILayout.BeginHorizontal(); - OnInspectorGUI_RecentButton(_propPath, _propLocation); - OnInspectorGUI_StreamingAssetsButton(_propPath, _propLocation); - GUI.color = Color.green; - if (GUILayout.Button("BROWSE")) - { - string startFolder = GetStartFolder(_propPath.stringValue, (MediaPlayer.FileLocation)_propLocation.enumValueIndex); - string videoPath = media.m_VideoPath; - string fullPath = string.Empty; - MediaPlayer.FileLocation fileLocation = media.m_VideoLocation; - if (Browse(startFolder, ref videoPath, ref fileLocation, ref fullPath, MediaExtensions)) - { - _propPath.stringValue = videoPath.Replace("\\", "/"); - _propLocation.enumValueIndex = (int)fileLocation; - EditorUtility.SetDirty(target); - - AddToRecentFiles(fullPath); - } - } - GUI.color = Color.white; - GUILayout.EndHorizontal(); - - ShowFileWarningMessages(_propPath.stringValue, (MediaPlayer.FileLocation)_propLocation.enumValueIndex, media.m_AutoOpen, Platform.Unknown); - GUI.color = Color.white; - } - - if (Application.isPlaying) - { - if (GUILayout.Button("Load")) - { - media.OpenVideoFromFile(media.m_VideoLocation, media.m_VideoPath, media.m_AutoStart); - } - } - - EditorGUILayout.EndVertical(); - } - - /////////////////// MAIN - - OnInspectorGUI_Main(); - - /////////////////// AUDIO - - OnInspectorGUI_Audio(); - - /////////////////// MEDIA PROPERTIES - - if (!Application.isPlaying) - { - OnInspectorGUI_MediaProperties(); - } - - /////////////////// SUBTITLES - - OnInspectorGUI_Subtitles(); - - /////////////////// GLOBAL SETTINGS - - if (!Application.isPlaying) - { - OnInspectorGUI_GlobalSettings(); - } - - //////////////////// PREVIEW - - OnInspectorGUI_Preview(); - - /////////////////// EVENTS - - OnInspectorGUI_Events(); - - /////////////////// PLATFORM OVERRIDES - - //if (!Application.isPlaying) - { - OnInspectorGUI_PlatformOverrides(); - } - - if (serializedObject.ApplyModifiedProperties()) - { - EditorUtility.SetDirty(target); - } - - if (!Application.isPlaying) - { - OnInspectorGUI_About(); - } - } - - struct RecentFileData - { - public RecentFileData(string path, SerializedProperty propPath, SerializedProperty propLocation, Object target) - { - this.path = path; - this.propPath = propPath; - this.propLocation = propLocation; - this.target = target; - } - - public string path; - public SerializedProperty propPath; - public SerializedProperty propLocation; - public Object target; - } - - private static void AddToRecentFiles(string path) - { - if (!_recentFiles.Contains(path)) - { - _recentFiles.Insert(0, path); - if (_recentFiles.Count > MaxRecentFiles) - { - // Remove the oldest item from the list - _recentFiles.RemoveAt(_recentFiles.Count - 1); - } - } - else - { - // If it already contains the item, then move it to the top - _recentFiles.Remove(path); - _recentFiles.Insert(0, path); - } - } - - void RecentMenuCallback_Select(object obj) - { - RecentFileData data = (RecentFileData)obj; - - string videoPath = string.Empty; - MediaPlayer.FileLocation fileLocation = MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder; - GetRelativeLocationFromPath(data.path, ref videoPath, ref fileLocation); - - // Move it to the top of the list - AddToRecentFiles(data.path); - - data.propPath.stringValue = videoPath.Replace("\\", "/"); - data.propLocation.enumValueIndex = (int)fileLocation; - - serializedObject.ApplyModifiedProperties(); - EditorUtility.SetDirty(data.target); - } - - private void RecentMenuCallback_Clear() - { - _recentFiles.Clear(); - } - - private void RecentMenuCallback_ClearMissing() - { - if (_recentFiles != null && _recentFiles.Count > 0) - { - List newList = new List(_recentFiles.Count); - for (int i = 0; i < _recentFiles.Count; i++) - { - string path = _recentFiles[i]; - if (System.IO.File.Exists(path)) - { - newList.Add(path); - } - } - _recentFiles = newList; - } - } - - private void RecentMenuCallback_Add() - { - // TODO: implement me - } - - private void OnInspectorGUI_CopyableFilename(string path) - { - // Display the file name so it's easy to read and copy to the clipboard - if (!string.IsNullOrEmpty(path) && 0 > path.IndexOfAny(System.IO.Path.GetInvalidPathChars())) - { - // Some GUI hacks here because SelectableLabel wants to be double height and it doesn't want to be centered because it's an EditorGUILayout function... - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - GUI.color = Color.cyan; - } - string text = System.IO.Path.GetFileName(path); - - if (_mediaNameStyle == null) - { - _mediaNameStyle = new GUIStyle(EditorStyles.wordWrappedLabel); - _mediaNameStyle.fontStyle = FontStyle.Bold; - _mediaNameStyle.stretchWidth = true; - _mediaNameStyle.stretchHeight = true; - _mediaNameStyle.alignment = TextAnchor.MiddleCenter; - _mediaNameStyle.margin.top = 8; - _mediaNameStyle.margin.bottom = 16; - } - - float height = _mediaNameStyle.CalcHeight(new GUIContent(text), Screen.width)*1.5f; - EditorGUILayout.SelectableLabel(text, _mediaNameStyle, GUILayout.Height(height), GUILayout.ExpandHeight(false), GUILayout.ExpandWidth(true)); - - GUI.color = Color.white; - GUI.backgroundColor = Color.white; - } - } - - private void OnInspectorGUI_RecentButton(SerializedProperty propPath, SerializedProperty propLocation) - { - GUI.color = Color.white; - - if (GUILayout.Button("RECENT", GUILayout.Width(60f))) - { - GenericMenu toolsMenu = new GenericMenu(); - toolsMenu.AddDisabledItem(new GUIContent("Recent Files:")); - - // TODO: allow current path to be added. Perhaps add it automatically when file is loaded? - /*if (!string.IsNullOrEmpty(propPath.stringValue)) - { - string path = propPath.stringValue.Replace("/", ">").Replace("\\", ">"); - toolsMenu.AddItem(new GUIContent("Add Current: " + path), false, RecentMenuCallback_Add); - }*/ - toolsMenu.AddSeparator(""); - - int missingCount = 0; - for (int i = 0; i < _recentFiles.Count; i++) - { - string path = _recentFiles[i]; - string itemName = path.Replace("/", ">").Replace("\\", ">"); - if (System.IO.File.Exists(path)) - { - toolsMenu.AddItem(new GUIContent(itemName), false, RecentMenuCallback_Select, new RecentFileData(path, propPath, propLocation, target)); - } - else - { - toolsMenu.AddDisabledItem(new GUIContent(itemName)); - missingCount++; - } - } - if (_recentFiles.Count > 0) - { - toolsMenu.AddSeparator(""); - toolsMenu.AddItem(new GUIContent("Clear"), false, RecentMenuCallback_Clear); - if (missingCount > 0) - { - toolsMenu.AddItem(new GUIContent("Clear Missing (" + missingCount + ")"), false, RecentMenuCallback_ClearMissing); - } - } - - toolsMenu.ShowAsContext(); - } - } - - private void OnInspectorGUI_StreamingAssetsButton(SerializedProperty propPath, SerializedProperty propLocation) - { - GUI.color = Color.white; - - if (GUILayout.Button("SA", GUILayout.Width(32f))) - { - GenericMenu toolsMenu = new GenericMenu(); - toolsMenu.AddDisabledItem(new GUIContent("StreamingAssets Files:")); - toolsMenu.AddSeparator(""); - - if (System.IO.Directory.Exists(Application.streamingAssetsPath)) - { - List files = new List(); - - string[] allFiles = System.IO.Directory.GetFiles(Application.streamingAssetsPath, "*", System.IO.SearchOption.AllDirectories); - if (allFiles != null && allFiles.Length > 0) - { - // Filter by type - for (int i = 0; i < allFiles.Length; i++) - { - bool remove = false; - if (allFiles[i].EndsWith(".meta", System.StringComparison.InvariantCultureIgnoreCase)) - { - remove = true; - } - if (!remove) - { - files.Add(allFiles[i]); - } - } - } - - if (files.Count > 0) - { - for (int i = 0; i < files.Count; i++) - { - string path = files[i]; - if (System.IO.File.Exists(path)) - { - string itemName = path.Replace(Application.streamingAssetsPath, ""); - if (itemName.StartsWith("/") || itemName.StartsWith("\\")) - { - itemName = itemName.Remove(0, 1); - } - itemName = itemName.Replace("\\", "/"); - - toolsMenu.AddItem(new GUIContent(itemName), false, RecentMenuCallback_Select, new RecentFileData(path, propPath, propLocation, target)); - } - } - } - else - { - toolsMenu.AddDisabledItem(new GUIContent("StreamingAssets folder contains no files")); - } - } - else - { - toolsMenu.AddDisabledItem(new GUIContent("StreamingAssets folder doesn't exist")); - } - - toolsMenu.ShowAsContext(); - } - } - - private static void ShowNoticeBox(MessageType messageType, string message) - { - //GUI.backgroundColor = Color.yellow; - //EditorGUILayout.HelpBox(message, messageType); - - switch (messageType) - { - case MessageType.Error: - GUI.color = Color.red; - message = "Error: " + message; - break; - case MessageType.Warning: - GUI.color = Color.yellow; - message = "Warning: " + message; - break; - } - - //GUI.color = Color.yellow; - GUILayout.TextArea(message); - GUI.color = Color.white; - } - - private static void ShowFileWarningMessages(string filePath, MediaPlayer.FileLocation fileLocation, bool isAutoOpen, Platform platform) - { - string finalPath = MediaPlayer.GetFilePath(filePath, fileLocation); - - if (string.IsNullOrEmpty(filePath)) - { - if (isAutoOpen) - { - ShowNoticeBox(MessageType.Error, "No file specified"); - } - else - { - ShowNoticeBox(MessageType.Warning, "No file specified"); - } - } - else - { - bool isPlatformAndroid = (platform == Platform.Android) || (platform == Platform.Unknown && BuildTargetGroup.Android == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup); - bool isPlatformIOS = (platform == Platform.iOS); -#if AVPRO_UNITY_IOS_ALLOWHTTPDOWNLOAD - isPlatformIOS |= (platform == Platform.Unknown && BuildTargetGroup.iOS == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup); -#endif -#if AVPRO_UNITY_PLATFORM_TVOS - bool isPlatformTVOS = (platform == Platform.tvOS); - - isPlatformTVOS |= (platform == Platform.Unknown && BuildTargetGroup.tvOS == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup); -#endif - - // Test file extensions - { - bool isExtensionAVI = filePath.ToLower().EndsWith(".avi"); - bool isExtensionMOV = filePath.ToLower().EndsWith(".mov"); - bool isExtensionMKV = filePath.ToLower().EndsWith(".mkv"); - - if (isPlatformAndroid && isExtensionMOV) - { - ShowNoticeBox(MessageType.Warning, "MOV file detected. Android doesn't support MOV files, you should change the container file."); - } - if (isPlatformAndroid && isExtensionAVI) - { - ShowNoticeBox(MessageType.Warning, "AVI file detected. Android doesn't support AVI files, you should change the container file."); - } - if (isPlatformAndroid && isExtensionMKV) - { - ShowNoticeBox(MessageType.Warning, "MKV file detected. Android doesn't support MKV files until Android 5.0."); - } - if (isPlatformIOS && isExtensionAVI) - { - ShowNoticeBox(MessageType.Warning, "AVI file detected. iOS doesn't support AVI files, you should change the container file."); - } - } - - if (finalPath.Contains("://")) - { - if (filePath.ToLower().Contains("rtmp://")) - { - ShowNoticeBox(MessageType.Warning, "RTMP protocol is not supported by AVPro Video, except when Windows DirectShow is used with an external codec library (eg LAV Filters)"); - } - if (filePath.ToLower().Contains("youtube.com/watch")) - { - ShowNoticeBox(MessageType.Warning, "YouTube URL detected. YouTube website URL contains no media, a direct media file URL (eg MP4 or M3U8) is required. See the documentation FAQ for YouTube support."); - } - if (fileLocation != MediaPlayer.FileLocation.AbsolutePathOrURL) - { - ShowNoticeBox(MessageType.Warning, "URL detected, change location type to URL?"); - } - else - { -#if AVPRO_UNITY_IOS_ALLOWHTTPDOWNLOAD - // Display warning to iOS users if they're trying to use HTTP url without setting the permission - - if (isPlatformIOS -#if AVPRO_UNITY_PLATFORM_TVOS - || isPlatformTVOS -#endif - ) - { - if (!PlayerSettings.iOS.allowHTTPDownload && filePath.StartsWith("http://")) - { - ShowNoticeBox(MessageType.Warning, "Starting with iOS 9 'allow HTTP downloads' must be enabled for HTTP connections (see Player Settings)"); - } - } -#endif - // Display warning for Android users if they're trying to use a URL without setting permission - if (isPlatformAndroid && !PlayerSettings.Android.forceInternetPermission) - { - ShowNoticeBox(MessageType.Warning, "You may need to set 'Internet Access' to 'require' in your Player Settings for Android builds when using URLs"); - } - - // Display warning for UWP users if they're trying to use a URL without setting permission - if (platform == Platform.WindowsUWP || (platform == Platform.Unknown && ( -#if !AVPRO_UNITY_WP8_DEPRECATED - BuildTargetGroup.WP8 == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup || -#endif -#if AVPRO_UNITY_METRO - BuildTargetGroup.Metro == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup -#else - BuildTargetGroup.WSA == UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup -#endif - ))) - { -#if AVPRO_UNITY_METRO - if (!PlayerSettings.Metro.GetCapability(PlayerSettings.MetroCapability.InternetClient)) -#else - if (!PlayerSettings.WSA.GetCapability(PlayerSettings.WSACapability.InternetClient)) -#endif - { - ShowNoticeBox(MessageType.Warning, "You may need to set 'InternetClient' capability in your Player Settings when using URLs"); - } - } - } - } - else - { - if (fileLocation != MediaPlayer.FileLocation.AbsolutePathOrURL && filePath.StartsWith("/")) - { - ShowNoticeBox(MessageType.Warning, "Absolute path detected, change location to Absolute path?"); - } - - // Display warning for Android users if they're trying to use absolute file path without permission - if (isPlatformAndroid && !PlayerSettings.Android.forceSDCardPermission) - { - ShowNoticeBox(MessageType.Warning, "You may need to access the local file system you may need to set 'Write Access' to 'External(SDCard)' in your Player Settings for Android"); - } - - if (platform == Platform.Unknown || platform == MediaPlayer.GetPlatform()) - { - if (!System.IO.File.Exists(finalPath)) - { - ShowNoticeBox(MessageType.Error, "File not found"); - } - else - { - // Check the case - // This approach is very slow, so we only run it when the app isn't playing - if (!Application.isPlaying) - { - string comparePath = finalPath.Replace('\\', '/'); - string folderPath = System.IO.Path.GetDirectoryName(comparePath); - if (!string.IsNullOrEmpty(folderPath)) - { - - string[] files = System.IO.Directory.GetFiles(folderPath, "*", System.IO.SearchOption.TopDirectoryOnly); - bool caseMatch = false; - if (files != null && files.Length > 0) - { - //Debug.Log("final: " + comparePath); - for (int i = 0; i < files.Length; i++) - { - //Debug.Log("comp: " + files[i].Replace('\\', '/')); - if (files[i].Replace('\\', '/') == comparePath) - { - caseMatch = true; - break; - } - } - } - if (!caseMatch) - { - ShowNoticeBox(MessageType.Warning, "File found but case doesn't match"); - } - } - } - } - } - } - } - - if (fileLocation == MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder) - { - if (!System.IO.Directory.Exists(Application.streamingAssetsPath)) - { - GUILayout.BeginHorizontal(); - GUI.color = Color.yellow; - GUILayout.TextArea("Warning: No StreamingAssets folder found"); - - if (GUILayout.Button("Create Folder")) - { - System.IO.Directory.CreateDirectory(Application.streamingAssetsPath); - AssetDatabase.Refresh(); - } - GUILayout.EndHorizontal(); - } - else - { - bool checkAndroidFileSize = false; -#if UNITY_ANDROID - if (platform == Platform.Unknown) - { - checkAndroidFileSize = true; - } -#endif - if (platform == Platform.Android) - { - checkAndroidFileSize = true; - } - - if (checkAndroidFileSize) - { - try - { - System.IO.FileInfo info = new System.IO.FileInfo(finalPath); - if (info != null && info.Length > (1024 * 1024 * 512)) - { - ShowNoticeBox(MessageType.Warning, "Using this very large file inside StreamingAssets folder on Android isn't recommended. Deployments will be slow and mapping the file from the StreamingAssets JAR may cause storage and memory issues. We recommend loading from another folder on the device."); - } - } - catch (System.Exception) - { - } - } - } - } - - GUI.color = Color.white; - } - - private void OnInspectorGUI_VideoPreview(MediaPlayer media, IMediaProducer textureSource) - { - Texture texture = null; - if (textureSource != null) - { - texture = textureSource.GetTexture(); - } - if (texture == null) - { - texture = EditorGUIUtility.whiteTexture; - } - - float ratio = (float)texture.width / (float)texture.height; - - // Reserve rectangle for texture - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - Rect textureRect; - Rect alphaRect = new Rect(0f, 0f, 1f, 1f); - if (texture != EditorGUIUtility.whiteTexture) - { - textureRect = GUILayoutUtility.GetRect(Screen.width / 2, Screen.width / 2, (Screen.width / 2) / ratio, (Screen.width / 2) / ratio); - if (_showAlpha) - { - alphaRect = GUILayoutUtility.GetRect(Screen.width / 2, Screen.width / 2, (Screen.width / 2) / ratio, (Screen.width / 2) / ratio); - } - } - else - { - textureRect = GUILayoutUtility.GetRect(1920f / 40f, 1080f / 40f); - if (_showAlpha) - { - alphaRect = GUILayoutUtility.GetRect(1920f / 40f, 1080f / 40f); - } - } - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - // Dimensions - string dimensionText = string.Format("{0}x{1}@{2}", 0, 0, 0.0f); - if (texture != EditorGUIUtility.whiteTexture && media.Info != null) - { - dimensionText = string.Format("{0}x{1}@{2:F2}", texture.width, texture.height, media.Info.GetVideoFrameRate()); - } - - CentreLabel(dimensionText); - - string rateText = "0"; - string playerText = string.Empty; - if (media.Info != null) - { - rateText = media.Info.GetVideoDisplayRate().ToString("F2"); - playerText = media.Info.GetPlayerDescription(); - } - - EditorGUILayout.LabelField("Display Rate", rateText); - EditorGUILayout.LabelField("Using", playerText); - _showAlpha = EditorGUILayout.Toggle("Show Alpha", _showAlpha); - - // Draw the texture - Matrix4x4 prevMatrix = GUI.matrix; - if (textureSource != null && textureSource.RequiresVerticalFlip()) - { - GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, textureRect.y + (textureRect.height / 2))); - } - - if (!GUI.enabled) - { - GUI.color = Color.grey; - GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit, false); - GUI.color = Color.white; - } - else - { - if (!_showAlpha) - { - // TODO: In Linear mode, this displays the texture too bright, but GUI.DrawTexture displays it correctly - EditorGUI.DrawTextureTransparent(textureRect, texture, ScaleMode.ScaleToFit); - } - else - { - GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit, false); - EditorGUI.DrawTextureAlpha(alphaRect, texture, ScaleMode.ScaleToFit); - } - } - GUI.matrix = prevMatrix; - - // Select texture button - GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); - GUILayout.FlexibleSpace(); - if (GUILayout.Button("Select Texture", GUILayout.ExpandWidth(false))) - { - Selection.activeObject = texture; - } - if (GUILayout.Button("Save PNG", GUILayout.ExpandWidth(true))) - { - media.SaveFrameToPng(); - } - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - } - - private void OnInspectorGUI_PlayControls(IMediaControl control, IMediaInfo info) - { - GUILayout.Space(8.0f); - - // Slider - EditorGUILayout.BeginHorizontal(); - bool isPlaying = false; - if (control != null) - { - isPlaying = control.IsPlaying(); - } - float currentTime = 0f; - if (control != null) - { - currentTime = control.GetCurrentTimeMs(); - } - - float durationTime = 0f; - if (info != null) - { - durationTime = info.GetDurationMs(); - if (float.IsNaN(durationTime)) - { - durationTime = 0f; - } - } - string timeUsed = Helper.GetTimeString(currentTime / 1000f, true); - GUILayout.Label(timeUsed, GUILayout.ExpandWidth(false)); - - float newTime = GUILayout.HorizontalSlider(currentTime, 0f, durationTime, GUILayout.ExpandWidth(true)); - if (newTime != currentTime) - { - control.Seek(newTime); - } - - string timeTotal = "Infinity"; - if (!float.IsInfinity(durationTime)) - { - timeTotal = Helper.GetTimeString(durationTime / 1000f, true); - } - - GUILayout.Label(timeTotal, GUILayout.ExpandWidth(false)); - - EditorGUILayout.EndHorizontal(); - - // Buttons - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("Rewind", GUILayout.ExpandWidth(false))) - { - control.Rewind(); - } - - if (!isPlaying) - { - GUI.color = Color.green; - if (GUILayout.Button("Play", GUILayout.ExpandWidth(true))) - { - control.Play(); - } - } - else - { - GUI.color = Color.yellow; - if (GUILayout.Button("Pause", GUILayout.ExpandWidth(true))) - { - control.Pause(); - } - } - GUI.color = Color.white; - EditorGUILayout.EndHorizontal(); - } - - private struct Native - { -#if UNITY_EDITOR_WIN - [System.Runtime.InteropServices.DllImport("AVProVideo")] - public static extern System.IntPtr GetPluginVersion(); -#elif UNITY_EDITOR_OSX - [System.Runtime.InteropServices.DllImport("AVProVideo")] - public static extern string AVPGetVersion(); -#endif - } - - private static string GetPluginVersion() - { - string version = "Unknown"; - try - { -#if UNITY_EDITOR_WIN - version = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.GetPluginVersion()); -#elif UNITY_EDITOR_OSX - version = Native.AVPGetVersion(); -#endif - } - catch (System.DllNotFoundException e) - { - Debug.LogError("[AVProVideo] Failed to load DLL. " + e.Message); -#if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) -#if !UNITY_5 && !UNITY_5_4_OR_NEWER - Debug.LogError("[AVProVideo] You may need to copy the Audio360 DLL into the root folder of your project (the folder above Assets)"); -#endif -#endif - } - return version; - } - - private static Texture2D GetIcon(Texture2D icon) - { - if (icon == null) - { - icon = Resources.Load("AVProVideoIcon"); - } - return icon; - } - - private void OnInspectorGUI_About() - { - //GUILayout.Space(8f); - - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandAbout) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - if (GUILayout.Button("About / Help", EditorStyles.toolbarButton)) - { - _expandAbout = !_expandAbout; - } - GUI.color = Color.white; - - if (_expandAbout) - { - EditorGUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - _icon = GetIcon(_icon); - if (_icon != null) - { - GUILayout.Label(new GUIContent(_icon)); - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - - GUI.color = Color.yellow; - CentreLabel("AVPro Video by RenderHeads Ltd", EditorStyles.boldLabel); - CentreLabel("version " + GetPluginVersion() + " (scripts v" + Helper.ScriptVersion + ")"); - GUI.color = Color.white; - - - GUILayout.Space(32f); - GUI.backgroundColor = Color.white; - - EditorGUILayout.LabelField("Links", EditorStyles.boldLabel); - - GUILayout.Space(8f); - - EditorGUILayout.LabelField("Documentation"); - if (GUILayout.Button("User Manual, FAQ, Release Notes", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(LinkUserManual); - } - if (GUILayout.Button("Scripting Class Reference", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(LinkScriptingClassReference); - } - - GUILayout.Space(16f); - - GUILayout.Label("Rate and Review (★★★★☆)", GUILayout.ExpandWidth(false)); - if (GUILayout.Button("Unity Asset Store Page", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(LinkAssetStorePage); - } - - GUILayout.Space(16f); - - GUILayout.Label("Community"); - if (GUILayout.Button("Unity Forum Page", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(LinkForumPage); - } - - GUILayout.Space(16f); - - GUILayout.Label("Homepage", GUILayout.ExpandWidth(false)); - if (GUILayout.Button("AVPro Video Website", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(LinkPluginWebsite); - } - - GUILayout.Space(16f); - - GUILayout.Label("Bugs and Support"); - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("Open Help & Support", GUILayout.ExpandWidth(false))) - { - SupportWindow.Init(); - } - EditorGUILayout.EndHorizontal(); - - GUILayout.Space(32f); - - EditorGUILayout.LabelField("Credits", EditorStyles.boldLabel); - GUILayout.Space(8f); - - CentreLabel("Programming", EditorStyles.boldLabel); - CentreLabel("Andrew Griffiths"); - CentreLabel("Morris Butler"); - CentreLabel("Sunrise Wang"); - CentreLabel("Ste Butcher"); - CentreLabel("Muano Mainganye"); - CentreLabel("Shane Marks"); - GUILayout.Space(8f); - CentreLabel("Graphics", EditorStyles.boldLabel); - GUILayout.Space(8f); - CentreLabel("Jeff Rusch"); - CentreLabel("Luke Godward"); - - GUILayout.Space(32f); - - EditorGUILayout.LabelField("Bug Reporting Notes", EditorStyles.boldLabel); - - EditorGUILayout.SelectableLabel(SupportMessage, EditorStyles.wordWrappedLabel, GUILayout.Height(300f)); - } - - EditorGUILayout.EndVertical(); - } - - private void OnInspectorGUI_Events() - { - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandEvents) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Events", EditorStyles.toolbarButton)) - { - _expandEvents = !_expandEvents; - } - GUI.color = Color.white; - - if (_expandEvents) - { - EditorGUILayout.PropertyField(_propEvents); - - _propEventMask.intValue = EditorGUILayout.MaskField("Triggered Events", _propEventMask.intValue, System.Enum.GetNames(typeof(MediaPlayerEvent.EventType))); - - EditorGUILayout.BeginHorizontal(); - GUILayout.Label("Pause Media On App Pause"); - _propPauseMediaOnAppPause.boolValue = EditorGUILayout.Toggle(_propPauseMediaOnAppPause.boolValue); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - GUILayout.Label("Play Media On App Unpause"); - _propPlayMediaOnAppUnpause.boolValue = EditorGUILayout.Toggle(_propPlayMediaOnAppUnpause.boolValue); - EditorGUILayout.EndHorizontal(); - } - - GUILayout.EndVertical(); - } - - private void OnInspectorGUI_Main() - { - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandMain) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Main", EditorStyles.toolbarButton)) - { - _expandMain = !_expandMain; - } - GUI.color = Color.white; - - if (_expandMain) - { - MediaPlayer media = (this.target) as MediaPlayer; - - /////////////////// STARTUP FIELDS - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Startup", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propAutoOpen); - EditorGUILayout.PropertyField(_propAutoStart, new GUIContent("Auto Play")); - EditorGUILayout.EndVertical(); - - /////////////////// PLAYBACK FIELDS - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Playback", EditorStyles.boldLabel); - - if (!Application.isPlaying || !media.VideoOpened) - { - EditorGUILayout.PropertyField(_propLoop); - EditorGUILayout.PropertyField(_propRate); - } - else if (media.Control != null) - { - media.m_Loop = media.Control.IsLooping(); - bool newLooping = EditorGUILayout.Toggle("Loop", media.m_Loop); - if (newLooping != media.m_Loop) - { - media.Control.SetLooping(newLooping); - } - - media.m_PlaybackRate = media.Control.GetPlaybackRate(); - float newPlaybackRate = EditorGUILayout.Slider("Rate", media.m_PlaybackRate, -4f, 4f); - if (newPlaybackRate != media.m_PlaybackRate) - { - media.Control.SetPlaybackRate(newPlaybackRate); - } - } - - EditorGUILayout.EndVertical(); - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Other", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propPersistent, new GUIContent("Persistent", "Use DontDestroyOnLoad so this object isn't destroyed between level loads")); - - EditorGUILayout.PropertyField(_propForceFileFormat); - - EditorGUILayout.EndVertical(); - } - GUILayout.EndVertical(); - } - - private void OnInspectorGUI_Audio() - { - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandAudio) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Audio", EditorStyles.toolbarButton)) - { - _expandAudio = !_expandAudio; - } - GUI.color = Color.white; - - if (_expandAudio) - { - MediaPlayer media = (this.target) as MediaPlayer; - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Audio", EditorStyles.boldLabel); - if (!Application.isPlaying || !media.VideoOpened) - { - EditorGUILayout.PropertyField(_propVolume); - EditorGUILayout.PropertyField(_propBalance); - EditorGUILayout.PropertyField(_propMuted); - } - else if (media.Control != null) - { - media.m_Volume = media.Control.GetVolume(); - float newVolume = EditorGUILayout.Slider("Volume", media.m_Volume, 0f, 1f); - if (newVolume != media.m_Volume) - { - media.Control.SetVolume(newVolume); - } - - float balance = media.Control.GetBalance(); - float newBalance = EditorGUILayout.Slider("Balance", balance, -1f, 1f); - if (newBalance != balance) - { - media.Control.SetBalance(newBalance); - _propBalance.floatValue = newBalance; - } - - media.m_Muted = media.Control.IsMuted(); - bool newMuted = EditorGUILayout.Toggle("Muted", media.m_Muted); - if (newMuted != media.m_Muted) - { - media.Control.MuteAudio(newMuted); - } - - - /* - int selectedTrackIndex = media.Control.GetCurrentAudioTrack(); - int numTracks = media.Info.GetAudioTrackCount(); - if (numTracks > 0) - { - string[] trackNames = new string[numTracks]; - for (int i = 0; i < numTracks; i++) - { - trackNames[i] = (i+1).ToString(); - } - int newSelectedTrackIndex = EditorGUILayout.Popup("Audio Track", selectedTrackIndex, trackNames); - if (newSelectedTrackIndex != selectedTrackIndex) - { - media.Control.SetAudioTrack(newSelectedTrackIndex); - } - }*/ - } - - EditorGUILayout.EndVertical(); - - { - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Facebook Audio 360", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propAudioHeadTransform, new GUIContent("Head Transform", "Set this to your head camera transform. Only currently used for TBE Audio360")); - EditorGUILayout.PropertyField(_propAudioEnableFocus, new GUIContent("Enable Focus", "Enables focus control. Only currently used for TBE Audio360")); - if (_propAudioEnableFocus.boolValue) - { - EditorGUILayout.PropertyField(_propAudioFocusOffLevelDB, new GUIContent("Off Focus Level DB", "Sets the off-focus level in DB, with the range being between -24 to 0 DB. Only currently used for TBE Audio360")); - EditorGUILayout.PropertyField(_propAudioFocusWidthDegrees, new GUIContent("Focus Width Degrees", "Set the focus width in degrees, with the range being between 40 and 120 degrees. Only currently used for TBE Audio360")); - EditorGUILayout.PropertyField(_propAudioFocusTransform, new GUIContent("Focus Transform", "Set this to where you wish to focus on the video. Only currently used for TBE Audio360")); - } - EditorGUILayout.EndVertical(); - } - - - } - - GUILayout.EndVertical(); - } - - private void OnInspectorGUI_MediaProperties() - { - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandMediaProperties) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Visual", EditorStyles.toolbarButton)) - { - _expandMediaProperties = !_expandMediaProperties; - } - GUI.color = Color.white; - - if (_expandMediaProperties) - { - MediaPlayer media = (this.target) as MediaPlayer; - - EditorGUILayout.BeginVertical(); - GUILayout.Label("Texture", EditorStyles.boldLabel); - - EditorGUILayout.PropertyField(_propFilter, new GUIContent("Filter")); - EditorGUILayout.PropertyField(_propWrap, new GUIContent("Wrap")); - EditorGUILayout.PropertyField(_propAniso, new GUIContent("Aniso")); - - if (_propWrap.enumValueIndex != (int)media.m_WrapMode || - _propFilter.enumValueIndex != (int)media.m_FilterMode || - _propAniso.intValue != media.m_AnisoLevel) - { - if (media.Control != null) - { - media.Control.SetTextureProperties((FilterMode)_propFilter.enumValueIndex, (TextureWrapMode)_propWrap.enumValueIndex, _propAniso.intValue); - } - } - - EditorGUILayout.EndVertical(); - - EditorGUILayout.BeginVertical(); - GUILayout.Label("Layout Mapping", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propVideoMapping); - EditorGUILayout.EndVertical(); - - EditorGUILayout.BeginVertical(); - GUILayout.Label("Transparency", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propAlphaPacking, new GUIContent("Packing")); - EditorGUILayout.EndVertical(); - - EditorGUILayout.BeginVertical(); - GUILayout.Label("Stereo", EditorStyles.boldLabel); - - EditorGUI.BeginChangeCheck(); - EditorGUILayout.PropertyField(_propStereoPacking, new GUIContent("Packing")); - if (EditorGUI.EndChangeCheck()) - { - CheckStereoPackingField(); - } - - if (_showMessage_UpdatStereoMaterial) - { - ShowNoticeBox(MessageType.Warning, "No UpdateStereoMaterial component found in scene. UpdateStereoMaterial is required for stereo display."); - } - - EditorGUI.BeginDisabledGroup(_propStereoPacking.enumValueIndex == 0); - EditorGUILayout.PropertyField(_propDisplayStereoTint, new GUIContent("Debug Eye Tint", "Tints the left eye green and the right eye red so you can confirm stereo is working")); - EditorGUI.EndDisabledGroup(); - EditorGUILayout.EndVertical(); - - { - //EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Resampler (BETA)", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propResample); - EditorGUI.BeginDisabledGroup(!_propResample.boolValue); - - EditorGUILayout.PropertyField(_propResampleMode); - EditorGUILayout.PropertyField(_propResampleBufferSize); - - EditorGUI.EndDisabledGroup(); - //EditorGUILayout.EndVertical(); - } - } - - GUILayout.EndVertical(); - } - - private void CheckStereoPackingField() - { - if (_propStereoPacking != null) - { - _showMessage_UpdatStereoMaterial = false; - if (_propStereoPacking.enumValueIndex != 0 && null == FindObjectOfType()) - { - _showMessage_UpdatStereoMaterial = true; - } - } - } - - private void OnInspectorGUI_Subtitles() - { - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandSubtitles) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Subtitles", EditorStyles.toolbarButton)) - { - _expandSubtitles = !_expandSubtitles; - } - GUI.color = Color.white; - - if (_expandSubtitles) - { - MediaPlayer media = (this.target) as MediaPlayer; - - EditorGUILayout.BeginVertical(); - EditorGUILayout.PropertyField(_propSubtitles, new GUIContent("Load External Subtitles")); - { - EditorGUI.BeginDisabledGroup(!_propSubtitles.boolValue); - - EditorGUILayout.BeginVertical("box"); - - OnInspectorGUI_CopyableFilename(_propSubtitlePath.stringValue); - - EditorGUILayout.LabelField("Source Path", EditorStyles.boldLabel); - - EditorGUILayout.PropertyField(_propSubtitleLocation, GUIContent.none); - - { - string oldPath = _propSubtitlePath.stringValue; - string newPath = EditorGUILayout.TextField(string.Empty, _propSubtitlePath.stringValue); - if (newPath != oldPath) - { - // Check for invalid characters - if (0 > newPath.IndexOfAny(System.IO.Path.GetInvalidPathChars())) - { - _propSubtitlePath.stringValue = newPath.Replace("\\", "/"); - EditorUtility.SetDirty(target); - } - } - } - - //if (!Application.isPlaying) - { - GUILayout.BeginHorizontal(); - OnInspectorGUI_RecentButton(_propSubtitlePath, _propSubtitleLocation); - OnInspectorGUI_StreamingAssetsButton(_propSubtitlePath, _propSubtitleLocation); - GUI.color = Color.green; - if (GUILayout.Button("BROWSE")) - { - string startFolder = GetStartFolder(_propSubtitlePath.stringValue, (MediaPlayer.FileLocation)_propSubtitleLocation.enumValueIndex); - string videoPath = media.SubtitlePath; - string fullPath = string.Empty; - MediaPlayer.FileLocation fileLocation = media.SubtitleLocation; - if (Browse(startFolder, ref videoPath, ref fileLocation, ref fullPath, SubtitleExtensions)) - { - _propSubtitlePath.stringValue = videoPath.Replace("\\", "/"); - _propSubtitleLocation.enumValueIndex = (int)fileLocation; - EditorUtility.SetDirty(target); - - AddToRecentFiles(fullPath); - } - } - GUI.color = Color.white; - GUILayout.EndHorizontal(); - - ShowFileWarningMessages(_propSubtitlePath.stringValue, (MediaPlayer.FileLocation)_propSubtitleLocation.enumValueIndex, media.m_AutoOpen, Platform.Unknown); - GUI.color = Color.white; - } - - if (Application.isPlaying) - { - GUILayout.BeginHorizontal(); - if (GUILayout.Button("Load")) - { - media.EnableSubtitles((MediaPlayer.FileLocation)_propSubtitleLocation.enumValueIndex, _propSubtitlePath.stringValue); - } - if (GUILayout.Button("Clear")) - { - media.DisableSubtitles(); - } - GUILayout.EndHorizontal(); - } - - EditorGUILayout.EndVertical(); - } - - EditorGUILayout.EndVertical(); - EditorGUI.EndDisabledGroup(); - } - - GUILayout.EndVertical(); - } - - private static void CentreLabel(string text, GUIStyle style = null) - { - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - if (style == null) - { - GUILayout.Label(text); - } - else - { - GUILayout.Label(text, style); - } - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - } - - private void OnInspectorGUI_GlobalSettings() - { - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandGlobalSettings) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Global Settings", EditorStyles.toolbarButton)) - { - _expandGlobalSettings = !_expandGlobalSettings; - } - GUI.color = Color.white; - - if (_expandGlobalSettings) - { - EditorGUI.BeginDisabledGroup(Application.isPlaying); - EditorGUILayout.LabelField("Current Platform", EditorUserBuildSettings.selectedBuildTargetGroup.ToString()); - - GUILayout.Label("BETA", EditorStyles.boldLabel); - - // TimeScale - { - const string TimeScaleDefine = "AVPROVIDEO_BETA_SUPPORT_TIMESCALE"; - - string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); - bool supportsTimeScale = defines.Contains(TimeScaleDefine); - bool supportsTimeScaleNew = EditorGUILayout.Toggle("TimeScale Support", supportsTimeScale); - if (supportsTimeScale != supportsTimeScaleNew) - { - if (supportsTimeScaleNew) - { - defines += ";" + TimeScaleDefine + ";"; - } - else - { - defines = defines.Replace(TimeScaleDefine, ""); - } - - PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, defines); - } - - if (supportsTimeScaleNew) - { - ShowNoticeBox(MessageType.Warning, "This will affect performance if you change Time.timeScale or Time.captureFramerate. This feature is useful for supporting video capture system that adjust time scale during capturing."); - } - } - - GUILayout.Label("Performance", EditorStyles.boldLabel); - - // Disable Debug GUI - { - const string DisableDebugGUIDefine = "AVPROVIDEO_DISABLE_DEBUG_GUI"; - - string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); - bool disableDebugGUI = defines.Contains(DisableDebugGUIDefine); - EditorGUILayout.BeginHorizontal(); - bool disableDebugGUINew = EditorGUILayout.Toggle("Disable Debug GUI", disableDebugGUI); - GUILayout.Label("(in builds only)"); - EditorGUILayout.EndHorizontal(); - if (disableDebugGUI != disableDebugGUINew) - { - if (disableDebugGUINew) - { - defines += ";" + DisableDebugGUIDefine + ";"; - } - else - { - defines = defines.Replace(DisableDebugGUIDefine, ""); - } - - PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, defines); - } - if (!disableDebugGUI) - { - GUI.color = Color.white; - GUILayout.TextArea("The Debug GUI can be disabled globally for builds to help reduce garbage generation each frame."); - GUI.color = Color.white; - } - } - - // Disable Logging - { - const string DisableLogging = "AVPROVIDEO_DISABLE_LOGGING"; - - string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); - bool disableLogging = defines.Contains(DisableLogging); - bool disableLoggingNew = EditorGUILayout.Toggle("Disable Logging", disableLogging); - if (disableLogging != disableLoggingNew) - { - if (disableLoggingNew) - { - defines += ";" + DisableLogging + ";"; - } - else - { - defines = defines.Replace(DisableLogging, ""); - } - - PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, defines); - } - } - - EditorGUI.EndDisabledGroup(); - } - - GUILayout.EndVertical(); - } - - private void OnInspectorGUI_PlatformOverrides() - { - MediaPlayer media = (this.target) as MediaPlayer; - - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_expandPlatformOverrides) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - if (GUILayout.Button("Platform Specific", EditorStyles.toolbarButton)) - { - _expandPlatformOverrides = !_expandPlatformOverrides; - } - GUI.color = Color.white; - - if (_expandPlatformOverrides) - { - int rowCount = 0; - int platformIndex = _platformIndex; - for (int i = 0; i < _platformNames.Length; i++) - { - if (i % 3 == 0) - { - GUILayout.BeginHorizontal(); - rowCount++; - } - MediaPlayer.PlatformOptions options = media.GetPlatformOptions((Platform)i); - - Color hilight = Color.yellow; - - if (i == _platformIndex) - { - // Selected, unmodified - if (!options.IsModified()) - { - GUI.contentColor = Color.white; - } - else - { - // Selected, modified - GUI.color = hilight; - GUI.contentColor = Color.white; - } - } - else if (options.IsModified()) - { - // Unselected, modified - GUI.backgroundColor = Color.grey* hilight; - GUI.contentColor = hilight; - } - else - { - // Unselected, unmodified - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.grey; - GUI.color = new Color(0.65f, 0.66f, 0.65f);// Color.grey; - } - } - - if (i == _platformIndex) - { - if (!GUILayout.Toggle(true, _platformNames[i], GUI.skin.button)) - { - platformIndex = -1; - } - } - else - { - if (GUILayout.Button(_platformNames[i])) - { - platformIndex = i; - } - } - if ((i+1) % 3 == 0) - { - rowCount--; - GUILayout.EndHorizontal(); - } - GUI.backgroundColor = Color.white; - GUI.contentColor = Color.white; - GUI.color = Color.white; - } - - if (rowCount > 0) - { - GUILayout.EndHorizontal(); - } - - //platformIndex = GUILayout.SelectionGrid(_platformIndex, Helper.GetPlatformNames(), 3); - //int platformIndex = GUILayout.Toolbar(_platformIndex, Helper.GetPlatformNames()); - - if (platformIndex != _platformIndex) - { - _platformIndex = platformIndex; - - // We do this to clear the focus, otherwise a focused text field will not change when the Toolbar index changes - EditorGUI.FocusTextInControl("ClearFocus"); - } - - OnInspectorGUI_PathOverrides(); - switch ((Platform)_platformIndex) - { - case Platform.Windows: - OnInspectorGUI_Override_Windows(); - break; - case Platform.MacOSX: - OnInspectorGUI_Override_MacOSX(); - break; - case Platform.iOS: - OnInspectorGUI_Override_iOS(); - break; - case Platform.tvOS: - OnInspectorGUI_Override_tvOS(); - break; - case Platform.Android: - OnInspectorGUI_Override_Android(); - break; - case Platform.WindowsPhone: - OnInspectorGUI_Override_WindowsPhone(); - break; - case Platform.WindowsUWP: - OnInspectorGUI_Override_WindowsUWP(); - break; - case Platform.WebGL: - OnInspectorGUI_Override_WebGL(); - break; - } - } - GUILayout.EndVertical(); - } - - void OnInspectorGUI_Preview() - { - MediaPlayer media = (this.target) as MediaPlayer; - - //GUILayout.Space(8f); - GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - - if (_expandPreview) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - GUILayout.BeginVertical(_sectionBoxStyle); - GUI.backgroundColor = Color.white; - - GUI.backgroundColor = Color.cyan; - if (GUILayout.Button("Preview", EditorStyles.toolbarButton)) - { - _expandPreview = !_expandPreview; - } - GUI.color = Color.white; - GUI.backgroundColor = Color.white; - - if (_expandPreview) - { - EditorGUI.BeginDisabledGroup(!(media.TextureProducer != null && media.Info.HasVideo())); - OnInspectorGUI_VideoPreview(media, media.TextureProducer); - EditorGUI.EndDisabledGroup(); - - EditorGUI.BeginDisabledGroup(!(media.Control != null && media.Control.CanPlay() && media.isActiveAndEnabled && !EditorApplication.isPaused)); - OnInspectorGUI_PlayControls(media.Control, media.Info); - EditorGUI.EndDisabledGroup(); - } - - GUILayout.EndVertical(); - } - - private static string GetStartFolder(string path, MediaPlayer.FileLocation fileLocation) - { - // Try to resolve based on file path + file location - string result = MediaPlayer.GetFilePath(path, fileLocation); - if (!string.IsNullOrEmpty(result)) - { - if (System.IO.File.Exists(result)) - { - result = System.IO.Path.GetDirectoryName(result); - } - } - - if (!System.IO.Directory.Exists(result)) - { - // Just resolve on file location - result = MediaPlayer.GetPath(fileLocation); - } - if (string.IsNullOrEmpty(result)) - { - // Fallback - result = Application.streamingAssetsPath; - } - return result; - } - - private void GUI_OverridePath(int platformIndex) - { - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)platformIndex); - - SerializedProperty propLocation = serializedObject.FindProperty(optionsVarName + ".pathLocation"); - if (propLocation != null) - { - EditorGUILayout.PropertyField(propLocation, GUIContent.none); - } - SerializedProperty propPath = serializedObject.FindProperty(optionsVarName + ".path"); - if (propPath != null) - { - - { - string oldPath = propPath.stringValue; - string newPath = EditorGUILayout.TextField(string.Empty, propPath.stringValue); - if (newPath != oldPath) - { - // Check for invalid characters - if (0 > newPath.IndexOfAny(System.IO.Path.GetInvalidPathChars())) - { - propPath.stringValue = newPath.Replace("\\", "/"); - EditorUtility.SetDirty(target); - } - } - } - } - - GUILayout.BeginHorizontal(); - OnInspectorGUI_RecentButton(propPath, propLocation); - OnInspectorGUI_StreamingAssetsButton(propPath, propLocation); - GUI.color = Color.green; - if (GUILayout.Button("BROWSE")) - { - string result = string.Empty; - MediaPlayer.FileLocation fileLocation = MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder; - string startFolder = GetStartFolder(propPath.stringValue, (MediaPlayer.FileLocation)propLocation.enumValueIndex); - string fullPath = string.Empty; - if (Browse(startFolder, ref result, ref fileLocation, ref fullPath, MediaExtensions)) - { - propPath.stringValue = result.Replace("\\", "/"); - - propLocation.enumValueIndex = (int)fileLocation; - EditorUtility.SetDirty(target); // TODO: not sure if we need this any more. Was put here to help prefabs save values I think - } - } - - GUILayout.EndHorizontal(); - - GUI.color = Color.white; - - // Display the file name so it's easy to read and copy to the clipboard - OnInspectorGUI_CopyableFilename(propPath.stringValue); - - if (GUI.enabled) - { - ShowFileWarningMessages(propPath.stringValue, (MediaPlayer.FileLocation)propLocation.enumValueIndex, false, (Platform)platformIndex); - } - } - - private void OnInspectorGUI_PathOverrides() - { - //MediaPlayer media = (this.target) as MediaPlayer; - - //MediaPlayer.PlatformOptions options = media.GetPlatformOptions((Platform)_platformIndex); - //if (options != null) - - if (_platformIndex >= 0) - { - EditorGUILayout.BeginVertical("box"); - //GUILayout.Label("Media Foundation Options", EditorStyles.boldLabel); - { - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - SerializedProperty propOverridePath = serializedObject.FindProperty(optionsVarName + ".overridePath"); - if (propOverridePath != null) - { - EditorGUILayout.PropertyField(propOverridePath, new GUIContent("Override Path")); - - //if (propOverridePath.boolValue) - { - EditorGUI.BeginDisabledGroup(!propOverridePath.boolValue); - GUI_OverridePath(_platformIndex); - EditorGUI.EndDisabledGroup(); - } - } - } - EditorGUILayout.EndVertical(); - } - } - - private readonly static GUIContent[] _audioModesWindows = - { - new GUIContent("System Direct"), - new GUIContent("Facebook Audio 360", "Initialises player with Facebook Audio 360 support"), - new GUIContent("Unity", "Allows the AudioOutput component to grab audio from the video and play it through Unity to the AudioListener"), - }; - - private readonly static GUIContent[] _audioModesUWP = - { - new GUIContent("System Direct"), - new GUIContent("Unity", "Allows the AudioOutput component to grab audio from the video and play it through Unity to the AudioListener"), - }; - - private readonly static GUIContent[] _audioModesAndroid = - { - new GUIContent("System Direct"), - new GUIContent("Facebook Audio 360", "Initialises player with Facebook Audio 360 support"), - }; - - private readonly static GUIContent[] _audio360ChannelMapGuiNames = - { - new GUIContent("(TBE_8_2) 8 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio"), - new GUIContent("(TBE_8) 8 channels of hybrid TBE ambisonics. NO head-locked stereo audio"), - new GUIContent("(TBE_6_2) 6 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio"), - new GUIContent("(TBE_6) 6 channels of hybrid TBE ambisonics. NO head-locked stereo audio"), - new GUIContent("(TBE_4_2) 4 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio"), - new GUIContent("(TBE_4) 4 channels of hybrid TBE ambisonics. NO head-locked stereo audio"), - - new GUIContent("(TBE_8_PAIR0) Channels 1 and 2 of TBE hybrid ambisonics"), - new GUIContent("(TBE_8_PAIR1) Channels 3 and 4 of TBE hybrid ambisonics"), - new GUIContent("(TBE_8_PAIR2) Channels 5 and 6 of TBE hybrid ambisonics"), - new GUIContent("(TBE_8_PAIR3) Channels 7 and 8 of TBE hybrid ambisonics"), - - new GUIContent("(TBE_CHANNEL0) Channels 1 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL1) Channels 2 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL2) Channels 3 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL3) Channels 4 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL4) Channels 5 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL5) Channels 6 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL6) Channels 7 of TBE hybrid ambisonics"), - new GUIContent("(TBE_CHANNEL7) Channels 8 of TBE hybrid ambisonics"), - - new GUIContent("(HEADLOCKED_STEREO) Head-locked stereo audio"), - new GUIContent("(HEADLOCKED_CHANNEL0) Channels 1 or left of head-locked stereo audio"), - new GUIContent("(HEADLOCKED_CHANNEL1) Channels 2 or right of head-locked stereo audio"), - - new GUIContent("(AMBIX_4) 4 channels of first order ambiX"), - new GUIContent("(AMBIX_9) 9 channels of second order ambiX"), - new GUIContent("(AMBIX_9_2) 9 channels of second order ambiX with 2 channels of head-locked audio"), - new GUIContent("(AMBIX_16) 16 channels of third order ambiX"), - new GUIContent("(AMBIX_16_2) 16 channels of third order ambiX with 2 channels of head-locked audio"), - - new GUIContent("(STEREO) Stereo audio"), - }; - - private void OnInspectorGUI_AudioOutput() - { - EditorGUILayout.PropertyField(_propManualSetAudioProps, new GUIContent("Specify Properties", "Manually set source audio properties, in case auto detection fails and the audio needs to be resampled")); - - if (_propManualSetAudioProps.boolValue) - { - EditorGUILayout.PropertyField(_propSourceAudioSampleRate, new GUIContent("Sample rate", "Sample rate of source video")); - EditorGUILayout.PropertyField(_propSourceAudioChannels, new GUIContent("Channel count", "Number of channels in source video")); - } - } - - private void OnInspectorGUI_Override_Windows() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsWindows options = media._optionsWindows; - - GUILayout.Space(8f); - - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - SerializedProperty propVideoApi = serializedObject.FindProperty(optionsVarName + ".videoApi"); - if (propVideoApi != null) - { - EditorGUILayout.PropertyField(propVideoApi, new GUIContent("Preferred Video API", "The preferred video API to use")); - - GUILayout.Space(8f); - - { - SerializedProperty propUseTextureMips = serializedObject.FindProperty(optionsVarName + ".useTextureMips"); - if (propUseTextureMips != null) - { - EditorGUILayout.PropertyField(propUseTextureMips, new GUIContent("Generate Texture Mips", "Automatically create mip-maps for the texture to reducing aliasing when texture is scaled down")); - if (propUseTextureMips.boolValue && ((FilterMode)_propFilter.enumValueIndex) != FilterMode.Trilinear) - { - ShowNoticeBox(MessageType.Info, "Recommend changing the texture filtering mode to Trilinear when using mip-maps."); - } - } - } - - GUILayout.Space(8f); - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("Media Foundation Options", EditorStyles.boldLabel); - SerializedProperty propUseHardwareDecoding = serializedObject.FindProperty(optionsVarName + ".useHardwareDecoding"); - if (propUseHardwareDecoding != null) - { - EditorGUILayout.PropertyField(propUseHardwareDecoding, new GUIContent("Hardware Decoding")); - } - - { - SerializedProperty propUseLowLatency = serializedObject.FindProperty(optionsVarName + ".useLowLatency"); - if (propUseLowLatency != null) - { - EditorGUILayout.PropertyField(propUseLowLatency, new GUIContent("Use Low Latency", "Provides a hint to the decoder to use less buffering")); - } - } - - int audioModeIndex = 0; - { - SerializedProperty propUseUnityAudio = serializedObject.FindProperty(optionsVarName + ".useUnityAudio"); - SerializedProperty propEnableAudio360 = serializedObject.FindProperty(optionsVarName + ".enableAudio360"); - - if (propEnableAudio360.boolValue) - { - audioModeIndex = 1; - } - if (propUseUnityAudio.boolValue) - { - audioModeIndex = 2; - } - int newAudioModeIndex = EditorGUILayout.Popup(new GUIContent("Audio Mode"), audioModeIndex, _audioModesWindows); - if (newAudioModeIndex != audioModeIndex) - { - switch (newAudioModeIndex) - { - case 0: - propUseUnityAudio.boolValue = false; - propEnableAudio360.boolValue = false; - break; - case 1: - propUseUnityAudio.boolValue = false; - propEnableAudio360.boolValue = true; - break; - case 2: - propUseUnityAudio.boolValue = true; - propEnableAudio360.boolValue = false; - break; - } - } - } - - if (audioModeIndex == 2) - { - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Unity Audio", EditorStyles.boldLabel); - - SerializedProperty propForceAudioResample = serializedObject.FindProperty(optionsVarName + ".forceAudioResample"); - if (propForceAudioResample != null) - { - EditorGUILayout.PropertyField(propForceAudioResample, new GUIContent("Stereo", "Forces plugin to resample the video's audio to 2 channels")); - } - - OnInspectorGUI_AudioOutput(); - } - else if (audioModeIndex == 1) - { - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Facebook Audio 360", EditorStyles.boldLabel); - - SerializedProperty prop360AudioChannelMode = serializedObject.FindProperty(optionsVarName + ".audio360ChannelMode"); - if (prop360AudioChannelMode != null) - { - GUIContent label = new GUIContent("Channel Mode", "Specifies what channel mode Facebook Audio 360 needs to be initialised with"); - prop360AudioChannelMode.enumValueIndex = EditorGUILayout.Popup(label, prop360AudioChannelMode.enumValueIndex, _audio360ChannelMapGuiNames); - } - - SerializedProperty propForceAudioOutputDeviceName = serializedObject.FindProperty(optionsVarName + ".forceAudioOutputDeviceName"); - if (propForceAudioOutputDeviceName != null) - { - string[] deviceNames = { "Default", Windows.AudioDeviceOutputName_Rift, Windows.AudioDeviceOutputName_Vive, "Custom" }; - int index = 0; - if (!string.IsNullOrEmpty(propForceAudioOutputDeviceName.stringValue)) - { - switch (propForceAudioOutputDeviceName.stringValue) - { - case Windows.AudioDeviceOutputName_Rift: - index = 1; - break; - case Windows.AudioDeviceOutputName_Vive: - index = 2; - break; - default: - index = 3; - break; - } - } - int newIndex = EditorGUILayout.Popup("Audio Device Name", index, deviceNames); - if (newIndex == 0) - { - propForceAudioOutputDeviceName.stringValue = string.Empty; - } - else if (newIndex == 3) - { - if (index != newIndex) - { - if (string.IsNullOrEmpty(propForceAudioOutputDeviceName.stringValue) || - propForceAudioOutputDeviceName.stringValue == Windows.AudioDeviceOutputName_Rift || - propForceAudioOutputDeviceName.stringValue == Windows.AudioDeviceOutputName_Vive) - { - propForceAudioOutputDeviceName.stringValue = "?"; - } - } - EditorGUILayout.PropertyField(propForceAudioOutputDeviceName, new GUIContent("Audio Device Name", "Useful for VR when you need to output to the VR audio device")); - } - else - { - propForceAudioOutputDeviceName.stringValue = deviceNames[newIndex]; - } - } - } - - EditorGUILayout.EndVertical(); - - GUILayout.Space(8f); - - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("DirectShow Options", EditorStyles.boldLabel); - { - SerializedProperty propHintAlphaChannel = serializedObject.FindProperty(optionsVarName + ".hintAlphaChannel"); - if (propHintAlphaChannel != null) - { - EditorGUILayout.PropertyField(propHintAlphaChannel, new GUIContent("Alpha Channel Hint", "If a video is detected as 32-bit, use or ignore the alpha channel")); - } - } - { - SerializedProperty propForceAudioOutputDeviceName = serializedObject.FindProperty(optionsVarName + ".forceAudioOutputDeviceName"); - if (propForceAudioOutputDeviceName != null) - { - EditorGUILayout.PropertyField(propForceAudioOutputDeviceName, new GUIContent("Force Audio Output Device Name", "Useful for VR when you need to output to the VR audio device")); - } - } - { - int prevIndentLevel = EditorGUI.indentLevel; - EditorGUI.indentLevel = 1; - SerializedProperty propPreferredFilter = serializedObject.FindProperty(optionsVarName + ".preferredFilters"); - if (propPreferredFilter != null) - { - EditorGUILayout.PropertyField(propPreferredFilter, new GUIContent("Preferred Filters", "Priority list for preferred filters to be used instead of default"), true); - if (propPreferredFilter.arraySize > 0) - { - ShowNoticeBox(MessageType.Info, "Command filter names are:\n1) \"Microsoft DTV-DVD Video Decoder\" (best for compatibility when playing H.264 videos)\n2) \"LAV Video Decoder\"\n3) \"LAV Audio Decoder\""); - } - } - EditorGUI.indentLevel = prevIndentLevel; - } - - EditorGUILayout.EndVertical(); - - } - } - - private void OnInspectorGUI_Override_Apple(string optionsVarName) - { - // HTTP header fields - SerializedProperty prop = serializedObject.FindProperty(optionsVarName + ".httpHeaderJson"); - if (prop != null) - { - EditorGUILayout.PropertyField(prop, new GUIContent("HTTP Header (JSON)", "Allows custom http fields.")); - } - - GUILayout.Space(8f); - - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("HLS Decryption", EditorStyles.boldLabel); - - // Key server auth token - prop = serializedObject.FindProperty(optionsVarName + ".keyServerAuthToken"); - if (prop != null) - { - EditorGUILayout.PropertyField(prop, new GUIContent("Key Server Authorization Token", "Token to pass to the key server in the 'Authorization' header field")); - } - - GUILayout.Label("Overrides"); - EditorGUI.indentLevel++; - - // Key server override - prop = serializedObject.FindProperty(optionsVarName + ".keyServerURLOverride"); - if (prop != null) - { - EditorGUILayout.PropertyField(prop, new GUIContent("Key Server URL", "Overrides the key server URL if present in a HLS manifest.")); - } - - // Key data blob override - prop = serializedObject.FindProperty(optionsVarName + ".base64EncodedKeyBlob"); - if (prop != null) - { - EditorGUILayout.PropertyField(prop, new GUIContent("Key (Base64)", "Override Base64 encoded key to use for decoding encrypted HLS streams.")); - } - - EditorGUI.indentLevel--; - - EditorGUILayout.EndVertical(); - } - - private void OnInspectorGUI_Override_MacOSX() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsMacOSX options = media._optionsMacOSX; - - GUILayout.Space(8f); - - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - OnInspectorGUI_Override_Apple(optionsVarName); - } - - private void OnInspectorGUI_Override_iOS() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsIOS options = media._optionsIOS; - - GUILayout.Space(8f); - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - SerializedProperty prop = serializedObject.FindProperty(optionsVarName + ".useYpCbCr420Textures"); - if (prop != null) - EditorGUILayout.PropertyField(prop, new GUIContent("Use YpCbCr420", "Reduces memory usage, REQUIRES shader support.")); - - GUILayout.Space(8f); - OnInspectorGUI_Override_Apple(optionsVarName); - } - - private void OnInspectorGUI_Override_tvOS() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsTVOS options = media._optionsTVOS; - - GUILayout.Space(8f); - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - SerializedProperty prop = serializedObject.FindProperty(optionsVarName + ".useYpCbCr420Textures"); - if (prop != null) - EditorGUILayout.PropertyField(prop, new GUIContent("Use YpCbCr420", "Reduces memory usage, REQUIRES shader support.")); - - GUILayout.Space(8f); - OnInspectorGUI_Override_Apple(optionsVarName); - } - - private void OnInspectorGUI_Override_Android() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsAndroid options = media._optionsAndroid; - - GUILayout.Space(8f); - - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - SerializedProperty propVideoApi = serializedObject.FindProperty(optionsVarName + ".videoApi"); - if (propVideoApi != null) - { - EditorGUILayout.PropertyField(propVideoApi, new GUIContent("Preferred Video API", "The preferred video API to use")); - - GUILayout.Space(8f); - - SerializedProperty propFileOffset = serializedObject.FindProperty(optionsVarName + ".fileOffset"); - if (propFileOffset != null) - { - EditorGUILayout.PropertyField(propFileOffset); - propFileOffset.intValue = Mathf.Max(0, propFileOffset.intValue); - } - - SerializedProperty propUseFastOesPath = serializedObject.FindProperty(optionsVarName + ".useFastOesPath"); - if (propUseFastOesPath != null) - { - EditorGUILayout.PropertyField(propUseFastOesPath, new GUIContent("Use Fast OES Path", "Enables a faster rendering path using OES textures. This requires that all rendering in Unity uses special GLSL shaders.")); - if (propUseFastOesPath.boolValue) - { - ShowNoticeBox(MessageType.Info, "OES can require special shaders. Make sure you assign an AVPro Video OES shader to your meshes/materials that need to display video."); -#if UNITY_5_6_0 || UNITY_5_6_1 - ShowNoticeBox(MessageType.Warning, "Unity 5.6.0 and 5.6.1 have a known bug with OES path. Please use another version of Unity for this feature and vote to fix bug #899502."); -#endif - ShowNoticeBox(MessageType.Warning, "OES is not supported in the trial version. If your Android plugin is not trial then you can ignore this warning."); - } - } - - SerializedProperty propShowPosterFrame = serializedObject.FindProperty(optionsVarName + ".showPosterFrame"); - if (propShowPosterFrame != null) - { - EditorGUILayout.PropertyField(propShowPosterFrame, new GUIContent("Show Poster Frame", "Allows a paused loaded video to display the initial frame. This uses up decoder resources.")); - } - - SerializedProperty propHttpHeaderJson = serializedObject.FindProperty(optionsVarName + ".httpHeaderJson"); - if (propHttpHeaderJson != null) - { - EditorGUILayout.PropertyField(propHttpHeaderJson, new GUIContent("HTTP Header (JSON)", "Allows custom http fields.")); - } - - if ((Android.VideoApi)propVideoApi.intValue == Android.VideoApi.ExoPlayer) - { - EditorGUILayout.BeginVertical("box"); - GUILayout.Label("ExoPlayer Options", EditorStyles.boldLabel); - - SerializedProperty propPreferSoftwareDecoder = serializedObject.FindProperty(optionsVarName + ".preferSoftwareDecoder"); - if(propPreferSoftwareDecoder != null) - { - EditorGUILayout.PropertyField(propPreferSoftwareDecoder); - } - - int audioModeIndex = 0; - { - SerializedProperty propEnableAudio360 = serializedObject.FindProperty(optionsVarName + ".enableAudio360"); - - if (propEnableAudio360.boolValue) - { - audioModeIndex = 1; - } - int newAudioModeIndex = EditorGUILayout.Popup(new GUIContent("Audio Mode"), audioModeIndex, _audioModesAndroid); - if (newAudioModeIndex != audioModeIndex) - { - switch (newAudioModeIndex) - { - case 0: - propEnableAudio360.boolValue = false; - break; - case 1: - propEnableAudio360.boolValue = true; - break; - } - } - } - - if (audioModeIndex == 1) - { - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Facebook Audio 360", EditorStyles.boldLabel); - - SerializedProperty prop360AudioChannelMode = serializedObject.FindProperty(optionsVarName + ".audio360ChannelMode"); - if (prop360AudioChannelMode != null) - { - GUIContent label = new GUIContent("Channel Mode", "Specifies what channel mode Facebook Audio 360 needs to be initialised with"); - prop360AudioChannelMode.enumValueIndex = EditorGUILayout.Popup(label, prop360AudioChannelMode.enumValueIndex, _audio360ChannelMapGuiNames); - } - } - - EditorGUILayout.EndVertical(); - } - GUI.enabled = true; - } - - /* - SerializedProperty propFileOffsetLow = serializedObject.FindProperty(optionsVarName + ".fileOffsetLow"); - SerializedProperty propFileOffsetHigh = serializedObject.FindProperty(optionsVarName + ".fileOffsetHigh"); - if (propFileOffsetLow != null && propFileOffsetHigh != null) - { - propFileOffsetLow.intValue = ; - - EditorGUILayout.PropertyField(propFileOFfset); - }*/ - } - - private void OnInspectorGUI_Override_WindowsPhone() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsWindowsPhone options = media._optionsWindowsPhone; - - GUILayout.Space(8f); - - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - { - SerializedProperty propUseHardwareDecoding = serializedObject.FindProperty(optionsVarName + ".useHardwareDecoding"); - if (propUseHardwareDecoding != null) - { - EditorGUILayout.PropertyField(propUseHardwareDecoding, new GUIContent("Hardware Decoding")); - } - } - { - SerializedProperty propUseTextureMips = serializedObject.FindProperty(optionsVarName + ".useTextureMips"); - if (propUseTextureMips != null) - { - EditorGUILayout.PropertyField(propUseTextureMips, new GUIContent("Generate Texture Mips", "Automatically create mip-maps for the texture to reducing aliasing when texture is scaled down")); - if (propUseTextureMips.boolValue && ((FilterMode)_propFilter.enumValueIndex) != FilterMode.Trilinear) - { - ShowNoticeBox(MessageType.Info, "Recommend changing the texture filtering mode to Trilinear when using mip-maps."); - } - } - } - { - SerializedProperty propUseLowLatency = serializedObject.FindProperty(optionsVarName + ".useLowLatency"); - if (propUseLowLatency != null) - { - EditorGUILayout.PropertyField(propUseLowLatency, new GUIContent("Use Low Latency", "Provides a hint to the decoder to use less buffering")); - } - } - - int audioModeIndex = 0; - { - SerializedProperty propUseUnityAudio = serializedObject.FindProperty(optionsVarName + ".useUnityAudio"); - if (propUseUnityAudio.boolValue) - { - audioModeIndex = 1; - } - int newAudioModeIndex = EditorGUILayout.Popup(new GUIContent("Audio Mode"), audioModeIndex, _audioModesUWP); - if (newAudioModeIndex != audioModeIndex) - { - switch (newAudioModeIndex) - { - case 0: - propUseUnityAudio.boolValue = false; - break; - case 1: - propUseUnityAudio.boolValue = true; - break; - } - } - } - - if (audioModeIndex == 1) - { - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Unity Audio", EditorStyles.boldLabel); - - SerializedProperty propForceAudioResample = serializedObject.FindProperty(optionsVarName + ".forceAudioResample"); - if (propForceAudioResample != null) - { - EditorGUILayout.PropertyField(propForceAudioResample, new GUIContent("Stereo", "Forces plugin to resample the video's audio to 2 channels")); - } - - OnInspectorGUI_AudioOutput(); - } - - GUI.enabled = true; - } - - private void OnInspectorGUI_Override_WindowsUWP() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsWindowsUWP options = media._optionsWindowsUWP; - - GUILayout.Space(8f); - - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - { - SerializedProperty propUseHardwareDecoding = serializedObject.FindProperty(optionsVarName + ".useHardwareDecoding"); - if (propUseHardwareDecoding != null) - { - EditorGUILayout.PropertyField(propUseHardwareDecoding, new GUIContent("Hardware Decoding")); - } - } - { - SerializedProperty propUseTextureMips = serializedObject.FindProperty(optionsVarName + ".useTextureMips"); - if (propUseTextureMips != null) - { - EditorGUILayout.PropertyField(propUseTextureMips, new GUIContent("Generate Texture Mips", "Automatically create mip-maps for the texture to reducing aliasing when texture is scaled down")); - if (propUseTextureMips.boolValue && ((FilterMode)_propFilter.enumValueIndex) != FilterMode.Trilinear) - { - ShowNoticeBox(MessageType.Info, "Recommend changing the texture filtering mode to Trilinear when using mip-maps."); - } - } - } - { - SerializedProperty propUseLowLatency = serializedObject.FindProperty(optionsVarName + ".useLowLatency"); - if (propUseLowLatency != null) - { - EditorGUILayout.PropertyField(propUseLowLatency, new GUIContent("Use Low Latency", "Provides a hint to the decoder to use less buffering")); - } - } - - int audioModeIndex = 0; - { - SerializedProperty propUseUnityAudio = serializedObject.FindProperty(optionsVarName + ".useUnityAudio"); - if (propUseUnityAudio.boolValue) - { - audioModeIndex = 1; - } - int newAudioModeIndex = EditorGUILayout.Popup(new GUIContent("Audio Mode"), audioModeIndex, _audioModesUWP); - if (newAudioModeIndex != audioModeIndex) - { - switch (newAudioModeIndex) - { - case 0: - propUseUnityAudio.boolValue = false; - break; - case 1: - propUseUnityAudio.boolValue = true; - break; - } - } - } - - if (audioModeIndex == 1) - { - EditorGUILayout.Space(); - EditorGUILayout.LabelField("Unity Audio", EditorStyles.boldLabel); - - SerializedProperty propForceAudioResample = serializedObject.FindProperty(optionsVarName + ".forceAudioResample"); - if (propForceAudioResample != null) - { - EditorGUILayout.PropertyField(propForceAudioResample, new GUIContent("Stereo", "Forces plugin to resample the video's audio to 2 channels")); - } - - OnInspectorGUI_AudioOutput(); - } - - GUI.enabled = true; - } - - private void OnInspectorGUI_Override_WebGL() - { - //MediaPlayer media = (this.target) as MediaPlayer; - //MediaPlayer.OptionsWebGL options = media._optionsWebGL; - string optionsVarName = MediaPlayer.GetPlatformOptionsVariable((Platform)_platformIndex); - - SerializedProperty propExternalLibrary = serializedObject.FindProperty(optionsVarName + ".externalLibrary"); - if (propExternalLibrary != null) - { - EditorGUILayout.PropertyField(propExternalLibrary); - } - - { - SerializedProperty propUseTextureMips = serializedObject.FindProperty(optionsVarName + ".useTextureMips"); - if (propUseTextureMips != null) - { - EditorGUILayout.PropertyField(propUseTextureMips, new GUIContent("Generate Texture Mips", "Automatically create mip-maps for the texture to reducing aliasing when texture is scaled down")); - if (propUseTextureMips.boolValue && ((FilterMode)_propFilter.enumValueIndex) != FilterMode.Trilinear) - { - ShowNoticeBox(MessageType.Info, "Recommend changing the texture filtering mode to Trilinear when using mip-maps."); - } - } - } - } - - private static bool Browse(string startPath, ref string filePath, ref MediaPlayer.FileLocation fileLocation, ref string fullPath, string extensions) - { - bool result = false; - - string path = UnityEditor.EditorUtility.OpenFilePanel("Browse Video File", startPath, extensions); - if (!string.IsNullOrEmpty(path) && !path.EndsWith(".meta")) - { - fullPath = path; - GetRelativeLocationFromPath(path, ref filePath, ref fileLocation); - result = true; - } - - return result; - } - - private static void GetRelativeLocationFromPath(string path, ref string filePath, ref MediaPlayer.FileLocation fileLocation) - { - string projectRoot = System.IO.Path.GetFullPath(System.IO.Path.Combine(Application.dataPath, "..")); - projectRoot = projectRoot.Replace('\\', '/'); - - if (path.StartsWith(projectRoot)) - { - if (path.StartsWith(Application.streamingAssetsPath)) - { - // Must be StreamingAssets relative path - filePath = GetPathRelativeTo(Application.streamingAssetsPath, path); - fileLocation = MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder; - } - else if (path.StartsWith(Application.dataPath)) - { - // Must be Assets relative path - filePath = GetPathRelativeTo(Application.dataPath, path); - fileLocation = MediaPlayer.FileLocation.RelativeToDataFolder; - } - else - { - // Must be project relative path - filePath = GetPathRelativeTo(projectRoot, path); - fileLocation = MediaPlayer.FileLocation.RelativeToProjectFolder; - } - } - else - { - // Must be persistant data - if (path.StartsWith(Application.persistentDataPath)) - { - filePath = GetPathRelativeTo(Application.persistentDataPath, path); - fileLocation = MediaPlayer.FileLocation.RelativeToPeristentDataFolder; - } - - // Must be absolute path - filePath = path; - fileLocation = MediaPlayer.FileLocation.AbsolutePathOrURL; - } - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs.meta deleted file mode 100644 index 7962d76..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/MediaPlayerEditor.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8fdcfef6a9f4f724486d3374e03f4864 -timeCreated: 1448902492 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs deleted file mode 100644 index c3333dd..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs +++ /dev/null @@ -1,359 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System.Collections.Generic; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for the MediaPlaylist.MediaItem class - /// - [CustomPropertyDrawer(typeof(MediaPlaylist))] - public class MediaPlaylistDrawer : PropertyDrawer - { - public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) - { - // Using BeginProperty / EndProperty on the parent property means that - // prefab override logic works on the entire property. - EditorGUI.BeginProperty(position, label, property); - - EditorGUILayout.LabelField("Items"); - - SerializedProperty propItems = property.FindPropertyRelative("_items"); - - for (int i = 0; i < propItems.arraySize; i++) - { - SerializedProperty propItem = propItems.GetArrayElementAtIndex(i); - - GUILayout.BeginVertical(GUI.skin.box); - propItem.isExpanded = EditorGUILayout.ToggleLeft("Item " + i, propItem.isExpanded); - if (propItem.isExpanded) - { - EditorGUILayout.PropertyField(propItem); - GUILayout.BeginHorizontal(); - if (GUILayout.Button("Insert")) - { - propItems.InsertArrayElementAtIndex(i); - } - if (GUILayout.Button("Delete")) - { - propItems.DeleteArrayElementAtIndex(i); - } - EditorGUI.BeginDisabledGroup((i - 1) < 0); - if (GUILayout.Button("Up")) - { - propItems.MoveArrayElement(i, i - 1); - } - EditorGUI.EndDisabledGroup(); - EditorGUI.BeginDisabledGroup((i + 1) >= propItems.arraySize); - if (GUILayout.Button("Down")) - { - propItems.MoveArrayElement(i, i + 1); - } - EditorGUI.EndDisabledGroup(); - GUILayout.EndHorizontal(); - } - - GUILayout.EndVertical(); - } - - EditorGUI.EndProperty(); - } - } - - /// - /// Editor for the MediaPlaylist.MediaItem class - /// - [CustomPropertyDrawer(typeof(MediaPlaylist.MediaItem))] - public class MediaPlaylistItemDrawer : PropertyDrawer - { - public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) - { - //SerializedProperty propSourceType = property.FindPropertyRelative("sourceType"); - SerializedProperty propIsOverrideTransition = property.FindPropertyRelative("isOverrideTransition"); - - //EditorGUILayout.PropertyField(propSourceType); - //if (propSourceType.enumValueIndex == 0) - { - EditorGUILayout.PropertyField(property.FindPropertyRelative("fileLocation")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("filePath")); - } - /*else - { - EditorGUILayout.PropertyField(property.FindPropertyRelative("texture")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("textureDuration")); - }*/ - - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(property.FindPropertyRelative("stereoPacking")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("alphaPacking")); - - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(property.FindPropertyRelative("loop")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("autoPlay")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("startMode")); - SerializedProperty propProgressMode = property.FindPropertyRelative("progressMode"); - EditorGUILayout.PropertyField(propProgressMode); - if (propProgressMode.enumValueIndex == (int)PlaylistMediaPlayer.ProgressMode.BeforeFinish) - { - EditorGUILayout.PropertyField(property.FindPropertyRelative("progressTimeSeconds")); - } - - EditorGUILayout.Space(); - - EditorGUILayout.PropertyField(propIsOverrideTransition, new GUIContent("Override Transition")); - if (propIsOverrideTransition.boolValue) - { - EditorGUI.indentLevel++; - SerializedProperty propTransitionMode = property.FindPropertyRelative("overrideTransition"); - EditorGUILayout.PropertyField(propTransitionMode, new GUIContent("Transition")); - if (propTransitionMode.enumValueIndex != (int)PlaylistMediaPlayer.Transition.None) - { - EditorGUILayout.PropertyField(property.FindPropertyRelative("overrideTransitionDuration"), new GUIContent("Duration")); - EditorGUILayout.PropertyField(property.FindPropertyRelative("overrideTransitionEasing.preset"), new GUIContent("Easing")); - } - EditorGUI.indentLevel--; - } - } - } - - /// - /// Editor for the PlaylistMediaPlayer component - /// - [CanEditMultipleObjects] - [CustomEditor(typeof(PlaylistMediaPlayer))] - public class PlaylistMediaPlayerEditor : UnityEditor.Editor - { - private SerializedProperty _propPlayerA; - private SerializedProperty _propPlayerB; - private SerializedProperty _propNextTransition; - private SerializedProperty _propPlaylist; - private SerializedProperty _propPlaylistAutoProgress; - private SerializedProperty _propPlaylistLoopMode; - private SerializedProperty _propPausePreviousOnTransition; - private SerializedProperty _propTransitionDuration; - private SerializedProperty _propTransitionEasing; - - private void OnEnable() - { - _propPlayerA = serializedObject.FindProperty("_playerA"); - _propPlayerB = serializedObject.FindProperty("_playerB"); - _propNextTransition = serializedObject.FindProperty("_nextTransition"); - _propTransitionDuration = serializedObject.FindProperty("_transitionDuration"); - _propTransitionEasing = serializedObject.FindProperty("_transitionEasing.preset"); - _propPausePreviousOnTransition = serializedObject.FindProperty("_pausePreviousOnTransition"); - _propPlaylist = serializedObject.FindProperty("_playlist"); - _propPlaylistAutoProgress = serializedObject.FindProperty("_playlistAutoProgress"); - _propPlaylistLoopMode = serializedObject.FindProperty("_playlistLoopMode"); - } - - public override bool RequiresConstantRepaint() - { - PlaylistMediaPlayer media = (this.target) as PlaylistMediaPlayer; - return (media.Control != null && media.isActiveAndEnabled); - } - - public override void OnInspectorGUI() - { - PlaylistMediaPlayer media = (this.target) as PlaylistMediaPlayer; - - serializedObject.Update(); - - if (media == null || _propPlayerA == null) - { - return; - } - - EditorGUILayout.PropertyField(_propPlayerA); - EditorGUILayout.PropertyField(_propPlayerB); - EditorGUILayout.Space(); - EditorGUILayout.Space(); - GUILayout.Label("Playlist", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propPlaylistAutoProgress, new GUIContent("Auto Progress")); - EditorGUILayout.PropertyField(_propPlaylistLoopMode, new GUIContent("Loop Mode")); - EditorGUILayout.PropertyField(_propPlaylist); - EditorGUILayout.Space(); - EditorGUILayout.Space(); - GUILayout.Label("Transition", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(_propNextTransition, new GUIContent("Next")); - EditorGUILayout.PropertyField(_propTransitionEasing, new GUIContent("Easing")); - EditorGUILayout.PropertyField(_propTransitionDuration, new GUIContent("Duration")); - EditorGUILayout.PropertyField(_propPausePreviousOnTransition, new GUIContent("Pause Previous")); - EditorGUILayout.Space(); - EditorGUILayout.Space(); - - if (Application.isPlaying) - { - IMediaProducer textureSource = media.TextureProducer; - - Texture texture = null; - if (textureSource != null) - { - texture = textureSource.GetTexture(); - } - if (texture == null) - { - texture = EditorGUIUtility.whiteTexture; - } - - float ratio = 1f;// (float)texture.width / (float)texture.height; - - // Reserve rectangle for texture - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - Rect textureRect; - Rect alphaRect = new Rect(0f, 0f, 1f, 1f); - if (texture != EditorGUIUtility.whiteTexture) - { - textureRect = GUILayoutUtility.GetRect(Screen.width / 2, Screen.width / 2, (Screen.width / 2) / ratio, (Screen.width / 2) / ratio); - } - else - { - textureRect = GUILayoutUtility.GetRect(1920f / 40f, 1080f / 40f); - } - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - string rateText = "0"; - string playerText = string.Empty; - if (media.Info != null) - { - rateText = media.Info.GetVideoDisplayRate().ToString("F2"); - playerText = media.Info.GetPlayerDescription(); - } - - EditorGUILayout.LabelField("Display Rate", rateText); - EditorGUILayout.LabelField("Using", playerText); - - // Draw the texture - Matrix4x4 prevMatrix = GUI.matrix; - if (textureSource != null && textureSource.RequiresVerticalFlip()) - { - GUIUtility.ScaleAroundPivot(new Vector2(1f, -1f), new Vector2(0, textureRect.y + (textureRect.height / 2))); - } - - if (!GUI.enabled) - { - GUI.color = Color.grey; - GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit, false); - GUI.color = Color.white; - } - else - { - { - GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit, false); - EditorGUI.DrawTextureAlpha(alphaRect, texture, ScaleMode.ScaleToFit); - } - } - GUI.matrix = prevMatrix; - } - - EditorGUI.BeginDisabledGroup(!(media.Control != null && media.Control.CanPlay() && media.isActiveAndEnabled && !EditorApplication.isPaused)); - OnInspectorGUI_PlayControls(media.Control, media.Info); - EditorGUI.EndDisabledGroup(); - - EditorGUILayout.Space(); - EditorGUILayout.Space(); - - EditorGUI.BeginDisabledGroup(!Application.isPlaying); - - GUILayout.Label("Current Item: " + media.PlaylistIndex + " / " + Mathf.Max(0, media.Playlist.Items.Count - 1) ); - - GUILayout.BeginHorizontal(); - EditorGUI.BeginDisabledGroup(!media.CanJumpToItem(media.PlaylistIndex - 1)); - if (GUILayout.Button("Prev")) - { - media.PrevItem(); - } - EditorGUI.EndDisabledGroup(); - EditorGUI.BeginDisabledGroup(!media.CanJumpToItem(media.PlaylistIndex + 1)); - if (GUILayout.Button("Next")) - { - media.NextItem(); - } - EditorGUI.EndDisabledGroup(); - GUILayout.EndHorizontal(); - EditorGUI.EndDisabledGroup(); - - serializedObject.ApplyModifiedProperties(); - } - - - private void OnInspectorGUI_PlayControls(IMediaControl control, IMediaInfo info) - { - GUILayout.Space(8.0f); - - // Slider - EditorGUILayout.BeginHorizontal(); - bool isPlaying = false; - if (control != null) - { - isPlaying = control.IsPlaying(); - } - float currentTime = 0f; - if (control != null) - { - currentTime = control.GetCurrentTimeMs(); - } - - float durationTime = 0f; - if (info != null) - { - durationTime = info.GetDurationMs(); - if (float.IsNaN(durationTime)) - { - durationTime = 0f; - } - } - string timeUsed = Helper.GetTimeString(currentTime / 1000f, true); - GUILayout.Label(timeUsed, GUILayout.ExpandWidth(false)); - - float newTime = GUILayout.HorizontalSlider(currentTime, 0f, durationTime, GUILayout.ExpandWidth(true)); - if (newTime != currentTime) - { - control.Seek(newTime); - } - - string timeTotal = "Infinity"; - if (!float.IsInfinity(durationTime)) - { - timeTotal = Helper.GetTimeString(durationTime / 1000f, true); - } - - GUILayout.Label(timeTotal, GUILayout.ExpandWidth(false)); - - EditorGUILayout.EndHorizontal(); - - // Buttons - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("Rewind", GUILayout.ExpandWidth(false))) - { - control.Rewind(); - } - - if (!isPlaying) - { - GUI.color = Color.green; - if (GUILayout.Button("Play", GUILayout.ExpandWidth(true))) - { - control.Play(); - } - } - else - { - GUI.color = Color.yellow; - if (GUILayout.Button("Pause", GUILayout.ExpandWidth(true))) - { - control.Pause(); - } - } - GUI.color = Color.white; - EditorGUILayout.EndHorizontal(); - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs.meta deleted file mode 100644 index 4bc8796..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PlaylistMediaPlayerEditor.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c9328411ef862884f97a993c4daa9b68 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs deleted file mode 100644 index bc3ea9f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX -using System.IO; -using UnityEngine; -using UnityEditor; -using UnityEditor.Callbacks; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - public class PostProcessBuild - { - [PostProcessBuild] - public static void OnPostProcessBuild(BuildTarget target, string path) - { - bool x86 = false; -#if UNITY_2017_3_OR_NEWER - // 64-bit only from here on out, woo hoo!!! \o/ -#else - x86 = target == BuildTarget.StandaloneOSXIntel || target == BuildTarget.StandaloneOSXUniversal; -#endif - if (x86) - { - string message = "AVPro Video doesn't support target StandaloneOSXIntel (32-bit), please use StandaloneOSXIntel64 (64-bit) or remove this PostProcessBuild script"; - Debug.LogError(message); - EditorUtility.DisplayDialog("AVPro Video", message, "Ok"); - } - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs.meta deleted file mode 100644 index aae8acd..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/PostProcessBuild.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1e59c97bf0125284dab6c83833518fcf -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs deleted file mode 100644 index 459a900..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs +++ /dev/null @@ -1,383 +0,0 @@ -#if UNITY_5_4_OR_NEWER || UNITY_5 - #if !UNITY_5_0 - #define AVPROVIDEO_WINDOWTITLE_51 - #endif -#endif - -using UnityEngine; -using UnityEditor; - -//----------------------------------------------------------------------------- -// Copyright 2016-2018 RenderHeads Ltd. All rights reserved. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// A window to display options to the user to help them report bugs - /// Also collects some metadata about the machine specs, plugin version etc - /// - public class SupportWindow : EditorWindow - { - private class MyPopupWindow : PopupWindowContent - { - private string _text; - - public MyPopupWindow(string text) - { - _text = text; - } - - public override Vector2 GetWindowSize() - { - return new Vector2(400, 520); - } - - public override void OnGUI(Rect rect) - { - GUILayout.BeginHorizontal(); - GUILayout.Label("Copy-Paste this text, then ", EditorStyles.boldLabel); - GUI.color = Color.green; - if (GUILayout.Button("Go to Forum", GUILayout.ExpandWidth(true))) - { - Application.OpenURL(MediaPlayerEditor.LinkForumLastPage); - } - GUILayout.EndHorizontal(); - GUI.color = Color.white; - EditorGUILayout.TextArea(_text); - } - } - - private static bool _isCreated = false; - private static bool _isInit = false; - - private const string SettingsPrefix = "AVProVideo.SupportWindow."; - - private string _emailDescription = string.Empty; - private string _emailTopic = string.Empty; - private string _emailVideoFormat = string.Empty; - private string _emailDeviceSpecs = string.Empty; - - //private bool _askForHelp = false; - private bool _trySelfSolve = false; - private Vector2 _scroll = Vector2.zero; - - private int _selectionIndex = 0; - private static string[] _gridNames = { "Ask for Help", "Help Resources", "FAQ" }; - - [MenuItem("Window/AVPro Video Support")] - public static void Init() - { - // Close window if it is already open - if (_isInit || _isCreated) - { - SupportWindow window = (SupportWindow)EditorWindow.GetWindow(typeof(SupportWindow)); - window.Close(); - return; - } - - _isCreated = true; - - // Get existing open window or if none, make a new one: - SupportWindow window2 = ScriptableObject.CreateInstance(); - if (window2 != null) - { - window2.SetupWindow(); - } - } - - private void SetupWindow() - { - _isCreated = true; - float width = 512f; - float height = 512f; - this.position = new Rect((Screen.width / 2) - (width / 2f), (Screen.height / 2) - (height / 2f), width, height); - this.minSize = new Vector2(530f, 510f); -#if AVPROVIDEO_WINDOWTITLE_51 - this.titleContent = new GUIContent("AVPro Video - Help & Support"); -#else - this.title = "AVPro Video - Support"; -#endif - this.CreateGUI(); - LoadSettings(); - this.ShowUtility(); - this.Repaint(); - } - - private void CreateGUI() - { - _isInit = true; - } - - void OnEnable() - { - if (!_isCreated) - { - SetupWindow(); - } - } - - void OnDisable() - { - _isInit = false; - _isCreated = false; - SaveSettings(); - Repaint(); - } - - private void SaveSettings() - { - EditorPrefs.SetString(SettingsPrefix + "EmailTopic", _emailTopic); - EditorPrefs.SetString(SettingsPrefix + "EmailDescription", _emailDescription); - EditorPrefs.SetString(SettingsPrefix + "EmailDeviceSpecs", _emailDeviceSpecs); - EditorPrefs.SetString(SettingsPrefix + "EmailVideoSpecs", _emailVideoFormat); - EditorPrefs.SetBool(SettingsPrefix + "ExpandSelfSolve", _trySelfSolve); - EditorPrefs.SetInt(SettingsPrefix + "SelectionIndex", _selectionIndex); - } - - private void LoadSettings() - { - _emailTopic = EditorPrefs.GetString(SettingsPrefix + "EmailTopic", _emailTopic); - _emailDescription = EditorPrefs.GetString(SettingsPrefix + "EmailDescription", _emailDescription); - _emailDeviceSpecs = EditorPrefs.GetString(SettingsPrefix + "EmailDeviceSpecs", _emailDeviceSpecs); - _emailVideoFormat = EditorPrefs.GetString(SettingsPrefix + "EmailVideoSpecs", _emailVideoFormat); - _trySelfSolve = EditorPrefs.GetBool(SettingsPrefix + "ExpandSelfSolve", _trySelfSolve); - _selectionIndex = EditorPrefs.GetInt(SettingsPrefix + "SelectionIndex", _selectionIndex); - } - - private string CollectSupportData() - { - string nl = System.Environment.NewLine; - - string version = string.Format("AVPro Video: plugin v{0} scripts v{1}", GetPluginVersion(), Helper.ScriptVersion); - string targetPlatform = "Target Platform: " + EditorUserBuildSettings.selectedBuildTargetGroup.ToString(); - string unityVersion = "Unity: v" + Application.unityVersion + " " + Application.platform.ToString(); - - string deviceInfo = "OS: " + SystemInfo.deviceType + " - " + SystemInfo.deviceModel + " - " + SystemInfo.operatingSystem + " - " + Application.systemLanguage; - string cpuInfo = "CPU: " + SystemInfo.processorType + " - " + SystemInfo.processorCount + " threads - " + + SystemInfo.systemMemorySize + "KB"; - string gfxInfo = "GPU: " + SystemInfo.graphicsDeviceName + " - " + SystemInfo.graphicsDeviceVendor + " - " + SystemInfo.graphicsDeviceVersion + " - " + SystemInfo.graphicsMemorySize + "KB - " + SystemInfo.maxTextureSize; - - return version + nl + targetPlatform + nl + unityVersion + nl + deviceInfo + nl + cpuInfo + nl + gfxInfo; - } - - void OnGUI() - { - if (!_isInit) - { - EditorGUILayout.LabelField("Initialising..."); - return; - } - - GUILayout.Label("Having problems? We'll do our best to help.\n\nBelow is a collection of resources to help solve any issues you may encounter.", EditorStyles.wordWrappedLabel); - GUILayout.Space(16f); - - /*GUI.color = Color.white; - GUI.backgroundColor = Color.clear; - if (_trySelfSolve) - { - GUI.color = Color.white; - GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f); - if (EditorGUIUtility.isProSkin) - { - GUI.backgroundColor = Color.black; - } - } - GUILayout.BeginVertical("box"); - GUI.backgroundColor = Color.white;*/ - - _selectionIndex = GUILayout.Toolbar(_selectionIndex, _gridNames); - - GUILayout.Space(16f); - /*if (GUILayout.Button("Try Solve the Issue Yourself", EditorStyles.toolbarButton)) - { - //_trySelfSolve = !_trySelfSolve; - _trySelfSolve = true; - } - GUI.color = Color.white; - if (_trySelfSolve)*/ - if (_selectionIndex == 1) - { - GUILayout.BeginHorizontal(); - GUILayout.Label("1) "); - GUILayout.Label("Check you're using the latest version of AVPro Video via the Asset Store. This is version " + Helper.ScriptVersion, EditorStyles.wordWrappedLabel); - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - GUILayout.Label("2) "); - GUILayout.Label("Look at the example projects and scripts in the Demos folder"); - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - GUILayout.Label("3) "); - GUI.color = Color.green; - if (GUILayout.Button("Read the Documentation", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(MediaPlayerEditor.LinkUserManual); - } - GUI.color = Color.white; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - GUILayout.Label("4) "); - GUI.color = Color.green; - if (GUILayout.Button("Read the Scripting Reference", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(MediaPlayerEditor.LinkScriptingClassReference); - } - GUI.color = Color.white; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - GUILayout.Label("5) "); - GUI.color = Color.green; - if (GUILayout.Button("Visit the AVPro Video Website", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(MediaPlayerEditor.LinkPluginWebsite); - } - GUI.color = Color.white; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - - GUILayout.BeginHorizontal(); - GUILayout.Label("6) "); - GUI.color = Color.green; - if (GUILayout.Button("Browse the Unity Forum", GUILayout.ExpandWidth(false))) - { - Application.OpenURL(MediaPlayerEditor.LinkForumPage); - } - GUI.color = Color.white; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - } - else if (_selectionIndex == 2) - { - GUILayout.Label("Coming soon..."); - } - else if (_selectionIndex == 0) - { - GUILayout.Label("Please fill out these fields when sending us a new issue.\nThis makes it much easier and faster to resolve the issue.", EditorStyles.wordWrappedLabel); - GUILayout.Space(16f); - - GUILayout.BeginVertical("box"); - _scroll = GUILayout.BeginScrollView(_scroll); - - GUILayout.Label("Issue/Question Title", EditorStyles.boldLabel); - _emailTopic = GUILayout.TextField(_emailTopic); - - GUILayout.Space(8f); - GUILayout.Label("What's the problem?", EditorStyles.boldLabel); - _emailDescription = EditorGUILayout.TextArea(_emailDescription, GUILayout.Height(64f)); - - GUILayout.Space(8f); - GUILayout.BeginHorizontal(); - GUILayout.Label("Tell us about your videos", EditorStyles.boldLabel); - GUILayout.Label("- Number of videos, resolution, codec, frame-rate, example URLs", EditorStyles.miniBoldLabel); - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - _emailVideoFormat = EditorGUILayout.TextArea(_emailVideoFormat, GUILayout.Height(32f)); - - GUILayout.Space(8f); - GUILayout.BeginHorizontal(); - GUILayout.Label("Which devices are you having the issue with?", EditorStyles.boldLabel); - GUILayout.Label("- Model, OS version number", EditorStyles.miniBoldLabel); - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - _emailDeviceSpecs = EditorGUILayout.TextField(_emailDeviceSpecs); - - //GUILayout.Space(16f); - ////GUILayout.Label("System Information"); - //GUILayout.TextArea(CollectSupportData()); - - string emailSubject = "AVPro Video - " + _emailTopic; - - string emailBody = System.Environment.NewLine + System.Environment.NewLine; - emailBody += "Problem description:" + System.Environment.NewLine + System.Environment.NewLine + _emailDescription + System.Environment.NewLine + System.Environment.NewLine; - emailBody += "Device (which devices are you having the issue with - model, OS version number):" + System.Environment.NewLine + System.Environment.NewLine + _emailDeviceSpecs + System.Environment.NewLine + System.Environment.NewLine; - emailBody += "Media (tell us about your videos - number of videos, resolution, codec, frame-rate, example URLs):" + System.Environment.NewLine + System.Environment.NewLine + _emailVideoFormat + System.Environment.NewLine + System.Environment.NewLine; - emailBody += "System Information:" + System.Environment.NewLine + System.Environment.NewLine + CollectSupportData() + System.Environment.NewLine + System.Environment.NewLine; - - //GUILayout.Space(16f); -// - //GUILayout.Label("Email Content"); - //EditorGUILayout.TextArea(emailBody); - - GUILayout.EndScrollView(); - GUILayout.EndVertical(); - - GUILayout.Space(16f); - - GUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - GUI.color = Color.green; - if (GUILayout.Button("Send via Email âž”\nunitysupport@renderheads.com", GUILayout.ExpandWidth(false), GUILayout.Height(32f))) - { - emailBody = emailBody.Replace(System.Environment.NewLine, "%0D%0A"); - Application.OpenURL(string.Format("mailto:unitysupport@renderheads.com?subject={0}&body={1}", emailSubject, emailBody)); - } - if (GUILayout.Button("Send at the Unity Forum âž”", GUILayout.ExpandWidth(false), GUILayout.Height(32f))) - { - PopupWindow.Show(buttonRect, new MyPopupWindow(emailBody)); - //SupportWindowPopup.Init(emailBody); - //EditorUtility.DisplayDialog("AVPro Video", "Please include as much information as you can in the forum post", "OK"); - } - - if (Event.current.type == EventType.Repaint) - { - buttonRect = GUILayoutUtility.GetLastRect(); - } - - GUI.color = Color.white; - GUILayout.FlexibleSpace(); - GUILayout.EndHorizontal(); - } - //GUILayout.EndVertical(); - - GUILayout.FlexibleSpace(); - - if (GUILayout.Button("Close")) - { - this.Close(); - } - } - - private Rect buttonRect; - - private struct Native - { -#if UNITY_EDITOR_WIN - [System.Runtime.InteropServices.DllImport("AVProVideo")] - public static extern System.IntPtr GetPluginVersion(); -#elif UNITY_EDITOR_OSX - [System.Runtime.InteropServices.DllImport("AVProVideo")] - public static extern string AVPGetVersion(); -#endif - } - - private static string GetPluginVersion() - { - string version = "Unknown"; - try - { -#if UNITY_EDITOR_WIN - version = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.GetPluginVersion()); -#elif UNITY_EDITOR_OSX - version = Native.AVPGetVersion(); -#endif - } - catch (System.DllNotFoundException e) - { - Debug.LogError("[AVProVideo] Failed to load DLL. " + e.Message); -#if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) -#if !UNITY_5 && !UNITY_5_4_OR_NEWER - Debug.LogError("[AVProVideo] You may need to copy the Audio360 DLL into the root folder of your project (the folder above Assets)"); -#endif -#endif - } - return version; - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs.meta deleted file mode 100644 index 1aa9f65..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/SupportWindow.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e7d92cb5b84798a44b49bb610befa0cf -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs deleted file mode 100644 index 54d745c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs +++ /dev/null @@ -1,107 +0,0 @@ -using UnityEngine; -using UnityEditor; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo.Editor -{ - /// - /// Editor for UpdateStereoMaterial component - /// - [CanEditMultipleObjects] - [CustomEditor(typeof(UpdateStereoMaterial))] - public class UpdateStereoMaterialEditor : UnityEditor.Editor - { - private SerializedProperty _propCamera; - private SerializedProperty _propRenderer; - private SerializedProperty _propGraphic; - private SerializedProperty _propMaterial; - private SerializedProperty _propForceEyeMode; - - void OnEnable() - { - _propCamera = serializedObject.FindProperty("_camera"); - _propRenderer = serializedObject.FindProperty("_renderer"); - _propGraphic = serializedObject.FindProperty("_uGuiComponent"); - _propForceEyeMode = serializedObject.FindProperty("_forceEyeMode"); - _propMaterial = serializedObject.FindProperty("_material"); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - - if (_propCamera == null) - { - return; - } - - EditorGUILayout.PropertyField(_propCamera); - if (_propCamera.objectReferenceValue == null) - { - if (Camera.main == null) - { - ShowNoticeBox(MessageType.Error, "No 'main' camera found in scene and no camera assigned."); - } - else - { - ShowNoticeBox(MessageType.Warning, "No camera assigned. Using 'main' camera: " + Camera.main.name); - } - } - if (DetectMultipleMainCameras()) - { - ShowNoticeBox(MessageType.Warning, "Multiple 'main' cameras found in scene. Make sure the correct camera is assigned."); - } - - EditorGUILayout.PropertyField(_propRenderer); - EditorGUILayout.PropertyField(_propGraphic); - EditorGUILayout.PropertyField(_propMaterial); - EditorGUILayout.PropertyField(_propForceEyeMode); - if (_propRenderer.objectReferenceValue == null && _propGraphic.objectReferenceValue == null && _propMaterial.objectReferenceValue == null) - { - ShowNoticeBox(MessageType.Error, "At least one of the renderers (MeshRenderer, uGUI Graphic or Material) need to be assigned."); - } - - serializedObject.ApplyModifiedProperties(); - } - - - private static void ShowNoticeBox(MessageType messageType, string message) - { - switch (messageType) - { - case MessageType.Error: - GUI.color = Color.red; - message = "Error: " + message; - break; - case MessageType.Warning: - GUI.color = Color.yellow; - message = "Warning: " + message; - break; - } - - GUILayout.TextArea(message); - GUI.color = Color.white; - } - - private static bool DetectMultipleMainCameras() - { - bool result = false; - if (Camera.main != null) - { - Camera[] cameras = Camera.allCameras; - foreach (Camera cam in cameras) - { - if (cam != Camera.main && cam.CompareTag("MainCamera")) - { - result = true; - break; - } - } - } - return result; - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs.meta deleted file mode 100644 index 7a41e6f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Editor/UpdateStereoMaterialEditor.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 845a007e07f3a2e4b86326374fa992df -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal.meta deleted file mode 100644 index eb1444d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 1bb8f28c4529a1343b4430d732bb5f2a -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs deleted file mode 100644 index 7b70c4f..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs +++ /dev/null @@ -1,1186 +0,0 @@ -#define DLL_METHODS - -#if UNITY_ANDROID -#if UNITY_5 || UNITY_5_4_OR_NEWER - #if !UNITY_5_0 && !UNITY_5_1 - #define AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - #endif - #if !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4_0 && !UNITY_5_4_1 - #define AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - #endif -#endif - -using UnityEngine; -using System; -using System.Runtime.InteropServices; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Android implementation of BaseMediaPlayer - /// - // TODO: seal this class - public class AndroidMediaPlayer : BaseMediaPlayer - { - protected static AndroidJavaObject s_ActivityContext = null; - protected static AndroidJavaObject s_Interface = null; - protected static bool s_bInitialised = false; - - private static string s_Version = "Plug-in not yet initialised"; - - private static System.IntPtr _nativeFunction_RenderEvent = System.IntPtr.Zero; - - protected AndroidJavaObject m_Video; - private Texture2D m_Texture; - private int m_TextureHandle; - private bool m_UseFastOesPath; - - private float m_DurationMs = 0.0f; - private int m_Width = 0; - private int m_Height = 0; - - protected int m_iPlayerIndex = -1; - - private Android.VideoApi m_API; - private bool m_HeadRotationEnabled = false; - private bool m_FocusEnabled = false; - private System.IntPtr m_Method_Update; - private System.IntPtr m_Method_SetHeadRotation; - private System.IntPtr m_Method_GetCurrentTimeMs; - private System.IntPtr m_Method_GetSourceVideoFrameRate; - private System.IntPtr m_Method_IsPlaying; - private System.IntPtr m_Method_IsPaused; - private System.IntPtr m_Method_IsFinished; - private System.IntPtr m_Method_IsSeeking; - private System.IntPtr m_Method_IsBuffering; - private System.IntPtr m_Method_IsLooping; - private System.IntPtr m_Method_HasVideo; - private System.IntPtr m_Method_HasAudio; - private System.IntPtr m_Method_SetFocusProps; - private System.IntPtr m_Method_SetFocusEnabled; - private System.IntPtr m_Method_SetFocusRotation; - private jvalue[] m_Value0 = new jvalue[0]; - private jvalue[] m_Value1 = new jvalue[1]; - private jvalue[] m_Value2 = new jvalue[2]; - private jvalue[] m_Value4 = new jvalue[4]; - -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - private int _textureQuality = QualitySettings.masterTextureLimit; -#endif - public static bool InitialisePlatform() - { - // Get the activity context - if (s_ActivityContext == null) - { - AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); - if (activityClass != null) - { - s_ActivityContext = activityClass.GetStatic("currentActivity"); - } - } - - if (!s_bInitialised) - { - s_Interface = new AndroidJavaObject("com.RenderHeads.AVProVideo.AVProMobileVideo"); - if (s_Interface != null) - { - s_Version = s_Interface.Call("GetPluginVersion"); - s_Interface.Call("SetContext", s_ActivityContext); - - // Calling this native function cause the .SO library to become loaded - // This is important for Unity < 5.2.0 where GL.IssuePluginEvent works differently - _nativeFunction_RenderEvent = Native.GetRenderEventFunc(); - - s_bInitialised = true; - } - } - - return s_bInitialised; - } - - public static void DeinitPlatform() - { - if (s_bInitialised) - { - if (s_Interface != null) - { - s_Interface.CallStatic("Deinitialise"); - s_Interface = null; - } - s_ActivityContext = null; - s_bInitialised = false; - } - } - - private static void IssuePluginEvent(Native.AVPPluginEvent type, int param) - { - // Build eventId from the type and param. - int eventId = 0x5d5ac000 | ((int)type << 8); - - switch (type) - { - case Native.AVPPluginEvent.PlayerSetup: - case Native.AVPPluginEvent.PlayerUpdate: - case Native.AVPPluginEvent.PlayerDestroy: - case Native.AVPPluginEvent.ExtractFrame: - { - eventId |= param & 0xff; - } - break; - } - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - GL.IssuePluginEvent(_nativeFunction_RenderEvent, eventId); -#else - GL.IssuePluginEvent(eventId); -#endif - } - - private System.IntPtr GetMethod(string methodName, string signature) - { -#if UNITY_5 || UNITY_5_4_OR_NEWER - Debug.Assert(m_Video != null); -#endif - System.IntPtr result = AndroidJNIHelper.GetMethodID(m_Video.GetRawClass(), methodName, signature, false); - -#if UNITY_5 || UNITY_5_4_OR_NEWER - Debug.Assert(result != System.IntPtr.Zero); -#endif - if (result == System.IntPtr.Zero) - { - Debug.LogError("[AVProVideo] Unable to get method " + methodName + " " + signature); - throw new System.Exception("[AVProVideo] Unable to get method " + methodName + " " + signature); - } - - return result; - } - - public AndroidMediaPlayer(bool useFastOesPath, bool showPosterFrame, Android.VideoApi api, bool enable360Audio, Audio360ChannelMode channelMode, bool preferSoftware) - { -#if UNITY_5 || UNITY_5_4_OR_NEWER - Debug.Assert(s_Interface != null); - Debug.Assert(s_bInitialised); -#endif - m_API = api; - // Create a java-size video class up front - m_Video = s_Interface.Call("CreatePlayer", (int)m_API, useFastOesPath, enable360Audio, (int)channelMode, preferSoftware); - - if (m_Video != null) - { - m_Method_Update = GetMethod("Update", "()V"); - m_Method_SetHeadRotation = GetMethod("SetHeadRotation", "(FFFF)V"); - m_Method_SetFocusProps = GetMethod("SetFocusProps", "(FF)V"); - m_Method_SetFocusEnabled = GetMethod("SetFocusEnabled", "(Z)V"); - m_Method_SetFocusRotation = GetMethod("SetFocusRotation", "(FFFF)V"); - m_Method_GetCurrentTimeMs = GetMethod("GetCurrentTimeMs", "()J"); - m_Method_GetSourceVideoFrameRate = GetMethod("GetSourceVideoFrameRate", "()F"); - m_Method_IsPlaying = GetMethod("IsPlaying", "()Z"); - m_Method_IsPaused = GetMethod("IsPaused", "()Z"); - m_Method_IsFinished = GetMethod("IsFinished", "()Z"); - m_Method_IsSeeking = GetMethod("IsSeeking", "()Z"); - m_Method_IsBuffering = GetMethod("IsBuffering", "()Z"); - m_Method_IsLooping = GetMethod("IsLooping", "()Z"); - m_Method_HasVideo = GetMethod("HasVideo", "()Z"); - m_Method_HasAudio = GetMethod("HasAudio", "()Z"); - - m_iPlayerIndex = m_Video.Call("GetPlayerIndex"); - Helper.LogInfo("Creating player " + m_iPlayerIndex); - //Debug.Log( "AVPro: useFastOesPath: " + useFastOesPath ); - SetOptions(useFastOesPath, showPosterFrame); - - // Initialise renderer, on the render thread - AndroidMediaPlayer.IssuePluginEvent(Native.AVPPluginEvent.PlayerSetup, m_iPlayerIndex); - } - else - { - Debug.LogError("[AVProVideo] Failed to create player instance"); - } - } - - public void SetOptions(bool useFastOesPath, bool showPosterFrame) - { - m_UseFastOesPath = useFastOesPath; - if (m_Video != null) - { - m_Video.Call("SetPlayerOptions", m_UseFastOesPath, showPosterFrame); - } - } - - public override long GetEstimatedTotalBandwidthUsed() - { - long result = -1; - if (s_Interface != null) - { - result = m_Video.Call("GetEstimatedBandwidthUsed"); - } - return result; - } - - - public override string GetVersion() - { - return s_Version; - } - - public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0) - { - bool bReturn = false; - - if( m_Video != null ) - { -#if UNITY_5 || UNITY_5_4_OR_NEWER - Debug.Assert(m_Width == 0 && m_Height == 0 && m_DurationMs == 0.0f); -#endif - - bReturn = m_Video.Call("OpenVideoFromFile", path, offset, httpHeaderJson, forceFileFormat); - } - else - { - Debug.LogError("[AVProVideo] m_Video is null!"); - } - - return bReturn; - } - - public override TimeRange[] GetSeekableTimeRanges() - { - float[] rangeArray = m_Video.Call("GetSeekableTimeRange"); - - TimeRange[] result = new TimeRange[1]; - result[0].startTime = rangeArray[0]; - result[0].duration = rangeArray[1] - rangeArray[0]; - - return result; - } - - public override void CloseVideo() - { - if (m_Texture != null) - { - Texture2D.Destroy(m_Texture); - m_Texture = null; - } - m_TextureHandle = 0; - - m_DurationMs = 0.0f; - m_Width = 0; - m_Height = 0; - - if (m_Video != null) - { - m_Video.Call("CloseVideo"); - } - - base.CloseVideo(); - } - - public override void SetLooping( bool bLooping ) - { - if( m_Video != null ) - { - m_Video.Call("SetLooping", bLooping); - } - } - - public override bool IsLooping() - { - bool result = false; - if( m_Video != null ) - { - if (m_Method_IsLooping != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsLooping, m_Value0); - } - else - { - result = m_Video.Call("IsLooping"); - } - } - return result; - } - - public override bool HasVideo() - { - bool result = false; - if( m_Video != null ) - { - if (m_Method_HasVideo != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_HasVideo, m_Value0); - } - else - { - result = m_Video.Call("HasVideo"); - } - } - return result; - } - - public override bool HasAudio() - { - bool result = false; - if( m_Video != null ) - { - if (m_Method_HasAudio != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_HasAudio, m_Value0); - } - else - { - result = m_Video.Call("HasAudio"); - } - } - return result; - } - - public override bool HasMetaData() - { - bool result = false; - if( m_DurationMs > 0.0f ) - { - result = true; - - if( HasVideo() ) - { - result = ( m_Width > 0 && m_Height > 0 ); - } - } - return result; - } - - public override bool CanPlay() - { - bool result = false; -#if DLL_METHODS - result = Native._CanPlay( m_iPlayerIndex ); -#else - if (m_Video != null) - { - result = m_Video.Call("CanPlay"); - } -#endif - return result; - } - - public override void Play() - { - if (m_Video != null) - { - m_Video.Call("Play"); - } - } - - public override void Pause() - { - if (m_Video != null) - { - m_Video.Call("Pause"); - } - } - - public override void Stop() - { - if (m_Video != null) - { - // On Android we never need to actually Stop the playback, pausing is fine - m_Video.Call("Pause"); - } - } - - public override void Seek(float timeMs) - { - if (m_Video != null) - { - m_Video.Call("Seek", Mathf.FloorToInt(timeMs)); - } - } - - public override void SeekFast(float timeMs) - { - if (m_Video != null) - { - m_Video.Call("SeekFast", Mathf.FloorToInt(timeMs)); - } - } - - public override float GetCurrentTimeMs() - { - float result = 0.0f; - if (m_Video != null) - { - if (m_Method_GetCurrentTimeMs != System.IntPtr.Zero) - { - result = AndroidJNI.CallLongMethod(m_Video.GetRawObject(), m_Method_GetCurrentTimeMs, m_Value0); - } - else - { - result = (float)m_Video.Call("GetCurrentTimeMs"); - } - } - return result; - } - - public override void SetPlaybackRate(float rate) - { - if (m_Video != null) - { - m_Video.Call("SetPlaybackRate", rate); - } - } - - public override float GetPlaybackRate() - { - float result = 0.0f; - if (m_Video != null) - { - result = m_Video.Call("GetPlaybackRate"); - } - return result; - } - - public override void SetAudioHeadRotation(Quaternion q) - { - if (m_Video != null) - { - if (!m_HeadRotationEnabled) - { - m_Video.Call("SetPositionTrackingEnabled", true); - m_HeadRotationEnabled = true; - } - - if (m_Method_SetHeadRotation != System.IntPtr.Zero) - { - m_Value4[0].f = q.x; - m_Value4[1].f = q.y; - m_Value4[2].f = q.z; - m_Value4[3].f = q.w; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetHeadRotation, m_Value4); - } - else - { - m_Video.Call("SetHeadRotation", q.x, q.y, q.z, q.w); - } - } - } - - public override void ResetAudioHeadRotation() - { - if(m_Video != null && m_HeadRotationEnabled) - { - m_Video.Call("SetPositionTrackingEnabled", false); - m_HeadRotationEnabled = false; - } - } - - public override void SetAudioFocusEnabled(bool enabled) - { - if (m_Video != null && enabled != m_FocusEnabled) - { - if (m_Method_SetFocusEnabled != System.IntPtr.Zero) - { - m_Value1[0].z = enabled; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusEnabled, m_Value1); - } - else - { - m_Video.Call("SetFocusEnabled", enabled); - } - m_FocusEnabled = enabled; - } - } - - public override void SetAudioFocusProperties(float offFocusLevel, float widthDegrees) - { - if(m_Video != null && m_FocusEnabled) - { - if (m_Method_SetFocusProps != System.IntPtr.Zero) - { - m_Value2[0].f = offFocusLevel; - m_Value2[1].f = widthDegrees; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusProps, m_Value2); - } - else - { - m_Video.Call("SetFocusProps", offFocusLevel, widthDegrees); - } - } - } - - public override void SetAudioFocusRotation(Quaternion q) - { - if (m_Video != null && m_FocusEnabled) - { - if (m_Method_SetFocusRotation != System.IntPtr.Zero) - { - m_Value4[0].f = q.x; - m_Value4[1].f = q.y; - m_Value4[2].f = q.z; - m_Value4[3].f = q.w; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusRotation, m_Value4); - } - else - { - m_Video.Call("SetFocusRotation", q.x, q.y, q.z, q.w); - } - } - } - - public override void ResetAudioFocus() - { - if (m_Video != null) - { - - if (m_Method_SetFocusProps != System.IntPtr.Zero && - m_Method_SetFocusEnabled != System.IntPtr.Zero && - m_Method_SetFocusRotation != System.IntPtr.Zero) - { - m_Value2[0].f = 0f; - m_Value2[1].f = 90f; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusProps, m_Value2); - m_Value1[0].z = false; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusEnabled, m_Value1); - m_Value4[0].f = 0f; - m_Value4[1].f = 0f; - m_Value4[2].f = 0f; - m_Value4[3].f = 1f; - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_SetFocusRotation, m_Value4); - } - else - { - m_Video.Call("SetFocusProps", 0f, 90f); - m_Video.Call("SetFocusEnabled", false); - m_Video.Call("SetFocusRotation", 0f, 0f, 0f, 1f); - } - } - } - - public override float GetDurationMs() - { - return m_DurationMs; - } - - public override int GetVideoWidth() - { - return m_Width; - } - - public override int GetVideoHeight() - { - return m_Height; - } - - public override float GetVideoFrameRate() - { - float result = 0.0f; - if( m_Video != null ) - { - if (m_Method_GetSourceVideoFrameRate != System.IntPtr.Zero) - { - result = AndroidJNI.CallFloatMethod(m_Video.GetRawObject(), m_Method_GetSourceVideoFrameRate, m_Value0); - } - else - { - result = m_Video.Call("GetSourceVideoFrameRate"); - } - } - return result; - } - - public override float GetBufferingProgress() - { - float result = 0.0f; - if( m_Video != null ) - { - result = m_Video.Call("GetBufferingProgressPercent") * 0.01f; - } - return result; - } - - public override float GetVideoDisplayRate() - { - float result = 0.0f; -#if DLL_METHODS - result = Native._GetVideoDisplayRate( m_iPlayerIndex ); -#else - if (m_Video != null) - { - result = m_Video.Call("GetDisplayRate"); - } -#endif - return result; - } - - public override bool IsSeeking() - { - bool result = false; - if (m_Video != null) - { - if (m_Method_IsSeeking != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsSeeking, m_Value0); - } - else - { - result = m_Video.Call("IsSeeking"); - } - } - return result; - } - - public override bool IsPlaying() - { - bool result = false; - if (m_Video != null) - { - if (m_Method_IsPlaying != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsPlaying, m_Value0); - } - else - { - result = m_Video.Call("IsPlaying"); - } - } - return result; - } - - public override bool IsPaused() - { - bool result = false; - if (m_Video != null) - { - if (m_Method_IsPaused != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsPaused, m_Value0); - } - else - { - result = m_Video.Call("IsPaused"); - } - } - return result; - } - - public override bool IsFinished() - { - bool result = false; - if (m_Video != null) - { - if (m_Method_IsFinished != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsFinished, m_Value0); - } - else - { - result = m_Video.Call("IsFinished"); - } - } - return result; - } - - public override bool IsBuffering() - { - bool result = false; - if (m_Video != null) - { - if (m_Method_IsBuffering != System.IntPtr.Zero) - { - result = AndroidJNI.CallBooleanMethod(m_Video.GetRawObject(), m_Method_IsBuffering, m_Value0); - } - else - { - result = m_Video.Call("IsBuffering"); - } - } - return result; - } - - public override Texture GetTexture( int index ) - { - Texture result = null; - if (GetTextureFrameCount() > 0) - { - result = m_Texture; - } - return result; - } - - public override int GetTextureFrameCount() - { - int result = 0; -#if DLL_METHODS - result = Native._GetFrameCount( m_iPlayerIndex ); -#else - if (m_Video != null) - { - result = m_Video.Call("GetFrameCount"); - } -#endif - return result; - } - - public override bool RequiresVerticalFlip() - { - return false; - } - - public override void MuteAudio(bool bMuted) - { - if (m_Video != null) - { - m_Video.Call("MuteAudio", bMuted); - } - } - - public override bool IsMuted() - { - bool result = false; - if( m_Video != null ) - { - result = m_Video.Call("IsMuted"); - } - return result; - } - - public override void SetVolume(float volume) - { - if (m_Video != null) - { - m_Video.Call("SetVolume", volume); - } - } - - public override float GetVolume() - { - float result = 0.0f; - if( m_Video != null ) - { - result = m_Video.Call("GetVolume"); - } - return result; - } - - public override void SetBalance(float balance) - { - if( m_Video != null ) - { - m_Video.Call("SetAudioPan", balance); - } - } - - public override float GetBalance() - { - float result = 0.0f; - if( m_Video != null ) - { - result = m_Video.Call("GetAudioPan"); - } - return result; - } - - public override int GetAudioTrackCount() - { - int result = 0; - if( m_Video != null ) - { - result = m_Video.Call("GetNumberAudioTracks"); - } - return result; - } - - public override int GetCurrentAudioTrack() - { - int result = 0; - if( m_Video != null ) - { - result = m_Video.Call("GetCurrentAudioTrackIndex"); - } - return result; - } - - public override void SetAudioTrack( int index ) - { - if( m_Video != null ) - { - m_Video.Call("SetAudioTrack", index); - } - } - - public override string GetCurrentAudioTrackId() - { - /*string id = ""; - if( m_Video != null ) - { - id = m_Video.Call("GetCurrentAudioTrackIndex"); - } - return id;*/ - - return GetCurrentAudioTrack().ToString(); - } - - public override int GetCurrentAudioTrackBitrate() - { - int result = 0; - /*if( m_Video != null ) - { - result = m_Video.Call("GetCurrentAudioTrackIndex"); - }*/ - return result; - } - - public override int GetVideoTrackCount() - { - int result = 0; - if( m_Video != null ) - { - if (HasVideo()) - { - result = 1; - } - //result = m_Video.Call("GetNumberVideoTracks"); - } - return result; - } - - public override int GetCurrentVideoTrack() - { - int result = 0; - /*if( m_Video != null ) - { - result = m_Video.Call("GetCurrentVideoTrackIndex"); - }*/ - return result; - } - - public override void SetVideoTrack( int index ) - { - /*if( m_Video != null ) - { - m_Video.Call("SetVideoTrack", index); - }*/ - } - - public override string GetCurrentVideoTrackId() - { - string id = ""; - /*if( m_Video != null ) - { - id = m_Video.Call("GetCurrentVideoTrackId"); - }*/ - return id; - } - - public override int GetCurrentVideoTrackBitrate() - { - int bitrate = 0; - /*if( m_Video != null ) - { - bitrate = m_Video.Call("GetCurrentVideoTrackBitrate"); - }*/ - return bitrate; - } - - public override bool WaitForNextFrame(Camera dummyCamera, int previousFrameCount) - { - // Mark as extracting - bool isMultiThreaded = m_Video.Call("StartExtractFrame"); - - // In single threaded Android this method won't work, so just return - if (isMultiThreaded) - { - // Queue up render thread event to wait for the new frame - IssuePluginEvent(Native.AVPPluginEvent.ExtractFrame, m_iPlayerIndex); - - // Force render thread to run - dummyCamera.Render(); - - // Wait for the frame to change - m_Video.Call("WaitForExtract"); - - // Return whether the frame changed - return (previousFrameCount != GetTextureFrameCount()); - } - return false; - } - - public override long GetTextureTimeStamp() - { - long timeStamp = long.MinValue; - if (m_Video != null) - { - timeStamp = m_Video.Call("GetTextureTimeStamp"); - } - return timeStamp; - } - - public override void Render() - { - if (m_Video != null) - { - if (m_UseFastOesPath) - { - // This is needed for at least Unity 5.5.0, otherwise it just renders black in OES mode - GL.InvalidateState(); - } - AndroidMediaPlayer.IssuePluginEvent( Native.AVPPluginEvent.PlayerUpdate, m_iPlayerIndex ); - if (m_UseFastOesPath) - { - GL.InvalidateState(); - } - - // Check if we can create the texture - // Scan for a change in resolution - int newWidth = -1; - int newHeight = -1; - if (m_Texture != null) - { -#if DLL_METHODS - newWidth = Native._GetWidth( m_iPlayerIndex ); - newHeight = Native._GetHeight( m_iPlayerIndex ); -#else - newWidth = m_Video.Call("GetWidth"); - newHeight = m_Video.Call("GetHeight"); -#endif - if (newWidth != m_Width || newHeight != m_Height) - { - m_Texture = null; - m_TextureHandle = 0; - } - } -#if DLL_METHODS - int textureHandle = Native._GetTextureHandle( m_iPlayerIndex ); -#else - int textureHandle = m_Video.Call("GetTextureHandle"); -#endif - if (textureHandle != 0 && textureHandle != m_TextureHandle ) - { - // Already got? (from above) - if( newWidth == -1 || newHeight == -1 ) - { -#if DLL_METHODS - newWidth = Native._GetWidth( m_iPlayerIndex ); - newHeight = Native._GetHeight( m_iPlayerIndex ); -#else - newWidth = m_Video.Call("GetWidth"); - newHeight = m_Video.Call("GetHeight"); -#endif - } - - if (Mathf.Max(newWidth, newHeight) > SystemInfo.maxTextureSize) - { - m_Width = newWidth; - m_Height = newHeight; - m_TextureHandle = textureHandle; - Debug.LogError("[AVProVideo] Video dimensions larger than maxTextureSize"); - } - else if( newWidth > 0 && newHeight > 0 ) - { - m_Width = newWidth; - m_Height = newHeight; - m_TextureHandle = textureHandle; - - switch(m_API) - { - case Android.VideoApi.MediaPlayer: - _playerDescription = "MediaPlayer"; - break; - case Android.VideoApi.ExoPlayer: - _playerDescription = "ExoPlayer"; - break; - default: - _playerDescription = "UnknownPlayer"; - break; - } - - if (m_UseFastOesPath) - { - _playerDescription += " OES"; - } - else - { - _playerDescription += " NonOES"; - } - - Helper.LogInfo("Using playback path: " + _playerDescription + " (" + m_Width + "x" + m_Height + "@" + GetVideoFrameRate().ToString("F2") + ")"); - - // NOTE: From Unity 5.4.x when using OES textures, an error "OPENGL NATIVE PLUG-IN ERROR: GL_INVALID_OPERATION: Operation illegal in current state" will be logged. - // We assume this is because we're passing in TextureFormat.RGBA32 which isn't the true texture format. This error should be safe to ignore. - m_Texture = Texture2D.CreateExternalTexture(m_Width, m_Height, TextureFormat.RGBA32, false, false, new System.IntPtr(textureHandle)); - if (m_Texture != null) - { - ApplyTextureProperties(m_Texture); - } - Helper.LogInfo("Texture ID: " + textureHandle); - } - } - -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - // In Unity 5.4.2 and above the video texture turns black when changing the TextureQuality in the Quality Settings - // The code below gets around this issue. A bug report has been sent to Unity. So far we have tested and replicated the - // "bug" in Windows only, but a user has reported it in Android too. - // Texture.GetNativeTexturePtr() must sync with the rendering thread, so this is a large performance hit! - if (_textureQuality != QualitySettings.masterTextureLimit) - { - if (m_Texture != null && textureHandle > 0 && m_Texture.GetNativeTexturePtr() == System.IntPtr.Zero) - { - //Debug.Log("RECREATING"); - m_Texture.UpdateExternalTexture(new System.IntPtr(textureHandle)); - } - - _textureQuality = QualitySettings.masterTextureLimit; - } -#endif - } - } - - protected override void ApplyTextureProperties(Texture texture) - { - // NOTE: According to OES_EGL_image_external: For external textures, the default min filter is GL_LINEAR and the default S and T wrap modes are GL_CLAMP_TO_EDGE - // See https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external_essl3.txt - // But there is a new extension that allows some wrap modes: - // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_external_wrap_modes.txt - // So really we need to detect whether these extensions exist when m_UseFastOesPath is true - //if (!m_UseFastOesPath) - { - base.ApplyTextureProperties(texture); - } - } - - public override void OnEnable() - { - base.OnEnable(); - -#if DLL_METHODS - int textureHandle = Native._GetTextureHandle(m_iPlayerIndex); -#else - int textureHandle = m_Video.Call("GetTextureHandle"); -#endif - - if (m_Texture != null && textureHandle > 0 && m_Texture.GetNativeTexturePtr() == System.IntPtr.Zero) - { - //Debug.Log("RECREATING"); - m_Texture.UpdateExternalTexture(new System.IntPtr(textureHandle)); - } - -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - _textureQuality = QualitySettings.masterTextureLimit; -#endif - } - - public override double GetCurrentDateTimeSecondsSince1970() - { - double result = 0.0; - if (m_Video != null) - { - result = m_Video.Call("GetCurrentAbsoluteTimestamp"); - } - return result; - } - - public override void Update() - { - if (m_Video != null) - { - if (m_Method_Update != System.IntPtr.Zero) - { - AndroidJNI.CallVoidMethod(m_Video.GetRawObject(), m_Method_Update, m_Value0); - } - else - { - m_Video.Call("Update"); - } - - // _lastError = (ErrorCode)( m_Video.Call("GetLastErrorCode") ); - _lastError = (ErrorCode)( Native._GetLastErrorCode( m_iPlayerIndex) ); - } - - UpdateSubtitles(); - - if(Mathf.Approximately(m_DurationMs, 0f)) - { -#if DLL_METHODS - m_DurationMs = (float)( Native._GetDuration( m_iPlayerIndex ) ); -#else - m_DurationMs = (float)(m_Video.Call("GetDurationMs")); -#endif -// if( m_DurationMs > 0.0f ) { Helper.LogInfo("Duration: " + m_DurationMs); } - } - } - - public override bool PlayerSupportsLinearColorSpace() - { - return false; - } - - public override void Dispose() - { - //Debug.LogError("DISPOSE"); - - if (m_Video != null) - { - m_Video.Call("SetDeinitialiseFlagged"); - - m_Video.Dispose(); - m_Video = null; - } - - if (s_Interface != null) - { - s_Interface.Call("DestroyPlayer", m_iPlayerIndex); - } - - if (m_Texture != null) - { - Texture2D.Destroy(m_Texture); - m_Texture = null; - } - - // Deinitialise player (replaces call directly as GL textures are involved) - AndroidMediaPlayer.IssuePluginEvent( Native.AVPPluginEvent.PlayerDestroy, m_iPlayerIndex ); - } - - private struct Native - { - [DllImport ("AVProLocal")] - public static extern IntPtr GetRenderEventFunc(); - - [DllImport ("AVProLocal")] - public static extern int _GetWidth( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern int _GetHeight( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern int _GetTextureHandle( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern long _GetDuration( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern int _GetLastErrorCode( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern int _GetFrameCount( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern float _GetVideoDisplayRate( int iPlayerIndex ); - - [DllImport ("AVProLocal")] - public static extern bool _CanPlay( int iPlayerIndex ); - - public enum AVPPluginEvent - { - Nop, - PlayerSetup, - PlayerUpdate, - PlayerDestroy, - ExtractFrame, - } - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs.meta deleted file mode 100644 index 36c0d73..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AndroidMediaPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 80eb525dd677aa440823910b09b23ae0 -timeCreated: 1438698292 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs deleted file mode 100644 index c37b28d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs +++ /dev/null @@ -1,137 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using System; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// A singleton to handle mulitple instances of the AudioOutput component - /// - public class AudioOutputManager - { - private static AudioOutputManager _instance = null; - - public static AudioOutputManager Instance - { - get - { - if (_instance == null) - { - _instance = new AudioOutputManager(); - } - - return _instance; - } - } - - private Dictionary> _accessTrackers; - private Dictionary _pcmData; - - private AudioOutputManager() - { - _accessTrackers = new Dictionary>(); - _pcmData = new Dictionary(); - } - - public void RequestAudio(AudioOutput _outputComponent, MediaPlayer mediaPlayer, float[] data, int channelMask, int totalChannels, AudioOutput.AudioOutputMode audioOutputMode) - { - if (mediaPlayer == null || mediaPlayer.Control == null || !mediaPlayer.Control.IsPlaying()) - { - return; - } - - int channels = mediaPlayer.Control.GetNumAudioChannels(); - if(channels <= 0) - { - return; - } - - //total samples requested should be multiple of channels -#if (UNITY_5 && !UNITY_5_0) || UNITY_5_4_OR_NEWER - Debug.Assert(data.Length % totalChannels == 0); -#endif - - if (!_accessTrackers.ContainsKey(mediaPlayer)) - { - _accessTrackers[mediaPlayer] = new HashSet(); - } - - //requests data if it hasn't been requested yet for the current cycle - if (_accessTrackers[mediaPlayer].Contains(_outputComponent) || _accessTrackers[mediaPlayer].Count == 0 || _pcmData[mediaPlayer] == null) - { - _accessTrackers[mediaPlayer].Clear(); - - int actualDataRequired = data.Length / totalChannels * channels; - _pcmData[mediaPlayer] = new float[actualDataRequired]; - - GrabAudio(mediaPlayer, _pcmData[mediaPlayer], channels); - - _accessTrackers[mediaPlayer].Add(_outputComponent); - } - - //calculate how many samples and what channels are needed and then copy over the data - int samples = Math.Min(data.Length / totalChannels, _pcmData[mediaPlayer].Length / channels); - int storedPos = 0; - int requestedPos = 0; - - //multiple mode, copies over audio from desired channels into the same channels on the audiosource - if (audioOutputMode == AudioOutput.AudioOutputMode.Multiple) - { - int lesserChannels = Math.Min(channels, totalChannels); - - for (int i = 0; i < samples; ++i) - { - for (int j = 0; j < lesserChannels; ++j) - { - if ((1 << j & channelMask) > 0) - { - data[requestedPos + j] = _pcmData[mediaPlayer][storedPos + j]; - } - } - - storedPos += channels; - requestedPos += totalChannels; - } - } - - //Mono mode, copies over single channel to all output channels - else if(audioOutputMode == AudioOutput.AudioOutputMode.Single) - { - int desiredChannel = 0; - - for (int i = 0; i < 8; ++i) - { - if ((channelMask & (1 << i)) > 0) - { - desiredChannel = i; - break; - } - } - - if(desiredChannel < channels) - { - for (int i = 0; i < samples; ++i) - { - for (int j = 0; j < totalChannels; ++j) - { - data[requestedPos + j] = _pcmData[mediaPlayer][storedPos + desiredChannel]; - } - - storedPos += channels; - requestedPos += totalChannels; - } - } - } - } - - private void GrabAudio(MediaPlayer player, float[] data, int channels) - { - player.Control.GrabAudio(data, data.Length, channels); - } - } -} - diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs.meta deleted file mode 100644 index 6ea845b..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/AudioOutputManager.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 714026a371bd2d64c86edb3dab5607d9 -timeCreated: 1495699104 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs deleted file mode 100644 index 8c33037..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs +++ /dev/null @@ -1,318 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif - -using UnityEngine; -using System.Collections.Generic; - -#if NETFX_CORE -using Windows.Storage.Streams; -#endif - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserved. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Base class for all platform specific MediaPlayers - /// - public abstract class BaseMediaPlayer : IMediaPlayer, IMediaControl, IMediaInfo, IMediaProducer, IMediaSubtitles, System.IDisposable - { - public abstract string GetVersion(); - - public abstract bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0); - -#if NETFX_CORE - public virtual bool OpenVideoFromFile(IRandomAccessStream ras, string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0){return false;} -#endif - - public virtual bool OpenVideoFromBuffer(byte[] buffer) { return false; } - public virtual bool StartOpenVideoFromBuffer(ulong length) { return false; } - public virtual bool AddChunkToVideoBuffer(byte[] chunk, ulong offset, ulong length) { return false; } - public virtual bool EndOpenVideoFromBuffer() { return false; } - - public virtual void CloseVideo() - { - _stallDetectionTimer = 0f; - _stallDetectionFrame = 0; - _lastError = ErrorCode.None; - } - - public abstract void SetLooping(bool bLooping); - public abstract bool IsLooping(); - - public abstract bool HasMetaData(); - public abstract bool CanPlay(); - public abstract void Play(); - public abstract void Pause(); - public abstract void Stop(); - public virtual void Rewind() { SeekFast(0.0f); } - - public abstract void Seek(float timeMs); - public abstract void SeekFast(float timeMs); - public virtual void SeekWithTolerance(float timeMs, float beforeMs, float afterMs) { Seek(timeMs); } - public abstract float GetCurrentTimeMs(); - public virtual double GetCurrentDateTimeSecondsSince1970() { return 0.0; } - public virtual TimeRange[] GetSeekableTimeRanges() { return _seekableTimeRanges; } - - public abstract float GetPlaybackRate(); - public abstract void SetPlaybackRate(float rate); - - public abstract float GetDurationMs(); - public abstract int GetVideoWidth(); - public abstract int GetVideoHeight(); - public virtual Rect GetCropRect() { return new Rect(0f, 0f, 0f, 0f); } - public abstract float GetVideoDisplayRate(); - public abstract bool HasAudio(); - public abstract bool HasVideo(); - - public abstract bool IsSeeking(); - public abstract bool IsPlaying(); - public abstract bool IsPaused(); - public abstract bool IsFinished(); - public abstract bool IsBuffering(); - public virtual bool WaitForNextFrame(Camera dummyCamera, int previousFrameCount) { return false; } - - public virtual void SetPlayWithoutBuffering(bool playWithoutBuffering) { } - - public virtual void SetKeyServerURL(string url) { } - public virtual void SetKeyServerAuthToken(string token) { } - public virtual void SetDecryptionKeyBase64(string key) { } - public virtual void SetDecryptionKey(byte[] key) { } - - public virtual int GetTextureCount() { return 1; } - public abstract Texture GetTexture(int index = 0); - public abstract int GetTextureFrameCount(); - public virtual bool SupportsTextureFrameCount() { return true; } - public virtual long GetTextureTimeStamp() { return long.MinValue; } - public abstract bool RequiresVerticalFlip(); - public virtual float[] GetTextureTransform() { return new float[] { 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f }; } - public virtual Matrix4x4 GetYpCbCrTransform() { return Matrix4x4.identity; } - - public abstract void MuteAudio(bool bMuted); - public abstract bool IsMuted(); - public abstract void SetVolume(float volume); - public virtual void SetBalance(float balance) { } - public abstract float GetVolume(); - public virtual float GetBalance() { return 0f; } - - public abstract int GetAudioTrackCount(); - public virtual string GetAudioTrackId(int index) { return index.ToString(); } - public abstract int GetCurrentAudioTrack(); - public abstract void SetAudioTrack(int index); - public abstract string GetCurrentAudioTrackId(); - public abstract int GetCurrentAudioTrackBitrate(); - public virtual int GetNumAudioChannels() { return -1; } - public virtual void SetAudioHeadRotation(Quaternion q) { } - public virtual void ResetAudioHeadRotation() { } - public virtual void SetAudioChannelMode(Audio360ChannelMode channelMode) { } - public virtual void SetAudioFocusEnabled(bool enabled) { } - public virtual void SetAudioFocusProperties(float offFocusLevel, float widthDegrees) { } - public virtual void SetAudioFocusRotation(Quaternion q) { } - public virtual void ResetAudioFocus() { } - - public abstract int GetVideoTrackCount(); - public virtual string GetVideoTrackId(int index) { return index.ToString(); } - public abstract int GetCurrentVideoTrack(); - public abstract void SetVideoTrack(int index); - public abstract string GetCurrentVideoTrackId(); - public abstract int GetCurrentVideoTrackBitrate(); - - public abstract float GetVideoFrameRate(); - - public virtual long GetEstimatedTotalBandwidthUsed() { return -1; } - - public abstract float GetBufferingProgress(); - - public abstract void Update(); - public abstract void Render(); - public abstract void Dispose(); - - public ErrorCode GetLastError() - { - return _lastError; - } - - public virtual long GetLastExtendedErrorCode() - { - return 0; - } - - public string GetPlayerDescription() - { - return _playerDescription; - } - - public virtual bool PlayerSupportsLinearColorSpace() - { -#if UNITY_PLATFORM_SUPPORTS_LINEAR - return true; -#else - return false; -#endif - } - - public virtual int GetBufferedTimeRangeCount() { return 0; } - public virtual bool GetBufferedTimeRange(int index, ref float startTimeMs, ref float endTimeMs) { return false; } - - protected string _playerDescription = string.Empty; - protected ErrorCode _lastError = ErrorCode.None; - protected FilterMode _defaultTextureFilterMode = FilterMode.Bilinear; - protected TextureWrapMode _defaultTextureWrapMode = TextureWrapMode.Clamp; - protected int _defaultTextureAnisoLevel = 1; - - protected TimeRange[] _seekableTimeRanges = new TimeRange[0]; - - public void SetTextureProperties(FilterMode filterMode = FilterMode.Bilinear, TextureWrapMode wrapMode = TextureWrapMode.Clamp, int anisoLevel = 0) - { - _defaultTextureFilterMode = filterMode; - _defaultTextureWrapMode = wrapMode; - _defaultTextureAnisoLevel = anisoLevel; - for (int i = 0; i < GetTextureCount(); ++i) - { - ApplyTextureProperties(GetTexture(i)); - } - } - - protected virtual void ApplyTextureProperties(Texture texture) - { - if (texture != null) - { - texture.filterMode = _defaultTextureFilterMode; - texture.wrapMode = _defaultTextureWrapMode; - texture.anisoLevel = _defaultTextureAnisoLevel; - } - } - - public virtual void GrabAudio(float[] buffer, int floatCount, int channelCount) - { - - } - - protected bool IsExpectingNewVideoFrame() - { - if (HasVideo()) - { - // If we're playing then we expect a new frame - if (!IsFinished() && (!IsPaused() || IsPlaying())) - { - // NOTE: if a new frame isn't available then we could either be seeking or stalled - return true; - } - } - return false; - } - - public virtual bool IsPlaybackStalled() - { - const float StallDetectionDuration = 0.75f; - - // Manually detect stalled video if the platform doesn't have native support to detect it - if (SupportsTextureFrameCount() && IsExpectingNewVideoFrame()) - { - int frameCount = GetTextureFrameCount(); - if (frameCount != _stallDetectionFrame) - { - _stallDetectionTimer = 0f; - _stallDetectionFrame = frameCount; - } - else - { - _stallDetectionTimer += Time.deltaTime; - } - return (_stallDetectionTimer > StallDetectionDuration); - } - else - { - _stallDetectionTimer = 0f; - } - return false; - } - - private float _stallDetectionTimer; - private int _stallDetectionFrame; - - protected List _subtitles; - protected Subtitle _currentSubtitle; - - public bool LoadSubtitlesSRT(string data) - { - if (string.IsNullOrEmpty(data)) - { - // Disable subtitles - _subtitles = null; - _currentSubtitle = null; - } - else - { - _subtitles = Helper.LoadSubtitlesSRT(data); - _currentSubtitle = null; - } - return (_subtitles != null); - } - - public virtual void UpdateSubtitles() - { - if (_subtitles != null) - { - float time = GetCurrentTimeMs(); - - // TODO: implement a more effecient subtitle index searcher - int searchIndex = 0; - if (_currentSubtitle != null) - { - if (!_currentSubtitle.IsTime(time)) - { - if (time > _currentSubtitle.timeEndMs) - { - searchIndex = _currentSubtitle.index + 1; - } - _currentSubtitle = null; - } - } - - if (_currentSubtitle == null) - { - for (int i = searchIndex; i < _subtitles.Count; i++) - { - if (_subtitles[i].IsTime(time)) - { - _currentSubtitle = _subtitles[i]; - break; - } - } - } - } - } - - public virtual int GetSubtitleIndex() - { - int result = -1; - if (_currentSubtitle != null) - { - result = _currentSubtitle.index; - } - return result; - } - - public virtual string GetSubtitleText() - { - string result = string.Empty; - if (_currentSubtitle != null) - { - result = _currentSubtitle.text; - } - return result; - } - - public virtual void OnEnable() - { - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs.meta deleted file mode 100644 index b799a78..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/BaseMediaPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 4f59504ca098e7d41b036917f4764ee0 -timeCreated: 1447782861 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs deleted file mode 100644 index 76aaa87..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs +++ /dev/null @@ -1,317 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -#if !UNITY_WSA_10_0 && !UNITY_WINRT_8_1 && !UNITY_WSA && !UNITY_WEBPLAYER - #define SUPPORT_SSL -#endif - -using System; -using System.IO; -using System.Collections.Generic; -using UnityEngine; -#if SUPPORT_SSL -using System.Security.Cryptography.X509Certificates; -using System.Net.Security; -using System.Net; -#endif - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Utility class to parses an HLS(m3u8) adaptive stream from a URL to - /// allow easy inspection and navitation of the stream data - /// - public class HLSStream : Stream - { - private const string BANDWITH_NAME = "BANDWIDTH="; - private const string RESOLUTION_NAME = "RESOLUTION="; - private const string CHUNK_TAG = "#EXTINF"; - private const string STREAM_TAG = "#EXT-X-STREAM-INF"; - - private List _streams; - private List _chunks; - private string _streamURL; - private int _width; - private int _height; - private int _bandwidth; - - public override int Width - { - get { return _width; } - } - - public override int Height - { - get { return _height; } - } - - public override int Bandwidth - { - get { return _bandwidth; } - } - - public override string URL - { - get { return _streamURL; } - } - - public override List GetAllChunks() - { - List chunks = new List(); - - for(int i = 0; i < _streams.Count; ++i) - { - var streamChunks = _streams[i].GetAllChunks(); - chunks.AddRange(streamChunks); - } - - chunks.AddRange(_chunks); - - return chunks; - } - - public override List GetChunks() - { - return _chunks; - } - - public override List GetAllStreams() - { - List streams = new List(); - for(int i = 0; i < _streams.Count; ++i) - { - var childrenStreams = _streams[i].GetAllStreams(); - streams.AddRange(childrenStreams); - } - - streams.AddRange(_streams); - - return streams; - } - - public override List GetStreams() - { - return _streams; - } - - private bool ExtractStreamInfo(string line, ref int width, ref int height, ref int bandwidth) - { - if (line.StartsWith(STREAM_TAG)) - { - int bandwidthPos = line.IndexOf(BANDWITH_NAME); - if (bandwidthPos >= 0) - { - int endPos = line.IndexOf(',', bandwidthPos + BANDWITH_NAME.Length); - if (endPos < 0) - { - endPos = line.Length - 1; - } - - if (endPos >= 0 && endPos - BANDWITH_NAME.Length > bandwidthPos) - { - int length = endPos - bandwidthPos - BANDWITH_NAME.Length; - - string bandwidthString = line.Substring(bandwidthPos + BANDWITH_NAME.Length, length); - if (!int.TryParse(bandwidthString, out bandwidth)) - { - bandwidth = 0; - } - } - } - else - { - bandwidth = 0; - } - - int resolutionPos = line.IndexOf(RESOLUTION_NAME); - if (resolutionPos >= 0) - { - int endPos = line.IndexOf(',', resolutionPos + RESOLUTION_NAME.Length); - if (endPos < 0) - { - endPos = line.Length - 1; - } - - if (endPos >= 0 && endPos - RESOLUTION_NAME.Length > resolutionPos) - { - int length = endPos - resolutionPos - RESOLUTION_NAME.Length; - string resolutionString = line.Substring(resolutionPos + RESOLUTION_NAME.Length, length); - int xPos = resolutionString.IndexOf('x'); - - if (xPos < 0 || !int.TryParse(resolutionString.Substring(0, xPos), out width) || - !int.TryParse(resolutionString.Substring(xPos + 1, resolutionString.Length - (xPos + 1)), out height)) - { - width = height = 0; - } - } - } - else - { - width = height = 0; - } - - return true; - } - - return false; - } - - private static bool IsChunk(string line) - { - return line.StartsWith(CHUNK_TAG); - } - - private void ParseFile(string[] text, string path) - { - bool nextIsChunk = false; - bool nextIsStream = false; - int width = 0, height = 0, bitrate = 0; - - for (int i = 0; i < text.Length; ++i) - { - if (ExtractStreamInfo(text[i], ref width, ref height, ref bitrate)) - { - nextIsStream = true; - nextIsChunk = false; - } - else if (IsChunk(text[i])) - { - nextIsChunk = true; - nextIsStream = false; - } - else if (nextIsChunk) - { - Chunk chunk; - chunk.name = path + text[i]; - _chunks.Add(chunk); - - nextIsChunk = false; - nextIsStream = false; - } - else if (nextIsStream) - { - try - { - string fullpath = text[i].IndexOf("://") < 0 ? path + text[i] : text[i]; - HLSStream stream = new HLSStream(fullpath, width, height, bitrate); - _streams.Add(stream); - } - catch (Exception e) - { - Debug.LogError("[AVProVideo]HLSParser cannot parse stream " + path + text[i] + ", " + e.Message); - } - - nextIsChunk = false; - nextIsStream = false; - } - else - { - nextIsChunk = false; - nextIsStream = false; - } - } - } - - public HLSStream(string filename, int width = 0, int height = 0, int bandwidth = 0) - { - _streams = new List(); - _chunks = new List(); - - _width = width; - _height = height; - _bandwidth = bandwidth; - _streamURL = filename; - - try - { - string[] fileLines = null; - - if (filename.ToLower().StartsWith("http://") || filename.ToLower().StartsWith("https://")) - { -#if UNITY_WSA_10_0 || UNITY_WINRT_8_1 || UNITY_WSA - WWW www = new WWW(filename); - int watchdog = 0; - while (!www.isDone && watchdog < 5000) - { -#if NETFX_CORE - System.Threading.Tasks.Task.Delay(1).Wait(); -#else - System.Threading.Thread.Sleep(1); -#endif - watchdog++; - } - if (www.isDone && watchdog < 5000) - { - string fileString = www.text; - fileLines = fileString.Split('\n'); - } -#else - -#if SUPPORT_SSL - if (filename.ToLower().StartsWith("https://")) - { - ServicePointManager.ServerCertificateValidationCallback = MyRemoteCertificateValidationCallback; - } -#endif - using (System.Net.WebClient webClient = new System.Net.WebClient()) - { - string fileString = webClient.DownloadString(filename); - fileLines = fileString.Split('\n'); - } -#endif - } - else - { - fileLines = File.ReadAllLines(filename); - } - - int lastDash = filename.LastIndexOf('/'); - if(lastDash < 0) - { - lastDash = filename.LastIndexOf('\\'); - } - - string path = _streamURL.Substring(0, lastDash + 1); - - ParseFile(fileLines, path); - } - catch (Exception e) - { - throw e; - } - } - -#if SUPPORT_SSL - private bool MyRemoteCertificateValidationCallback(System.Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) - { - bool isOk = true; - // If there are errors in the certificate chain, - // look at each error to determine the cause. - if (sslPolicyErrors != SslPolicyErrors.None) - { - for (int i = 0; i < chain.ChainStatus.Length; i++) - { - if (chain.ChainStatus[i].Status == X509ChainStatusFlags.RevocationStatusUnknown) - { - continue; - } - chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; - chain.ChainPolicy.RevocationMode = X509RevocationMode.Online; - chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0); - // Note: change flags to X509VerificationFlags.AllFlags to skip all security checks - chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; - bool chainIsValid = chain.Build((X509Certificate2)certificate); - if (!chainIsValid) - { - isOk = false; - break; - } - } - } - return isOk; - } -#endif - } -} - diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs.meta deleted file mode 100644 index c6b609e..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/HLSStream.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a9879a5f11eabdf4fac86f6632482b72 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs deleted file mode 100644 index 9f81529..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs +++ /dev/null @@ -1,1079 +0,0 @@ -#if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN - #define UNITY_PLATFORM_SUPPORTS_LINEAR -#elif UNITY_IOS || UNITY_ANDROID - #if UNITY_5_5_OR_NEWER || (UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4) - #define UNITY_PLATFORM_SUPPORTS_LINEAR - #endif -#endif - -using UnityEngine; -using System.Collections.Generic; - -#if NETFX_CORE -using Windows.Storage.Streams; -#endif - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - [System.Serializable] - public class MediaPlayerEvent : UnityEngine.Events.UnityEvent - { - public enum EventType - { - MetaDataReady, // Triggered when meta data(width, duration etc) is available - ReadyToPlay, // Triggered when the video is loaded and ready to play - Started, // Triggered when the playback starts - FirstFrameReady, // Triggered when the first frame has been rendered - FinishedPlaying, // Triggered when a non-looping video has finished playing - Closing, // Triggered when the media is closed - Error, // Triggered when an error occurs - SubtitleChange, // Triggered when the subtitles change - Stalled, // Triggered when media is stalled (eg. when lost connection to media stream) - Currently only suported on Windows platforms - Unstalled, // Triggered when media is resumed form a stalled state (eg. when lost connection is re-established) - ResolutionChanged, // Triggered when the resolution of the video has changed (including the load) Useful for adaptive streams - StartedSeeking, // Triggered whhen seeking begins - FinishedSeeking, // Triggered when seeking has finished - StartedBuffering, // Triggered when buffering begins - FinishedBuffering, // Triggered when buffering has finished - PropertiesChanged, // Triggered when any properties (eg stereo packing are changed) - this has to be triggered manually - PlaylistItemChanged,// Triggered when the new item is played in the playlist - PlaylistFinished, // Triggered when the playlist reaches the end - - // TODO: - //StartLoop, // Triggered when the video starts and is in loop mode - //EndLoop, // Triggered when the video ends and is in loop mode - } - - private List> _listeners = new List>(4); - - public bool HasListeners() - { - return (_listeners.Count > 0) || (GetPersistentEventCount() > 0); - } - - new public void AddListener(UnityEngine.Events.UnityAction call) - { - if (!_listeners.Contains(call)) - { - _listeners.Add(call); - base.AddListener(call); - } - } - - new public void RemoveListener(UnityEngine.Events.UnityAction call) - { - int index = _listeners.IndexOf(call); - if (index >= 0) - { - _listeners.RemoveAt(index); - base.RemoveListener(call); - } - } - } - - public interface IMediaPlayer - { - void OnEnable(); - void Update(); - void Render(); - } - - public interface IMediaSubtitles - { - bool LoadSubtitlesSRT(string data); - int GetSubtitleIndex(); - string GetSubtitleText(); - } - - public interface IMediaControl - { - /// - /// Be careful using this method directly. It is best to instead use the OpenVideoFromFile() method in the MediaPlayer component as this will set up the events correctly and also perform other checks - /// - bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0); - bool OpenVideoFromBuffer(byte[] buffer); - bool StartOpenVideoFromBuffer(ulong length); - bool AddChunkToVideoBuffer(byte[] chunk, ulong offset, ulong length); - bool EndOpenVideoFromBuffer(); - -#if NETFX_CORE - bool OpenVideoFromFile(IRandomAccessStream ras, string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0); -#endif - - void CloseVideo(); - - void SetLooping(bool bLooping); - bool IsLooping(); - - bool HasMetaData(); - bool CanPlay(); - bool IsPlaying(); - bool IsSeeking(); - bool IsPaused(); - bool IsFinished(); - bool IsBuffering(); - - void Play(); - void Pause(); - void Stop(); - void Rewind(); - - /// - /// The time seeked will be to the exact time - /// This can take a long time is the keyframes are far apart - /// Some platforms don't support this and instead seek to the closet keyframe - /// - void Seek(float timeMs); - - /// - /// The time seeked will be to the closet keyframe - /// - void SeekFast(float timeMs); - - /// - /// The time seeked to will be within the range [timeMS-beforeMs, timeMS+afterMs] for efficiency. - /// Only supported on macOS, iOS and tvOS. - /// Other platforms will automatically pass through to Seek() - /// - void SeekWithTolerance(float timeMs, float beforeMs, float afterMs); - - float GetCurrentTimeMs(); - - /// - /// Returns the current video time in number of seconds since 1 Jan 1970 - /// This can be converted into a DateTime using ConvertSecondsSince1970ToDateTime() - /// Only supported on macOS, iOS, tvOS and Android (using ExoPlayer API) - /// - double GetCurrentDateTimeSecondsSince1970(); - - /// - /// Returns a range of time values that can be seeked in milliseconds - /// Only supported on macOS, iOS, tvOS and Android (using ExoPlayer API) - /// - TimeRange[] GetSeekableTimeRanges(); - - float GetPlaybackRate(); - void SetPlaybackRate(float rate); - - void MuteAudio(bool bMute); - bool IsMuted(); - void SetVolume(float volume); - void SetBalance(float balance); - float GetVolume(); - float GetBalance(); - - int GetCurrentAudioTrack(); - void SetAudioTrack(int index); - - int GetCurrentVideoTrack(); - void SetVideoTrack(int index); - - float GetBufferingProgress(); - int GetBufferedTimeRangeCount(); - bool GetBufferedTimeRange(int index, ref float startTimeMs, ref float endTimeMs); - - ErrorCode GetLastError(); - long GetLastExtendedErrorCode(); - - void SetTextureProperties(FilterMode filterMode = FilterMode.Bilinear, TextureWrapMode wrapMode = TextureWrapMode.Clamp, int anisoLevel = 1); - - void GrabAudio(float[] buffer, int floatCount, int channelCount); - - int GetNumAudioChannels(); - void SetAudioHeadRotation(Quaternion q); - void ResetAudioHeadRotation(); - void SetAudioChannelMode(Audio360ChannelMode channelMode); - void SetAudioFocusEnabled(bool enabled); - void SetAudioFocusProperties(float offFocusLevel, float widthDegrees); - void SetAudioFocusRotation(Quaternion q); - void ResetAudioFocus(); - - bool WaitForNextFrame(Camera dummyCamera, int previousFrameCount); - - void SetPlayWithoutBuffering(bool playWithoutBuffering); - - // Encrypted stream support - void SetKeyServerURL(string url); - void SetKeyServerAuthToken(string token); - void SetDecryptionKeyBase64(string key); - void SetDecryptionKey(byte[] key); - } - - public interface IMediaInfo - { - /// - /// Returns media duration in milliseconds - /// - float GetDurationMs(); - - /// - /// Returns video width in pixels - /// - int GetVideoWidth(); - - /// - /// Returns video height in pixels - /// - int GetVideoHeight(); - - /// - /// - /// - /// - Rect GetCropRect(); - - /// - /// Returns the frame rate of the media. - /// - float GetVideoFrameRate(); - - /// - /// Returns the current achieved display rate in frames per second - /// - float GetVideoDisplayRate(); - - /// - /// Returns true if the media has a visual track - /// - bool HasVideo(); - - /// - /// Returns true if the media has a audio track - /// - bool HasAudio(); - - /// - /// Returns the number of audio tracks contained in the media - /// - int GetAudioTrackCount(); - - /// - /// Returns the identifier of the audio track at the index specified. - /// - string GetAudioTrackId(int index); - - /// - /// Returns the current audio track identification - /// - string GetCurrentAudioTrackId(); - - /// - /// Returns the current audio track bitrate - /// - int GetCurrentAudioTrackBitrate(); - - /// - /// Returns the number of video tracks contained in the media - /// - int GetVideoTrackCount(); - - /// - /// Returns the identifier of the video track at the index specified. - /// - string GetVideoTrackId(int index); - - /// - /// Returns the current video track identification - /// - string GetCurrentVideoTrackId(); - - /// - /// Returns the current video track bitrate - /// - int GetCurrentVideoTrackBitrate(); - - /// - /// Returns the a description of which playback path is used internally. - /// This can for example expose whether CPU or GPU decoding is being performed - /// For Windows the available player descriptions are: - /// "DirectShow" - legacy Microsoft API but still very useful especially with modern filters such as LAV - /// "MF-MediaEngine-Software" - uses the Windows 8.1 features of the Microsoft Media Foundation API, but software decoding - /// "MF-MediaEngine-Hardware" - uses the Windows 8.1 features of the Microsoft Media Foundation API, but GPU decoding - /// Android has "MediaPlayer" and "ExoPlayer" - /// macOS / tvOS / iOS just has "AVfoundation" - /// - string GetPlayerDescription(); - - /// - /// Whether this MediaPlayer instance supports linear color space - /// If it doesn't then a correction may have to be made in the shader - /// - bool PlayerSupportsLinearColorSpace(); - - /// - /// Checks if the playback is in a stalled state - /// - bool IsPlaybackStalled(); - - /// - /// The affine transform of the texture as an array of six floats: a, b, c, d, tx, ty. - /// - float[] GetTextureTransform(); - - /// - /// Gets the estimated bandwidth used by all video players (in bits per second) - /// Currently only supported on Android when using ExoPlayer API - /// - long GetEstimatedTotalBandwidthUsed(); - - /* - string GetMediaDescription(); - string GetVideoDescription(); - string GetAudioDescription();*/ - } - - public interface IMediaProducer - { - /// - /// Gets the number of textures produced by the media player. - /// - int GetTextureCount(); - - /// - /// Returns the Unity texture containing the current frame image. - /// The texture pointer will return null while the video is loading - /// This texture usually remains the same for the duration of the video. - /// There are cases when this texture can change, for instance: if the graphics device is recreated, - /// a new video is loaded, or if an adaptive stream (eg HLS) is used and it switches video streams. - /// - Texture GetTexture(int index = 0); - - /// - /// Returns a count of how many times the texture has been updated - /// - int GetTextureFrameCount(); - - /// - /// Returns whether this platform supports counting the number of times the texture has been updated - /// - bool SupportsTextureFrameCount(); - - /// - /// Returns the presentation time stamp of the current texture - /// - long GetTextureTimeStamp(); - - /// - /// Returns true if the image on the texture is upside-down - /// - bool RequiresVerticalFlip(); - - /// - /// Returns the current transformation required to convert from YpCbCr to RGB colorspaces. - /// - Matrix4x4 GetYpCbCrTransform(); - } - - public enum Platform - { - Windows, - MacOSX, - iOS, - tvOS, - Android, - WindowsPhone, - WindowsUWP, - WebGL, - PS4, - Count = 9, - Unknown = 100, - } - - public enum StereoPacking - { - None, - TopBottom, // Top is the left eye, bottom is the right eye - LeftRight, // Left is the left eye, right is the right eye - CustomUV, // Custom packing, use the mesh UV to unpack, uv0=left eye, uv1=right eye - } - - public enum StereoEye - { - Both, - Left, - Right, - } - - public enum AlphaPacking - { - None, - TopBottom, - LeftRight, - } - - public enum ErrorCode - { - None = 0, - LoadFailed = 100, - DecodeFailed = 200, - } - - public enum Orientation - { - Landscape, // Landscape Right (0 degrees) - LandscapeFlipped, // Landscape Left (180 degrees) - Portrait, // Portrait Up (90 degrees) - PortraitFlipped, // Portrait Down (-90 degrees) - } - - public enum VideoMapping - { - Unknown, - Normal, - EquiRectangular360, - EquiRectangular180, - CubeMap3x2, - } - - public enum FileFormat - { - Unknown, - HLS, - DASH, - SmoothStreaming, - } - - public static class Windows - { - public enum VideoApi - { - MediaFoundation, - DirectShow, - }; - - // WIP: Experimental feature to allow overriding audio device for VR headsets - public const string AudioDeviceOutputName_Vive = "HTC VIVE USB Audio"; - public const string AudioDeviceOutputName_Rift = "Rift Audio"; - } - - public static class Android - { - public enum VideoApi - { - MediaPlayer = 1, - ExoPlayer, - } - } - - public static class WebGL - { - public enum ExternalLibrary - { - None, - DashJs, - HlsJs, - Custom, - } - } - - // Facebooks Audio360 channel mapping - public enum Audio360ChannelMode - { - TBE_8_2 = 0, /// 8 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio - TBE_8, /// 8 channels of hybrid TBE ambisonics. NO head-locked stereo audio - TBE_6_2, /// 6 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio - TBE_6, /// 6 channels of hybrid TBE ambisonics. NO head-locked stereo audio - TBE_4_2, /// 4 channels of hybrid TBE ambisonics and 2 channels of head-locked stereo audio - TBE_4, /// 4 channels of hybrid TBE ambisonics. NO head-locked stereo audio - TBE_8_PAIR0, /// Channels 1 and 2 of TBE hybrid ambisonics - TBE_8_PAIR1, /// Channels 3 and 4 of TBE hybrid ambisonics - TBE_8_PAIR2, /// Channels 5 and 6 of TBE hybrid ambisonics - TBE_8_PAIR3, /// Channels 7 and 8 of TBE hybrid ambisonics - TBE_CHANNEL0, /// Channels 1 of TBE hybrid ambisonics - TBE_CHANNEL1, /// Channels 2 of TBE hybrid ambisonics - TBE_CHANNEL2, /// Channels 3 of TBE hybrid ambisonics - TBE_CHANNEL3, /// Channels 4 of TBE hybrid ambisonics - TBE_CHANNEL4, /// Channels 5 of TBE hybrid ambisonics - TBE_CHANNEL5, /// Channels 6 of TBE hybrid ambisonics - TBE_CHANNEL6, /// Channels 7 of TBE hybrid ambisonics - TBE_CHANNEL7, /// Channels 8 of TBE hybrid ambisonics - HEADLOCKED_STEREO, /// Head-locked stereo audio - HEADLOCKED_CHANNEL0, /// Channels 1 or left of head-locked stereo audio - HEADLOCKED_CHANNEL1, /// Channels 2 or right of head-locked stereo audio - AMBIX_4, /// 4 channels of first order ambiX - AMBIX_9, /// 9 channels of second order ambiX - AMBIX_9_2, /// 9 channels of second order ambiX with 2 channels of head-locked audio - AMBIX_16, /// 16 channels of third order ambiX - AMBIX_16_2, /// 16 channels of third order ambiX with 2 channels of head-locked audio - STEREO, /// Stereo audio - INVALID, /// Invalid/unknown map. This must always be last. - } - - public struct TimeRange - { - public float startTime, duration; - } - - public class Subtitle - { - public int index; - public string text; - public int timeStartMs, timeEndMs; - - public bool IsBefore(float time) - { - return (time > timeStartMs && time > timeEndMs); - } - - public bool IsTime(float time) - { - return (time >= timeStartMs && time < timeEndMs); - } - } - - public static class Helper - { - public const string ScriptVersion = "1.9.5"; - - public static string GetName(Platform platform) - { - string result = "Unknown"; - switch (platform) - { - case Platform.WindowsPhone: - result = "Windows Phone"; - break; - case Platform.WindowsUWP: - result = "Windows UWP"; - break; - case Platform.MacOSX: - result = "macOS"; - break; - default: - result = platform.ToString(); - break; - } - - return result; - } - - public static string GetErrorMessage(ErrorCode code) - { - string result = string.Empty; - switch (code) - { - case ErrorCode.None: - result = "No Error"; - break; - case ErrorCode.LoadFailed: - result = "Loading failed. File not found, codec not supported, video resolution too high or insufficient system resources."; -#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN - // Add extra information for older Windows versions that don't have support for modern codecs - if (SystemInfo.operatingSystem.StartsWith("Windows XP") || - SystemInfo.operatingSystem.StartsWith("Windows Vista")) - { - result += " NOTE: Windows XP and Vista don't have native support for H.264 codec. Consider using an older codec such as DivX or installing 3rd party codecs such as LAV Filters."; - } -#endif - break; - case ErrorCode.DecodeFailed: - result = "Decode failed. Possible codec not supported, video resolution/bit-depth too high, or insufficient system resources."; -#if UNITY_ANDROID - result += " On Android this is generally due to the hardware not having enough resources to decode the video. Most Android devices can only handle a maximum of one 4K video at once."; -#endif - break; - } - return result; - } - - public static string[] GetPlatformNames() - { - return new string[] { - GetName(Platform.Windows), - GetName(Platform.MacOSX), - GetName(Platform.iOS), - GetName(Platform.tvOS), - GetName(Platform.Android), - GetName(Platform.WindowsPhone), - GetName(Platform.WindowsUWP), - GetName(Platform.WebGL), - GetName(Platform.PS4), - }; - } - -#if AVPROVIDEO_DISABLE_LOGGING - [System.Diagnostics.Conditional("ALWAYS_FALSE")] -#endif - public static void LogInfo(string message, Object context = null) - { - if (context == null) - { - Debug.Log("[AVProVideo] " + message); - } - else - { - Debug.Log("[AVProVideo] " + message, context); - } - } - - public static string GetTimeString(float totalSeconds, bool showMilliseconds = false) - { - int hours = Mathf.FloorToInt(totalSeconds / (60f * 60f)); - float usedSeconds = hours * 60f * 60f; - - int minutes = Mathf.FloorToInt((totalSeconds - usedSeconds) / 60f); - usedSeconds += minutes * 60f; - - int seconds = Mathf.FloorToInt(totalSeconds - usedSeconds); - - string result; - if (hours <= 0) - { - if (showMilliseconds) - { - int milliSeconds = (int)((totalSeconds - Mathf.Floor(totalSeconds)) * 1000f); - result = string.Format("{0:00}:{1:00}:{2:000}", minutes, seconds, milliSeconds); - } - else - { - result = string.Format("{0:00}:{1:00}", minutes, seconds); - } - } - else - { - if (showMilliseconds) - { - int milliSeconds = (int)((totalSeconds - Mathf.Floor(totalSeconds)) * 1000f); - result = string.Format("{2}:{0:00}:{1:00}:{3:000}", minutes, seconds, hours, milliSeconds); - } - else - { - result = string.Format("{2}:{0:00}:{1:00}", minutes, seconds, hours); - } - } - - return result; - } - - /// - /// Convert texture transform matrix to an enum of orientation types - /// - public static Orientation GetOrientation(float[] t) - { - Orientation result = Orientation.Landscape; - if (t[0] == 0f && t[1]== 1f && t[2] == -1f && t[3] == 0f) - { - result = Orientation.Portrait; - } else - if (t[0] == 0f && t[1] == -1f && t[2] == 1f && t[3] == 0f) - { - result = Orientation.PortraitFlipped; - } else - if (t[0]== 1f && t[1] == 0f && t[2] == 0f && t[3] == 1f) - { - result = Orientation.Landscape; - } else - if (t[0] == -1f && t[1] == 0f && t[2] == 0f && t[3] == -1f) - { - result = Orientation.LandscapeFlipped; - } - return result; - } - - public static Matrix4x4 GetMatrixForOrientation(Orientation ori) - { - // TODO: cache these matrices - Matrix4x4 portrait = Matrix4x4.TRS(new Vector3(0f, 1f, 0f), Quaternion.Euler(0f, 0f, -90f), Vector3.one); - Matrix4x4 portraitFlipped = Matrix4x4.TRS(new Vector3(1f, 0f, 0f), Quaternion.Euler(0f, 0f, 90f), Vector3.one); - Matrix4x4 landscapeFlipped = Matrix4x4.TRS(new Vector3(1f, 1f, 0f), Quaternion.identity, new Vector3(-1f, -1f, 1f)); - - Matrix4x4 result = Matrix4x4.identity; - switch (ori) - { - case Orientation.Landscape: - break; - case Orientation.LandscapeFlipped: - result = landscapeFlipped; - break; - case Orientation.Portrait: - result = portrait; - break; - case Orientation.PortraitFlipped: - result = portraitFlipped; - break; - } - return result; - } - - public static void SetupStereoEyeModeMaterial(Material material, StereoEye mode) - { - switch (mode) - { - case StereoEye.Both: - material.DisableKeyword("FORCEEYE_LEFT"); - material.DisableKeyword("FORCEEYE_RIGHT"); - material.EnableKeyword("FORCEEYE_NONE"); - break; - case StereoEye.Left: - material.DisableKeyword("FORCEEYE_NONE"); - material.DisableKeyword("FORCEEYE_RIGHT"); - material.EnableKeyword("FORCEEYE_LEFT"); - break; - case StereoEye.Right: - material.DisableKeyword("FORCEEYE_NONE"); - material.DisableKeyword("FORCEEYE_LEFT"); - material.EnableKeyword("FORCEEYE_RIGHT"); - break; - } - } - public static void SetupLayoutMaterial(Material material, VideoMapping mapping) - { - material.DisableKeyword("LAYOUT_NONE"); - material.DisableKeyword("LAYOUT_EQUIRECT180"); - - switch (mapping) - { - // Only EquiRectangular180 currently does anything in the shader - case VideoMapping.EquiRectangular180: - material.EnableKeyword("LAYOUT_EQUIRECT180"); - break; - } - } - - public static void SetupStereoMaterial(Material material, StereoPacking packing, bool displayDebugTinting) - { - material.DisableKeyword("STEREO_CUSTOM_UV"); - material.DisableKeyword("STEREO_TOP_BOTTOM"); - material.DisableKeyword("STEREO_LEFT_RIGHT"); - material.DisableKeyword("MONOSCOPIC"); - - // Enable the required mode - switch (packing) - { - case StereoPacking.None: - break; - case StereoPacking.TopBottom: - material.EnableKeyword("STEREO_TOP_BOTTOM"); - break; - case StereoPacking.LeftRight: - material.EnableKeyword("STEREO_LEFT_RIGHT"); - break; - case StereoPacking.CustomUV: - material.EnableKeyword("STEREO_CUSTOM_UV"); - break; - } - - if (displayDebugTinting) - { - material.EnableKeyword("STEREO_DEBUG"); - } - else - { - material.DisableKeyword("STEREO_DEBUG"); - } - } - - public static void SetupAlphaPackedMaterial(Material material, AlphaPacking packing) - { - material.DisableKeyword("ALPHAPACK_TOP_BOTTOM"); - material.DisableKeyword("ALPHAPACK_LEFT_RIGHT"); - material.DisableKeyword("ALPHAPACK_NONE"); - - // Enable the required mode - switch (packing) - { - case AlphaPacking.None: - break; - case AlphaPacking.TopBottom: - material.EnableKeyword("ALPHAPACK_TOP_BOTTOM"); - break; - case AlphaPacking.LeftRight: - material.EnableKeyword("ALPHAPACK_LEFT_RIGHT"); - break; - } - } - - public static void SetupGammaMaterial(Material material, bool playerSupportsLinear) - { -#if UNITY_PLATFORM_SUPPORTS_LINEAR - if (QualitySettings.activeColorSpace == ColorSpace.Linear && !playerSupportsLinear) - { - material.EnableKeyword("APPLY_GAMMA"); - } - else - { - material.DisableKeyword("APPLY_GAMMA"); - } -#endif - } - - public static int ConvertTimeSecondsToFrame(float seconds, float frameRate) - { - return Mathf.FloorToInt(frameRate * seconds); - } - - public static float ConvertFrameToTimeSeconds(int frame, float frameRate) - { - float frameDurationSeconds = 1f / frameRate; - return ((float)frame * frameDurationSeconds) + (frameDurationSeconds * 0.5f); // Add half a frame we that the time lands in the middle of the frame range and not at the edges - } - - public static float FindNextKeyFrameTimeSeconds(float seconds, float frameRate, int keyFrameInterval) - { - int currentFrame = Helper.ConvertTimeSecondsToFrame(seconds, frameRate); - // TODO: allow specifying a minimum number of frames so that if currentFrame is too close to nextKeyFrame, it will calculate the next-next keyframe - int nextKeyFrame = keyFrameInterval * Mathf.CeilToInt((float)(currentFrame + 1) / (float)keyFrameInterval); - return Helper.ConvertFrameToTimeSeconds(nextKeyFrame, frameRate); - } - - public static System.DateTime ConvertSecondsSince1970ToDateTime(double secondsSince1970) - { - System.TimeSpan time = System.TimeSpan.FromSeconds(secondsSince1970); - return new System.DateTime(1970, 1, 1).Add(time); - } - - public static void DrawTexture(Rect screenRect, Texture texture, ScaleMode scaleMode, AlphaPacking alphaPacking, Material material) - { - if (Event.current.type == EventType.Repaint) - { - float textureWidth = texture.width; - float textureHeight = texture.height; - switch (alphaPacking) - { - case AlphaPacking.LeftRight: - textureWidth *= 0.5f; - break; - case AlphaPacking.TopBottom: - textureHeight *= 0.5f; - break; - } - - float aspectRatio = (float)textureWidth / (float)textureHeight; - Rect sourceRect = new Rect(0f, 0f, 1f, 1f); - switch (scaleMode) - { - case ScaleMode.ScaleAndCrop: - { - float screenRatio = screenRect.width / screenRect.height; - if (screenRatio > aspectRatio) - { - float adjust = aspectRatio / screenRatio; - sourceRect = new Rect(0f, (1f - adjust) * 0.5f, 1f, adjust); - } - else - { - float adjust = screenRatio / aspectRatio; - sourceRect = new Rect(0.5f - adjust * 0.5f, 0f, adjust, 1f); - } - } - break; - case ScaleMode.ScaleToFit: - { - float screenRatio = screenRect.width / screenRect.height; - if (screenRatio > aspectRatio) - { - float adjust = aspectRatio / screenRatio; - screenRect = new Rect(screenRect.xMin + screenRect.width * (1f - adjust) * 0.5f, screenRect.yMin, adjust * screenRect.width, screenRect.height); - } - else - { - float adjust = screenRatio / aspectRatio; - screenRect = new Rect(screenRect.xMin, screenRect.yMin + screenRect.height * (1f - adjust) * 0.5f, screenRect.width, adjust * screenRect.height); - } - } - break; - case ScaleMode.StretchToFill: - break; - } - - Graphics.DrawTexture(screenRect, texture, sourceRect, 0, 0, 0, 0, GUI.color, material); - } - } - - // Converts a non-readable texture to a readable Texture2D. - // "targetTexture" can be null or you can pass in an existing texture. - // Remember to Destroy() the returned texture after finished with it - public static Texture2D GetReadableTexture(Texture inputTexture, bool requiresVerticalFlip, Orientation ori, Texture2D targetTexture) - { - Texture2D resultTexture = targetTexture; - - RenderTexture prevRT = RenderTexture.active; - - int textureWidth = inputTexture.width; - int textureHeight = inputTexture.height; -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - if (ori == Orientation.Portrait || ori == Orientation.PortraitFlipped) - { - textureWidth = inputTexture.height; - textureHeight = inputTexture.width; - } -#endif - - // Blit the texture to a temporary RenderTexture - // This handles any format conversion that is required and allows us to use ReadPixels to copy texture from RT to readable texture - RenderTexture tempRT = RenderTexture.GetTemporary(textureWidth, textureHeight, 0, RenderTextureFormat.ARGB32); - - if (ori == Orientation.Landscape) - { - if (!requiresVerticalFlip) - { - Graphics.Blit(inputTexture, tempRT); - } - else - { - // The above Blit can't flip unless using a material, so we use Graphics.DrawTexture instead - GL.PushMatrix(); - RenderTexture.active = tempRT; - GL.LoadPixelMatrix(0f, tempRT.width, 0f, tempRT.height); - Rect sourceRect = new Rect(0f, 0f, 1f, 1f); - // NOTE: not sure why we need to set y to -1, without this there is a 1px gap at the bottom - Rect destRect = new Rect(0f, -1f, tempRT.width, tempRT.height); - - Graphics.DrawTexture(destRect, inputTexture, sourceRect, 0, 0, 0, 0); - GL.PopMatrix(); - GL.InvalidateState(); - } - } -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - else - { - Matrix4x4 m = Matrix4x4.identity; - switch (ori) - { - case Orientation.Portrait: - m = Matrix4x4.TRS(new Vector3(0f, inputTexture.width, 0f), Quaternion.Euler(0f, 0f, -90f), Vector3.one); - break; - case Orientation.PortraitFlipped: - m = Matrix4x4.TRS(new Vector3(inputTexture.height, 0f, 0f), Quaternion.Euler(0f, 0f, 90f), Vector3.one); - break; - case Orientation.LandscapeFlipped: - m = Matrix4x4.TRS(new Vector3(inputTexture.width, inputTexture.height, 0f), Quaternion.identity, new Vector3(-1f, -1f, 1f)); - break; - } - - // The above Blit can't flip unless using a material, so we use Graphics.DrawTexture instead - GL.InvalidateState(); - GL.PushMatrix(); - GL.Clear(false, true, Color.red); - RenderTexture.active = tempRT; - GL.LoadPixelMatrix(0f, tempRT.width, 0f, tempRT.height); - Rect sourceRect = new Rect(0f, 0f, 1f, 1f); - // NOTE: not sure why we need to set y to -1, without this there is a 1px gap at the bottom - Rect destRect = new Rect(0f, -1f, inputTexture.width, inputTexture.height); - GL.MultMatrix(m); - - Graphics.DrawTexture(destRect, inputTexture, sourceRect, 0, 0, 0, 0); - GL.PopMatrix(); - GL.InvalidateState(); - } -#endif - - if (resultTexture == null) - { - resultTexture = new Texture2D(textureWidth, textureHeight, TextureFormat.ARGB32, false); - } - - RenderTexture.active = tempRT; - resultTexture.ReadPixels(new Rect(0f, 0f, textureWidth, textureHeight), 0, 0, false); - resultTexture.Apply(false, false); - RenderTexture.ReleaseTemporary(tempRT); - - RenderTexture.active = prevRT; - - return resultTexture; - } - - /// - /// Parse time in format: 00:00:48,924 and convert to milliseconds - /// - private static int ParseTimeToMs(string text) - { - int result = 0; - - string[] digits = text.Split(new char[] { ':', ',' }); - - if (digits.Length == 4) - { - int hours = int.Parse(digits[0]); - int minutes = int.Parse(digits[1]); - int seconds = int.Parse(digits[2]); - int milliseconds = int.Parse(digits[3]); - - result = milliseconds + (seconds + (minutes + (hours * 60)) * 60) * 1000; - } - - return result; - } - - public static List LoadSubtitlesSRT(string data) - { - List result = null; - - if (!string.IsNullOrEmpty(data)) - { - data = data.Trim(); - var rx = new System.Text.RegularExpressions.Regex("\n\r|\r\n|\n|\r"); - string[] lines = rx.Split(data); - - if (lines.Length >= 3) - { - result = new List(256); - - int count = 0; - int index = 0; - Subtitle subtitle = null; - for (int i = 0; i < lines.Length; i++) - { - if (index == 0) - { - subtitle = new Subtitle(); - subtitle.index = count;// int.Parse(lines[i]); - } - else if (index == 1) - { - string[] times = lines[i].Split(new string[] { " --> " }, System.StringSplitOptions.RemoveEmptyEntries); - if (times.Length == 2) - { - subtitle.timeStartMs = ParseTimeToMs(times[0]); - subtitle.timeEndMs = ParseTimeToMs(times[1]); - } - } - else - { - if (!string.IsNullOrEmpty(lines[i])) - { - if (index == 2) - { - subtitle.text = lines[i]; - } - else - { - subtitle.text += "\n" + lines[i]; - } - } - } - - if (string.IsNullOrEmpty(lines[i]) && index > 1) - { - result.Add(subtitle); - index = 0; - count++; - subtitle = null; - } - else - { - index++; - } - } - - // Handle the last one - if (subtitle != null) - { - result.Add(subtitle); - subtitle = null; - } - } - else - { - Debug.LogWarning("[AVProVideo] SRT format doesn't appear to be valid"); - } - } - - return result; - } - } -} diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs.meta deleted file mode 100644 index 36ea5f1..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Interfaces.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 00407cbf3ca503142903894431082ac6 -timeCreated: 1438695622 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs deleted file mode 100644 index 4a472e8..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs +++ /dev/null @@ -1,318 +0,0 @@ -using System; -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// This media player fakes video playback for platforms that aren't supported - /// - public sealed class NullMediaPlayer : BaseMediaPlayer - { - private bool _isPlaying = false; - private bool _isPaused = false; - private float _currentTime = 0.0f; -// private bool _audioMuted = false; - private float _volume = 0.0f; - private float _playbackRate = 1.0f; - private bool _bLoop; - - private int _Width = 256; - private int _height = 256; - private Texture2D _texture; - private Texture2D _texture_AVPro; - private Texture2D _texture_AVPro1; - private float _fakeFlipTime; - private int _frameCount; - - private const float FrameRate = 10f; - - public override string GetVersion() - { - return "0.0.0"; - } - - public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0) - { - _texture_AVPro = (Texture2D)Resources.Load("AVPro"); - _texture_AVPro1 = (Texture2D)Resources.Load("AVPro1"); - - if( _texture_AVPro ) - { - _Width = _texture_AVPro.width; - _height = _texture_AVPro.height; - } - - _texture = _texture_AVPro; - - _fakeFlipTime = 0.0f; - _frameCount = 0; - - return true; - } - - public override void CloseVideo() - { - _frameCount = 0; - Resources.UnloadAsset(_texture_AVPro); - Resources.UnloadAsset(_texture_AVPro1); - - base.CloseVideo(); - } - - public override void SetLooping( bool bLooping ) - { - _bLoop = bLooping; - } - - public override bool IsLooping() - { - return _bLoop; - } - - public override bool HasMetaData() - { - return true; - } - - public override bool CanPlay() - { - return true; - } - - public override bool HasAudio() - { - return false; - } - - public override bool HasVideo() - { - return false; - } - - public override void Play() - { - _isPlaying = true; - _isPaused = false; - _fakeFlipTime = 0.0f; - } - - public override void Pause() - { - _isPlaying = false; - _isPaused = true; - } - - public override void Stop() - { - _isPlaying = false; - _isPaused = false; - } - - public override bool IsSeeking() - { - return false; - } - public override bool IsPlaying() - { - return _isPlaying; - } - public override bool IsPaused() - { - return _isPaused; - } - public override bool IsFinished() - { - return _isPlaying && (_currentTime >= GetDurationMs()); - } - - public override bool IsBuffering() - { - return false; - } - - public override float GetDurationMs() - { - return 10.0f * 1000.0f; - } - - public override int GetVideoWidth() - { - return _Width; - } - - public override int GetVideoHeight() - { - return _height; - } - - public override float GetVideoDisplayRate() - { - return FrameRate; - } - - public override Texture GetTexture( int index ) - { -// return _texture ? _texture : Texture2D.whiteTexture; - return _texture; - } - - public override int GetTextureFrameCount() - { - return _frameCount; - } - - public override bool RequiresVerticalFlip() - { - return false; - } - - public override void Seek(float timeMs) - { - _currentTime = timeMs; - } - - public override void SeekFast(float timeMs) - { - _currentTime = timeMs; - } - - public override void SeekWithTolerance(float timeMs, float beforeMs, float afterMs) - { - _currentTime = timeMs; - } - - public override float GetCurrentTimeMs() - { - return _currentTime; - } - - public override void SetPlaybackRate(float rate) - { - _playbackRate = rate; - } - - public override float GetPlaybackRate() - { - return _playbackRate; - } - - public override float GetBufferingProgress() - { - return 0f; - } - - public override void MuteAudio(bool bMuted) - { -// _audioMuted = bMuted; - } - - public override bool IsMuted() - { - return true; - } - - public override void SetVolume(float volume) - { - _volume = volume; - } - - public override float GetVolume() - { - return _volume; - } - - public override int GetAudioTrackCount() - { - return 0; - } - - public override int GetCurrentAudioTrack() - { - return 0; - } - - public override void SetAudioTrack( int index ) - { - } - - public override int GetVideoTrackCount() - { - return 0; - } - - public override int GetCurrentVideoTrack() - { - return 0; - } - - public override string GetCurrentAudioTrackId() - { - // TODO - return ""; - } - - public override int GetCurrentAudioTrackBitrate() - { - // TODO - return 0; - } - public override void SetVideoTrack( int index ) - { - } - - public override string GetCurrentVideoTrackId() - { - return ""; - } - - public override int GetCurrentVideoTrackBitrate() - { - return 0; - } - - public override float GetVideoFrameRate() - { - return 0.0f; - } - - public override void Update() - { - UpdateSubtitles(); - - if (_isPlaying) - { - _currentTime += Time.deltaTime * 1000.0f; - if (_currentTime >= GetDurationMs()) - { - _currentTime = GetDurationMs(); - if( _bLoop ) - { - Rewind(); - } - } - - // - - _fakeFlipTime += Time.deltaTime; - if( _fakeFlipTime >= (1.0 / FrameRate)) - { - _fakeFlipTime = 0.0f; - _texture = ( _texture == _texture_AVPro ) ? _texture_AVPro1 : _texture_AVPro; - _frameCount++; - } - } - } - - public override void Render() - { - } - - public override void Dispose() - { - } - } -} \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs.meta deleted file mode 100644 index 339f4c2..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/NullMediaPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 478671181ab1c9b42be924da77d7fcbe -timeCreated: 1438703159 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs deleted file mode 100644 index d347ce3..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs +++ /dev/null @@ -1,932 +0,0 @@ -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_IPHONE || UNITY_IOS || UNITY_TVOS -#if UNITY_5 || UNITY_5_4_OR_NEWER - #if !UNITY_5_0 && !UNITY_5_1 - #define AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - #endif -#endif - -using UnityEngine; -using UnityEngine.Rendering; -using System; -using System.Collections; -using System.Runtime.InteropServices; -using System.Text.RegularExpressions; -using AOT; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// macOS, iOS and tvOS implementation of BaseMediaPlayer - /// - public class OSXMediaPlayer : BaseMediaPlayer - { -#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX - private const string PluginName = "AVProVideo"; -#elif UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - private const string PluginName = "__Internal"; -#endif - - // Native Interface - - private enum AVPPluginEventType - { - PlayerRender, - PlayerFreeResources, - } - - private enum AVPPluginColorSpace - { - Uninitialized, - Gamma, - Linear - }; - - private enum AVPPlayerStatus - { - Failed = -1, - Unknown, - ReadyToPlay, - Playing, - Finished, - Seeking, - Buffering - } - - private enum AVPLogFlag - { - Error = 1 << 0, - Warning = 1 << 1, - Info = 1 << 2, - Debug = 1 << 3, - Verbose = 1 << 4, - }; - - private enum AVPLogLevel - { - Off = 0, - Error = AVPLogFlag.Error, - Warning = AVPLogFlag.Error | AVPLogFlag.Warning, - Info = AVPLogFlag.Error | AVPLogFlag.Warning | AVPLogFlag.Info, - Debug = AVPLogFlag.Error | AVPLogFlag.Warning | AVPLogFlag.Info | AVPLogFlag.Debug, - Verbose = AVPLogFlag.Error | AVPLogFlag.Warning | AVPLogFlag.Info | AVPLogFlag.Debug | AVPLogFlag.Verbose, - All = -1 - }; - - [StructLayout(LayoutKind.Sequential, Pack=4)] - private struct AVPPlayerTextureInfo - { - public IntPtr native; - public int width; - public int height; - public int format; - public int flipped; - }; - - [StructLayout(LayoutKind.Sequential, Pack=4)] - private struct AVPPlayerTimeRange - { - public double start; - public double duration; - }; - - [DllImport(PluginName)] - private static extern string AVPGetVersion(); - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - [DllImport(PluginName)] - private static extern IntPtr AVPGetRenderEventFunc(); -#endif - - [DllImport(PluginName)] - private static extern ErrorCode AVPPlayerGetLastError(IntPtr player); - - [DllImport(PluginName)] - private static extern double AVPPlayerGetCurrentTime(IntPtr player); - - [DllImport(PluginName)] - private static extern double AVPPlayerGetCurrentDate(IntPtr player); - - [DllImport(PluginName)] - private static extern double AVPPlayerGetDuration(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetFrameCount(IntPtr player); - - [DllImport(PluginName)] - private static extern double AVPPlayerGetFrameRate(IntPtr player); - - [DllImport(PluginName)] - private static extern long AVPPlayerGetFrameTimeStamp(IntPtr player); - - [DllImport(PluginName)] - private static extern float AVPPlayerGetNominalFrameRate(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetHandle(IntPtr player); - - [DllImport(PluginName)] - private static extern AVPPlayerStatus AVPPlayerGetStatus(IntPtr player); - - [DllImport(PluginName)] - private static extern float AVPPlayerGetBufferingProgress(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetBufferedTimeRangeCount(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerGetBufferedTimeRange(IntPtr player, int index, out float start, out float end); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetSeekableTimeRanges(IntPtr player, [In, Out] AVPPlayerTimeRange[] ranges, ref int count); - - [DllImport(PluginName)] - private static extern bool AVPPlayerGetTextures(IntPtr player, [In, Out] AVPPlayerTextureInfo[] textures, ref int count); - - [DllImport(PluginName)] - private static extern bool AVPPlayerGetTextureTransform(IntPtr player, [In, Out] float[] transform); - - [DllImport(PluginName)] - private static extern bool AVPPlayerGetYpCbCrTransform(IntPtr player, ref float transform); - - [DllImport(PluginName)] - private static extern float AVPPlayerGetVolume(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerHasAudio(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerHasVideo(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerHasMetaData(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerIsLooping(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetLooping(IntPtr player, bool looping); - - [DllImport(PluginName)] - private static extern bool AVPPlayerIsMuted(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetMuted(IntPtr player, bool muted); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetVolume(IntPtr player, float volume); - - [DllImport(PluginName)] - private static extern IntPtr AVPPlayerNew(bool useYuv); - - [DllImport(PluginName)] - private static extern IntPtr AVPPlayerRelease(IntPtr player); - - [DllImport(PluginName)] - private static extern bool AVPPlayerOpenFile(IntPtr player, string path); - - [DllImport(PluginName)] - private static extern bool AVPPlayerOpenURL(IntPtr player, string url, string headers); - - [DllImport(PluginName)] - private static extern void AVPPlayerClose(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerPlay(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerPause(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerSeek(IntPtr player, double time); - - [DllImport(PluginName)] - private static extern void AVPPlayerSeekFast(IntPtr player, double time); - - [DllImport(PluginName)] - private static extern void AVPPlayerSeekWithTolerance(IntPtr player, double time, double before, double after); - - [DllImport(PluginName)] - private static extern float AVPPlayerGetPlaybackRate(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetPlaybackRate(IntPtr player, float rate); - - [DllImport(PluginName)] - private static extern bool AVPPlayerUpdate(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetAudioTrackCount(IntPtr player); - - [DllImport(PluginName)] - private static extern string AVPPlayerGetAudioTrackId(IntPtr player, int index); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetCurrentAudioTrack(IntPtr player); - - [DllImport(PluginName)] - private static extern string AVPPlayerGetCurrentAudioTrackId(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetCurrentAudioTrackBitrate(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetVideoTrackCount(IntPtr player); - - [DllImport(PluginName)] - private static extern string AVPPlayerGetVideoTrackId(IntPtr player, int index); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetCurrentVideoTrack(IntPtr player); - - [DllImport(PluginName)] - private static extern string AVPPlayerGetCurrentVideoTrackId(IntPtr player); - - [DllImport(PluginName)] - private static extern int AVPPlayerGetCurrentVideoTrackBitrate(IntPtr player); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetAudioTrack(IntPtr player, int track); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetVideoTrack(IntPtr player, int track); - - [DllImport(PluginName)] - private static extern int AVPPlayerExtractFrame(IntPtr player, [In, Out] AVPPlayerTextureInfo[] textures, ref int count, double timeout); - - [DllImport(PluginName)] - private static extern void AVPPlayerAddValueDidChangeObserver(IntPtr player, IntPtr self, IntPtr callback, string key, uint flags); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetKeyServerURL(IntPtr player, string url); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetKeyServerAuthToken(IntPtr player, string token); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetDecryptionKeyBase64(IntPtr player, string key); - - [DllImport(PluginName)] - private static extern void AVPPlayerSetDecryptionKey(IntPtr player, byte[] key, int len); - - [DllImport(PluginName)] - private static extern void AVPlayerSetPlayWithoutBuffering(IntPtr player, bool playWithoutBuffering); - - [DllImport(PluginName)] - private static extern void AVPPluginRegister(); - - [DllImport(PluginName)] - private static extern void AVPPluginInitialise(AVPPluginColorSpace colorSpace); - - [DllImport(PluginName)] - private static extern void AVPPluginSetDebugLogFunction(IntPtr fn); - - // MediaPlayer Interface - - private static bool _initialised = false; -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - private static IntPtr _renderEventFunc = IntPtr.Zero; -#endif - private static Regex _matchURLRegex = null; - -#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] -#endif - private delegate void DebugLogCallbackDelegate(int level, int flags, string str); - -#if UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - [MonoPInvokeCallback(typeof(DebugLogCallbackDelegate))] -#endif - private static void DebugLogCallback(int level, int flags, string str) - { - if ((flags & (int)AVPLogFlag.Error) == (int)AVPLogFlag.Error) - { - Debug.LogError(str); - } - else if ((flags & (int)AVPLogFlag.Warning) == (int)AVPLogFlag.Warning) - { - Debug.LogWarning(str); - } - else - { - Debug.Log(str); - } - } - - private static void IssuePluginEvent(AVPPluginEventType type, int param) - { - // Build eventId from the type and param. - int eventId = 0x0FA60000 | ((int)type << 12); - eventId |= param & 0xfff; - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - GL.IssuePluginEvent(_renderEventFunc, eventId); -#else - GL.IssuePluginEvent(eventId); -#endif - } - -#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] -#endif - private delegate void ValueAtKeyPathDidChangeDelegate(IntPtr self, string keyPath); - -#if UNITY_IPHONE || UNITY_IOS || UNITY_TVOS - [MonoPInvokeCallback(typeof(ValueAtKeyPathDidChangeDelegate))] -#endif - private static void ValueAtKeyPathDidChangeThunk(IntPtr self, string keyPath) - { - GCHandle handle = GCHandle.FromIntPtr(self); - OSXMediaPlayer player = (OSXMediaPlayer)handle.Target; - player.ValueAtKeyPathDidChange(keyPath); - } - - private void ValueAtKeyPathDidChange(string keyPath) - { - if (keyPath == "seekableTimeRanges") - { - AVPPlayerTimeRange[] ranges = new AVPPlayerTimeRange[4]; - int count = ranges.Length; - int numRanges = AVPPlayerGetSeekableTimeRanges(_player, ranges, ref count); - if (numRanges > count) - { - ranges = new AVPPlayerTimeRange[numRanges]; - count = numRanges; - AVPPlayerGetSeekableTimeRanges(_player, ranges, ref count); - } - if (_seekableTimeRanges.Length != count) - { - _seekableTimeRanges = new TimeRange[count]; - } - for (int i = 0; i < count; ++i) - { - _seekableTimeRanges[i].startTime = (float)(ranges[i].start * 1000.0); - _seekableTimeRanges[i].duration = (float)(ranges[i].duration * 1000.0); - } - } - } - - static void Initialise() - { - if (!_initialised) - { - _initialised = true; - -#if ((UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX) && !UNITY_5) || (UNITY_IPHONE || UNITY_IOS || UNITY_TVOS) - AVPPluginRegister(); -#endif - - DebugLogCallbackDelegate callbackDelegate = new DebugLogCallbackDelegate(DebugLogCallback); - IntPtr func = Marshal.GetFunctionPointerForDelegate(callbackDelegate); - AVPPluginSetDebugLogFunction(func); - - AVPPluginColorSpace colorSpace = QualitySettings.activeColorSpace == ColorSpace.Linear ? AVPPluginColorSpace.Linear : AVPPluginColorSpace.Gamma; - AVPPluginInitialise(colorSpace); - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - _renderEventFunc = AVPGetRenderEventFunc(); -#endif - - _matchURLRegex = new Regex("^[a-zA-Z][a-zA-Z0-9+-.]*://.*$"); - } - } - - private IntPtr _player = IntPtr.Zero; // The native player instance. - private int _handle = 0; // Handle to the native player for use with IssuePluginEvent. - private AVPPlayerStatus _status = AVPPlayerStatus.Unknown; - private int _planeCount = 0; - private Texture2D[] _texture = new Texture2D[2]; - private int _width = 0; - private int _height = 0; - private bool _flipped = false; - private bool _isMetaDataReady = false; - private GCHandle _thisHandle; - private bool _useYpCbCr = false; - private Matrix4x4 _YpCbCrTransform = Matrix4x4.identity; - private bool _YpCbCrTransformIsValid = false; - - static OSXMediaPlayer() - { - Initialise(); - } - - public OSXMediaPlayer(bool useYpCbCr = false) - { - _useYpCbCr = useYpCbCr; - _player = AVPPlayerNew(useYpCbCr); - _handle = AVPPlayerGetHandle(_player); - - _thisHandle = GCHandle.Alloc(this, GCHandleType.Normal); - ValueAtKeyPathDidChangeDelegate callbackDelegate = new ValueAtKeyPathDidChangeDelegate(ValueAtKeyPathDidChangeThunk); - - IntPtr self = GCHandle.ToIntPtr(_thisHandle); - IntPtr callback = Marshal.GetFunctionPointerForDelegate(callbackDelegate); - AVPPlayerAddValueDidChangeObserver(_player, self, callback, "seekableTimeRanges", 0); - } - - // Convenience method for calling OSXMediaPlayer.IssuePluginEvent. - // - private void IssuePluginEvent(AVPPluginEventType type) - { - OSXMediaPlayer.IssuePluginEvent(type, _handle); - } - - // BaseMediaPlayer Overrides - - public override string GetVersion() - { - return AVPGetVersion(); - } - - public override bool OpenVideoFromFile(string path, long offset /* ignored */, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0) - { - bool success = false; - if (_matchURLRegex.IsMatch(path)) - { - success = AVPPlayerOpenURL(_player, path, httpHeaderJson); - } - else - { - success = AVPPlayerOpenFile(_player, path); - } - return success; - } - - public override void CloseVideo() - { - AVPPlayerClose(_player); - - if (_texture[0] != null) - { - IssuePluginEvent(AVPPluginEventType.PlayerFreeResources); - // Have to update with zero to release Metal textures! - for (int i = 0; i < _planeCount; ++i) - { - _texture[i].UpdateExternalTexture(IntPtr.Zero); - Texture2D.Destroy(_texture[i]); - _texture[i] = null; - } - } - - _width = 0; - _height = 0; - _isMetaDataReady = false; - _planeCount = 0; - _YpCbCrTransformIsValid = false; - - base.CloseVideo(); - } - - public override bool IsLooping() - { - return AVPPlayerIsLooping(_player); - } - - public override void SetLooping(bool looping) - { - AVPPlayerSetLooping(_player, looping); - } - - public override bool HasAudio() - { - return AVPPlayerHasAudio(_player); - } - - public override bool HasVideo() - { - return AVPPlayerHasVideo(_player); - } - - public override bool HasMetaData() - { - return _isMetaDataReady; - } - - public override bool CanPlay() - { - return _status >= AVPPlayerStatus.ReadyToPlay; - } - - public override void Play() - { - AVPPlayerPlay(_player); - } - - public override void Pause() - { - AVPPlayerPause(_player); - } - - public override void Stop() - { - AVPPlayerPause(_player); - } - - public override void Seek(float ms) - { - AVPPlayerSeek(_player, ms / 1000.0); - } - - public override void SeekFast(float ms) - { - AVPPlayerSeekFast(_player, ms / 1000.0); - } - - public override void SeekWithTolerance(float timeMs, float beforeMs, float afterMs) - { - AVPPlayerSeekWithTolerance(_player, timeMs / 1000.0, beforeMs / 1000.0, afterMs / 1000.0); - } - - public override float GetCurrentTimeMs() - { - return (float)(AVPPlayerGetCurrentTime(_player) * 1000.0f); - } - - public override double GetCurrentDateTimeSecondsSince1970() - { - return AVPPlayerGetCurrentDate(_player); - } - - public override void SetPlaybackRate(float rate) - { - AVPPlayerSetPlaybackRate(_player, rate); - } - - public override float GetPlaybackRate() - { - return AVPPlayerGetPlaybackRate(_player); - } - - public override float GetDurationMs() - { - return (float)(AVPPlayerGetDuration(_player) * 1000.0f); - } - - public override int GetVideoWidth() - { - return _width; - } - - public override int GetVideoHeight() - { - return _height; - } - - public override float GetVideoDisplayRate() - { - return (float)AVPPlayerGetFrameRate(_player); - } - - public override bool IsSeeking() - { - return _status == AVPPlayerStatus.Seeking; - } - - public override bool IsPlaying() - { - return _status == AVPPlayerStatus.Playing; - } - - public override bool IsPaused() - { - return _status == AVPPlayerStatus.ReadyToPlay; - } - - public override bool IsFinished() - { - return _status == AVPPlayerStatus.Finished; - } - - public override bool IsBuffering() - { - return _status == AVPPlayerStatus.Buffering; - } - - public override float GetBufferingProgress() - { - return AVPPlayerGetBufferingProgress(_player); - } - - public override int GetBufferedTimeRangeCount() - { - return AVPPlayerGetBufferedTimeRangeCount(_player); - } - - public override bool GetBufferedTimeRange(int index, ref float startTimeMs, ref float endTimeMs) - { - return AVPPlayerGetBufferedTimeRange(_player, index, out startTimeMs, out endTimeMs); - } - - public override bool WaitForNextFrame(Camera camera, int previousFrameCount) - { - int count = 2; - AVPPlayerTextureInfo[] textures = new AVPPlayerTextureInfo[count]; - int ret = AVPPlayerExtractFrame(_player, textures, ref count, 0.0); - if (ret == 0) - { - _planeCount = count; - for (int i = 0; i < count; ++i) - { - if (_texture[i] == null || _texture[i].width != textures[i].width || _texture[i].height != textures[i].height || _texture[i].format != (TextureFormat)textures[i].format) - { - _texture[i] = Texture2D.CreateExternalTexture(textures[i].width, textures[i].height, (TextureFormat)textures[i].format, /*mipmap*/ false, /*linear*/ false, textures[i].native); - if (i == 0) - { - _width = textures[i].width; - _height = textures[i].height; - _flipped = textures[i].flipped != 0; - } - } - else - { - _texture[i].UpdateExternalTexture(textures[i].native); - } - } - return true; - } - return false; - } - - public override void SetPlayWithoutBuffering(bool playWithoutBuffering) - { - AVPlayerSetPlayWithoutBuffering(_player, playWithoutBuffering); - } - - public override void SetKeyServerURL(string url) - { - AVPPlayerSetKeyServerURL(_player, url); - } - - public override void SetKeyServerAuthToken(string token) - { - AVPPlayerSetKeyServerAuthToken(_player, token); - } - - public override void SetDecryptionKeyBase64(string key) - { - AVPPlayerSetDecryptionKeyBase64(_player, key); - } - - public override void SetDecryptionKey(byte[] key) - { - AVPPlayerSetDecryptionKey(_player, key, key.Length); - } - - // IMediaProducer - - public override int GetTextureCount() - { - return _planeCount; - } - - public override Texture GetTexture(int index) - { - return _texture[index]; - } - - public override int GetTextureFrameCount() - { - return AVPPlayerGetFrameCount(_player); - } - - public override long GetTextureTimeStamp() - { - return AVPPlayerGetFrameTimeStamp(_player); - } - - public override bool RequiresVerticalFlip() - { - return _flipped; - } - - public override bool IsPlaybackStalled() - { - return false; - } - - public override bool PlayerSupportsLinearColorSpace() - { -#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX - return true; -#else // iOS or tvOS - // Linear colour space is supported when using the Metal renderer, however - // Y'CbCr requires gamma correction so we pretend we don't support linear - // in this case. - return (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Metal) && (!_useYpCbCr); -#endif - } - - public override float[] GetTextureTransform() - { - float[] transform = new float[6]; - AVPPlayerGetTextureTransform(_player, transform); - return transform; - } - - public override Matrix4x4 GetYpCbCrTransform() - { - return _YpCbCrTransform; - } - - // - - public override bool IsMuted() - { - return AVPPlayerIsMuted(_player); - } - - public override void MuteAudio( bool bMute ) - { - AVPPlayerSetMuted(_player, bMute); - } - - public override void SetVolume(float volume) - { - AVPPlayerSetVolume(_player, volume); - } - - public override float GetVolume() - { - return AVPPlayerGetVolume(_player); - } - - public override int GetAudioTrackCount() - { - return AVPPlayerGetAudioTrackCount(_player); - } - - public override string GetAudioTrackId(int index) - { - string identifier = AVPPlayerGetAudioTrackId(_player, index); - if (identifier == null) - identifier = base.GetAudioTrackId(index); - return identifier; - } - - public override int GetCurrentAudioTrack() - { - return AVPPlayerGetCurrentAudioTrack(_player); - } - - public override void SetAudioTrack(int track) - { - AVPPlayerSetAudioTrack(_player, track); - } - - public override string GetCurrentAudioTrackId() - { - return AVPPlayerGetCurrentAudioTrackId(_player); - } - - public override int GetCurrentAudioTrackBitrate() - { - return AVPPlayerGetCurrentAudioTrackBitrate(_player); - } - - public override int GetVideoTrackCount() - { - return AVPPlayerGetVideoTrackCount(_player); - } - - public override int GetCurrentVideoTrack() - { - return AVPPlayerGetCurrentVideoTrack(_player); - } - - public override void SetVideoTrack(int index) - { - AVPPlayerSetVideoTrack(_player, index); - } - - public override string GetVideoTrackId(int index) - { - string identifier = AVPPlayerGetVideoTrackId(_player, index); - if (identifier == null) - identifier = base.GetVideoTrackId(index); - return identifier; - } - - public override string GetCurrentVideoTrackId() - { - return AVPPlayerGetCurrentVideoTrackId(_player); - } - - public override int GetCurrentVideoTrackBitrate() - { - return AVPPlayerGetCurrentVideoTrackBitrate(_player); - } - - public override float GetVideoFrameRate() - { - return AVPPlayerGetNominalFrameRate(_player); - } - - public override void Render() - { - - } - - public void UpdateTextures() - { - AVPPlayerTextureInfo[] textures = new AVPPlayerTextureInfo[2]; - int count = textures.Length; - if (AVPPlayerGetTextures(_player, textures, ref count)) - { - _planeCount = count; - for (int i = 0; i < count; ++i) - { - if (_texture[i] == null || _texture[i].width != textures[i].width || _texture[i].height != textures[i].height || _texture[i].format != (TextureFormat)textures[i].format) - { - _texture[i] = Texture2D.CreateExternalTexture(textures[i].width, textures[i].height, (TextureFormat)textures[i].format, /*mipmap*/ false, /*linear*/ false, textures[i].native); - if (i == 0) - { - _width = textures[i].width; - _height = textures[i].height; - _flipped = textures[i].flipped != 0; - } - if (_texture[i] != null) - { - ApplyTextureProperties(_texture[i]); - } - } - else - { - _texture[i].UpdateExternalTexture(textures[i].native); - } - } - - // If Y'CbCr grab the transform - if (_useYpCbCr && !_YpCbCrTransformIsValid) - { - - float[] transform = new float[16]; - _YpCbCrTransformIsValid = AVPPlayerGetYpCbCrTransform(_player, ref transform[0]); - for (int i = 0; i < 16; ++i) - _YpCbCrTransform[i] = transform[i]; - - // _YpCbCrMatrix.SetRow(0, new Vector4(1.164384f, 0.000000f, 1.596027f, 0.000000f)); - // _YpCbCrMatrix.SetRow(1, new Vector4(1.164384f, -0.391762f, -0.812968f, 0.000000f)); - // _YpCbCrMatrix.SetRow(2, new Vector4(1.164384f, 2.017232f, 0.000000f, 0.000000f)); - - // Debug.Log("YpCbCrMatrix: " + _YpCbCrTransform.ToString()); - } - } - } - - public override void Update() - { - _status = AVPPlayerGetStatus(_player); - - if (AVPPlayerUpdate(_player)) - { - IssuePluginEvent(AVPPluginEventType.PlayerRender); - } - - _lastError = AVPPlayerGetLastError(_player); - UpdateTextures(); - - UpdateSubtitles(); - - // Check for meta data to become available - if (!_isMetaDataReady) - { - if (AVPPlayerHasMetaData(_player) || CanPlay()) - { - // MOZ - had to move this outside of HasVideo check - _isMetaDataReady = true; - - if (HasVideo()) - { - if (_width > 0 && _height > 0) - { - if (Mathf.Max(_width, _height) > SystemInfo.maxTextureSize) - { - Debug.LogError("[AVProVideo] Video dimensions larger than maxTextureSize"); - } - } - _playerDescription = "AVFoundation"; - Helper.LogInfo("Using playback path: " + _playerDescription + " (" + _width + "x" + _height + "@" + GetVideoFrameRate().ToString("F2") + ")"); - } - else if (HasAudio()) - { - - } - } - } - } - - public override void Dispose() - { - CloseVideo(); - AVPPlayerRelease(_player); - _player = IntPtr.Zero; - _thisHandle.Free(); - } - - } -} - -#endif diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs.meta deleted file mode 100644 index 4c1da65..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/OSXMediaPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: c9ce5c323422b4989a79a9c9fc9b67c1 -timeCreated: 1451922104 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs deleted file mode 100644 index 1b3aaf7..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs +++ /dev/null @@ -1,589 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Utility class to resample MediaPlayer video frames to allow for smoother playback - /// Keeps a buffer of frames with timestamps and presents them using its own clock - /// - public class Resampler - { - private class TimestampedRenderTexture - { - public RenderTexture texture = null; - public long timestamp = 0; - public bool used = false; - } - - public enum ResampleMode - { - POINT, LINEAR - } - - private List _buffer = new List(); - private MediaPlayer _mediaPlayer; - private RenderTexture[] _outputTexture = null; - - private int _start = 0; - private int _end = 0; - private int _bufferSize = 0; - - private long _baseTimestamp = 0; - private float _elapsedTimeSinceBase = 0f; - - private Material _blendMat; - - private ResampleMode _resampleMode; - private string _name = ""; - - private long _lastTimeStamp = -1; - - private int _droppedFrames = 0; - - private long _lastDisplayedTimestamp = 0; - private int _frameDisplayedTimer = 0; - private long _currentDisplayedTimestamp = 0; - - public int DroppedFrames - { - get { return _droppedFrames; } - } - - public int FrameDisplayedTimer - { - get { return _frameDisplayedTimer; } - } - - public long BaseTimestamp - { - get { return _baseTimestamp; } - set { _baseTimestamp = value; } - } - - public float ElapsedTimeSinceBase - { - get { return _elapsedTimeSinceBase; } - set { _elapsedTimeSinceBase = value; } - } - - public float LastT - { - get; private set; - } - - public long TextureTimeStamp - { - get; private set; - } - - private const string ShaderPropT = "_t"; - private const string ShaderPropAftertex = "_AfterTex"; - private int _propAfterTex; - private int _propT; - private float _videoFrameRate; - - public void OnVideoEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode) - { - switch (et) - { - case MediaPlayerEvent.EventType.MetaDataReady: - _videoFrameRate = mp.Info.GetVideoFrameRate(); - _elapsedTimeSinceBase = 0f; - if (_videoFrameRate > 0f) - { - _elapsedTimeSinceBase = _bufferSize / _videoFrameRate; - } - break; - case MediaPlayerEvent.EventType.Closing: - Reset(); - break; - default: - break; - } - } - - public Resampler(MediaPlayer player, string name, int bufferSize = 2, ResampleMode resampleMode = ResampleMode.LINEAR) - { - _bufferSize = Mathf.Max(2, bufferSize); - - player.Events.AddListener(OnVideoEvent); - - _mediaPlayer = player; - - Shader blendShader = Shader.Find("AVProVideo/BlendFrames"); - if (blendShader != null) - { - _blendMat = new Material(blendShader); - _propT = Shader.PropertyToID(ShaderPropT); - _propAfterTex = Shader.PropertyToID(ShaderPropAftertex); - } - else - { - Debug.LogError("[AVProVideo] Failed to find BlendFrames shader"); - } - - _resampleMode = resampleMode; - _name = name; - - Debug.Log("[AVProVideo] Resampler " + _name + " started"); - } - - public Texture[] OutputTexture - { - get { return _outputTexture; } - } - - public void Reset() - { - _lastTimeStamp = -1; - _baseTimestamp = 0; - InvalidateBuffer(); - } - - public void Release() - { - ReleaseRenderTextures(); - if (_blendMat != null) - { - Material.Destroy(_blendMat); - } - } - - private void ReleaseRenderTextures() - { - for (int i = 0; i < _buffer.Count; ++i) - { - for (int j = 0; j < _buffer[i].Length; ++j) - { - if (_buffer[i][j].texture != null) - { - RenderTexture.ReleaseTemporary(_buffer[i][j].texture); - _buffer[i][j].texture = null; - } - } - - if (_outputTexture != null && _outputTexture[i] != null) - { - RenderTexture.ReleaseTemporary(_outputTexture[i]); - } - } - - _outputTexture = null; - } - - private void ConstructRenderTextures() - { - ReleaseRenderTextures(); - _buffer.Clear(); - - _outputTexture = new RenderTexture[_mediaPlayer.TextureProducer.GetTextureCount()]; - - for (int i = 0; i < _mediaPlayer.TextureProducer.GetTextureCount(); ++i) - { - Texture tex = _mediaPlayer.TextureProducer.GetTexture(i); - _buffer.Add(new TimestampedRenderTexture[_bufferSize]); - for (int j = 0; j < _bufferSize; ++j) - { - _buffer[i][j] = new TimestampedRenderTexture(); - } - - for (int j = 0; j < _buffer[i].Length; ++j) - { - _buffer[i][j].texture = RenderTexture.GetTemporary(tex.width, tex.height, 0); - _buffer[i][j].timestamp = 0; - _buffer[i][j].used = false; - } - - _outputTexture[i] = RenderTexture.GetTemporary(tex.width, tex.height, 0); - _outputTexture[i].filterMode = tex.filterMode; - _outputTexture[i].wrapMode = tex.wrapMode; - _outputTexture[i].anisoLevel = tex.anisoLevel; - // TODO: set up the mips level too? - } - } - - private bool CheckRenderTexturesValid() - { - for (int i = 0; i < _mediaPlayer.TextureProducer.GetTextureCount(); ++i) - { - Texture tex = _mediaPlayer.TextureProducer.GetTexture(i); - for (int j = 0; j < _buffer.Count; ++j) - { - if (_buffer[i][j].texture == null || _buffer[i][j].texture.width != tex.width || _buffer[i][j].texture.height != tex.height) - { - return false; - } - } - - if (_outputTexture == null || _outputTexture[i] == null || _outputTexture[i].width != tex.width || _outputTexture[i].height != tex.height) - { - return false; - } - - } - - return true; - } - - //finds closest frame that occurs before given index - private int FindBeforeFrameIndex(int frameIdx) - { - if (frameIdx >= _buffer.Count) - { - return -1; - } - - int foundFrame = -1; - float smallestDif = float.MaxValue; - int closest = -1; - float smallestElapsed = float.MaxValue; - - for (int i = 0; i < _buffer[frameIdx].Length; ++i) - { - if (_buffer[frameIdx][i].used) - { - float elapsed = (_buffer[frameIdx][i].timestamp - _baseTimestamp) / 10000000f; - - //keep track of closest after frame, just in case no before frame was found - if (elapsed < smallestElapsed) - { - closest = i; - smallestElapsed = elapsed; - } - - float dif = _elapsedTimeSinceBase - elapsed; - - if (dif >= 0 && dif < smallestDif) - { - smallestDif = dif; - foundFrame = i; - } - } - } - - if (foundFrame < 0) - { - if (closest < 0) - { - return -1; - } - - return closest; - } - - return foundFrame; - } - - private int FindClosestFrame(int frameIdx) - { - if (frameIdx >= _buffer.Count) - { - return -1; - } - - int foundPos = -1; - float smallestDif = float.MaxValue; - - for (int i = 0; i < _buffer[frameIdx].Length; ++i) - { - if (_buffer[frameIdx][i].used) - { - float elapsed = (_buffer[frameIdx][i].timestamp - _baseTimestamp) / 10000000f; - float dif = Mathf.Abs(_elapsedTimeSinceBase - elapsed); - if (dif < smallestDif) - { - foundPos = i; - smallestDif = dif; - } - } - } - - return foundPos; - } - - //point update selects closest frame and uses that as output - private void PointUpdate() - { - for (int i = 0; i < _buffer.Count; ++i) - { - int frameIndex = FindClosestFrame(i); - - if (frameIndex < 0) - { - continue; - } - - _outputTexture[i].DiscardContents(); - Graphics.Blit(_buffer[i][frameIndex].texture, _outputTexture[i]); - _currentDisplayedTimestamp = _buffer[i][frameIndex].timestamp; - } - - } - - //Updates currently displayed frame - private void SampleFrame(int frameIdx, int bufferIdx) - { - _outputTexture[bufferIdx].DiscardContents(); - Graphics.Blit(_buffer[bufferIdx][frameIdx].texture, _outputTexture[bufferIdx]); - TextureTimeStamp = _buffer[bufferIdx][frameIdx].timestamp; - _currentDisplayedTimestamp = _buffer[bufferIdx][frameIdx].timestamp; - } - - //Same as sample frame, but does a lerp of the two given frames and outputs that image instead - private void SampleFrames(int bufferIdx, int frameIdx1, int frameIdx2, float t) - { - _blendMat.SetFloat(_propT, t); - _blendMat.SetTexture(_propAfterTex, _buffer[bufferIdx][frameIdx2].texture); - _outputTexture[bufferIdx].DiscardContents(); - Graphics.Blit(_buffer[bufferIdx][frameIdx1].texture, _outputTexture[bufferIdx], _blendMat); - TextureTimeStamp = (long)Mathf.Lerp(_buffer[bufferIdx][frameIdx1].timestamp, _buffer[bufferIdx][frameIdx2].timestamp, t); - _currentDisplayedTimestamp = _buffer[bufferIdx][frameIdx1].timestamp; - } - - private void LinearUpdate() - { - for (int i = 0; i < _buffer.Count; ++i) - { - //find closest frame - int frameIndex = FindBeforeFrameIndex(i); - - //no valid frame, this should never ever happen actually... - if (frameIndex < 0) - { - continue; - } - - //resample or just use last frame and set current elapsed time to that frame - float frameElapsed = (_buffer[i][frameIndex].timestamp - _baseTimestamp) / 10000000f; - if (frameElapsed > _elapsedTimeSinceBase) - { - SampleFrame(frameIndex, i); - LastT = -1f; - } - else - { - int next = (frameIndex + 1) % _buffer[i].Length; - float nextElapsed = (_buffer[i][next].timestamp - _baseTimestamp) / 10000000f; - - //no larger frame, move elapsed time back a bit since we cant predict the future - if (nextElapsed < frameElapsed) - { - SampleFrame(frameIndex, i); - LastT = 2f; - } - //have a before and after frame, interpolate - else - { - - float range = nextElapsed - frameElapsed; - float t = (_elapsedTimeSinceBase - frameElapsed) / range; - SampleFrames(i, frameIndex, next, t); - LastT = t; - } - } - } - } - - private void InvalidateBuffer() - { - _elapsedTimeSinceBase = (_bufferSize / 2) / _videoFrameRate; - - for (int i = 0; i < _buffer.Count; ++i) - { - for (int j = 0; j < _buffer[i].Length; ++j) - { - _buffer[i][j].used = false; - } - } - - _start = _end = 0; - } - - private float GuessFrameRate() - { - int fpsCount = 0; - long fps = 0; - - for (int k = 0; k < _buffer[0].Length; k++) - { - if (_buffer[0][k].used) - { - // Find the pair with the smallest difference - long smallestDiff = long.MaxValue; - for (int j = k + 1; j < _buffer[0].Length; j++) - { - if (_buffer[0][j].used) - { - long diff = System.Math.Abs(_buffer[0][k].timestamp - _buffer[0][j].timestamp); - if (diff < smallestDiff) - { - smallestDiff = diff; - } - } - } - - if (smallestDiff != long.MaxValue) - { - fps += smallestDiff; - fpsCount++; - } - } - } - if (fpsCount > 1) - { - fps /= fpsCount; - } - return 10000000f / (float)fps; - } - - public void Update() - { - if (_mediaPlayer.TextureProducer == null) - { - return; - } - - //recreate textures if invalid - if (_mediaPlayer.TextureProducer == null || _mediaPlayer.TextureProducer.GetTexture() == null) - { - return; - } - - if (!CheckRenderTexturesValid()) - { - ConstructRenderTextures(); - } - - long currentTimestamp = _mediaPlayer.TextureProducer.GetTextureTimeStamp(); - - //if frame has been updated, do a calculation to estimate dropped frames - if (currentTimestamp != _lastTimeStamp) - { - float dif = Mathf.Abs(currentTimestamp - _lastTimeStamp); - float frameLength = (10000000f / _videoFrameRate); - if (dif > frameLength * 1.1f && dif < frameLength * 3.1f) - { - _droppedFrames += (int)((dif - frameLength) / frameLength + 0.5); - } - _lastTimeStamp = currentTimestamp; - } - - //Adding texture to buffer logic - long timestamp = _mediaPlayer.TextureProducer.GetTextureTimeStamp(); - bool insertNewFrame = !_mediaPlayer.Control.IsSeeking(); - //if buffer is not empty, we need to check if we need to reject the new frame - if (_start != _end || _buffer[0][_end].used) - { - int lastFrame = (_end + _buffer[0].Length - 1) % _buffer[0].Length; - //frame is not new and thus we do not need to store it - if (timestamp == _buffer[0][lastFrame].timestamp) - { - insertNewFrame = false; - } - } - - bool bufferWasNotFull = (_start != _end) || (!_buffer[0][_end].used); - - if (insertNewFrame) - { - //buffer empty, reset base timestamp to current - if (_start == _end && !_buffer[0][_end].used) - { - _baseTimestamp = timestamp; - } - - //update buffer counters, if buffer is full, we get rid of the earliest frame by incrementing the start counter - if (_end == _start && _buffer[0][_end].used) - { - _start = (_start + 1) % _buffer[0].Length; - } - - for (int i = 0; i < _mediaPlayer.TextureProducer.GetTextureCount(); ++i) - { - Texture currentTexture = _mediaPlayer.TextureProducer.GetTexture(i); - - //store frame info - _buffer[i][_end].texture.DiscardContents(); - Graphics.Blit(currentTexture, _buffer[i][_end].texture); - _buffer[i][_end].timestamp = timestamp; - _buffer[i][_end].used = true; - } - - _end = (_end + 1) % _buffer[0].Length; - } - - bool bufferNotFull = (_start != _end) || (!_buffer[0][_end].used); - - if (bufferNotFull) - { - for (int i = 0; i < _buffer.Count; ++i) - { - _outputTexture[i].DiscardContents(); - Graphics.Blit(_buffer[i][_start].texture, _outputTexture[i]); - _currentDisplayedTimestamp = _buffer[i][_start].timestamp; - } - } - else - { - // If we don't have a valid frame rate and the buffer is now full, guess the frame rate by looking at the buffered timestamps - if (bufferWasNotFull && _videoFrameRate <= 0f) - { - _videoFrameRate = GuessFrameRate(); - _elapsedTimeSinceBase = (_bufferSize / 2) / _videoFrameRate; - } - } - - if (_mediaPlayer.Control.IsPaused()) - { - InvalidateBuffer(); - } - - //we always wait until buffer is full before display things, just assign first frame in buffer to output so that the user can see something - if (bufferNotFull) - { - return; - } - - if (_mediaPlayer.Control.IsPlaying() && !_mediaPlayer.Control.IsFinished()) - { - //correct elapsed time if too far out - long ts = _buffer[0][(_start + _bufferSize / 2) % _bufferSize].timestamp - _baseTimestamp; - double dif = Mathf.Abs(((float)((double)_elapsedTimeSinceBase * 10000000) - ts)); - double threshold = (_buffer[0].Length / 2) / _videoFrameRate * 10000000; - - if (dif > threshold) - { - _elapsedTimeSinceBase = ts / 10000000f; - } - - if (_resampleMode == ResampleMode.POINT) - { - PointUpdate(); - } - else if (_resampleMode == ResampleMode.LINEAR) - { - LinearUpdate(); - } - - _elapsedTimeSinceBase += Time.unscaledDeltaTime; - } - } - - public void UpdateTimestamp() - { - if (_lastDisplayedTimestamp != _currentDisplayedTimestamp) - { - _lastDisplayedTimestamp = _currentDisplayedTimestamp; - _frameDisplayedTimer = 0; - } - _frameDisplayedTimer++; - } - } -} - diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs.meta deleted file mode 100644 index e88c7fd..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Resampler.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 8ac8dc09faa6b1d48bf6f490c9888550 -timeCreated: 1497356591 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs deleted file mode 100644 index 8baa022..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs +++ /dev/null @@ -1,37 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -using System.Collections.Generic; - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Abstract class used to retreiving data from an adaptive Stream - /// generated by StreamParser. Currently implemented by HLSStream. - /// - public abstract class Stream - { - public struct Chunk - { - public string name; - } - - public abstract int Width { get; } - - public abstract int Height { get; } - - public abstract int Bandwidth { get; } - - public abstract string URL { get; } - - public abstract List GetAllChunks(); - - public abstract List GetChunks(); - - public abstract List GetAllStreams(); - - public abstract List GetStreams(); - } -} - diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs.meta deleted file mode 100644 index fe07496..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/Stream.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 48133a6996376df4a924eeb8d53bce27 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs deleted file mode 100644 index 6b7930a..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs +++ /dev/null @@ -1,799 +0,0 @@ -#if UNITY_WEBGL -using UnityEngine; -using System.Runtime.InteropServices; -using System; - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// WebGL implementation of BaseMediaPlayer - /// - public sealed class WebGLMediaPlayer : BaseMediaPlayer - { - //private enum AVPPlayerStatus - //{ - // Unknown, - // ReadyToPlay, - // Playing, - // Finished, - // Seeking, - // Failed - //} - - [DllImport("__Internal")] - private static extern bool AVPPlayerInsertVideoElement(string path, int[] idValues, int externalLibrary); - - [DllImport("__Internal")] - private static extern int AVPPlayerWidth(int player); - - [DllImport("__Internal")] - private static extern int AVPPlayerHeight(int player); - - [DllImport("__Internal")] - private static extern int AVPPlayerGetLastError(int player); - - [DllImport("__Internal")] - private static extern int AVPPlayerAudioTrackCount(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerSetAudioTrack(int player, int index); - - [DllImport("__Internal")] - private static extern void AVPPlayerClose(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerReady(int player); - - [DllImport("__Internal")] - private static extern void AVPPlayerSetLooping(int player, bool loop); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsLooping(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsSeeking(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsPlaying(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsPaused(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsFinished(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsBuffering(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsPlaybackStalled(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerPlay(int player); - - [DllImport("__Internal")] - private static extern void AVPPlayerPause(int player); - - [DllImport("__Internal")] - private static extern void AVPPlayerSeekToTime(int player, float timeMS, bool fast); - - [DllImport("__Internal")] - private static extern float AVPPlayerGetCurrentTime(int player); - - [DllImport("__Internal")] - private static extern float AVPPlayerGetPlaybackRate(int player); - - [DllImport("__Internal")] - private static extern void AVPPlayerSetPlaybackRate(int player, float rate); - - [DllImport("__Internal")] - private static extern void AVPPlayerSetMuted(int player, bool muted); - - [DllImport("__Internal")] - private static extern float AVPPlayerGetDuration(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerIsMuted(int player); - - [DllImport("__Internal")] - private static extern float AVPPlayerGetVolume(int player); - - [DllImport("__Internal")] - private static extern void AVPPlayerSetVolume(int player, float volume); - - [DllImport("__Internal")] - private static extern bool AVPPlayerHasVideo(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerHasAudio(int player); - - // Need jslib - [DllImport("__Internal")] - private static extern void AVPPlayerFetchVideoTexture(int player, IntPtr texture, bool init); - - [DllImport("__Internal")] - private static extern int AVPPlayerGetDecodedFrameCount(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerSupportedDecodedFrameCount(int player); - - [DllImport("__Internal")] - private static extern bool AVPPlayerHasMetadata(int player); - - [DllImport("__Internal")] - private static extern int AVPPlayerUpdatePlayerIndex(int id); - - [DllImport("__Internal")] - private static extern int AVPPlayerGetNumBufferedTimeRanges(int id); - - [DllImport("__Internal")] - private static extern float AVPPlayerGetTimeRangeStart(int id, int timeRangeIndex); - [DllImport("__Internal")] - private static extern float AVPPlayerGetTimeRangeEnd(int id, int timeRangeIndex); - - private WebGL.ExternalLibrary _externalLibrary = WebGL.ExternalLibrary.None; - private int _playerIndex = -1; - private int _playerID = -1; - private RenderTexture _texture = null; - private int _width = 0; - private int _height = 0; - private int _audioTrackCount = 0; - private int _audioTrackIndex = 0; - private bool _useTextureMips = false; - private System.IntPtr _cachedTextureNativePtr = System.IntPtr.Zero; - - private int _lastFrameCount = 0; - private float _displayRateTimer = 0f; - private float _displayRate = 0f; - - private static bool _isWebGL1 = false; - - public static void InitialisePlatform() - { - _isWebGL1 = (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.OpenGLES2); - } - - public WebGLMediaPlayer(WebGL.ExternalLibrary externalLibrary, bool useTextureMips) - { - SetOptions(externalLibrary, useTextureMips); - } - - public void SetOptions(WebGL.ExternalLibrary externalLibrary, bool useTextureMips) - { - _externalLibrary = externalLibrary; - _useTextureMips = useTextureMips; - } - - public override string GetVersion() - { - return "1.9.3"; - } - - public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0) - { - bool result = false; - - if (path.StartsWith("http://") || - path.StartsWith("https://") || - path.StartsWith("file://") || - path.StartsWith("blob:") || - path.StartsWith("chrome-extension://")) - { - int[] idValues = new int[2]; - idValues[0] = -1; - AVPPlayerInsertVideoElement(path, idValues, (int)_externalLibrary); - { - int playerIndex = idValues[0]; - _playerID = idValues[1]; - - if (playerIndex > -1) - { - _playerIndex = playerIndex; - result = true; - } - } - } - else - { - Debug.LogError("[AVProVideo] Unknown URL protocol"); - } - - return result; - } - - public override void CloseVideo() - { - if (_playerIndex != -1) - { - Pause(); - - _width = 0; - _height = 0; - _audioTrackCount = 0; - _audioTrackIndex = 0; - - AVPPlayerClose(_playerIndex); - - if (_texture != null) - { - // Have to update with zero to release Metal textures! - //_texture.UpdateExternalTexture(0); - _cachedTextureNativePtr = System.IntPtr.Zero; - RenderTexture.Destroy(_texture); - _texture = null; - } - - _playerIndex = -1; - _playerID = -1; - - base.CloseVideo(); - } - } - - public override bool IsLooping() - { - //Debug.Assert(_player != -1, "no player IsLooping"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsLooping(_playerIndex); - } - - return result; - } - - public override void SetLooping(bool looping) - { - Debug.Assert(_playerIndex != -1, "no player SetLooping"); - - AVPPlayerSetLooping(_playerIndex, looping); - } - - public override bool HasAudio() - { - //Debug.Assert(_player != -1, "no player HasAudio"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerHasAudio(_playerIndex); - } - - return result; - } - - public override bool HasVideo() - { - //Debug.Assert(_player != -1, "no player HasVideo"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerHasVideo(_playerIndex); - } - - return result; - } - - public override bool HasMetaData() - { - //Debug.Assert(_player != -1, "no player HasMetaData"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerHasMetadata(_playerIndex); - } - - return result; - } - - public override bool CanPlay() - { - //Debug.Assert(_player != -1, "no player CanPlay"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerReady(_playerIndex); - } - - return result; - } - - public override void Play() - { - Debug.Assert(_playerIndex != -1, "no player Play"); - - if (!AVPPlayerPlay(_playerIndex)) - { - Debug.LogWarning("[AVProVideo] Browser permission prevented video playback"); - } - } - - public override void Pause() - { - Debug.Assert(_playerIndex != -1, "no player Pause"); - - AVPPlayerPause(_playerIndex); - } - - public override void Stop() - { - Debug.Assert(_playerIndex != -1, "no player Stop"); - - AVPPlayerPause(_playerIndex); - } - - public override void Seek(float ms) - { - Debug.Assert(_playerIndex != -1, "no player Seek"); - AVPPlayerSeekToTime(_playerIndex, ms * 0.001f, false); - } - - public override void SeekFast(float ms) - { - Debug.Assert(_playerIndex != -1, "no player SeekFast"); - - AVPPlayerSeekToTime(_playerIndex, ms * 0.001f, true); - } - - public override float GetCurrentTimeMs() - { - //Debug.Assert(_player != -1, "no player GetCurrentTimeMs"); - float result = 0.0f; - - if (_playerIndex != -1) - { - result = (AVPPlayerGetCurrentTime(_playerIndex) * 1000.0f); - //Debug.Log("CurrentTime C#: " + result); - } - - return result; - } - - public override void SetPlaybackRate(float rate) - { - Debug.Assert(_playerIndex != -1, "no player SetPlaybackRate"); - - // No HTML implementations allow negative rate yet - rate = Mathf.Clamp(rate, 0.25f, 8f); - - AVPPlayerSetPlaybackRate(_playerIndex, rate); - } - - public override float GetPlaybackRate() - { - //Debug.Assert(_player != -1, "no player GetPlaybackRate"); - float result = 0.0f; - - if (_playerIndex != -1) - { - result = AVPPlayerGetPlaybackRate(_playerIndex); - } - - return result; - } - - public override float GetDurationMs() - { - //Debug.Assert(_player != -1, "no player GetDurationMs"); - float result = 0.0f; - - if (_playerIndex != -1) - { - result = (AVPPlayerGetDuration(_playerIndex) * 1000.0f); - } - - return result; - } - - public override int GetVideoWidth() - { - if (_width == 0) - { - _width = AVPPlayerWidth(_playerIndex); - } - return _width; - } - - public override int GetVideoHeight() - { - if (_height == 0) - { - _height = AVPPlayerHeight(_playerIndex); - } - return _height; - } - - public override float GetVideoFrameRate() - { - // There is no way in HTML5 yet to get the frame rate of the video - return 0f; - } - - public override float GetVideoDisplayRate() - { - return _displayRate; - } - - public override bool IsSeeking() - { - //Debug.Assert(_player != -1, "no player IsSeeking"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsSeeking(_playerIndex); - } - - return result; - } - - public override bool IsPlaying() - { - //Debug.Assert(_player != -1, "no player IsPlaying"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsPlaying(_playerIndex); - } - - return result; - } - - public override bool IsPaused() - { - //Debug.Assert(_player != -1, "no player IsPaused"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsPaused(_playerIndex); - } - - return result; - } - - public override bool IsFinished() - { - //Debug.Assert(_player != -1, "no player IsFinished"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsFinished(_playerIndex); - } - - return result; - } - - public override bool IsBuffering() - { - //Debug.Assert(_player != -1, "no player IsBuffering"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsBuffering(_playerIndex); - } - - return result; - } - - public override Texture GetTexture( int index ) - { - return _texture; - } - - public override int GetTextureFrameCount() - { - //Debug.Assert(_player != -1, "no player GetTextureFrameCount"); - int result = 0; - - if (_playerIndex != -1) - { - result = AVPPlayerGetDecodedFrameCount(_playerIndex); - } - - return result; - } - - public override bool SupportsTextureFrameCount() - { - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerSupportedDecodedFrameCount(_playerIndex); - } - - return result; - } - - public override bool RequiresVerticalFlip() - { - return true; - } - - public override bool IsMuted() - { - //Debug.Assert(_player != -1, "no player IsMuted"); - bool result = false; - - if (_playerIndex != -1) - { - result = AVPPlayerIsMuted(_playerIndex); - } - - return result; - } - - public override void MuteAudio(bool bMute) - { - Debug.Assert(_playerIndex != -1, "no player MuteAudio"); - - AVPPlayerSetMuted(_playerIndex, bMute); - } - - public override void SetVolume(float volume) - { - Debug.Assert(_playerIndex != -1, "no player SetVolume"); - - AVPPlayerSetVolume(_playerIndex, volume); - } - - public override float GetVolume() - { - //Debug.Assert(_player != -1, "no player GetVolume"); - float result = 0.0f; - - if (_playerIndex != -1) - { - result = AVPPlayerGetVolume(_playerIndex); - } - - return result; - } - - public override void Render() - { - - } - - private void UpdateLastErrorCode() - { - var code = AVPPlayerGetLastError(_playerIndex); - - switch(code){ - case 0: - _lastError = ErrorCode.None; - break; - case 1: - _lastError = ErrorCode.LoadFailed; - break; - case 2: - _lastError = ErrorCode.LoadFailed; - break; - case 3: - _lastError = ErrorCode.DecodeFailed; - break; - case 4: - _lastError = ErrorCode.LoadFailed; - break; - default: - break; - } - } - - public override void Update() - { - if(_playerID > -1) // CheckPlayer's index and update it - { - _playerIndex = AVPPlayerUpdatePlayerIndex(_playerID); - } - - if(_playerIndex > -1) - { - UpdateSubtitles(); - - UpdateLastErrorCode(); - - if (AVPPlayerReady(_playerIndex)) - { - if (AVPPlayerHasVideo(_playerIndex)) - { - _width = AVPPlayerWidth(_playerIndex); - _height = AVPPlayerHeight(_playerIndex); - - if (_texture == null && _width > 0 && _height > 0) - { - _texture = new RenderTexture(_width, _height, 0, RenderTextureFormat.Default); - _texture.autoGenerateMips = false; - _texture.useMipMap = false; - if (_useTextureMips && (!_isWebGL1 || (Mathf.IsPowerOfTwo(_width) && Mathf.IsPowerOfTwo(_height)))) - { - // Mip generation only supported in WebGL 2.0, or WebGL 1.0 when using power-of-two textures - _texture.useMipMap = true; - } - _texture.Create(); - _cachedTextureNativePtr = _texture.GetNativeTexturePtr(); - ApplyTextureProperties(_texture); - - // Textures in WebGL 2.0 don't require texImage2D as they are already recreated with texStorage2D - AVPPlayerFetchVideoTexture(_playerIndex, _cachedTextureNativePtr, _isWebGL1?true:false); - } - - if (_texture != null && (_texture.width != _width || _texture.height != _height)) - { - RenderTexture.Destroy(_texture); - _texture = new RenderTexture(_width, _height, 0, RenderTextureFormat.Default); - _texture.autoGenerateMips = false; - _texture.useMipMap = false; - if (_useTextureMips && (!_isWebGL1 || (Mathf.IsPowerOfTwo(_width) && Mathf.IsPowerOfTwo(_height)))) - { - // Mip generation only supported in WebGL 2.0, or WebGL 1.0 when using power-of-two textures - _texture.useMipMap = true; - } - _texture.Create(); - _cachedTextureNativePtr = _texture.GetNativeTexturePtr(); - ApplyTextureProperties(_texture); - - // Textures in WebGL 2.0 don't require texImage2D as they are already recreated with texStorage2D - AVPPlayerFetchVideoTexture(_playerIndex, _cachedTextureNativePtr, _isWebGL1?true:false); - if (_texture.useMipMap) - { - _texture.GenerateMips(); - } - } - - if (_cachedTextureNativePtr != System.IntPtr.Zero) - { - // TODO: only update the texture when the frame count changes - // (actually this will break the update for certain browsers such as edge and possibly safari - Sunrise) - AVPPlayerFetchVideoTexture(_playerIndex, _cachedTextureNativePtr, false); - if (_texture.useMipMap) - { - _texture.GenerateMips(); - } - } - - UpdateDisplayFrameRate(); - } - - if (AVPPlayerHasAudio(_playerIndex)) - { - _audioTrackCount = Mathf.Max(1, AVPPlayerAudioTrackCount(_playerIndex)); - } - } - } - } - - private void UpdateDisplayFrameRate() - { - _displayRateTimer += Time.deltaTime; - if (_displayRateTimer >= 0.5f) - { - int frameCount = AVPPlayerGetDecodedFrameCount(_playerIndex); - int frames = (frameCount - _lastFrameCount); - if (frames > 0) - { - _displayRate = (float)frames / _displayRateTimer; - } - else - { - _displayRate = 0f; - } - _displayRateTimer = 0f; - _lastFrameCount = frameCount; - } - } - - public override void Dispose() - { - CloseVideo(); - } - - public override int GetAudioTrackCount() - { - return _audioTrackCount; - } - - public override int GetCurrentAudioTrack() - { - return _audioTrackIndex; - } - - public override void SetAudioTrack(int index) - { - if (_playerIndex > -1) - { - if (index >= 0 && index < _audioTrackCount) - { - if (index != _audioTrackIndex) - { - AVPPlayerSetAudioTrack(_playerIndex, index); - _audioTrackIndex = index; - } - } - } - } - - public override bool IsPlaybackStalled() - { - bool result = false; - if (_playerIndex > -1) - { - result = AVPPlayerIsPlaybackStalled(_playerIndex); - } - return result; - } - - public override string GetCurrentAudioTrackId() - { - // TODO - return ""; - } - - public override int GetCurrentAudioTrackBitrate() - { - // TODO - return 0; - } - - public override int GetVideoTrackCount() - { - // TODO - return 0; - } - - public override int GetCurrentVideoTrack() - { - // TODO - return 0; - } - - public override void SetVideoTrack( int index ) - { - // TODO - } - - public override string GetCurrentVideoTrackId() - { - // TODO - return ""; - } - - public override int GetCurrentVideoTrackBitrate() - { - // TODO - return 0; - } - - public override float GetBufferingProgress() - { - //TODO - return 0f; - } - - public override int GetBufferedTimeRangeCount() - { - return AVPPlayerGetNumBufferedTimeRanges(_playerIndex); - } - - public override bool GetBufferedTimeRange(int index, ref float startTimeMs, ref float endTimeMs) - { - startTimeMs = AVPPlayerGetTimeRangeStart(_playerIndex, index) * 1000.0f; - endTimeMs = AVPPlayerGetTimeRangeEnd(_playerIndex, index) * 1000.0f; - - return true; - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs.meta deleted file mode 100644 index 92cbed4..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WebGLMediaPlayer.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: c044ff13d5570e64a8156bc718b3cfec -timeCreated: 1468230219 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs deleted file mode 100644 index 14c4eae..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs +++ /dev/null @@ -1,1249 +0,0 @@ -#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_WSA_10_0 || UNITY_WINRT_8_1 || UNITY_WSA - -#if UNITY_5 || UNITY_5_4_OR_NEWER - #if !UNITY_5_0 && !UNITY_5_1 - #define AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - #endif - #if !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 && !UNITY_5_3 && !UNITY_5_4_0 && !UNITY_5_4_1 - #define AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - #endif -#endif -#if UNITY_WP_8_1 || UNITY_WSA || UNITY_WSA_8_1 || UNITY_WSA_10 - #define AVPROVIDEO_MARSHAL_RETURN_BOOL -#endif - -using UnityEngine; -using System.Runtime.InteropServices; -using System.Collections.Generic; -using System; - -#if NETFX_CORE -using Windows.Storage.Streams; -#endif - -//----------------------------------------------------------------------------- -// Copyright 2015-2018 RenderHeads Ltd. All rights reserverd. -//----------------------------------------------------------------------------- - -namespace RenderHeads.Media.AVProVideo -{ - /// - /// Windows desktop, Windows phone and UWP implementation of BaseMediaPlayer - /// - public /*sealed*/ partial class WindowsMediaPlayer : BaseMediaPlayer - { - private bool _forceAudioResample = true; - private bool _useUnityAudio = false; - private string _audioDeviceOutputName = string.Empty; - private List _preferredFilters = new List(); - private Audio360ChannelMode _audioChannelMode = Audio360ChannelMode.TBE_8_2; - - private bool _isPlaying = false; - private bool _isPaused = false; - private bool _audioMuted = false; - private float _volume = 1.0f; - private float _balance = 0.0f; - private bool _bLoop = false; - private bool _canPlay = false; - private bool _hasMetaData = false; - private int _width = 0; - private int _height = 0; - private float _frameRate = 0f; - private bool _hasAudio = false; - private bool _hasVideo = false; - private bool _isTextureTopDown = true; - private System.IntPtr _nativeTexture = System.IntPtr.Zero; - private Texture2D _texture; - private System.IntPtr _instance = System.IntPtr.Zero; - private float _displayRateTimer; - private int _lastFrameCount; - private float _displayRate = 1f; - private Windows.VideoApi _videoApi = Windows.VideoApi.MediaFoundation; - private bool _useHardwareDecoding = true; - private bool _useTextureMips = false; - private bool _hintAlphaChannel = false; - private bool _useLowLatency = false; - private int _queueSetAudioTrackIndex = -1; - private bool _supportsLinearColorSpace = true; - - private int _bufferedTimeRangeCount = 0; - private float[] _bufferedTimeRanges = new float[0]; - - private static bool _isInitialised = false; - private static string _version = "Plug-in not yet initialised"; - - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - private static System.IntPtr _nativeFunction_UpdateAllTextures; - private static System.IntPtr _nativeFunction_FreeTextures; - private static System.IntPtr _nativeFunction_ExtractFrame; -#endif -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - private int _textureQuality = QualitySettings.masterTextureLimit; -#endif - - public static bool InitialisePlatform() - { - if (!_isInitialised) - { - try - { - if (!Native.Init(QualitySettings.activeColorSpace == ColorSpace.Linear, true)) - { - Debug.LogError("[AVProVideo] Failing to initialise platform"); - } - else - { - _isInitialised = true; - _version = GetPluginVersion(); -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - _nativeFunction_UpdateAllTextures = Native.GetRenderEventFunc_UpdateAllTextures(); - _nativeFunction_FreeTextures = Native.GetRenderEventFunc_FreeTextures(); - _nativeFunction_ExtractFrame = Native.GetRenderEventFunc_WaitForNewFrame(); -#endif - } - } - catch (System.DllNotFoundException e) - { - Debug.LogError("[AVProVideo] Failed to load DLL. " + e.Message); -#if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) -#if !UNITY_5 && !UNITY_5_4_OR_NEWER - Debug.LogError("[AVProVideo] You may need to copy the Audio360 DLL into the root folder of your project (the folder above Assets)"); -#endif -#endif - } - } - - return _isInitialised; - } - - public static void DeinitPlatform() - { - Native.Deinit(); - _isInitialised = false; - } - - public override int GetNumAudioChannels() - { - return Native.GetAudioChannelCount(_instance); - } - - public WindowsMediaPlayer(Windows.VideoApi videoApi, bool useHardwareDecoding, bool useTextureMips, bool hintAlphaChannel, bool useLowLatency, string audioDeviceOutputName, bool useUnityAudio, bool forceResample, List preferredFilters) - { - SetOptions(videoApi, useHardwareDecoding:useHardwareDecoding, useTextureMips:useTextureMips, hintAlphaChannel:hintAlphaChannel, useLowLatency:useLowLatency, audioDeviceOutputName:audioDeviceOutputName, useUnityAudio:useUnityAudio, forceResample:forceResample, preferredFilters:preferredFilters); - } - - public void SetOptions(Windows.VideoApi videoApi, bool useHardwareDecoding, bool useTextureMips, bool hintAlphaChannel, bool useLowLatency, string audioDeviceOutputName, bool useUnityAudio, bool forceResample, List preferredFilters) - { - _videoApi = videoApi; - _useHardwareDecoding = useHardwareDecoding; - _useTextureMips = useTextureMips; - _hintAlphaChannel = hintAlphaChannel; - _useLowLatency = useLowLatency; - _audioDeviceOutputName = audioDeviceOutputName; - if (!string.IsNullOrEmpty(_audioDeviceOutputName)) - { - _audioDeviceOutputName = _audioDeviceOutputName.Trim(); - } - _useUnityAudio = useUnityAudio; - _forceAudioResample = forceResample; - _preferredFilters = preferredFilters; - if (_preferredFilters != null) - { - for (int i = 0; i < _preferredFilters.Count; ++i) - { - if (!string.IsNullOrEmpty(_preferredFilters[i])) - { - _preferredFilters[i] = _preferredFilters[i].Trim(); - } - } - } - } - - public override string GetVersion() - { - return _version; - } - - private static int GetUnityAudioSampleRate() - { - int result = 0; - - // For standalone builds (not in the editor): - // In Unity 4.6, 5.0, 5.1 when audio is disabled there is no indication from the API. - // But in 5.2.0 and above, it logs an error when trying to call - // AudioSettings.GetDSPBufferSize() or AudioSettings.outputSampleRate - // So to prevent the error, check if AudioSettings.GetConfiguration().sampleRate == 0 - -#if UNITY_5_4_OR_NEWER || UNITY_5_2 || UNITY_5_3 - result = (AudioSettings.GetConfiguration().sampleRate == 0) ? 0 : AudioSettings.outputSampleRate; -#else - result = AudioSettings.outputSampleRate; -#endif - return result; - } - - public override bool OpenVideoFromFile(string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0, int forceFileFormat = 0) - { - CloseVideo(); - - uint filterCount = 0U; - IntPtr[] filters = null; - - if (_preferredFilters != null && _preferredFilters.Count > 0) - { - filterCount = (uint)_preferredFilters.Count; - filters = new IntPtr[_preferredFilters.Count]; - - for (int i = 0; i < filters.Length; ++i) - { - filters[i] = Marshal.StringToHGlobalUni(_preferredFilters[i]); - } - } - - _instance = Native.OpenSource(_instance, path, (int)_videoApi, _useHardwareDecoding, _useTextureMips, _hintAlphaChannel, _useLowLatency, _audioDeviceOutputName, _useUnityAudio, _forceAudioResample, GetUnityAudioSampleRate(), filters, filterCount, (int)_audioChannelMode, sourceSamplerate, sourceChannels); - - if (filters != null) - { - for (int i = 0; i < filters.Length; ++i) - { - Marshal.FreeHGlobal(filters[i]); - } - } - - if (_instance == System.IntPtr.Zero) - { - DisplayLoadFailureSuggestion(path); - return false; - } - - Native.SetUnityAudioEnabled(_instance, _useUnityAudio); - - return true; - } - - public override bool OpenVideoFromBuffer(byte[] buffer) - { - CloseVideo(); - - IntPtr[] filters; - if (_preferredFilters.Count == 0) - { - filters = null; - } - else - { - filters = new IntPtr[_preferredFilters.Count]; - - for (int i = 0; i < filters.Length; ++i) - { - filters[i] = Marshal.StringToHGlobalUni(_preferredFilters[i]); - } - } - - _instance = Native.OpenSourceFromBuffer(_instance, buffer, (ulong)buffer.Length, (int)_videoApi, _useHardwareDecoding, _useTextureMips, _hintAlphaChannel, _useLowLatency, _audioDeviceOutputName, _useUnityAudio, filters, (uint)_preferredFilters.Count); - - if (filters != null) - { - for (int i = 0; i < filters.Length; ++i) - { - Marshal.FreeHGlobal(filters[i]); - } - } - - if (_instance == System.IntPtr.Zero) - { - return false; - } - - Native.SetUnityAudioEnabled(_instance, _useUnityAudio); - - return true; - } - - public override bool StartOpenVideoFromBuffer(ulong length) - { - CloseVideo(); - - _instance = Native.StartOpenSourceFromBuffer(_instance, (int)_videoApi, length); - - return _instance != IntPtr.Zero; - } - - public override bool AddChunkToVideoBuffer(byte[] chunk, ulong offset, ulong length) - { - return Native.AddChunkToSourceBuffer(_instance, chunk, offset, length); - } - - public override bool EndOpenVideoFromBuffer() - { - IntPtr[] filters; - if (_preferredFilters.Count == 0) - { - filters = null; - } - else - { - filters = new IntPtr[_preferredFilters.Count]; - - for (int i = 0; i < filters.Length; ++i) - { - filters[i] = Marshal.StringToHGlobalUni(_preferredFilters[i]); - } - } - - _instance = Native.EndOpenSourceFromBuffer(_instance, _useHardwareDecoding, _useTextureMips, _hintAlphaChannel, _useLowLatency, _audioDeviceOutputName, _useUnityAudio, filters, (uint)_preferredFilters.Count); - - if (filters != null) - { - for (int i = 0; i < filters.Length; ++i) - { - Marshal.FreeHGlobal(filters[i]); - } - } - - if (_instance == System.IntPtr.Zero) - { - return false; - } - - Native.SetUnityAudioEnabled(_instance, _useUnityAudio); - - return true; - } - -#if NETFX_CORE - public override bool OpenVideoFromFile(IRandomAccessStream ras, string path, long offset, string httpHeaderJson, uint sourceSamplerate = 0, uint sourceChannels = 0) - { - CloseVideo(); - - _instance = Native.OpenSourceFromStream(_instance, ras, path, (int)_videoApi, _useHardwareDecoding, _useTextureMips, _hintAlphaChannel, _useLowLatency, _audioDeviceOutputName, _useUnityAudio, _forceAudioResample, GetUnityAudioSampleRate(), sourceSamplerate, sourceChannels); - - if (_instance == System.IntPtr.Zero) - { - DisplayLoadFailureSuggestion(path); - return false; - } - - Native.SetUnityAudioEnabled(_instance, _useUnityAudio); - - return true; - } -#endif - - private void DisplayLoadFailureSuggestion(string path) - { - bool usingDirectShow = (_videoApi == Windows.VideoApi.DirectShow) || SystemInfo.operatingSystem.Contains("Windows 7") || SystemInfo.operatingSystem.Contains("Windows Vista") || SystemInfo.operatingSystem.Contains("Windows XP"); - if (usingDirectShow && path.Contains(".mp4")) - { - Debug.LogWarning("[AVProVideo] The native Windows DirectShow H.264 decoder doesn't support videos with resolution above 1920x1080. You may need to reduce your video resolution, switch to another codec (such as DivX or Hap), or install 3rd party DirectShow codec (eg LAV Filters). This shouldn't be a problem for Windows 8 and above as it has a native limitation of 3840x2160."); - } - } - - public override void CloseVideo() - { - _width = 0; - _height = 0; - _frameRate = 0f; - _hasAudio = _hasVideo = false; - _hasMetaData = false; - _canPlay = false; - _isPaused = false; - _isPlaying = false; - _bLoop = false; - _audioMuted = false; - _volume = 1f; - _balance = 0f; - _lastFrameCount = 0; - _displayRate = 0f; - _displayRateTimer = 0f; - _queueSetAudioTrackIndex = -1; - _supportsLinearColorSpace = true; - _nativeTexture = System.IntPtr.Zero; - - if (_texture != null) - { - Texture2D.Destroy(_texture); - _texture = null; - } - if (_instance != System.IntPtr.Zero) - { - Native.CloseSource(_instance); - _instance = System.IntPtr.Zero; - } - - // Issue thread event to free the texture on the GPU - IssueRenderThreadEvent(Native.RenderThreadEvent.FreeTextures); - - base.CloseVideo(); - } - - public override void SetLooping(bool looping) - { - _bLoop = looping; - Native.SetLooping(_instance, looping); - } - - public override bool IsLooping() - { - return _bLoop; - } - - public override bool HasMetaData() - { - return _hasMetaData; - } - - public override bool HasAudio() - { - return _hasAudio; - } - - public override bool HasVideo() - { - return _hasVideo; - } - - public override bool CanPlay() - { - return _canPlay; - } - - public override void Play() - { - _isPlaying = true; - _isPaused = false; - Native.Play(_instance); - } - - public override void Pause() - { - _isPlaying = false; - _isPaused = true; - Native.Pause(_instance); - } - - public override void Stop() - { - _isPlaying = false; - _isPaused = false; - Native.Pause(_instance); - } - - public override bool IsSeeking() - { - return Native.IsSeeking(_instance); - } - public override bool IsPlaying() - { - return _isPlaying; - } - public override bool IsPaused() - { - return _isPaused; - } - public override bool IsFinished() - { - return Native.IsFinished(_instance); - } - - public override bool IsBuffering() - { - return Native.IsBuffering(_instance); - } - - public override float GetDurationMs() - { - return Native.GetDuration(_instance) * 1000f; - } - - public override int GetVideoWidth() - { - return _width; - } - - public override int GetVideoHeight() - { - return _height; - } - - public override float GetVideoFrameRate() - { - return _frameRate; - } - - public override float GetVideoDisplayRate() - { - return _displayRate; - } - - public override Texture GetTexture( int index ) - { - Texture result = null; - if (Native.GetTextureFrameCount(_instance) > 0) - { - result = _texture; - } - return result; - } - - public override int GetTextureFrameCount() - { - return Native.GetTextureFrameCount(_instance); - } - - public override long GetTextureTimeStamp() - { - return Native.GetTextureTimeStamp(_instance); - } - - public override bool RequiresVerticalFlip() - { - return _isTextureTopDown; - } - - public override void Seek(float timeMs) - { - Native.SetCurrentTime(_instance, timeMs / 1000f, false); - } - - public override void SeekFast(float timeMs) - { - Native.SetCurrentTime(_instance, timeMs / 1000f, true); - } - - public override float GetCurrentTimeMs() - { - return Native.GetCurrentTime(_instance) * 1000f; - } - - public override void SetPlaybackRate(float rate) - { - Native.SetPlaybackRate(_instance, rate); - } - - public override float GetPlaybackRate() - { - return Native.GetPlaybackRate(_instance); - } - - public override float GetBufferingProgress() - { - return Native.GetBufferingProgress(_instance); - } - - public override int GetBufferedTimeRangeCount() - { - return _bufferedTimeRangeCount; - } - - public override bool GetBufferedTimeRange(int index, ref float startTimeMs, ref float endTimeMs) - { - bool result = false; - if (index >= 0 && index < _bufferedTimeRangeCount) - { - //Debug.Assert(_bufferedTimeRanges.Length > (index * 2 + 1)); - result = true; - startTimeMs = 1000f * _bufferedTimeRanges[index * 2 + 0]; - endTimeMs = 1000f * _bufferedTimeRanges[index * 2 + 1]; - } - return result; - } - - public override void MuteAudio(bool bMuted) - { - _audioMuted = bMuted; - Native.SetMuted(_instance, _audioMuted); - } - - public override bool IsMuted() - { - return _audioMuted; - } - - public override void SetVolume(float volume) - { - _volume = volume; - Native.SetVolume(_instance, volume); - } - - public override float GetVolume() - { - return _volume; - } - - public override void SetBalance(float balance) - { - _balance = balance; - Native.SetBalance(_instance, balance); - } - - public override float GetBalance() - { - return _balance; - } - - public override int GetAudioTrackCount() - { - return Native.GetAudioTrackCount(_instance); - } - - public override int GetCurrentAudioTrack() - { - return Native.GetAudioTrack(_instance); - } - - public override void SetAudioTrack( int index ) - { - _queueSetAudioTrackIndex = index; - } - - public override int GetVideoTrackCount() - { - int result = 0; - if (HasVideo()) - { - result = 1; - } - return result; - } - - public override bool IsPlaybackStalled() - { - return Native.IsPlaybackStalled(_instance); - } - - public override string GetCurrentAudioTrackId() - { - // TODO - return string.Empty; - } - - public override int GetCurrentAudioTrackBitrate() - { - // TODO - return 0; - } - - public override int GetCurrentVideoTrack() - { - // TODO - return 0; - } - - public override void SetVideoTrack( int index ) - { - // TODO - } - - public override string GetCurrentVideoTrackId() - { - // TODO - return string.Empty; - } - - public override int GetCurrentVideoTrackBitrate() - { - // TODO - return 0; - } - - public override bool WaitForNextFrame(Camera dummyCamera, int previousFrameCount) - { - // Mark as extracting - Native.StartExtractFrame(_instance); - - // Queue up render thread event to wait for the new frame - IssueRenderThreadEvent(Native.RenderThreadEvent.WaitForNewFrame); - - // Force render thread to run - dummyCamera.Render(); - - // Wait for the frame to change - Native.WaitForExtract(_instance); - - // Return whether the frame changed - return (previousFrameCount != Native.GetTextureFrameCount(_instance)); - } - - public override void SetAudioChannelMode(Audio360ChannelMode channelMode) - { - _audioChannelMode = channelMode; - Native.SetAudioChannelMode(_instance, (int)channelMode); - } - - public override void SetAudioHeadRotation(Quaternion q) - { - Native.SetHeadOrientation(_instance, q.x, q.y, q.z, q.w); - } - - public override void ResetAudioHeadRotation() - { - Native.SetHeadOrientation(_instance, Quaternion.identity.x, Quaternion.identity.y, Quaternion.identity.z, Quaternion.identity.w); - } - - public override void SetAudioFocusEnabled(bool enabled) - { - Native.SetAudioFocusEnabled(_instance, enabled); - } - - public override void SetAudioFocusProperties(float offFocusLevel, float widthDegrees) - { - Native.SetAudioFocusProps(_instance, offFocusLevel, widthDegrees); - } - - public override void SetAudioFocusRotation(Quaternion q) - { - Native.SetAudioFocusRotation(_instance, q.x, q.y, q.z, q.w); - } - - public override void ResetAudioFocus() - { - Native.SetAudioFocusEnabled(_instance, false); - Native.SetAudioFocusProps(_instance, 0f, 90f); - Native.SetAudioFocusRotation(_instance, 0f, 0f, 0f, 1f); - } - - //public override void SetAudioDeviceName(string name) - //{ - //} - - public override void Update() - { - Native.Update(_instance); - _lastError = (ErrorCode)Native.GetLastErrorCode(_instance); - - if (_queueSetAudioTrackIndex >= 0 && _hasAudio) - { - // We have to queue the setting of the audio track, as doing it from the UI can result in a crash (for some unknown reason) - Native.SetAudioTrack(_instance, _queueSetAudioTrackIndex); - _queueSetAudioTrackIndex = -1; - } - - // Update network buffering - { - _bufferedTimeRangeCount = Native.GetBufferedRanges(_instance, _bufferedTimeRanges, _bufferedTimeRanges.Length / 2); - if (_bufferedTimeRangeCount > (_bufferedTimeRanges.Length / 2)) - { - _bufferedTimeRanges = new float[_bufferedTimeRangeCount * 2]; - _bufferedTimeRangeCount = Native.GetBufferedRanges(_instance, _bufferedTimeRanges, _bufferedTimeRanges.Length / 2); - } - } - - UpdateSubtitles(); - - if (!_canPlay) - { - if (!_hasMetaData) - { - if (Native.HasMetaData(_instance)) - { - if (Native.HasVideo(_instance)) - { - _width = Native.GetWidth(_instance); - _height = Native.GetHeight(_instance); - _frameRate = Native.GetFrameRate(_instance); - - // Sometimes the dimensions aren't available yet, in which case fail and poll them again next loop - if (_width > 0 && _height > 0) - { - _hasVideo = true; - - // Note: If the Unity editor Build platform isn't set to Windows then maxTextureSize will not be correct - if (Mathf.Max(_width, _height) > SystemInfo.maxTextureSize - - // If we're running in the editor it may be emulating another platform - // in which case maxTextureSize won't be correct, so ignore it. - #if UNITY_EDITOR - && !SystemInfo.graphicsDeviceName.ToLower().Contains("emulated") - #endif - ) - { - Debug.LogError(string.Format("[AVProVideo] Video dimensions ({0}x{1}) larger than maxTextureSize ({2} for current build target)", _width, _height, SystemInfo.maxTextureSize)); - _width = _height = 0; - _hasVideo = false; - } - } - - if (_hasVideo) - { - if (Native.HasAudio(_instance)) - { - _hasAudio = true; - } - } - } - else - { - if (Native.HasAudio(_instance)) - { - _hasAudio = true; - } - } - - if (_hasVideo || _hasAudio) - { - _hasMetaData = true; - } - - _playerDescription = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.GetPlayerDescription(_instance)); - _supportsLinearColorSpace = !_playerDescription.Contains("MF-MediaEngine-Hardware"); - Helper.LogInfo("Using playback path: " + _playerDescription + " (" + _width + "x" + _height + "@" + GetVideoFrameRate().ToString("F2") + ")"); - if (_hasVideo) - { - OnTextureSizeChanged(); - } - } - } - if (_hasMetaData) - { - _canPlay = Native.CanPlay(_instance); - } - } - -#if UNITY_WSA - // NOTE: I think this issue has been resolved now as of version 1.5.24. - // The issue was caused by functions returning booleans incorrectly (4 bytes vs 1) - // and as been resolved by specificying the return type during marshalling.. - // Still we'll keep this code here until after more testing. - - // WSA has an issue where it can load the audio track first and the video track later - // Here we try to handle this case and get the video track information when it arrives - if (_hasAudio && !_hasVideo) - { - _width = Native.GetWidth(_instance); - _height = Native.GetHeight(_instance); - _frameRate = Native.GetFrameRate(_instance); - - if (_width > 0 && _height > 0) - { - _hasVideo = true; - OnTextureSizeChanged(); - } - } -#endif - - if (_hasVideo) - { - System.IntPtr newPtr = Native.GetTexturePointer(_instance); - - // Check for texture recreation (due to device loss or change in texture size) - if (_texture != null && _nativeTexture != System.IntPtr.Zero && _nativeTexture != newPtr) - { - _width = Native.GetWidth(_instance); - _height = Native.GetHeight(_instance); - - if (newPtr == System.IntPtr.Zero || (_width != _texture.width || _height != _texture.height)) - { - if (_width != _texture.width || _height != _texture.height) - { - Helper.LogInfo("Texture size changed: " + _width + " X " + _height); - OnTextureSizeChanged(); - } - - _nativeTexture = System.IntPtr.Zero; - Texture2D.Destroy(_texture); - _texture = null; - } - else if (_nativeTexture != newPtr) - { - _texture.UpdateExternalTexture(newPtr); - _nativeTexture = newPtr; - } - } - -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - // In Unity 5.4.2 and above the video texture turns black when changing the TextureQuality in the Quality Settings - // The code below gets around this issue. A bug report has been sent to Unity. So far we have tested and replicated the - // "bug" in Windows only, but a user has reported it in Android too. - // Texture.GetNativeTexturePtr() must sync with the rendering thread, so this is a large performance hit! - if(_textureQuality != QualitySettings.masterTextureLimit) - { - if (_texture != null && _nativeTexture != System.IntPtr.Zero && _texture.GetNativeTexturePtr() == System.IntPtr.Zero) - { - //Debug.Log("RECREATING"); - _texture.UpdateExternalTexture(_nativeTexture); - } - - _textureQuality = QualitySettings.masterTextureLimit; - } - -#endif - - // Check if a new texture has to be created - if (_texture == null && _width > 0 && _height > 0 && newPtr != System.IntPtr.Zero) - { - _isTextureTopDown = Native.IsTextureTopDown(_instance); - _texture = Texture2D.CreateExternalTexture(_width, _height, TextureFormat.RGBA32, _useTextureMips, false, newPtr); - if (_texture != null) - { - _texture.name = "AVProVideo"; - _nativeTexture = newPtr; - ApplyTextureProperties(_texture); - } - else - { - Debug.LogError("[AVProVideo] Failed to create texture"); - } - } - } - } - - public override long GetLastExtendedErrorCode() - { - return Native.GetLastExtendedErrorCode(_instance); - } - - private void OnTextureSizeChanged() - { - // Warning for DirectShow Microsoft H.264 decoder which has a limit of 1920x1080 and can fail silently and return video dimensions clamped at 720x480 - if ((_width == 720 || _height == 480) && _playerDescription.Contains("DirectShow")) - { - Debug.LogWarning("[AVProVideo] If video fails to play then it may be due to the resolution being higher than 1920x1080 which is the limitation of the Microsoft DirectShow H.264 decoder.\nTo resolve this you can either use Windows 8 or above (and disable 'Force DirectShow' option), resize your video, use a different codec (such as Hap or DivX), or install a 3rd party H.264 decoder such as LAV Filters."); - } - // Warning when using software decoder with high resolution videos - else if ((_width > 1920 || _height > 1080) && _playerDescription.Contains("MF-MediaEngine-Software")) - { - //Debug.LogWarning("[AVProVideo] Using software video decoder. For best performance consider adding the -force-d3d11-no-singlethreaded command-line switch to enable GPU decoding."); - } - } - - private void UpdateDisplayFrameRate() - { - _displayRateTimer += Time.deltaTime; - if (_displayRateTimer >= 0.5f) - { - int frameCount = Native.GetTextureFrameCount(_instance); - _displayRate = (float)(frameCount - _lastFrameCount) / _displayRateTimer; - _displayRateTimer -= 0.5f; - if (_displayRateTimer >= 0.5f) - _displayRateTimer = 0f; - _lastFrameCount = frameCount; - } - } - - public override void Render() - { - UpdateDisplayFrameRate(); - - IssueRenderThreadEvent(Native.RenderThreadEvent.UpdateAllTextures); - } - - public override void Dispose() - { - CloseVideo(); - } - - public override void GrabAudio(float[] buffer, int floatCount, int channelCount) - { - Native.GrabAudio(_instance, buffer, floatCount, channelCount); - } - - public override bool PlayerSupportsLinearColorSpace() - { - return _supportsLinearColorSpace; - } - - //private static int _lastUpdateAllTexturesFrame = -1; - - private static void IssueRenderThreadEvent(Native.RenderThreadEvent renderEvent) - { - /*if (renderEvent == Native.RenderThreadEvent.UpdateAllTextures) - { - // We only want to update all textures once per frame - if (_lastUpdateAllTexturesFrame == Time.frameCount) - return; - - _lastUpdateAllTexturesFrame = Time.frameCount; - }*/ - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - if (renderEvent == Native.RenderThreadEvent.UpdateAllTextures) - { - GL.IssuePluginEvent(_nativeFunction_UpdateAllTextures, 0); - } - else if (renderEvent == Native.RenderThreadEvent.FreeTextures) - { - GL.IssuePluginEvent(_nativeFunction_FreeTextures, 0); - } - else if (renderEvent == Native.RenderThreadEvent.WaitForNewFrame) - { - GL.IssuePluginEvent(_nativeFunction_ExtractFrame, 0); - } -#else - GL.IssuePluginEvent(Native.PluginID | (int)renderEvent); -#endif - } - - private static string GetPluginVersion() - { - return System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.GetPluginVersion()); - } - -#if AVPROVIDEO_FIXREGRESSION_TEXTUREQUALITY_UNITY542 - public override void OnEnable() - { - base.OnEnable(); - - if (_texture != null && _nativeTexture != System.IntPtr.Zero && _texture.GetNativeTexturePtr() == System.IntPtr.Zero) - { - _texture.UpdateExternalTexture(_nativeTexture); - } - _textureQuality = QualitySettings.masterTextureLimit; - } -#endif - - private struct Native - { - public const int PluginID = 0xFA60000; - - public enum RenderThreadEvent - { - UpdateAllTextures, - FreeTextures, - WaitForNewFrame, - } - - // Global - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool Init(bool linearColorSpace, bool isD3D11NoSingleThreaded); - - [DllImport("AVProVideo")] - public static extern void Deinit(); - - [DllImport("AVProVideo")] - public static extern System.IntPtr GetPluginVersion(); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsTrialVersion(); - - // Open and Close - - [DllImport("AVProVideo")] - public static extern System.IntPtr OpenSource(System.IntPtr instance, [MarshalAs(UnmanagedType.LPWStr)]string path, int videoApiIndex, bool useHardwareDecoding, - bool generateTextureMips, bool hintAlphaChannel, bool useLowLatency, [MarshalAs(UnmanagedType.LPWStr)]string forceAudioOutputDeviceName, - bool useUnityAudio, bool forceResample, int sampleRate, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]IntPtr[] preferredFilter, uint numFilters, - int audioChannelMode, uint sourceSampleRate, uint sourceChannels); - - [DllImport("AVProVideo")] - public static extern System.IntPtr OpenSourceFromBuffer(System.IntPtr instance, byte[] buffer, ulong bufferLength, int videoApiIndex, bool useHardwareDecoding, - bool generateTextureMips, bool hintAlphaChannel, bool useLowLatency, [MarshalAs(UnmanagedType.LPWStr)]string forceAudioOutputDeviceName, - bool useUnityAudio, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]IntPtr[] preferredFilter, uint numFilters); - - [DllImport("AVProVideo")] - public static extern System.IntPtr StartOpenSourceFromBuffer(System.IntPtr instance, int videoApiIndex, ulong bufferLength); - - [DllImport("AVProVideo")] - public static extern bool AddChunkToSourceBuffer(System.IntPtr instance, byte[] buffer, ulong offset, ulong chunkLength); - - [DllImport("AVProVideo")] - public static extern System.IntPtr EndOpenSourceFromBuffer(System.IntPtr instance, bool useHardwareDecoding, bool generateTextureMips, bool hintAlphaChannel, - bool useLowLatency, [MarshalAs(UnmanagedType.LPWStr)]string forceAudioOutputDeviceName, bool useUnityAudio, - [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]IntPtr[] preferredFilter, uint numFilters); - -#if NETFX_CORE - [DllImport("AVProVideo")] - public static extern System.IntPtr OpenSourceFromStream(System.IntPtr instance, IRandomAccessStream ras, - [MarshalAs(UnmanagedType.LPWStr)]string path, int videoApiIndex, bool useHardwareDecoding, bool generateTextureMips, - bool hintAlphaChannel, bool useLowLatency, [MarshalAs(UnmanagedType.LPWStr)]string forceAudioOutputDeviceName, bool useUnityAudio, bool forceResample, - int sampleRate, uint sourceSampleRate, uint sourceChannels); -#endif - - [DllImport("AVProVideo")] - public static extern void CloseSource(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern System.IntPtr GetPlayerDescription(System.IntPtr instance); - - // Errors - - [DllImport("AVProVideo")] - public static extern int GetLastErrorCode(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern long GetLastExtendedErrorCode(System.IntPtr instance); - - // Controls - - [DllImport("AVProVideo")] - public static extern void Play(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void Pause(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void SetMuted(System.IntPtr instance, bool muted); - - [DllImport("AVProVideo")] - public static extern void SetVolume(System.IntPtr instance, float volume); - - [DllImport("AVProVideo")] - public static extern void SetBalance(System.IntPtr instance, float volume); - - [DllImport("AVProVideo")] - public static extern void SetLooping(System.IntPtr instance, bool looping); - - // Properties - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool HasVideo(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool HasAudio(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int GetWidth(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int GetHeight(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern float GetFrameRate(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern float GetDuration(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int GetAudioTrackCount(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsPlaybackStalled(System.IntPtr instance); - - // State - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool HasMetaData(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool CanPlay(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsSeeking(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsFinished(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsBuffering(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern float GetCurrentTime(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void SetCurrentTime(System.IntPtr instance, float time, bool fast); - - [DllImport("AVProVideo")] - public static extern float GetPlaybackRate(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void SetPlaybackRate(System.IntPtr instance, float rate); - - [DllImport("AVProVideo")] - public static extern int GetAudioTrack(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void SetAudioTrack(System.IntPtr instance, int index); - - [DllImport("AVProVideo")] - public static extern float GetBufferingProgress(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int GetBufferedRanges(System.IntPtr instance, float[] timeArray, int arrayCount); - - [DllImport("AVProVideo")] - public static extern void StartExtractFrame(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern void WaitForExtract(System.IntPtr instance); - - // Update and Rendering - - [DllImport("AVProVideo")] - public static extern void Update(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern System.IntPtr GetTexturePointer(System.IntPtr instance); - - [DllImport("AVProVideo")] -#if AVPROVIDEO_MARSHAL_RETURN_BOOL - [return: MarshalAs(UnmanagedType.I1)] -#endif - public static extern bool IsTextureTopDown(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int GetTextureFrameCount(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern long GetTextureTimeStamp(System.IntPtr instance); - -#if AVPROVIDEO_ISSUEPLUGINEVENT_UNITY52 - [DllImport("AVProVideo")] - public static extern System.IntPtr GetRenderEventFunc_UpdateAllTextures(); - - [DllImport("AVProVideo")] - public static extern System.IntPtr GetRenderEventFunc_FreeTextures(); - - [DllImport("AVProVideo")] - public static extern System.IntPtr GetRenderEventFunc_WaitForNewFrame(); -#endif - - // Audio - - [DllImport("AVProVideo")] - public static extern void SetUnityAudioEnabled(System.IntPtr instance, bool enabled); - - [DllImport("AVProVideo")] - public static extern void GrabAudio(System.IntPtr instance, float[] buffer, int floatCount, int channelCount); - - [DllImport("AVProVideo")] - public static extern int GetAudioChannelCount(System.IntPtr instance); - - [DllImport("AVProVideo")] - public static extern int SetAudioChannelMode(System.IntPtr instance, int channelMode); - - [DllImport("AVProVideo")] - public static extern void SetHeadOrientation(System.IntPtr instance, float x, float y, float z, float w); - - [DllImport("AVProVideo")] - public static extern void SetAudioFocusEnabled(System.IntPtr instance, bool enabled); - - [DllImport("AVProVideo")] - public static extern void SetAudioFocusProps(System.IntPtr instance, float offFocusLevel, float widthDegrees); - - [DllImport("AVProVideo")] - public static extern void SetAudioFocusRotation(System.IntPtr instance, float x, float y, float z, float w); - } - } -} -#endif \ No newline at end of file diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs.meta deleted file mode 100644 index 07f1f07..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/AVProVideo/Scripts/Internal/WindowsMediaPlayer.cs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6f3c954eb61392a4193295a8376bd8db -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Main-1-Intro.unity b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Main-1-Intro.unity index d897c7c..1d210bd 100644 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Main-1-Intro.unity +++ b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Main-1-Intro.unity @@ -54,7 +54,7 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 10 + serializedVersion: 12 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 @@ -62,6 +62,7 @@ LightmapSettings: m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 @@ -76,10 +77,16 @@ LightmapSettings: m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 + m_PVREnvironmentMIS: 0 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 @@ -87,7 +94,9 @@ LightmapSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 1 --- !u!196 &4 @@ -150,9 +159,10 @@ Camera: m_ClearFlags: 4 m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 @@ -285,12 +295,13 @@ MonoBehaviour: m_GameObject: {fileID: 90118697} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.49019608} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -359,7 +370,7 @@ MonoBehaviour: m_GameObject: {fileID: 379599991} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} m_Name: m_EditorClassIdentifier: m_Padding: @@ -384,7 +395,7 @@ GameObject: m_Component: - component: {fileID: 395441761} m_Layer: 0 - m_Name: '-------------------------' + m_Name: ------------------------- m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -450,12 +461,13 @@ MonoBehaviour: m_GameObject: {fileID: 420544968} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0, g: 0, b: 0, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -551,7 +563,7 @@ MonoBehaviour: m_GameObject: {fileID: 482350892} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} m_Name: m_EditorClassIdentifier: m_HorizontalAxis: Horizontal @@ -570,7 +582,7 @@ MonoBehaviour: m_GameObject: {fileID: 482350892} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} m_Name: m_EditorClassIdentifier: m_FirstSelected: {fileID: 0} @@ -616,6 +628,14 @@ PrefabInstance: propertyPath: m_IsActive value: 0 objectReference: {fileID: 0} + - target: {fileID: 11440506, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} + propertyPath: m_FontData.m_FontSize + value: 45 + objectReference: {fileID: 0} + - target: {fileID: 11440506, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} + propertyPath: m_FontData.m_MaxSize + value: 45 + objectReference: {fileID: 0} - target: {fileID: 22455522, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} propertyPath: m_LocalPosition.x value: 0 @@ -688,14 +708,6 @@ PrefabInstance: propertyPath: m_Pivot.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 11440506, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} - propertyPath: m_FontData.m_FontSize - value: 45 - objectReference: {fileID: 0} - - target: {fileID: 11440506, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} - propertyPath: m_FontData.m_MaxSize - value: 45 - objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f0cb70bbbd7e040d1978230065284e80, type: 3} --- !u!224 &514912795 stripped @@ -788,7 +800,7 @@ MonoBehaviour: m_GameObject: {fileID: 694176950} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} m_Name: m_EditorClassIdentifier: m_Padding: @@ -867,8 +879,6 @@ MonoBehaviour: onStateChanged: m_PersistentCalls: m_Calls: [] - isGetPageBySelf: 1 - currentIndex: 0 overrideHost: 127.0.0.1 onPageReceived: m_PersistentCalls: @@ -934,12 +944,13 @@ MonoBehaviour: m_GameObject: {fileID: 725555479} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.84313726, g: 0.7529412, b: 0.52156866, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1021,7 +1032,7 @@ MonoBehaviour: m_GameObject: {fileID: 746257126} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} m_Name: m_EditorClassIdentifier: m_IgnoreReversedGraphics: 1 @@ -1038,7 +1049,7 @@ MonoBehaviour: m_GameObject: {fileID: 746257126} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} m_Name: m_EditorClassIdentifier: m_UiScaleMode: 1 @@ -1147,12 +1158,13 @@ MonoBehaviour: m_GameObject: {fileID: 779108440} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.84313726, g: 0.7529412, b: 0.52156866, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1257,7 +1269,7 @@ MonoBehaviour: m_GameObject: {fileID: 938718532} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -1271,6 +1283,7 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} m_PressedColor: {r: 0.9372549, g: 0.9372549, b: 0.9372549, a: 1} + m_SelectedColor: {r: 1, g: 1, b: 1, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 @@ -1278,11 +1291,13 @@ MonoBehaviour: m_HighlightedSprite: {fileID: 21300000, guid: 208a4e2e11e5597429f005436342f000, type: 3} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 21300000, guid: 208a4e2e11e5597429f005436342f000, type: 3} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 938718535} @@ -1320,12 +1335,13 @@ MonoBehaviour: m_GameObject: {fileID: 938718532} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1338,6 +1354,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &938718536 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1419,12 +1436,13 @@ MonoBehaviour: m_GameObject: {fileID: 944149851} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1437,6 +1455,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &944149854 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1555,7 +1574,7 @@ MonoBehaviour: m_GameObject: {fileID: 1036863574} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -1569,17 +1588,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1036863578} @@ -1595,12 +1617,13 @@ MonoBehaviour: m_GameObject: {fileID: 1036863574} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1613,6 +1636,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1036863579 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1682,7 +1706,7 @@ MonoBehaviour: m_GameObject: {fileID: 1049342132} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -1696,17 +1720,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1049342136} @@ -1722,12 +1749,13 @@ MonoBehaviour: m_GameObject: {fileID: 1049342132} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -1740,6 +1768,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1049342137 CanvasRenderer: m_ObjectHideFlags: 0 @@ -1795,7 +1824,7 @@ MonoBehaviour: m_GameObject: {fileID: 1103808275} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 638c870cac4da414fba921606d504407, type: 3} + m_Script: {fileID: 11500000, guid: a8ee847e95b574547920a8271a1e21f9, type: 3} m_Name: m_EditorClassIdentifier: m_VideoLocation: 2 @@ -1926,12 +1955,13 @@ MonoBehaviour: m_GameObject: {fileID: 1103808275} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0f17cdc186456a4469a139a104d2ca72, type: 3} + m_Script: {fileID: 11500000, guid: 00c0d047637d71e43967a355e0897d01, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2001,12 +2031,13 @@ MonoBehaviour: m_GameObject: {fileID: 1237191812} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2019,6 +2050,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1237191815 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2102,12 +2134,13 @@ MonoBehaviour: m_GameObject: {fileID: 1264086240} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.11764706, g: 0.11764706, b: 0.7411765, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2183,7 +2216,7 @@ MonoBehaviour: m_GameObject: {fileID: 1282467666} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -2197,6 +2230,7 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1} m_PressedColor: {r: 0.8113208, g: 0.8113208, b: 0.8113208, a: 1} + m_SelectedColor: {r: 1, g: 1, b: 1, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 @@ -2204,11 +2238,13 @@ MonoBehaviour: m_HighlightedSprite: {fileID: 21300000, guid: 208a4e2e11e5597429f005436342f000, type: 3} m_PressedSprite: {fileID: 21300000, guid: afd784777c62d3244aa928f7dd1e9423, type: 3} + m_SelectedSprite: {fileID: 21300000, guid: 208a4e2e11e5597429f005436342f000, type: 3} m_DisabledSprite: {fileID: 21300000, guid: 208a4e2e11e5597429f005436342f000, type: 3} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1282467669} @@ -2246,12 +2282,13 @@ MonoBehaviour: m_GameObject: {fileID: 1282467666} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2264,6 +2301,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1282467670 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2374,12 +2412,13 @@ MonoBehaviour: m_GameObject: {fileID: 1531814866} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2392,6 +2431,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1531814869 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2461,7 +2501,7 @@ MonoBehaviour: m_GameObject: {fileID: 1550112391} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -2475,17 +2515,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1550112395} @@ -2501,12 +2544,13 @@ MonoBehaviour: m_GameObject: {fileID: 1550112391} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2519,6 +2563,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1550112396 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2588,7 +2633,7 @@ MonoBehaviour: m_GameObject: {fileID: 1587564875} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -2602,17 +2647,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1587564879} @@ -2628,12 +2676,13 @@ MonoBehaviour: m_GameObject: {fileID: 1587564875} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2646,6 +2695,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1587564880 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2701,6 +2751,7 @@ MonoBehaviour: isEnablePaintBG: 1 isGetPageBySelf: 0 isEnableSceneTester: 0 + targetIndex: -1 --- !u!1 &1663065344 GameObject: m_ObjectHideFlags: 0 @@ -2762,7 +2813,7 @@ MonoBehaviour: m_GameObject: {fileID: 1663065344} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -2776,17 +2827,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1663065348} @@ -2802,12 +2856,13 @@ MonoBehaviour: m_GameObject: {fileID: 1663065344} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2820,6 +2875,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1663065349 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2901,12 +2957,13 @@ MonoBehaviour: m_GameObject: {fileID: 1704994858} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -2919,6 +2976,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1704994862 CanvasRenderer: m_ObjectHideFlags: 0 @@ -2988,7 +3046,7 @@ MonoBehaviour: m_GameObject: {fileID: 1812602783} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -3002,17 +3060,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1812602787} @@ -3028,12 +3089,13 @@ MonoBehaviour: m_GameObject: {fileID: 1812602783} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -3046,6 +3108,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1812602788 CanvasRenderer: m_ObjectHideFlags: 0 @@ -3096,6 +3159,7 @@ MonoBehaviour: isEnablePaintBG: 1 isGetPageBySelf: 0 isEnableSceneTester: 0 + currentIndex: 0 --- !u!4 &1824879208 Transform: m_ObjectHideFlags: 0 @@ -3172,7 +3236,7 @@ MonoBehaviour: m_GameObject: {fileID: 1832217221} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: m_Navigation: @@ -3186,17 +3250,20 @@ MonoBehaviour: m_NormalColor: {r: 1, g: 1, b: 1, a: 1} m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} m_ColorMultiplier: 1 m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: m_NormalTrigger: Normal m_HighlightedTrigger: Highlighted m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 1832217225} @@ -3212,12 +3279,13 @@ MonoBehaviour: m_GameObject: {fileID: 1832217221} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -3230,6 +3298,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &1832217226 CanvasRenderer: m_ObjectHideFlags: 0 @@ -3284,12 +3353,13 @@ MonoBehaviour: m_GameObject: {fileID: 1905149070} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 1, g: 1, b: 1, a: 0.49019608} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -3376,12 +3446,13 @@ MonoBehaviour: m_GameObject: {fileID: 2033046875} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.9019608, g: 0.9019608, b: 0.9019608, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -3394,6 +3465,7 @@ MonoBehaviour: m_FillClockwise: 1 m_FillOrigin: 0 m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!222 &2033046879 CanvasRenderer: m_ObjectHideFlags: 0 @@ -3489,12 +3561,13 @@ MonoBehaviour: m_GameObject: {fileID: 2138975509} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} m_Color: {r: 0.11764706, g: 0.11764706, b: 0.7411765, a: 1} m_RaycastTarget: 1 + m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] @@ -3527,6 +3600,11 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1189168522907383256, guid: da961c31106ff5949974f5e38c4761f7, + type: 3} + propertyPath: language + value: 40 + objectReference: {fileID: 0} - target: {fileID: 1189168522907383257, guid: da961c31106ff5949974f5e38c4761f7, type: 3} propertyPath: m_Name @@ -3587,11 +3665,6 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 1189168522907383256, guid: da961c31106ff5949974f5e38c4761f7, - type: 3} - propertyPath: language - value: 40 - objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: da961c31106ff5949974f5e38c4761f7, type: 3} --- !u!114 &4352828657788332677 stripped diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle.meta deleted file mode 100644 index 62f6a82..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle.meta +++ /dev/null @@ -1,95 +0,0 @@ -fileFormatVersion: 2 -guid: 38dd97d3a916f52408fb2a2ad1628525 -folderAsset: yes -PluginImporter: - serializedVersion: 1 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - isOverridable: 0 - platformData: - Android: - enabled: 0 - settings: {} - Any: - enabled: 0 - settings: - Exclude Editor: 0 - Exclude Linux: 0 - Exclude Linux64: 0 - Exclude LinuxUniversal: 0 - Exclude OSXIntel: 0 - Exclude OSXIntel64: 0 - Exclude OSXUniversal: 0 - Exclude Win: 0 - Exclude Win64: 0 - Exclude iOS: 1 - Exclude tvOS: 1 - Editor: - enabled: 1 - settings: - CPU: x86_64 - DefaultValueInitialized: true - OS: OSX - Linux: - enabled: 1 - settings: - CPU: x86 - Linux64: - enabled: 1 - settings: - CPU: x86_64 - LinuxUniversal: - enabled: 1 - settings: - CPU: AnyCPU - OSXIntel: - enabled: 1 - settings: - CPU: AnyCPU - OSXIntel64: - enabled: 1 - settings: - CPU: AnyCPU - OSXUniversal: - enabled: 1 - settings: - CPU: AnyCPU - SamsungTV: - enabled: 0 - settings: - STV_MODEL: STANDARD_13 - WP8: - enabled: 0 - settings: - CPU: AnyCPU - DontProcess: False - PlaceholderPath: - Win: - enabled: 1 - settings: - CPU: AnyCPU - Win64: - enabled: 1 - settings: - CPU: AnyCPU - WindowsStoreApps: - enabled: 0 - settings: - CPU: AnyCPU - DontProcess: False - PlaceholderPath: - SDK: AnySDK - iOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - tvOS: - enabled: 0 - settings: - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents.meta deleted file mode 100644 index 0cdff37..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 226b1350bd97743e68c430da3b533bb9 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist deleted file mode 100644 index 95e28df..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist +++ /dev/null @@ -1,46 +0,0 @@ - - - - - BuildMachineOSBuild - 17G65 - CFBundleDevelopmentRegion - en - CFBundleExecutable - AVProVideo - CFBundleIdentifier - com.renderheads.AVProVideoPlugin - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - AVProVideo - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.9.5 - CFBundleSignature - ???? - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 272 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 10A255 - DTPlatformVersion - GM - DTSDKBuild - 18A384 - DTSDKName - macosx10.14 - DTXcode - 1000 - DTXcodeBuild - 10A255 - NSHumanReadableCopyright - Copyright © 2016 RenderHeads. All rights reserved. - - diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist.meta deleted file mode 100644 index f52e2e7..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/Info.plist.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 329091227555e42b4be324af3b646185 -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS.meta deleted file mode 100644 index a2bf092..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: 9a73c2d08d34a49868231f0d24d177b8 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo deleted file mode 100644 index dfcd797e62b56a554722ee674708e181611cd390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639056 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 jV8boZF!T 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
  • 8f&F%w*(z%w?kS@n3 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ÿ{+6Ch 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 T)0QT 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 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo.meta deleted file mode 100644 index c6632f3..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/AVProVideo.bundle/Contents/MacOS/AVProVideo.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 2009d460833da4a2baacf61e03fcbcef -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android.meta deleted file mode 100644 index c86aa2c..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: a21f7f1c229b204429d1b4b288a93ff8 -folderAsset: yes -DefaultImporter: - userData: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/AVProVideo.jar b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/AVProVideo.jar deleted file mode 100644 index 6b45178853c4aa7f57c5788f0205444bd958c855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174509 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

    Bo5H3b*Pk%l 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

    vrC{E#M%Dydn>{$NdJuA za60boGOyV*>zpxT2vh$*?<GgMzG~|h&%4a~q36_oJG_@AQ`9$F1{o^Dx{SzNGEEM_33WAO z_hvT@L;#atyXA}E2nU+r_Yz2IRi^`Stv{QTT+D@nHxofQbU^?ohLN>6!#vK1ckP3* zw9YWutro+>E9`v??uertYQKmr(Fr3^3jx&vSEG*p!oy^SpY6o7MCmi5>i%;mgEm-+IEP}d4eWvk zAgOy6;^%|Iz)zGvTJM7UQY?Zra)K0vN+0*YPb0M2zpB%MO9#z?X?t#g{zOJeCpgEy zDX@$(&W)0h`e|E#%3NQnencdFRS@qEwug^WneXwj-WjZ4{7Xn;!U)_u96>2Rl?wdC z6;ioZV+uTxVk1g_o<07JAmn>5m;F_y{GPrP$Z!-$78^vT7DyG)k8|;tsZ|KhEhufa zFy`LsQ(_n>v>`#!`dU+|(0r_VA4j}-S4BpNX(&6SmsFB6dH%JIv~ZcR^X<+1sPxB? z#&~6lQMsw;y|g-UykyGBjkr2R{9Y$*&JnN3Wz2A#xRkmQWjuLtB^4$yGV;h_s0vxt z=wP%rIRQKJh(&L*HkSN|T67W`K@4T6O^OKRat)ONS>xh)b$fI>`Uw*LepJEDZSvy3gd4JBd#w>6V7Z@Svq8Kg>RgJ(sW=S8$RIcJvPIC(%o@<5hj1-iVYdxkmZ zl%k#uk1iJrvBi0EUzT7BK}>Ggj1C^DmXv&FUVKh5E&WSVaCNS7GT$6a*(eMW@CWOo zIJ+tN^!12{U0{&;8Xh%%)I~8Qw!f(*IjzC43em33&|obRWmlqdilv3!H#93Ut>>+( z-7;9Rd*juFI#{uhC}8wx7F{9_rpyW#hOZT=MP;LrlEgFt;WJeh2Lf3EQnL2YmUu^Z zaZwt=`M;S1+)aXa77JG;6*^m6Wdv-Tct6s~LxHz+;>|n;nhjsRqY4h+g3gG8((oW_ z6^`oMJHK8O0t(*A3=L{;Q*k3RNj`>5MfJ^mX)^P`@*K4@d^tLR%(8-oTPT~4&NRWZ z0=-LE7Dnz}9=llUA1$w-jH@c9LW;$$(Qlr+u$R^5u1!S7{Su3Qom|ZCj{5?T@f;bi z7J}QWmZMv;5@7_LMWG~$BP|+Jaw$eOx=9w?IPQ<(PY*S8N~Te;4R#|6*zzu9OgPtv z5uNsGirl8eLTaxJipzbpNXh&4s#@-yl1b<;8xSOLX= zP&qGC7JE1^A3K}p|7kiqb2L2#m(KdF`7|?|?3Wo=? zbc@mM)|AbkYv}0_pH%hYxE}=e8M70$P;?R@cWz7~W?r7N8cnBue~|sKpQ~=K=St_n zcM|S6@N-lIwPCyvx2(ga&gI#G$~L--!|A7tL=LvoXr@}U*lzVme+2E$)6raZ!%vr9 z;dSIYy1q*;{cGD47lZoX*b4RI7(!iT4$%Wl&dPO%m7i{zf9Xh@Jg`fFJpM&AT6kv6 zRmGj4+ZG0RM9LoHO_##Q(^kut+r~4N;KiS)#mgeFcV#ioTaz-NM_}7^5OG<K}q&_WtQoh zwk@g@5e5PUCb$^9x?&H!x=PJ>PUT+NT=orlhs6#3DPwZh=wM|h zDp1!WrH7br6C)NIazaCpYyUXx02ZD@F=zZnwHU}?sd`?sOBJN2qrD-iWwRu)jc1@R z$#GF^7~i&tj1*cDp8xnQ-czP7@m*u1Zl0)1vK$AazL(^F5uDynQ3=m7L0#hwmVG1k zD}1MWRz4j0X!GL=Jl+YkYU|y~ZFw4p3x`y03L8TBz%jT|pWVFS*ym*Th~A|LA|+V) zXTr57-Wu6ZTh{b|c_*ifE>4o`}eM-L<0R zE^9q0aL|;?2sAJ;!kZx@`+cD(*vvOBjgoyoWPSNIl;aPzc0{@oVPh_(9g1YIc%MFR z>Sd!^`EKHJSjCv|qCVw#(#2_3a^y4Vv9QNCqGXxpl;b$X9IlywR&RYmKdiH5b{gK#=RWJfU)BC*qUcn3Urq*V zp+6zWgobk-ITkmue$GWhjQvdLYi=@UZg>=@2uYM@icwcK*7I}{)q-lmxlrFD*e zGYoaC=675f>b-EqZeGZ|UlQRzdf@2On421);kLu&9~yCFak>4Yq}b)6j)d+QFWGfw zB{wc>9VnACL=KqD0tQHhz0x}J@pX+vf#is?Q-b&UZYpC*0_9dO%&Mu$T5J9A9@CGmoYU7yFBU^?C6`k?Smslv zy~n+8(B99}eVZ2E24DI^RRN1TG8H_@(~pX7^=VO-k7it$R|6c>lAZh|;QEG|XJUYWugG`JdeX<_qS$7skDeaMitEiggCI@vuVE`CIdcmtEKxqB-nRn9K! zKx;fPl|4-UU<)&4h(zISy&D1OUEI$t>YYt?aD@Qea`+C;Q}T(7{GlyCTFq9T7d)0( z6~D=K#?h^*H@GjP|D$Bu0x5kFNL$=V6k|L5$sLN&9g}jl=HRV|OVzvc2}OdJVIAw_ znnaQiIaD7#QzAIE%Gb#fA<=z702?@6u$M&I1M$-xyC2_iOh|N{G*&3#+v+_)ya{jyHZ_I`s#i03DyUPJ>b-92r6r!(6N4(QqsFL&EfD;Lfe!O_Fp z$pz}=;pUGE{lt$|Cfm|T??tcEvD@jfzZZz{usTYE;!@v{&P_#Q6HA6Fyw1@&l%hCo zI}L(f9re+j6HQpSVkn(;gn8}aUFbVcaMeeK7chX?nZHK6^MuiQQ8e7qm)U2q1;c%F zgvkWr6dvI=&gTgbytr!_ghNXqleb{Kux5;-H-`y-niOEgo(f9cz~|1wFyaYW+7#c1 z>QGLsHx(_`hK>SFi3j=Lr4txw^N^g{P8Rt;$+WikAC*46@C`5RpL9+{j$P#zxgjd& zTXxhAeF$2mwEy7E+AI}>Y_5zpRitXyuV{4o9K^UlB^Jl^miRcmO{i&eM2uiyztKMm zjT^sWo-9>MIzD;s*>L{B}ji)MK674cTPi%G?lYj=`*XX3}?KOSN-> z{gdwS<^%*-{1KK+o&eTr-rwe6P#BIvdL29^q_y*@YM!QBJelVU2D83{U;YMg-k`X7 z*UjAN=I^)ig6vvBHA_3cf~hiBZ6mdEJGor1QDKQu-7U;<$eYidR7s{m4$H`BjL2kvd}S43RxNUX|+KTpuxK8f|!%DjSodN(X`7 z)kB*ZE4yd~F6@W<__faCETntrw;lw`2^i%EA2F~JG4O>4)AuO-WWnG1VY$;x?Jc6Q z=!R}zf3g~HnqG6SwDMRcJGR9c)cz!tvh(CZ5Re7Prm3n^yEW)%=VCx;a`R~#3*NMe ze*e~ww(hs+rNf0TEr9Os$3xo+iydD)b6^a#%0e=$N-4HLDdH5qa%SyeL4pQm|Ee(S z5Wx7Cr4P0-736?ohTzxZh+==j>;>d={4mrR0bF77hGmJ34o4k0w_BibapHNc+41s7 zZK(v;!QOP?$oX8iU2W93u5?+{k=*3``WCr}9{G!fE?Bw_!T=<%NZgDbZ%X%c0n5S# zYRAKsQd%KMA}r^*C0S6 zV7Xlon;v{T(X8T3ZK55mzt7Ub?96--q-~@c7m`EINAj|ape$_g(;fDOe-|~M>PBRV z4=e~T+F-g_SKr4SN{mtwQX8g5j=#1)C52YB?Be`Wn@WYV$OXK}uattpQbcf-ggyY1C z@3~IxJv!I1PJB5YSDBI61+m;HYdn+lqRq;tWPEOuHxE~Lb(og)Y`CN0I0Ih0io|*w>e!d;l%hhMasXO*NtVwU<&yhd8gj(2 z(8CdXbF|6cClJeckSOC4iNEb7>ylaP-i}F}c|v9WDWJMV7r@6lKFU|_^Y4j_Y*D1| zi+WzmMo`A9BFnwSW0Y(@ZQ_MW?-}ETCfU2jAK&A!0!ue<5u~s^p?d;TWt`xkrj+w{ z;UcG*)!t%8Hd^D680zr#bhVZZ8X8+Yk5eS-@GrIMY8@P`4f`7FedZ5_kvx!MGul~Q z1k^kYm{AjOgU4(^yB1y8XKlK3)IZT!bVCeC6Fb-L#6yZ5D}Lh(3?%$`Hg4E<(gcD# zQJ?+R%-#&m7oI?zu7a=G*U0_a|55(O`AZngE!&mX;ZqB@xB(y%m@sa!oQTv{!$tte zmXu1Dzk}Yu4~h1M|@`P^$I~Z zEnU^kxP}$=eIH4_GyjVmE<1n6JG*hY>LTX#Qv=D64fS54D-&;jT0xS^xC6{xV{G>E za}FdKWtWPUkX1}Ql3E*nk^rXJ+c|#rAca2Wgaj;Lu(Vc1&)3KsPiq5ALx1@I!Z_eB zv*1hBupOX_dqAsJ(kkL}}KFL|oxJB^7Lz}f!Sz{`4Q~9e{ak9T(++mU} z-d|3M1V&A82knnmxSv=;xj{pxfuvPa2l%dzS?*unNn;+t#l#^F52i7Pn@=3ptJ{kk zq-!;{Y7*9EMz<+#yA_&Am(p*(k@QW4Jd&xtw6w5`l|eRqB{qEnN(!ltC4FTm%_&r> zhQioAf(tg-?+b2Knw`o8xzD-Oi7t=uCrGqyqD4GTxommWq&~#uo;8kFX=lo+tNsy+ z&>IBsJ!@K)pXn;X!9C@Chd6ntPvB%*q80ldWHx8^s)bKl*mA9CW!{Wp&R)Ji7p?MW zRMXAYwbOjd606961(&!8DuI-rO&hW2H|WvXMBPepo)|50mX65 zH+DtDfs^chVc%5#?4qP{^wKGSh=XNVJQ7j0Wgh@pZB_^neX5#A=M9O@|%MJ=VAYk*Xa>fJyaJk;+Q zX&L3zQ1LL2)@(%NH@Ku?sZu4$2fQRlWgaqdQ*fKwro<8E&}Ura0KqxgutI$!ZdnXY zpdiyi`4W1>nwMwf{I+GABQkV5(jA58N;5SkylC8w#HN6y)lj5D;z%NEyi!)CyJ(C` zIQnTsE%bpe6lZYQma(wEgh4~;qLZY2gUwFk3ekcKgPvu!+!S;I-ri^qNj`y(!R|j@ zm2hDnLiY}Av~^bQq9$$Xg9e!Z>k-BdlhXXIwK!>hdrb%sdt)asK2q*p$QD%3EBOoC zFLxxC{h8T-Lp7qX!>ye>!|d`q+Fe$lO7I(15yWL0av0bc971i)uG|GCs}8nLn@t@* z_y+y;9dr#|jv2N5Tlf z9IlVjh^CAVB${>#QC-_>{r3TLzb;Wys7B4rF0L}m8vd4R{)nY1NzRlg%Qjf~*sR9G z`1x|kmzPFmM-xXxf+SOQi%yjRVfvt}N4$w%A~kTu=f?4(vmf^4#*VR-VC#);==p41#aO0XG)??68LO9}R98mNL1Zt3(#4#-!yp zisVgi0M7q&nXbiYV_PT6n5@aggoO19L>b(dhVP#;ulQV*?H@6Nl-^+=HGEd?xR67^ z$Nby(@3Z#r%CZ+LShji5J@DSIuDRV!qxi^2pKV+)XR$DEeP@;VFX{zj4nKAvIf*{% z>0=C9jZbAbJY{}jm&nbeP!M}7g?SQaF{{{HA+)_zVsEBV*(F>rmS>?!`6Uzyl(gJY z%R45C2_gJ>w9)>qBt-G*Dl1vv3FygT9DH4-8K_C^_KQa67lYgJfqy@K9o9!&&87mW z8m9t1B6fEpINdU^uD&FTdVh3Yv)bRNxw*O0Q$s=qV3wMdOHkcjiQTYlc}l;?z;gsj zQx=f%FPoqrk|N>sGXS45c$m46Er%UAT8+m>G@J8T?Dy!@2- zgD$<-%eyVxZnIV6Mtp0QP`N;Vtc53uc!}~X;ulTp!XV*;s$!cPC zhUN@#^XTjoroZ~P(`!54U&YE%sFm9{6yCqdf6IRBeOnO{)1MpbKl{}BlRI<%STqxK z+Md0V-(x3~|CjXQLCG8I56)k`)4#%X+J}hwZahk-e;@dG|0+G6B{`E9N?rPEqxxyZ zkQEJzJgh)Zx-c8?nd*>l`dvIyeo0oYo_XXOmfW%$B#FkFP2l4eWL>BYobU4ufP-IT zdHTj7C7gVR%Tev3FxCxX74j4&mx+>YkRM&Z& zv*Hr;iR4VGj7%%{?XYTASZ=*A)VrVeO#AUidXeiPYsC*O) zR8Z+3S20Vu?4OqO?(8(UDTTaHK_$%2%3({_-VGAh!LCR0&TY_Q-hgfm3~8;b`dQCU z0#Q>5G`vMEU8&ad1dlhlcJ=4sS#L0>W+1v>rG(@x@4R;+x|$?2D8rp~W({7G{ZIp| zLo!t<)IUa9v8;&Bcxo>?=F-x`Nr4nf)ybVgR&^iJq^_p~H0z^^)a@qH_p^6m)5zc& z7#g8MOe1==lK$0NO`ku+;Mp#kt#DV%dKCMScHOhtMP|9yb(iD^`cs%PMHFqJ8#y4$ zb6`Yn{(i{yIw=LiaX!%QnmyCd#U@La9$HZn7Ox@41+}YkiXv;dm+)_Q*hi@^YREux zRs9q%@k^*Sd!so4u~VAWAN>dGJ_HVQPaTZuY(V8rbXt{|u9cSf`OO|Eb^mQD#hB#n z)VO3^PSsV3bMG>wYg$;i=yc@6-fsMX^wFM8tPVG&X?cIdm49I7hNExnq)MHwgiu~i zE|ZWA2j6mSEOMt74ti5e61H~TUc(4v8D_@iREh?Qk8-M6zZK=~-pwcM0hq?_+4K`Z z7Ks_SN$w-v2YN?eDvt{&R3gJCg@!E2bgGM*#GtC-puM-L_T`Zl7cf=Ip7qN<8O1+y zxYu3uC)6iC1)*N!pI2yqfL;T_995q5&N-iY@&zjj{#_jxZ!Yg)zB^(sKTeT1staD` zzb@Xu1fotce|?e*ggt|-uS?in4|sb0iO-L*debxn+cFm>E1y*@-!Rg8J&BJWRT+Qy zR3%)Le?CCao|Tu3ve3j6iTF@j6zRh-<0w;ds3LRBTk9$wR%cIGLo1XboU7rgI5LPA zR?Joj!R6ND4*sB|cdp7|rb4ntJAdw``&GuCi&QAFdwTYpI+#E48;;G{F2tiEq_3GT zO=(Y4Cc8-gD}Yu>eOpZk z(gialCCrBO%7o>r7<|Q<)S+})`MX>Z#9;Qfxjxj#N7cfEL6}@A2m!gXng#1!K6S)} z=SA?`U%rUx1H8)P&`pa3EhjGJREgU5B0dxqMp$~HYd98tibfSw(%R4Iq@;>U5cj;o zJ%4af`(>3jP;1n4jaB`|d#PY1%6Xksjp-$n+6R~gpfmJR#c&zW>Cp_e9_JCqN)jzO zHHe@-=$_|0)BQ}hX0=Y9RGh!Cvv%v)Vg85|6`F`dk?M%f3b#d3k{sIIp&}0-A|8mb zOO{&QpIko1<31$dK1g)Kk_36F9-%C_Js+>Fb`uCwi{EnBqDuMshh*@KC#Q<- zs&Z7E-ungjIsEJ)r=e+vwH-Nam^w|ARs8mP3&u|j{h1fMM-2TsnlMoJaW+gIqs5kV zZX`?Foq5)cJ@BdE?dswr@XPXM(cLhFQ!j zkt7|{%1|q&onJNQH5h}taP;M#=M}DMs!m?@&XdX)UQHLZp#lB!gK5Vp#UO-S%3wHN zdux%d#ZI7ZS1fDH_8wA%HP+qK22etAZ*5L$@}S;_0;|X$g54jh{!Iq%4-I#b6>59| zv|gWLtMZ-2+>*xJvRtvT9!cgTX{sIR13qac-$1nAnZ?~PmUv#~epyi2Ybzim3+y;W zn9ik=it;;AoUgh|b7UWEx?9!8i;5dWtkfCoqnL9aVjw6d7gnSLsTx}$>JXP%0Do70a%L13d7-U={i_L)=W|JhNz{z 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

    ~4RF2SS$DLl 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

  • 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�BryF9W{+ZTI{CXa1--xtdCtC>z>3 z*qADr8e6#9S(`fj54+%2HEVes@qcRFFnz>iqfigkj)>J=h=14sx~BGYCtcGyV*Y(|%HDTS6F^ykT8YON{AdYFk20c} zc@6G{CZ4!P3N^e&;~N%_wo^=Ox2vYqshk?72HCLpq(*hx2vE9CR7ob#rur#0K4U*& zo(}7q$Y*3aS|-qT7&rEQ1x7cj0SehEmvXG0#6UQ3{h`@~@6i^^$g`7P+k+acEwCuo z((4+?_>jkdusUNC-L1&mlfBV&xV1)UPZCdLxPPiADDZv~si9Od2e`4? z8WtJR+1$D`VpFuK8xd+UngfoLkb?zL!;0Tzs-M+kWo!uB!kVR7^>EC9ZoCCW1y9=>cmP4}6gIC9oYi$OTJ zYHq$k7(6VOOO0V};oI;;WNxkd#5g(2%@RxT@HjZ1sv{N~%U2z7Tz!kzB%()t9pA8o z6g&pZRXZQkkJ#}=S6ekAr3|e~U6!!CrC6#dv^Zt@E@F2x;X`QnD8nnGTA|yjBE+{) zr$UE;0@1cpYB~>Hw!hSLwVPzkLaaKhIY||(N5^QKG;^%Zf5FZv5`es*9wxy|F?nB9 zRkYNWja`O=HO~spHy^8L`ine^*v&nhkmm2GfDhtzegz&_noy-m>9Tj%+%K2H=NY~` z;htw>6vdMdRH9U3SRN-{SNwKOf3Q`Rzb^GD&-xfN8BV?~+<+aydb3{0A1Er^uXh!{ z`>tqvNwN({cVZnF!zp}3e5Wi^#~+XlnPAzj4CJi|y03VF>{CX4gM+XS%WuyS+-D2% z+b+dJK0tUqN01OlIPeblW_r-Gr}TjBM`$#50LOa6$~yC&M0{4n&!iPt7~oM_a1AMd zT^85JFY5b1izP*=QTdk2+!j&|n23^25Y`3C z5+strxi0jPoGZywK7r7U!b`3eMuGn6-<1vwGiJ3?7?NLkCLxrTzc8ve3br_Lbb0uI zd_+>>io)Ux^W>{TeV%X@Z7QRb{Y}Arkp+y3KcbQPu?Enc#7o-l9|<^q z!?VlHHc3{QB`6M*Cmf<+8ZSpHT!prZomWUzkl~#GxAfH6DHrdM?F$YfqCG&54V&1b z_(}2uu`Bvw_)j66-cqk}{Kr04hyLFR;r~?-{@?hh|5M5Hg);a@e{p!eXHK3#6dD2* ziip8Q79z|68p<>d2-Go45)gnBW+oz$B%hY)P!SOw!Lc6%0T}nF2Zksw@2IX>uYG8_ z@~)!ks_VMCf~E9V?PX6$|5AVYa4hex>gv{W{m<#2-7@#zY$o_MI=MF{tZ!IMIv5tY zL+rIK5G5kywW$##(Go#=9dRFj@w~Vi^gaeDT}B$3w41_7DOp;AK;}zFJOd8Dz#v!> z{f(X|2uP+i3V?f$6cNfncWi=Vb}=asg>4E{UWdZ6K@kQ}rNEYwCPRlQ3Zjz@ABnbM z3eHPNIaR3KV~S2#NR28muM&@L7_hopv|!4o=tz+#2%tztMJ_K%k_zFICDR#2!I4Kt zs#sI6WTg?7MPsSZ>=8p()XWn{)eM;i3o#{E%@moili5XQ7=yIaPv}TRQBf6^q$Dv% zbFP4&3?&m%i=ru3QDtJp+nk}?Vh5pHNDcDBEE{8JjaU}-o8Kx4$(3K2D=0}H(i4wM zgGE;w=Bh4hhs+UU9}ZGu(+%09nU4yG546D*O@Q+)$UJLNLTQN7oJ>`CCKMn_B9iyn zsx{__=oli=*ft1}YK>4&sw+FCspiPOadl<<+NNGr_;9Aul%DWR`ImG6mQquEEF?u= zbZjKGs_Xi<7BR>I`vMn(o zn_^R9f;yyBuH=M6mQA%GG;y6`Q+f$3ToFn6iNoQS9V11r+X;WQB~!U7G$oU6i?)(074MX6^NMUqPw)v5v_^dao|&pW zwu$o;nxjusE^a#`G)8V~4-rZZ`Jt%`(&Uw<%4-fSy{__YY_dE?sqxK~ye1 ztDb{YKR2kqjZk4_i~c#mY)FIl<`A|;szZ9ECaqC=<|c7adL}2eQ+j46^(%?*79Q(n zd&qyr0{rsl5h&jhs(eJ^KY0WRqQ_G1eh^viI-fG+D^`J|_)4Mk7exHhll+w)xX?bQ zsQVhC7$ke@BbNH9-ZshmkoJ@)evHxfHUKY&{UYCju794bZUuE`M+6#JVr&_9Q%uz4ZHubBTX`D!^aSc%Cs(Ci4!naHc zqI0c}j#6R}hHIQqp>wGiTahLO=$!d7-k+MXr_r!rS)>Zu?-)V+9QYiIkQ^>vN5rIq#(E~?6|9iEm!=eO@-&|1T^w}sL%!(`6bJkUci zHB3)4)X-K}7&3Nt(9h>IlOk#?9#7r3Ekl5OzvJ#r3Row*r!sJY4>I!c<3gTx6e(Dg zO{&S7&D)zfe%EXgw^Q^NtgBu+cAl=z{(FY5#>o?tks}yCG%!tJeG9qnFMI17C><26 zi0L;i_{500SGu=zRu7%D)9-_Ve$xq)YTQ}E#;WC`sv6f+HMQmCu4vFqzFQF5M!VMk9tyKNvDuV%I+(I(AZD-~2~)g8{?g_kno5vc2{YMwhV zI_8~nEX=4%CX1t$)($PYrC?~RCTae~Y`5NASU_nkz|zn>EWoBZo~WaBPC1+=lEX+v ziSn=Q-3;7dS=fSU+1a*M4+ZNqxDLL+B1^Cjvq!q{1^1CJD$3HE7?6Z^n5FI?Bl+@L zryFqaP*J{3GaoqYZ3*m_NaWYC8jI8?We;~*hzRSEc^CIIK+g*Pn)_PMr7Z24KB`;J zzwi{Wm*`per{miuqhGYGEobb<1e^0ZLMmoZMSBygE|PZn4joa=lTr`GR9IgqgAuK@ zuH>q`LlO3Km*ncgU@MP|@sbv4;u|wpO;JrnafJb~PLX=O?&9>KTWUTq!)2zeaF}sX z-Jj3IBrrm(hs6<}AyJ|s(5m8>BoI4Etk@Lp(%^1wsVe#99dOJspJ8lbJiiazTX#dD z%ko$qm3pLA&!T4Xlo3k5=(yr*VO~Pnn7cQ53 z>m-j&+toOJ78N7F$w#Kf>twj=rua!Cc#@Yp-$GEeQaiEzk5C1dkPknj7Y|Q=%d+Yf z(W05}vP$YEFo)HcY8`%CM_$_RD@{JF$ZphU%>(XMXb81f)o#8q=qV{0OK8H*8b}(X zsngc3uI_ZCIV{-4I7Jn0HN_I}Zl5PdY7gkC<$+{#SvFNlS{lVTh4w+Gr{`JY^wm?0 zIqGT$^;!BtuGl)e0mq92Vol4Zk^(99KuPRjqJ`#B_Y=bhwNvpKq1+dKx7N-&?44sX z-*JO|M~%+kW|3wG%Xn}7)~o1UQ|8^&R?<&U{FebYGEc9Ab;9Si^VdrnH*7V)mdE4~ zEj#nfiOW6FUF4=LJXlXmQgHIdZn}5&x%!TNe`=~eHOK7@KIqyz<`gI!ig z4z-k{k+!a)m|-KgLvJRtHs4fEO7m-loU1QR>Qv3}f~RQswM890Tdh-rj2%3$&8sQt z>siJJs2|O`Y2c!{!1Fo2#mPqg$nLnKsi&rNNk3Zp3bZN>YKvoZOz>6hid`FD{cFK= zG_I~jj|*LmiGedBXPPBL!L!)Zs0F^zn~nH~u9-(Gp~WNTLl>SFV`G$bPU>?Qj|wC}%JT{_QH@IKlAdIC@L{gy7{zQWYG)Yg zf2zALQa2?HTKFNl=X?3+Z7XzIOyVgBMrIi3vsG6lTannP?-|5Tg zuIwi(tDGLu zMi$DXbmXf!Fdt4Jg7r2pM!Y|zwR#TP3gQD_I?&2<5(vq59T*X{E@ExzAgX6>jxAq% zjuYnEUCanI)=yzNwR)nneL7~F!PcMA?UO04;KE=)o++hoemshj8gRi#(ZQ;Ra`A-t zM*7mo4#ad^gj@yfJKzgk+rLR(yI zZJ$LeBMaL`4E;MMETY`5tt(;btl&OC=x)&c*Kchf>i;6ET^HjYP2be)TWZ&^&^?6p zo>#{yE6uOY7qGu~*|xrda6P%?)>PX`HrIopEhCRkAL++BmAH|mK?wO7#nh2p+5cTB zq~~?jL*}gPqpJX|VLj(mEH0tGD(tPJ!xVuZ?F_m6F##-)gh{9@J4Lpu8Z!A7L&O^9 z8c}3ifj|_)Hy3xM3Az?p_zACL&{{lltbAyvo!5G;u(gIJU|&0XmvPlKc6i)6g)GKgGgV?Ma^R9DjYFZ zmfK}o0VgO64lh&Hp{r2yS+iTo$?olrrVz<5iabAGP=vzX$LHaDh4y)Y<%}4X@~jZ_ zQdaUvyC8!#Qn=b8c_$UVD)oXv?_52%7Zk9%a(^&0oFf$T8rlnwB4taWw=AbY6U=ht z6!!ryf>RTlUA`yc1WQu*b(L|Dwf_b)g_buaWDZwlN$Bdn)V#94{}Zezi61+=0Lsxq_xbyn&6lfYJ8F;*R*B?2~jTI{qC-Cr0a zc%nbYQ%1xc#?l(I4koK#^v`E{ebr9JzCgFy>RU=boaQlPG;ZWqxgckupF4r%g}crG zBcvogl<79xPV)}(6Wd!45%zdNQ`daG+6;pohO107h%Bq#@I2Z2 z%=e=R>sBmAmMz}9nZI;)mdL0~F*q)5wXR%V(hO;%mSqOv?a+FQJKLTHde46L+2G@HcC|a@a0IC8d|m`-zUe` zrt^_+bbANYn!{z8_78P!ru$2s$Fp~}LK@z(xzTgef9buh6>`#r8($QmAcipsPvfHX zHr6W63gTBLin-LSY*hJiULxHw<;=m=I}u25sAwAH;Ir6qBVbV93Eifh{Kx8iW2Xp( z<8XrZEUl}iQS|y*QA~8qV?!9l?qXnUAH!WSseu*kF8LYGTza&HqdY|CFmFQ(gtUS0 zCy}Eb{btOUBqcc-M)U18GXzg7;_AbBG!CVVzbs45K zQ%nj`FkS#5M_pfEqLs&xUs)#I7k)j(L@gl`310V42DM_PjDt!#r<70xfv@wU z4YGtau)@DGD_`sP1|E+n8h`=3?!#0IVMlmLm&{)4b*efejZI zC1Z`vtC54N&^|V7bn)=l5^|R|#Udw|7E=NCcNjq@y_wnr)!dITy+$fbI334dEEwq1 zTz!OY$RR>_x(8au1#}WHMlAIBR>7uFM2~4+A%~KTkTyTfptDsZkZt(Upgx%3LP4904in+Aj=WIBfxnn>ExRW1`~BMDhb zimI}xBrC}?CFbY|%fl~QpXXE+0#zw)G&eN2KHXTZVN0BMXtw;W67%DG6NH^-?gYg_ zl4mzEGgtmN88haCtz5$`Z?0VXSfd-4Vr;Q!82TT0J{rW z+uR7R?LqGy3_+tK3)Cm{Vb*p)c``EhP4_S^s1H4YG~wr*Wz7nk3A|CmJ|T$L`B|_Y3jQ zS+u@_IZRxxcyht~8<;F^!qVn`QZKgBzy5s%UUj;&>1-+cQR(Zlpq&bNVb%JI1##Tl ztt)>>m#|Wnm6{@u8OWj+I!y4$od3C4@50UT@S6mDaNK1{k>0?ht18KIa*k`tG!*ZOSJhX4H-jZ7Ao`kIiKND zl8I%^fAxwK3}OK``x0RntF(M*w0&JkgA}##{vK0p^^VR?{CYe3gkptMR`usq?NHM* zPhWHHGTyJOb(yK3uB^)8LW=bouV8xiY$Wv_uV~~v0bj)R%k3BJ6RfYb%QZY%D4V2i zd^}KjQ~Ji>Q9pI=?HQcKkw9gp>I?C)At5tY5^5Vwe<0_1Sz7K$R9naIh>bCmHGmTwSO-*|{VEqQ7F#u3S;g9V_lOCG z>lUMOw9jp^qU2%@{mflHE^Xl69R*<^a&&j2xG+9auHS|%rsAbp32U|b@vEF-_GniY zUas|s(y8CX(B$Qwr#-nAyz^Es*1_gFe2(zT)9Us2W9HOnoTJ7v_8Yyp zbQb{N^kDmlA`F&BnO(UX!Y5pf)|rvqyPgCnIF}eqjZBjz^oB;o4?{_~?v|!;UA~sj z06W#9w>f(1%2`Es>O}lr8LqGP5uf7gnuJ+HjPo-jPr2t&j;%jdm2+;3??vc=Hs(x? zQ=|W2sXiO?%66$S(|=C!CLHNae?~Fa zJyupPE09}`^k0O)b5k$+_!ExkSwcH0TwMnS4RFBB%b@#TJ$2_8^xf2{YsGxdN=agS_yXR+*2=#wsD?e}C}8jgAvrE62(47pDtqzoTso`U=$=Ug&^YEKy@*7mGZ zamw{4&!v3~?R%qW;ym?&n$B|e!NvH?2E$PNPIx$7t^TD7zD$WTdku)j-|U>jxq>G) zI$ss-c`;UJr|UY}7ga7I3Y=6Ki)rUliDlng$NiF3#K$8@Os=MLJ*u;|Fnd`lEf$w* zZ??>Y`58-&?{`$vm9F5hA99k5!P4}LcElo@Am}C7kB+-o*8fpc%RPr4DZT9G9p0_v z%$psE?N)T$RpUMyu{~>yd8bTjjLnic+i~`*TgQe!CuMD%E~YVpvkmRfo6R`F_WdS{ zburPtMNot|`}2ek&b>t`$9PBme8?TBw~b@&X`vKykfbF(mdPB`4Yv)vdReNAa3Q@S zOTfKG`#{7ZpG_AGj%tUtLp{%vY_QZM-P^3=^l^U!eWP zM}z%k_?6P59etEC&(hHU4r9j(rfiM}i5H!>yyG)(_=<4}YkTUQ z?D=E89p_A;!X(SA9pqP7O6VFRHu6jzm-8uXHb`+HgY>WMw*iy{v24d*)4Dd~jO@~1Y}YpD zW7{@zu=&v*jg>v1_ev;wVIH3Cf6KG(paHzOpZh=n8rfIh2=&aoHH3RBl)Sjt-zd8T z_iyCCLGH0p{E!b}WL|#(FtYO8G4GdTUgIP3?W%4?K4DS(m=9aYbqM>$Ll8u^t%o3p z`qo1b#Cm2!5CnU6L-K<<=0Xredj>)aR6pANmdvXepgrSm z3u(`4=vLrU4#f}S&^`MO^6(|&&Ks$JE@UtM6@>g#5J13u&@cRHi1H12`0tV%z&+#6 z4ZtJwDhF`SyxWPmWjgRi+A|*_5cTPY@`t@2lYK>r_}LBl0lMeUx}!kypA6xTea)A7 zWr^Uo9?BQ~^hEgvKJ;fl@E80PMfpZPWXQf#NAzC_=?{CoB>#j1?6Dr$6MeTq{m>lV zX56_W`Ok&?z}>&dzCuL!uSX7BM);dh|L`0VWZ(G{en&#_2fUV(f3g66EQk2TKlRB! zVF3NC2l_ zH1*#{CgA?}iXHQz@~ety{%Co%Pgvp^j%Q#Z2DWEnVt0&BS>l`$S2>3{b$;+ykxyMB z299TBVmh`b7K8d*r4+mzhKR}y(}PqF*BrZLp5bw8 zxOZZbmxmGRdX_sck{2w`;6w(dS9a{qz41BLhteL&lNqrubP@zi&uT^c%tQ!J$VVVf zbi>`SKTd$r1C1qh`@<%H9AbQh7Y$=85uU^I>N=MX*`Zr6y8ei|u^jF!GiQf@g6?@@ zD~8F8-29@ukdC{U_2BHRa*WdRBsfXXEIG^2g`r>EEHVZY-1#j(g2^?gw3>Z{eK_d! z)pbIJIqx&AB*SH?`2;r;nY9Pc)9fZt?@LfIIgEP6^3Hs?u$q6T8H$DpXo*EQYf2k| zRQ4|X7t*xAU5OiJKtc0p(?8l%cp!HV4EQ}f<~ES9+Yr??agC?MVGa%jkfb_$A=vAIM`y=#Y*1h~94ULyzXB}DFj=FHx zW-LnEGhRnWUPtex7fvN7r(RFM>wVY1IGeUAIt$ohD4aLoIy;7UfxdVQfU$Q)605mb z0T3<&CAIVEgyE||p7F!S@EJ{V#)%{ZZgJaGi19@>KrmqrZf$6|m|f52?uX+$U|d&r z8DXAC-Qtm%V94Nu6FI=j??P!beGur%E7UM1{xHA_bC>|m*n%;}K-6Xa4+^_PzHGjW zkPp3Y1LXZo7}9p|g|vvc^A35#LBp)QI`p+-7HmqY3NRI?%wHbI$;X2!J zmWaV$pDS(y#5paHp6)|NClDlesIf2b6`PPBE)_SH!cktrQIoy<)rs*!!m;bo6YLsE zR~%J00W9uAN^^1+R^g|RHF5V=D}`z01%mg`BA(X)tGW#~Bz4sh6@HXP4In~cDItoh zKnJvCGENBxK1COnEE%y|a8p<=jY~8ObHH}oQI5q-2xEU?w-sJH15&qv(+|uJytWCq zM^X0mc2V$0_kR?3Ve*cB_rYM7f2Kc%tuYgR;D(QW94K%BgrDMkkQhUQH5lMKe|#vN zjpu#1!6&5|G2tJXu88^4b^v3|+Me`VLljLPucU3k@@DZ5ROicPF7!%Qkr`ingr z@o$eAdoi0C5pQNTvhX*CCH2ETJd2iO+rh8k(|ZG-j??^tUhJnoquYURL^d3ueZe7b z;P0bYt5fB3#fEuu1aw00^zROcr?*SynT!lY^$do77E9u zrrqaXDj562`+7p(Af9;fucrPyJ>yN2`C372*_I+)5&GfzszN-{J+aXp=S%3%4dvuG z@SYZ*v*=opWIm6Qpbm1|uGylhC*@v+qMh@rlhTg6hnUAC=W-F`gk_2d_(v#Lm49Pw$QfW)5Tulz&$iW^wDb_ zJwx(wLhB>$5Z_?rLl|5Sn+APP>-0TsL~W0kW?JjG)oOPefG(ez*1AvEpX)^VUrRf8 zpT|6@y+?H}!;Imk;C0Ay&t-Y`Mp%qB|~%*N~;X^F$`&n?qreL zmOJwfv9lyqt=j(lgkdqQayn7HX4e(L1aOrI;fBW|v1bX$29{$+lLh?&9i>9l^^QNM zzR>Z{Kh!q88!12<#r8;za_Rn#IAzDSj~YlGZARP{Hc-k5B8VFJntdkanN>vFM7mv| zK3{N-PNXppke=DHozeMIR=jn%(k{?+bc4pz-AI%R)FdzbE>{LBFH^1RK((h5wpT*t2%ta2n=t)!(;odK zJibvl5&fv-4gQeLo$61ze$sd{{b=cp^e3*}{fu9}A^eL-P}rSCnEH5)e-Ioj5=?dY z*V?l2t*63^rci{$JVNKqpzD`~PJ$!DHGYVA!Pn`aF7zWq?IUjxGD~(2(97_WGZGA% z$w)QAV6nJeB#f+th77k?Ht+TXbxa#V;s=%T44dym>R|S+eX1S#8t}@AW#@z6hai5y zHm`rR95Kicv;lmmeEHxWTc2WCry0r-3Jv{Ge6L|2dHy7uy&GvfbI-RSRyhEL@Gq>5 zG5V+Sv4_2VJpBtl<)54EslxLT+c#o9ou=6`bOxPOx(jn#M-CJ~?c)V@RrIh1JrzCR zA!g)&-opy~qxec61%P|KiQp@SjKfTh*!PZ+6uIlwCC*_fBnU#za-c$hhG~iP&>*pK z$ZHrbErQS?@*098hGLI0S*KRor`K5|K(4%tIEV2T!TwFXctEv4kcUJuIA!#!hg>e~ z1t9P$02?+3KzvQdgx-skc@;FtmP3FaZ8L%>J`J2V^9wh`r#`i7B6s;72I@)PGqn-W zA2}dlryKpnj6aPl|j!bwOopd{O6Y#+yX!roaonWp9i7)aKf4s7T9yEF7 zX2F({)(eAw(dCOJ;n+JKIA{cW9Mz~mM?QdsN#ZGrpF>41+?-)|VIy7BOxHNub~j@a zx3IyP5G=mcg?+j6yXa-*9pb6C!)RPSmh#$j7-ui8pW)s;JP#wG+&_ZvHsY=MsaAa& z=8trdz!sebKHwAkO70Z?HFq5hA)e7d`se+-`v6H&93!&`q)pKye*oA+=gbn z3*sQ)ocnA8*vKXSkOaw9`1Mfc6|+C)wB1{dP|D(r91Dvw;*20X2KH;cl6h%myl`8KUnr|Mc$1&5V*CLYZ=s&;n)*FgV&Ua5YIVL^t;B`)4PR%54J$xoM<% z7qXq`qId`4r|4gOL+~5`h8bRI(o=V?+DRK!ptxR(WXGx!lS~=+A>h8_+@OM>@EY2m%UCb#iVFXHg6*@u{col)@A!hIF% z*sMh`$|5h3GcS^hA^81gLQ!nsYdX-t%Qus1s>#=tY{gZ3?s}lw#uNLw5AB0vRI=%) z;K3SL>9tHB-x_`$u5C14&Q!MT-jRk~y8-9*-LMPam`mKKY`yDr@5+mRk_&XY=m&Jv z5JW1axvHPY6X43HG7enX=ZSJ0MO+4)ar?qSF^rOHs$(~(yeuAkc?N%nv{<6p6a#Ms99Rf2oBBw=eE>N5fV+_Nl z0qE!yM;QiF23m_^ZBtJk069`yH6go2Q@^o`*JW zu^PkdQO+B9hrn+28e@MWVK$NviT~zwWb~4*HouINUcoqGedy`T!bj1p#~(`N5!M}2 zVOE(&SbN5G#L15))GBNbOf}RB?g{R z<2qFqz^+l|3Q0Z6*C@F|)duM!@tsr2k3kPZKC*sfDJhzN!tW4ElQb{cJOaZc_qEvu zm0=>lL$nUPeo}hG`kZAi;U$9Og#A9v2E%?ze8l@f^FGi=(1#QuB7UXmh3zR6V^Gqc z6eg(`A@WmC=P&JV2uqjFfv`k>w0?p@4>!c19C}QR^?1a61Y(mD0wI!eY4FHTO^qr4 za0P@u2s;IcPPaZ3zC#3KLQ9k>15AIBh1Gpak+HlL%>=? zj(xe(27=TZJRe$36D0VfTgc(U7WpImF>d&(1IgaR)XM#Md85MLB@N0Cs&Z*;9YL3r znz&d^{c%1}QRBs>C5ZSRBsoE>Hrz1cG#5xIzaWuOjR(Q;AD~4S&}s{0Z{5lDd4hsl z!FjI{0wA3Q%5_upzUWP3UhiIQj*K3VaDJYgK$Ge6c!a2?HBY$ zbtduj3U_942W8LgBI8!21+KK`0M36pE%xvM(>EZmzn4yavws-IV*lY?BMM=}_ooLu z`y=HA6sE(D?O#fuzb6<-R-=%%#2ifEQYimk!;L=6N=;-0(?#3bGWeaIw7`JY=-cQ{hk2Vx&OKZ|)OarL@#Dfqd5cVrmK|GQVkehd=Z3K;)u9sA`z zXx_b_FP04d>eEpP&BXNZZehWJ7~Jab>b*dwOek1XIi+$=@-YCqf$_kYAGPEZC=))? z)GxW`%H+E?vb(i>KW0>q?PzR4urdR{KaLxlP6z-j?JesA3bFPAql_?A5H6et;s|fDI}^xF)G4 z7nxKu6;i1^KhUd@#Et||OlsBHpCva5p;VJE=8GF~=ue|^^dj;35@B7#8tx$;jduHz zfK`kk?7s(k_6T>miY?*y1rO3v=ay~4dH`vwBO*;YPt3Nf$*vk(M)PCGqd@bH!;;jdrsuv&gK zr)4dtmRB!m6>1#1 z1lkFceADw^1A(GTNeDQrT~J=+KbXzi)s4XKoqG#z;t`XqvPwmfQZ@I=b~&LTmN_la&od;<6?--B}C z&+C*<$8C_PCN$=J^9kHu=RMI()CC88B*npw!dbfjA$11kObo6EO=y(HyxbTtVPhlM zYkD#B8V@R3G5LLwbSGxcV*!cO;Q0oKVFxbICR6g5#9@P^=^!j8(CJi?LZQ-IUORzB%H+3nM{_y{Cix}z<|zmw{V+CkmW znjiTqJnZ>KvdkgPER7KN&{7cX132 zs*V_GTkbHtp9>JHIEo>y*fo|@Q*}{q3^MWWdH^bnE-HyCqF0F184oBbgeG4|@60Cb zz$CgKf?etk%+g%I!h)BJs2Hazo)7YjBCTTq_x%Zz-g5@LA7-xF8+xbpm{TtV&oAx@ zNxl5Wiu5z_i5(6+$7(U@h_i0vF`^wx?Zdak2|2RjFeDQ*X19AI#||LFWecueq&q{e zbp0NVF|MnWTO(e#M!;|D zEL9UOldMqiF6ZBmgh;J-+&3P(10DBtusyqBL=W|tG=0H?YuyTjd&7=jI3C9zhzSG( zni=|p{6W>nd#P<|#-x_wdbfsqwet{JuX`4=Ly#4xE?^trV4PF@3eKw_#hkjrWy;TR zpCqn=DFsSLZj0ch`h^AUF_&C8DSm8ViGFkrKsO)DOGWJ&Uie{%a)`LA{lzfz=7QmV zU=R<>rA0`1HD~l`Db;Xuvkn%~xQm5<0xN{OWp!gP1)tzorQ@0Zi?w$OvTWPJZYyou zHY#ni(zb2ewr$(CZQHhuO8j}w+r1HI|FPrVhZ(W(HfOAF^fgBBttl4Hm*sm8ih09^ z-Rq!B`}plWrqIcMVWCCWNP#AxF{XB=ww>JhpdV+C@X|w*#^A|nNd#I-yOc81-ea5c|IiDhE03$Ypn1pUos{u}bPvf5D1%)4B z*FO*@{dfREY)d@QJ6?&Z<4$d5_X?O`6PN)Q?KJqegi^rDW)pm@BO^JN^;{|ktdH2+ z{9#LBWBi#4gt;bnzr&qc@ow?-z;k;V%V6^D-G9#yBeYZOL46hRWVC{u^6DZVW4Ppy z;-?l~cl|oky;h(LtcOjmm+Lwq_ZAnnAHq53ftq6##N2vKl@O~tgIyR9c}slsYL0*O zf+%{ONJupGpY~p`y9kJr!&Y(_bgJDxB0?63)2SnLomd&tQ+y59&Wbh+G2z^=P1Z~d zFpIYFQcHInL_jK(O+Hx2=!}nAg3)H|B7&czx>zh^l9C&jvS$>PdJbhuE50%;gBuC9 zr+);QMcgy2B8!}h*KJRR7FLIBZQ7PCD(XK|$GbK6>MJSgOH=0sH$D5A%!flW!>~o_ zZ!rVf)t-XrXiC^)57e0l-Lp0T_pHeR3~9=XG)o&trkpkOH|=S39m$iyHR5Aq3YN=+ z-FQ_wR~>|cyYqP%GDYTTjq#c4;V)oAy58R*BqsQ!@#+IVAGMDhnsLnr__+ib4z+6y z^)3C4mp;Ug?yb7@Im2J@n*F_^ih#>UYZ%Qat6+phzwg{E$UtM*wXTM@{ySw144!JM zbo&?ah4DfLC9wj?XM7FQ4z=Q6A1f}^M$K9aq}&!3g!x9X*lMXDgmotL8mSP9b?DS$ zl+@<}M*Ri7;CAj&}Zn}y8t@)(zl`OA-4wq$V7J-+z7Q?bk4%YP-Cy9XH-#EfBBEJVET0bynKzZ=aR z`#p*2opCG@1wE}0#Pu^E1M?QvCODo>AhYm=@JRDi0^JaQmjcxk(v`q+C-h4%=Z(m( z^5K||kZXrr%jg9-o<1Y9sD@Ze>IpiYh9f(N!)nF$2cOTDBPW*$`XRGOhImp?ON5{n z*Y0sRnnO-3=c!Rx2Es~7=@B`ZTHa4^#3p?d!)9jo+dG2)N`l zkM!lE@)N2;em6Iwlcfr=yiy!pqO@&y(`{CUKv74@ELIW>V1ZL_daG5h@N-%RY?apt zUASagEzg35Gd1B0QHF}Kh}cz|f~ql(*yFB(g*AP;wV46~YXT*0BB7SEF!W;P#VSm4 z%-*Q&do<#E3}qTrh7Va4(+35@@@k(-MfEu+~A++*R+t_0m&ht zST0jk*KIPwZ^Bn?f_J8c7F&l*a4LeT{_6fkaI~tnSX`A%TmdhD8FK~q{=HGP37YxZ zFby?G2V-GQczv3FS(>gpWV+5qa!^v11n2s!%~EVkhSiZ3C1HQvupC-Am&D94rmR*# z5>;LqRxlW!sG?>-LN2x^79Lxuu&-n;F+R-1-{+k4ENiA8kF=02MnoqiZ&p)imP$(H z9$vnnQ3N~0sMP1BxUM2MkGv^UbaqbhiISN&pPu3vBhj>j1EOQZn%&Aul$5#G7 zFH6pS6`Xp@ICd3rY|CNUe!d<(eL`lzE$F!Fg-Jq25aqRdL>wXAN5_wrKptTknk!*D zPGgIf$9{;G7t59(BQJ`V6DM&KCn=Dm98;#mC{m0!`R}J(3F0CYNryN^@s^ikDq_t# z74cWM)7r@z3mH0gh2`v{XD{3dfL7I5jz9+jH%NY>KeV3Qq$$blJs=NNy2lfav zr#EVlwj5H!U2DjvBgJ|=I6x?1$Bg)CM+Vxq;#^n-m&=ex`I?G+m`uJh)P0?TmPnlV zSKk2t8QkXY_3vlp{`E`S=br|*+5e@xM#0+5*!X`EDvFe)Y!#G{zpU@Ib$k%#dxV0R zXb9ESiIWAO62B7Wb=AecYkeDQ#w^}V(;c<7IccEyz(5T(*$hmuXYH`H7D1>T!$YTA zZA&CZvKZS}?2525^*^sI)We~i%u#Q)Jf`2KxnKTHcm3Y^dK*&tb&l{`2wn>_8m&L* z8W0&@JrK!NO;A#6>XYfQ)YcpFllE~uGy!pz44?%2BOV>V{EVrYXf%nU?x@*YQ);+9>CV zd9-w3NE2uSO5?%=mWD$d=7r)d!rkiaf%?R0$$t3Tp~=QMPEKxX)c{0VSsjN$3yFMI%>{DB0QRP;iA)VGslQ1m?=HAnE1b4*sL>YDVE3XqZ5WNb&Y#xX(;?QmJ<#g=4X+D znRhGI5;IoYjU7m-pI<$t$mU$DgVoegzO*(0?U`bNfbx_H<3gw7+%j6L=nKE4e!*-=zOm_U}xOr;eszYiqzJ7~XlauS9 zWhDwC(8)*1?vNM$kd<*fldlMQ5-CQyWBtAg<*Dr8JlW>yJD>g+o>`}#Sw7PT@7hC_ z$Bxe9byEa7R4$Z~pgfpy1{1Prb)uy=Vs*sS*s+NaZiwls-0PQ8ZdW<>`aTWvomT5B z59F)5zr0fce_54Ua6NR4hR3fOK=!}T8<sFJ(5ZCPKV22hH)fITce@Wp2`HMe>0j=M5Q{zkQrK|A9{key#*Z!lD47dIP$#tm zR%6h zI_3#C=5c#n!IWsUPvUyF{*wA8BesE!*Bp0h0aj7pgb}aZpSNxHLiLb8mY#SJ?dVoRyFP7vg8 zj8=Sz+BszTL@&SA^fEcYv5zR2bi-GyP9$;SkPxpJ$*R<9a0z6?8-AMIf!+8{4MJvn zx^)xz{5RE!^%SVIf1EUA5dW0wJpVG)mG$h+tR3Zz^bG%Jv}Y-AIs8EQzOCvrZum6j z_kNs_l(C>B;&saEkYW%<1X2b_gl0qaQq6iBQ`RO86p#Fn25!b5y$ITl=q9dyV2Yr! zU^}0`Js)gzW8JT(z~aD02;e+sxL-U!euQHl8@$>d_sG5Q$zHBVZof0xE=2sQ@ET^= zdBank45ZgBzdQ>+2csTvJ3 zMxuc^D2a^^CB1pF#wCwsresL$P3!@&9ZEo2El4ElB+%AaDERVgn<;yXDny1zt1KiL znLIRo897wp@ugFZIJVQ5p_vtGXiJr~)n>&O5?Ca{wPmTJt}?{ux=WXUvBgp*%{%qe zQM96{MAjIZ>@~YAt53(%&2b3lniJ!#)bGyk%`=DSE-{oSDwfF!>KD_^6#yfcOrp}2 z=@;z>M0#BxeL|$0h}TrhHVPUV?(vguv=%GVvosBuB``S==rP z)?nm8sLHdH&7CKL-UX2A9E9u4&wI|y)I#Ob(!kSwd&>n>H^?*+)upQBi&1l~Pc`MU zjRs#;+QR7-EMA?29IIHaKA1IGF9^zic3XMr#lr)n$N1P7yX*X$KitpD;@YvB=eiPj3nO}OU2AsGyD2aZ3mFQ zUPZE!PTi7yNZ;+n6s{CQ2Oil)d$$OUo>d{w{NIJVoWK0*3RT1}wXpU$PX0A^-R)z^n36k!jhrIxe#^R-2!X08 zC#*AqY`C@$1n<@W9vQF##3sXMdg~yVu&#ImAHsigaV||6Q+ba)!Q;FNRRm!K3BmA0 zI0W7{@e7o(=A2IMPM+@bME zh>H$iar<=kem?`_61;jy8tVSpqWbdv6@uE2dQ20xLoi76;86DgtVM{qD>ml%88hdV zW6S0SbFeDDgKg)Ex*^Aheo_h~OlX{3J3|omz%+ms8zg`V<(MC@=odty+0RhpmU+G& z10F5Qx~dZ&W&9+GIfQOv7*L8$Mw;pvNlca!oe&ZVd?E$OJHoSvF?fxWm^2jxgv7?b zO_6EYOe9SeG0fh!VjUPkRTT~TM+#iq86abtl^jI^%PEpQ=J_);yToPo2O8+P^5k^0 z(z1Jj^gD7Z$Yp?FbL)fAvqoy(Iv?ycvR*6i^q2uobT4jg9P8m+d>49DL6Ncy5B$9%<8n(qC%CbdueXJJ9OK=B9Cqi|?vehh4Jv z>d8$3E72wY3hNB*=(cRig&DjOkA=ARX|el7<=T@AtTV6ZBP`V=rgDkJ(IIy5N;Be- z`s=b7sco%MPV#PIs1SN&qR^nzOxvGLifH$c8FO{m*4{uZ>cc5u|Qb`&skwAXVqQZO?5-)OlarJetz z`xncYafZ=`KxtpEZm6us4I7HPA=oX~G;%vVVj7PtdCJE)w9XDFl= zyOOe-sVo~vz7&8BK7K(LYkTkO=gHTmjkcjTJD7E1CxdPkILqIvwG%L8)W?|n6V_F@ zl8cw&j0Y=Qy-(cgGG?JP5!TaQr>3Wr>wa6vQ6#LTYXBq-tGRrCFPvcJ8mdn~Pna^X zQq$9EUz04yUL=gjEIfwNZ%`YifqK-Ndz{ThDHsF@ZY|b4mnfoG!mEA8>LR4CCU^aV zM^kkSAGgg`9IBZpC8VvkwJ8;la-N}_-TJEA>TM{9`m|DR4Qyc4%3zH)xDL~cCfTRG z{4G|G-Iqk@u3U?DX&Fm9v$KK~aL`2VPXIe?d2Ljb_Ako-_GYV~+#8Z_dv~QUlQa1o z8M`k)sHZkN>qxn0%A%64+_(0e4Ry_Ls~qCl25)vkM;iB?N_IVlimSK2uCT`4TK50= zc(88FsSL~}`z9gXREBm%^;BfX?w4=2^eDPq zD)Nx_qj`%@XhmuDbTaL%I<@h)V_5IE4GEESO6QHeL={`feaIonCIjV2HM8ToHEt2v zO>S6ev%Q28aGG-FenK){8&pQRbOzkk>*mJdp4_;vfl|2yqrpubACt}q8|dtP78vjd z)n}Do6=k1_APsy$ND&lfrwtMBdTDtEQ~wLlv~tE63cV7r`8np5cyl+2*(m9bk|!ze z<9AC*C_bx#AoY}YF{bcn^r{^+w$iNR$U87CNqH4YnDCCmtyo1Ti;ibEbxWDVED(#% zZ08xt%{GYKu!uWMk3EF3eS&72sgs^8>5r=BG#9;4oI?>#Y!sB_7^uzBRhT+U1saCV zhPr2;*}_yMquZ*q415sw5qoy@!grNuZWQ;f2+LE3c_2c3i*_MA{CV| zsW7yNn;${mE6#bWaOoblJ(RNAjb1?87>r{P$}1xm&13&}R%NV+LKIhN@%(sR-?%*L z0Sl4cPWE^ggV8q9frJzB4cM zzLqg4Q6zO|Pk`+?id}wr!~BNbZ35}{hqBFsW!9u11F2-l=wXM~pZFW@YW?o}2o3}+ z?rfDdveJSDcW1F>iZ!!Jr*aey39LJK^Nw$vX&|5nk-UoT`AKTx~&e}vlc{ma0WvSs|g8@03KrDXc~;JqZEhQbM7t5o1l`@)5Y z#5>{tNbS#6$PScp-kIE3Yhg@y`*8pK6+6%! zhRyBzUFUzm-p3q}%wEZOD!hgWJr;ftw!vRRvB+)HK3GUKe{7va zMfONmi0g=*LtuB{CV--K{nvj}U?`cpg2reA1@%Q;oP$P!Ypi=BL?A03gWMWSUaiY} zy8PLpNM|44W2n}cst<^sMC^{s;q}&L?o4o=!NNY*QqH;GQlUWy$K{QvL_i|@N_^*T zT?xU_kjjrO8NJ@YXV|vRbO|~of;I9TMOnXX(?Y{#s=5{^_+#_z?-4z;oj*AYQ~-Yh zQl8Wm{tWR1p<&=$0mACUt9#n?YU(5*zsWw?FRDL?^5%b}a8JTuZsOlL31O~a)D3{U zo%}ok@v!V{)=&ayEYdx|B*MJ|D#P?=>N-u{wI-k z){jVgfbU17Z6#%3P*KGy;~tBxMTf=@U)YFGo`l?Gvp`_Eb{TA_v99v43-l_x4;=o4 z4-PxIlV$TZHFC1S=?h#!;7%Yd01cd$mDH=&UayVz zSZ=}1>S$B-Fm7RD;TJJtEQ)F5P}YrSD4uPpumuThVWj-w^f7YYz{s&tpUarhU07fj zn%Ap!44KB6f~7zAb6!GVb|7BRtf=MCCYU6gHkxypf>dA+3hmtXqD!MhRB)c&igT$} z{6J!)z5Aik`Pl@>`W+Mo0<3;%#k4#OFoFu`$oArfTaSm>9%?&T03Njq{@MB$z|S*i_(zHMzjE0BR5$;RAKO3HHd(TL=KXxgnI&e*1y)zQuCo$olSM7K;Q~Rs z{GYy7o`HoKmaB!rK2w6cy)lTa@_hxat~W5yHpZy~cHdz5gAIHtxxa7!oRVtR%xA8k z^kGenI0)1-@v!8zf8&rV2GE4h^R}61iE3S2v*DP0OcW5Sgw#f=WB4BJV?wxl!1$5BGqybM18 z2uw(AFbij20K>sH?dG)b&207F1;PUMIQ-X4{zpr7W$xFnUyA>DQ~%XI!2j!}{tqJO zlsbf~=1^R9x}c5mW90;g=jgp3UA>{kDyW|4-kebk^_T$B1Pjk#!?7ABSGt_B$gsaI zcwbl>Vzj0+BHh|0Wd}VL>_ojCi($;KF>SFwfMc|4AOff?h7Q(f74q2S%Nm2Piz}hZC76+sk8K(qDX|lM~FDWHTSpXa5ZzT zRl^sl_5Q_eGm(sEex{3&E5eaN{gS4hCN`@(jsb`9 z{sa>(S&4Az{Y-;21&A%+#bD{b_z&tfcCg|`1l!OFVo4DZUw7O0S6iO3dVB!o*-olM z2ETEGDoPOp&UMvA)rIb}+L>CS_n>2U?ahX>V1-hVPEy3G1H-nR?M(rVefb?4I-09k-zKqE}{zi4$l}9ME=B0(DrgNH?$9t_OepxWsLLc4ZXjs z{Mf4IIceaEp;Nj>{sbcVbNXpI3-r;=!CIw3R%QD_5P6BPVMagmePP0j0mGRLbeN$iZz9q zy54B(*6QEW!U+wjL{tN$*ebet94V&JyD-DvpC!7)e4yQec?~TxnV}Uj=hV@W&JM+dsaD z{1kCwQ{Jj=qqo9B7f-QjEON?e9UFn@mqL)-A8kVagw&=abCo(!kGf#0UTNh&5P21b z)&p663H))}PXhM}=DEPGyDg`Uab2??qw~nR$7GWG`1D|akg+=z`01Og)**L_*m7~A zMnNxUY_TO`BFy13rDfQ4;2lsD@%rCkUEn;&HFS5<80(&Dy(&XLU*Lf0m z-Xz84u4mP-GQyW9RQUf`*oY8e%Zi-p{KzYrTCf-f;B`TF2%?W4C6J-`8zJTBEc==E zx4Mi+uTRuIk8O3>%7Sa5 zNtc633X(moL}Jn;Nkp6U==_}IF*1$Tgd&oDm!5*#SS;7_N-gRC-HqRNr6f^x%Dd_j z3`U4`*i&1;sj~smp=0rFET*R}q2YCCkRZW6b>ziCx#_N`}8{AeG?o^0gMGWH{RVQvx?{#j!=?p~G_4`KLtiksvF(u;%28Umg;DmsJEQ>Q2*CtN1gsVBc*=25v!{*=${FbAC4K_=90V(v2`q6Ts9K54MvFYe*R6K)5OJ`{fP5ACGQ*vF2AtMs*et36 ze1N>?Nv}XT@iDcA4PfH^V4AvxPvCk3J*k@e@eFtMVhJ(v;$83rP}wkSb6A~2dGMCs z=x+FtQ|*a0iWO3;1=s6f03;7KoVo*Ugj8lDhs(o$HmeCm8cWh=`@gF{LS#28Svz9KLkL$Qg&`( z9H#=UHgQs`Eon9qa1}G9-peBa*(Lg=iqfp>gfTTYr6CaP7Qs$w)hef{NfN9al<#tR}N%6=9+k@S>LP*X5@11X!}l;hoOo>@<1NEz?@E34NwW~b&BHl=WjZ=9IANOxI- zm_?HX-zr7dz!F(d{I8xm4)#cZg{nFd?-{co2GefSu)A>^jJP|(Ct(o!XJ;a&JqTAn zq^4!$$D^)hJflENBv|G*+L8UTCgVwhD9GF+Jq>)#$4QIt>` zRUW_B%WYf{%I4B&(|nILZhMu$O~uuh4Tg_^hy}bTTiAbJB23Wc%wyyTxx0PsicI|R z#ua2MNP7*zP6NN<3D>QZ@ovv0f3J)5=AFuaF?#$w9btTjcuc_f1bBQgd2Gpx5eIyv zrXW@1G;Luuoa~5$ENlhU!hdQqm%A-TO{y@L^DRd$DpU^;kZ&p_Q1U2Izlp7vY%2Y$ z=n=Dj61y+o^it;578{k0I}=mjf-#I?rCj6?_$tSIgLLl@`C%K3(^eND<3C@e_DI2z z@6Fei6TOc8aVYQ5mDB(QA-Q>wwkd>5jxQNr6~=;;w_PJiaLHrU@E3cvZFX5Dny+ka zpipTVi&W+aUr zE)?lwzb`x8o+Y|1fn+N*s3ye0QlDr35m!83*!hC`@`gGj2`yrPS1?b6@}rj2Ijcyi z+7V`6{DE1Vn)%o#2G+_vHM6@f?%-bo^XvfJ{^qo=NFEz3y%wv5`tfqTbU8IQe`7YS z60_ojV6)^$=>^NpCNnjVal;({mS|Z5E=I6p>?DokWDOCY=%|RkZ~tIRHBuJ*p3G#$ ze)l2@BKHupXz0W!NDAcz+`$L*-COu0!83hwZu5rt#$3dAKx;{kX|P8@$2@fdk+Ba~k%^-iJn>Nq3xEZ=7BUG??mfvC_6 zo@cxu7kTVbX!Miv!0HY-T!6r1h4vQl+z0w#eyKyQhuOJ7m!mU85!JQn!my1XWTo@w z<*8W=Y7PN;!-9Oh5bB=c$(hAPx*%UmBYB;ml}8Jjs(j6Dup=?2dXe4`2Qhn7M7G-n zw(AhPcB$iM#7Ya`RV50@xn!jY)4kw2pxe{E``?w53J^%hz4&koI#d;KMO8e81LCE> z{Tc-MiT|uGVR9dr-e(p_9WI{QMM;~&C;!ZSw}=o~H-BwfJLdpRL{hk&q~*_1SV7z4 z+`o-H&uXk<>h|j|))z1-I;GPZl?%x5@=s)9%64wTsI(^aIG%{96I_Y4TUwQ|JYK_7Qm221lushAO0oTv(3z+sdv945Z%^6T+RQ_MBguDF*0S66_W^?}O(P;|?r{WUEo%D$`pF2>}w$rg&lDrWs z$0{DOzt8SB@(rLk6f56>lqQ#kU1>!itFH*(gcL1c%Y5*iS{*i6hUaF3jfFqs5MUQJ zrB*yfb^A4O#jL$s&`o~POieoKu&Of@X=H7bU|HQ$eHeK=Pa%zA3D>l3nZz zq@iU7#{&AQ%Wye#BMt8GgAW0 zjRR+o@Etm3_5{E`#0@p-*3vy*;_TvwHh8b;9(^(w(dnywZ0{cQyI94Ipldp1_IDeg ziv-DER|=T}bJ|^rw#1Y>;ZAHDWm^=TXdjhZ@$UGQTT1KxhNu-gGMyq_H!RqG%FTKo zD0mN3qNUlL1%=j{p5V|ICj3+3NlwWb-+R6XN)PB#@c?HHN$pMlP z{&!JX+DhvIgs@(owN3w0OaNmOfe;^nA_`kL`7w4%!m02;%145Qy#~5HcP=OGnz^3r zA`sVZ{-6{15pE0xIgirUH>qO>U6$u0&ZlrY<6}E#h?H!S-!rq@_%%d3+}Ge<5#3fe z1S5`-#(D-3BuMoJF!OoIDr37U?Kmspce_-^;(A*RaObFuB93jwDc z55-j)TqnrPE3M(0F>(_Di8NLh^zAtK8<`wQ^^h+b8n-eRuWNu(y(Ju1^oe|Ox z*6zVIMK|>TrY=D1q+Mek>@gm$xH@2eZVrSuOLRA2Yq!J0`R}b+Pvo+N!)oSxH7$V{ zQ%>+1b^vp%^G@L3KvFr+GC~)Bk?H`mX;^>+K8$%JFPlGdt5oBmSwH}}aWc7IOQ|;= zR_30!+3C9RfS>}KNfmith!AbNs{9F+5YA>?Z1d{06E(dcGC-2V^?m=FH}do+2G)=` z^4kk-3(;8KV)bMa=w&=~-!Hh7R14EfB4e)AfgP^G&T>mxA$2z>IH2SkJiUa;a8|z!&4>5ck<<+DAaQ`;$DM zU6{uv>fa;q?SIXV@&0=R+OqpQQ33JSFH6dQ>TBWpmm9Up`u1l3yf>&~VT+}L^0lmO zR`j%G`vcpGLBtJ0 zUB3sPNux^`#DK;yPM!Yc!!gi9Ct33S3i6$X+V7(59f$m<@NV1Vy6faE%VDPa`?W?# z3#b-_ckYhfQ!|(>pN_tW0L}kH{V&|<=s?;I%IVxe+FZDTir6c!8pD#B;_OvIB()u2p)7700KaTA2nU-6o}SJTBZn z_&^P0u3n?gD}xL2(Q}D0C|MyWWG~YsjVH)^Ico~`WK+I>C7i6yJ^Wc{s?`5-ys zxbnz~;LO8#+NJC9&l)9m<+0U^-o&KF_VqWB>eH3J`{EADLN08p8^;!hCFe5H(tP4kRD?Ca=v3Me#6p8nSL>Q$9VE%b-N*xT|0tsTqUQSyJj!J`7EU_nUK&aI^dcCt!>OV~K)#^8 zD!s%}z7yM@jOp6WHGr1$S0)9$%gsp8j3(0z@n*($Y~_bkn`7yy)T3V*FgZ)N>@XQ> zU>=qu&o2l8*9U6{YnC&>{Ldv;>l5d(Qjx6e^ z5}+*Iqb2iqmNd(P6|~q0qvC@Y%w)hufdm|3c)se*cP?jmh(4D5gpdof}ctqqx!73 zblUQEf*@W`D{-dpanNYUgUb8fj^~9*2G>550$oUw zqT?EPn(M2rfhMkDt8ykOaD^;B*;I@O0iLj9? zAvk7h&rqn_pggIP#-XEcl6M6Lh3^nb^wF@Xcv-I8nGj&y4XV_dDswsY#YL^D(>l%a zuG3vDn_62v6GYlOjWYb7GoFXHid4}xR;g2H$ZB@GuQhgxxLYh~l9@AlIm|@9KiT#> znrPNqt%kJA<|CDP<5gUv3Y$xePG(6`Bp|Ycz^eGH|Ket5qyk)(l1t+4#Z` zif?M?*AUw;Oe6Hit3_+2H8?N23|`@R8?Hg(g2S6mMc~e~z0a8Or)L0 zWrecAvQ+}iP(yt3Va-AdkC|?_L9OrV7-m+l0VrZkyOo1DNVyg)XA=;Z^H|o$h zZNWM3^e+4L9{0$fbs_)0_I2UG!s>#8*(GED)`w3)-vSmvMz& zq4-35es7`k>yf{gO_Iij<9ns4qMgmT8l@Yup;oY=Rai+WYe{{_bi$mO?}45O zEGtQoM;EvvT!NSNTBY$#SRYUoFwGnCN(48^ny0L>7U@FsfeWYXXB%vRb`-f~A)3ey z^VSjNr3kS51^_y=Fn;WT8m~`6{~#rwL^tviL%$)++tft~QBoQRzyw9<7EyWv{Z#8( zDlIqMh)7Q2R@y7rBlxP5+~)U5>~YB>|K^Jb98j^TT9+e6zVDIsxZ&E~={RFpezNY4 zoZjyEZSeU!z=O!_3f#3A-8pG8m7D!M-4RGH{Le!=fVUO=QBIJrV~M> zfr_zZF6Gr}MuK&g26c~GKg-t+0=ZqyKg@w}Om*mfL0on!J6CeN(%>_fPtG!n&dNG- z+uSM{7yiq)@|H3;PhqmM_)%f1-5Wes$Pp8TmSVI>W-gy8Osi-h7JO_sBW_j$W7#fg zkmhpDG%;*2?}e(veCvWm&mmp|XF$zI)f4$gn@95011Z5h@XV(0g8=mgJuX4mfyoG?ZF)$D5=!oZ6vlEi)X_< z+K>ZiHfvmO7`b-rn=poU_`Xq^4*eZv@!_@wX?Fw?y?o8YEfR(|<$xH*b}W$%rt3y8 z1yU88RX&J`&>LsmHi8i}Vb>6Y-oBRP#I}e1#b3{&8Znmx{d-wmog7W1O@6J${@E%4u~kH7*ww`JJNz24`5E$uNF&6-?(ti!eguAQ5W zgX!A8&@*O0n3I=*HWP7PBrtMLa#u?r&vBg%7K!;lCGfTl$MC{J4BZA`o8O&QwzlL4 zQ7(sEzf)W|E(MlfHZ4OOHmQ!U#72C44R<%vdLKBQk+U|F!zwSVTrMjQY(99=$N*V) z>NcJw^aXYdcP;O{JnRkrwk)%1d)6NO^1^Y>q%U8{wRx)FUyRkTb(W6Av-{{G)VO_Q zaQ5!G>Zq@#o097@tzeY{2am7NOVc2i1{RbiK*J^xAEGRGI`}?I3(h79=uf5U!sJK^ zhMS^TI~eLzSigGxG?Ft;dq@peb7itQK_62;7BRLA(Ng@vTpet+wuiE=O%vMK?bZG3 zEr5#c^8ThxgnB z(wetiWouk7j!R*DWd4B(_E^rVXY(Z{4h{RIs3KCqg$EUxQ~Pi~LlOl_HU;Jhn*Tzx zu(0@}D~}S&+|65r*6apoVy7;`4E8grsdNw3=?V?7Sr-!$5S|9QP)iVA?ndtnb>;vW zD$fuZX8Jelu?9?L%dLawaHf`ey6S6?>2}Z-sy7AZR1i0e%jWv!JL#sUvh`Je4HFX% z`s$l$#A9VLVutcWs|IFEz~meZ4XSq(28Q=Qx6|*Go}n9PPwPD>&DeR? zqD4>)7X5^vu2qxW7fcpv?j5F0AI_8|68Z}`2F=D>5+26eq#)k?_#idS=3C-nCSugx zRi{HSvH`<%1FKEgd(Ln;9)_7#58UHXuDPbc?V>#oi8EDdq;AqR016~yW}O01wHvC$ zP0c=pFKrpC>QB`97du_Gat6Hm&rG7FJ{7yp()9J*^7_@&{)-gVN(oDOky;huOZ_H3k%c-p6(mI6N&!A^(q0)iN_rjoNS*3~a;ACTnUfVsChM)f2oS)J=qn)1?b2JTda7O&Q8_W@m_KCA6ys)a8?<@~gV9DG`YrRDTA$FsPO_ zMFhR#11%G}BNtIN?_TwtC@Ls;LWUz8NdvW`y~gWc(F3WaYvTjUqht#qW=Q?#XY6?S z*(Mj%EcyLdN!fdR0Wyyr=pzWKdw=h%ZwjV)b)pHvMy-mMOY;q|fKs$cdQjAyAQNu=i!X9$EN9yk^mx8@&nUk|di6rao{T4xW9Kc1^?rb(YQs3u7Z z8`p7cA!iMxgDhE`a_cJ0B4|&|Hc(@p9*IZZ`-EmPm^9RPHJM9WEM+d2vsa-w1R_?B zvjSI;%iIT5q^^#rvB!4@GW&$&&G5l_$w|eBu45~hSA~xlH37P!Gf%i5eR&hA)28+y zcD4$!dSOhN)V))xi&W=35sSQ0y>&Q@XAfvOyiN}p>s7V;cX(vTuNG@4b#oIaW%akuA(%$U{DCE5n(Unp=b?vmQCrKkEgagB>Ph^@W~*I zBQ6u*ua2Ncm!$o$g=-UlpVhE?9iX=#3blJDToFocA*T%>b@rHp3=k&RLTuqfLU*$% zoqYTL=81n3wZ^Qugyy*?_wh=O7Z$32q$U=LoA5lY+y+8=u};&O!OAUD1b0y1aII66 zCEOD$TOgQqMRy1|v8G7``$bMO&AnoQZy9!-g(Jy-yNN3$6|jpVosVTGr?Pn=F2=}i zl;>vfgxFpRPzAI&Oa8zF14*Ex_7vK^LCl6J%_jA%lj_E z8{~#cX8J>C@aNE_)5shs?y<+E3-hDG5|hF?DE*&<%ypNMWOrdW-bp)VG#+n|IoHhE zy@UJQLOzeR09jzrZW=VaO8x1?|D36yjG8Uwy>j>e1ym13yhp+3#PGM*Wno+pZHtya zh7JDHK8O3VUyESO&1z|wNDB3A(yRQf`0 zlR{M=ki`cnRjcWgw~juZk#v^e>{t*#|672G6PGE0{`8$&Bm7eV_U}66n11s+ z+E@|)G@v``nOPgz|L5KRXeTOC)^I=;M*ebld5)ht6lXz?9~D8Y#{z^x=eJjbh%ns` z#t*~q+c0!N1Z8C`TZ1t2JPuLqeAQ1<9iovxdXn;5B%1(}tM~xgFM|JcH+B|e>7#7; z&AnwJ?Q_Dp!@k9+!~OA!^h?HoAUKOn8w}+DAv2U9v{ExOap2*JEeP%KHXoamFtt(; z`nPawLd{!dcpkzUI$Ft*B}X{p{KFCYv_5ILnwckwzXRY?yBeE867)!|Bmg}{E~=9i zfyWp*s%2L3@utyLc(S%#q&|m9VkUxLJBGpBVkU|PTIlg9_qD3TCYxS*dlrp(QM@){ zYWX@_`hk^gZV2#~fZarGYkuG6tbO)wyEhUXcJzQ6j9ez^muFe{L6&B43 z{Str|vuYMYj-}jpYGbn7I?0;uawF+>mIIo|rV_=S&a~#o`s)pd^ehHdt8Sl(1Zyi| zt3dM-L%5kLcfcIL&Xqa-b{oseM{=<@I!bj=S(J#Uk-Prk{F7zqeZnX;drp1^8_DWJ zzn<%~o5qBj${)Dv1kM~ahOk@}hBRhV?fuafQM#BiW$9x)fk99TVw0p4t-)W8$cKSp zzjVa4^;Tp13bCsqFKA~-CTP4!PP7yhr?5HrOl&<J_JDK2tA@2 zP}daTPxrZew=~Ic)p&!zPdsKP>S9nMI8k^!Ksjs#p^2>t>1@&Zpjz@ag-pFLzecyZ zQw%r-uz8POF?#HCh@yX^?@K%`q~l}v#R@^%npg@2$1{rk?tR05{@W*GkF%?Q)9N?d z%`61S)`LrS-2E5x=?8Uf{o+ZrN(qZEMI7d83pIFa0N+Eh?-C;{*%lgNyDIt-%fqlk zFlGlM=U1m&+;M^FUX(+A0q#P+QUf~l_xl6Cx+5qqE~oIaH^$I5 z2IMV_<8$&)PwX4F$orBJ;~*OZFICV?*T>cB$vL~C9^2ss#(_g{bTCfvTBJjlAg zzXiat`{rmyLn_8XCJvQiJO_LdzN7eW5zyQgj2wyJGT+t%0T_uYv5 z*E#Xt_r$G;imJV9$6mW~t<06VRz6Sq5{H5m;D@#HQ)4sHXE0J_Fi~jz#;DTRX{X$) zCN)Pg#n(UC$szA$^=g2$d~@VBHdW$v9P1>oO4;2 z|72(d{y(j7|38LS*3{7KKiJr8#R=&F1w=k&>)bgjU)7CPhdFd6F|pZ51sLJH@B$bA zOdV^|F*=Si*6kvCo$#H0gzLgVsl_G@dRXVnNzYy%pYAS@l>sj(OhVDqePkGb5jZr)MS+3Kvw`9=`dTpkF>_h1wjXs9s7NF2si@ur!cG zmtMrMWb$kNr16Q8Fg!|Y_Y!Yr#B~o90J(#Gq>kTWl)7bg&4=lkE9i+Y)7h;U;J2k% zX=1SsoK0x?5Bl_B71}ZUT0Z@>xkU;ImcmfEXLe9bvclUPc@wOjBdv{d1!L zD0V8wA$BO)1{qNH1{pAV<2WP_TJNmh!}A+p^;!x@-grK#ow0K&V0lw{l-2}3-5sp+ zbl@4I8FUYL@9JLFb5GzIa|T2YBJcR#sPBU6)n*K69$4OOy)-K{V0uG(bPjOdF}>ES zXP|mBTZGr*kK_T?tC?V1{ae)6?2m2%?zQgFIwM7CI&y9fz%ySW+N#BxsOIFQ6?aXq~zE!%j7h?qj%+63Bxi#5WbBE@< z0$ATzALAMPt+?0rTpRdnq?_&44s_qJAW7?1KTI7)=fS@54@;&K8b_d?Aq<3bO z0n~5IkL=p|5htKy#U9LW#E;<`;!z?%piTg0W9pOmTK$nDpr^qf@;z~rgqDyFHD#z7 zQ4M}wNuz2-#}JBLUgO2a+EA+bXElI**(%ixFm(oxx6dH?_x!P2PU@x`%lgW5&vDx}Ac?sC2CvbkAlbWlm?Najw zLs^g4+G2$F(*o{daO8M-85)aq#mH3JH$z|$Bp&tAqKa%bV?(o<7Tt+27^EkgbBX%m zQc21%%c>j%xcT9{tli|Pz016wTuPGXI%tCvsYOXAE`gCbGh3%^%8DgL;=qmIAP!6O z;QBKB;_LqUr%%?o-^dk0aY8`lMq2WK<|>cfZ|wA}a)jdd4a|F|e#=K^<;6^M%D)d1 zMsg$T=1$yuxg@%YmS4CZZ25N&PCGRp0hQ-7 zEKQYzGeGv!0UE1__IMdGIGxt~+0rlTBVC^0lGkkkBJzYi9Jlh82J$|?XVfFqJ zBahWHrFb_r&gZ$f&aZ8FkoKBSCZ*Uy|8h{4 z!4DD-!PRMqtWY%<_KDJ>(z<0B-_&+3N+l^2y%GM7B#S(8r#s^2NwBh`W@kx;6g$!3 zL4T;yvnaXPtHraWbn~{1igo0PccISgH{3F9PLvEaQgkm?Nzq=;WGF9a>^x;yR|~xW z&rp8@rx=>T<_1jGanEgixiB(OBeKiP6@;r3`sJnx!f}ZpgEL(rlzHi5kuOF~3X$Lb^+)#lj<$9$-a5|YzrX)r2~*Na46u`PrgvNZZPh*~blE=SX&1!e z89a!bc=9@^`qoTcjjv=jTARWYf)6f}{&;_u^%z!3KJR{f z@_5kj;JX*x*WxJLKPi1Yo!Uavqut<(9ezE!=KALWT#rSEtu|NJtBT9T?r9aKs#?r=g zk`3B8hiQ9djWWhI+BW7Q8f^Gc-1OYw+~VBi+~(Yfmeq~Tjm3@Qk@3=aW4SfAuEf!Q zA7~gPrYpKD1_J91Gb-9Q<|7&c=M4t}69PLbCMY^6hHO}AA8}v7*4wXySbHva&yX{V zUqYcG;Swln@~Q=>R{!a(w>|0#hBugh9r#PW`-jtx@Mut!18Ea?hxR@t?$lR4Rq{y( z)C<^Tv}V8UC(ibjUM;(DlCGQiDwke} zyl@#)w|C1TdM$y0m9+0!P-jH`HOj;Fl|ixW0>Qn~S%2|a&FenFE3?ZV#D6~t;sDgv z<Y3EZn zp#Vs2lQSy$WL2$8O3T(Pt=bo|3q zMv79DCW^Aerjk(%sDOQm$Iq`g6IoRd@;5 zDp|7TD2-Wr1AweS07TZp03>S?0P+jtQ^yOGQ>hDO9n;_Th_VAdzB4eGz+jB1(D|@l z{fv}>yNr*eRVYysQ6_qH$@hO_kDI2n@ zK9ZDj&*Ve%q*5R9;=)Mmk#a(p4ESV$NbCcb4vB00a;&YxI&}a8bsz(EMB{A5K6Qj+ z-O;ibbVclssYT@IBi?{D+<->f09V|AXW9UA+yIMmFK;{3|9LaAI8qe8+BgfyqGf!2)6DP_p{Jm+lqPAW?xlmvq_!Sn{W14DDNF70?F3fu`? zkNG#o-*T!NWK}RxIfJ;fWI(9ky!BFQmRDi1@c8xek}#U$Fj+vKQqxHl!>ME%l*-l< zbrMM=@X@qBaLFB6kDawE`DLx<|n z4caO3S!%MN{?@~ya6@-_py@QSW7?yxN7Q;C#&~1Niews2vN)FyV9}@ zl+cZtcYz(Ee&7;OnhP)E;b~F7?7lKW-rJJ)LB}hlgQO(}9=NWaoRA6NP1mnttvqVr zn|n??OQ$h=a5A=I=HX8~uo62?4m=czS_324LUQ;z&R;>m3twm?wzft{VBa8nz#xgo z;-DeAOe-~G;}N*weS1#ToEJ;9xH{mkBgh1Kwc*g9-?R@_Op9uu$K9#m{hEoFgV z(Ct%rJ-8lP>vNBS3@sCjTMYTEo=#W3^x)y7U9ltq(3B#=W^o`vd;FO5g?%+`_2dYV758o$qXAJJ3I>^xyQ`)zxCuThK;j) zbC2YWsf5W%+KdNuqaNkQd}(TxAzSXHD!39-a`_Oy-H8tQNDm}dXat7&U!Wc*cEGaYeBydmo#(n44nO?!*ulx7wx zWGnHm?w??i4}iN}Kj6I%am0WvH-(v{2&Nvb&Cuh1WvZ|A=r1m(+s~UR1?EgEhmOfO~$S1OtjLqaO7bC|Tm2BXbqP(|ja zM7ZhLfG<{B_itn8ML5yFGfJUsbo_E4bUvvPi3+oVSToO-_)}hJh;~s#>Q{WYN)}Z5 zj7e_+s5}c6r1!t#gijY=$M<)CpAnYLWO6y9{yqt`HtLyzGq3elg5HGo#HCoS^UYtk zz((sjd=alms!5J+s+Rw=oU zcZ_@_iA6_IST`?iDVb#RO-SN&dA-TUuB*Y~aL z|6bAM|GRSesw7=`6d}~m?UUtZQb#qtj?3Nd21y&fBTewg z5(F=VB4sQmN*%B~#C(Qd6kf8yO`qCNcV$FM!QEqBo=oXcWDH9p|5F|^4X*KxH{ z@z-B%91^dnBiW!+g%T+~S7~dS(p8QLG7#-%u>`n?c|jcCs%Nneye7jamWQ0hyaSOu zIK~B*L}Gjj5sBFAj!Ks>>~3IsCOd-F*eY0+M3hAy0G?_*SQIkZyP77%m0z_(O@=Jn zRO`&jEkE##puZvM%kjg}vHbTes5M%hp(WgAOeOnRp{{==PyUKY5Aced^w=_~R#CIj z+AYT{^LQ6XYv0vdzl*t?&U`o=4S_^7^4L?q{ z(^-*e+i{V((jT>>#u4knOU)WVE}#kf&3&^Ur@Yv6gWku^KCyzAP0dRZiy|<_e?g}Z z2nheh+AMiVPF6jdM_ihW;Uml$kPEflH^)1%{G%Lm$!$N zz(F?xP0qGqBsnE><3#O11MAi2Sj1rrvz^L6aImAFHs-Yxp|s;A{)gL&GCIJvHX`4Y z+F_WDO8dC;a5SuGJn|l06%JPS&Q5A&qQ4;tj|-)bCaV4@vTse2>7W`q-7VtdgAYaV zBOyoN8Upiy?l7@I^JY*$Wpq|CMX1gd{HBj6LpYTpS*5jM(r@NTM z}eSi5mh#h{+ zfi!cfz2n)mCd?d0a0X|wZU#~oN3_S3;42B-84ju+Je}(Bi^2GpKxkj?4(G)a`;8-T z$u9>$+(J^e;SY0Sba4w5STaf5b3uyaL;(cDZ#hAR?w-qCht-lA1OztOobs(@urA=_ zlXUEl+8pHC6W8_o=|IFY=e5!c zujES+I83T}pIa{BlGK+a{RQe@L3HWwR~@qNnXVQ5KdJ10<7TN?Tl^v2K=rCi&ei|*WtZd^Pb)waO%bi*WVzMOKxm1|b%2(}5r5gh{o%H_L8muFZ&O_}7p1;g~g661wT7u_pVcB3~n z>R9Y-U0EEwXB|$Wtnu5ST_Zho-wvoI`GXem?FJ_ANeJ}=xHKH{Nd)aYbu6!E=_AUG z^r>oK2)bc@W9sGh13m_|FTD%B>(&d2XKo+5A?01?{u}?m!sQ8BswLJ^zJI09+hkIZ z@ti7&RgZ!Q-gwMPWyJ%Axv4xZBm{~DXKCha@I|jsNo*!;oSZibGYhyLaecs3We>$b zVE#Otyw8ksjZ#vQAGVw9>FhXREjcb%X(?gC0~R~`e=i;C=!(o zO@3f+88{ea)ZH1*Ji_l_W&)jByl6bl8CvAfRBeEX_`2JV?mWm6V`;_D--Pw}0rL9qE zQ}fP0zgFapK*Y!9XUDw!{6^FDUHv?!L%%Qa*8!F&o!d_SE|tWA#2#@I2@><6UW?&m zbq$rN`r9~yF$<7!$3nkt~2%wmiRCxaCM}`f}IOz+k4r z%>p@{-k%~_i_Y`Cbl6y0(|BqQ^~~ax$Q7=RM9aE^t^%fijp(~YM~0XjGBpaLWLzE7 zaoQs%xO!3&X*j=2R@gX_J+(_?oNfN5VRtyP($(2VUT)8iYn8)T?#RzwL5%tsoN;js z!T}G*X`B0*Wpi*~CTF*MpeE;69re==lbro*kG-W;ccX7Cd&579K0{}(8Z*P?CoC^X zb9*1nF_<4@i_J@+APX;K`1hu|odu5<2}?^$m{y+>a(b?fYXTcD@^&{F z&kZu2)lnQ9wMxAGH19AJ_RLdTd*2nk&UvzYQyZ>M_G;`}lQO#*K8I(wxn2Y@2-*#^ zpGSYfef8<`$L1g8!hXmA1OMGaF^lmZnI+71y2YZ%b-o3o(095eklWgm({CGGmTmlE z4)WP2AAV88*lvs9gKr;vlKm2iUNDr4b(oiq0G0cV(id?cx<4q?DnlW{O+hbb#Odga zJQ2|+g-dahMe4A(`<*I7Dwn_|wVN*+s>CI=UxY%TCpX{59+WT3u{cVbdR{p}Z|5Oy z#zS8xb(Ns2TaQzvxF;#eQ^TXFAodASktlMr?9{sxY zL)Yn-HhfZ$5ha#vgvQ7$V)b2{Nxn9G@_-R#etW)(#E@Sq?qvcAChkc>;j=gT3}Z$< zap*83Yf8Q&Y>fE?ROv<*% ze1M&2erLFe;OAnDCu!HM(X`H9g0;@AQflWU8H4*+6TOdIsyZQQ3Tq|426Ab21$2r^ zHGFKDZiE5q@*=2+aRu>@(OrcBgN+6U!vYeK(_1qHZaAjOqEb_B z0}&Ps+e!rT#Mz1(n9WqRul~j~8BUqz3}?887H)}6Woe0UbX5!mDWRAijurt`1kL$%Li&#e90i za)fDku#}TqX_%H!L9)5Z()?zvRCOeq z9ZhX@Gz~OZIMP}oR7$c_RF!2o`W-p03vgV&(~p4$gj}D%ZqxkJK*#*ky^L}2t(sjJ z^n3n4tKr~(CM>)g>zX=Ipp>CbPGSI2LHVlzL#jeslWX&WfDOUYggdwVj>`CzfMy@~ zIt)2-C$I_ZQ@T*89PFINy8QZb1G7Bl!Tp7z2}JQ+dMeAJ(?c{<$Py8ievZx`!7KIb zw?wE}#9a|4$%kxB`34%;X@oEqi{q~iI5aY;Q`MF5%+sdHtRAq1jW&hfD(CV@zgn16alD0FFqM(`Sog>VX;US3_a`L>Yy=W6>b@FONtETjURKQZQgdG%Y)njoULD=t zt!7deMQi2t1{NL=!CUj6k=(M?uaCn9Mk83HUU|EbXKDzItW;{moYtwdWe5qt@-Sc( zmKTlsY6x1f%xsYDfZ*mqMfm~BYGRmOI|Fg6ykVV&B5H-{=BlK($y)AcO#otalIFLI z8PrcgMq8$XMQc3(*M|aK?$%eY+4nkJ9_pp5_tSYDEBK^DGyv)%EY~y+Z@g}VMA+jL z*wnO9Cnb!lNWcP~L_=BHi-VP3GAIFdeKlQ8WDO0S)aXDV=#PXEmq2&%1>+E<$WEmWh!a_^vjok7bMu3@cdg1Hr z9|YPMA*Y%iX(y4w`Mu@4(#K1w

    A^;j1VPV5v#$!6l2*s+q0xkC&<=ht=7+;;k;R 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

    +6d+RTY{s>`rq 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%0D|7s4uBlhJ+-cRNUj_e3$ouc6p(=TY2OWIz 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�?u)CX2P##5cq?kyz9$kmuj$SOy( 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

  • =oL=AG))oLNhI+AlpE+DzYRoALBTy?A3?yAG|@|60ltDaVC zT=io<{)FTgbbFb1zvYYH^X?C7sjH5t#*a>QYw^R!dy0 z9y-<4IjYpf8lqXQ&LzoHb6qSa0vWF6xO#+Yc6Gj*?P6IG$SBq3VsTNqs|(a(SC8Qr z$EiiGoQAYUxcU}#v8z9=DqMZ5+TiNXs7hCVR&8|k4prsqovPZ^ zpHsE2zD+H2_2<>OuD)HJ=IT4h%PvNAr@GM9yLoq)T1~Rn)qB)@SAU75T>(2cn(yzL zbn?&7$7;*Maq|sbU?|{u;j$P=n1!9sKEfv5;yKt)-Rfb!0%dzx$eY>LUTiuDyJH>i zhvL0~p#T^LK@PCBzpA;miAVBabG`qv4m+%i15EHlXA4~c-y?nB4G62s!mzfOK)LN2 zn5^(K$oFF)E6T7Pv(iR|M6EGN18i}ma2&CS3vme!-w5%}?Y%Y41*^Fcl_)C+wv=Ak zJ^C25+bnEDan1QnI5G*FMvHMC5aDf#*Vi_!s&2{g|9HnUetE;e~_*r4%kOA(|_mqj-i3?uHkJ4zCKOE-0C7dgvH| zi8zV7ha6%eHm5HQDlALl4ewL<0`Yf!)_Wd~c<&T(JOUj3ZUVr0Uw&>A8UQ=Eiw%g& z`K>d87ydCSjBsWz{M+bF9RaY9Ifkqt{&`mixGQ$K)4FNud2fz*7`kICs z96yCmaS*Scpk$u{Cxhq>s7wAXbo14uV}E5377{)P7z$pAO=Qu45dRGWSJf781b9!fi8aL z^;jf?&p7min?0SZ*C8be7yn?s&XSfX8Rne}*ZJ*YbH<#1;$Iy_aR5GK3MAp=J^xI< zW3=Fe6ZU-n$Z)isxV-V)JG+EsL(nB81nFlQ`l?gHLHh1NefH%>&~J6>fqHuQ;BiUg ziKoVk8gR!w@)(zPIF7MXC|(W(;z>za_rAi%V0heg4w>g-B+W`xkfiP?wcZ>)I5r8N zow;CjEIPJNz<)GuCt`-FfDkvGGU?2alV8U|PCIs_gJ5ephI5hI{=_MMC*-AGpGD^`tZ5~F+ng43zR&{k zNCXrXHxVw(d3#_P&HKOS__&--0>W1;P}@7b>som9M0ZC%_a!K=H$kk{)_gm)LtkNF28pK~#o|MGEbX8L z;kcgK59a+_tOvb156P+AheT-`DkG`PS8CjihAXEBAzFyea2(Y=(c}vla zt8fNWGY~RUs(9FPPY*E)sq4Kx#K^#&`x(;XQN6M!(e(Pe&=?*%FVfcuhC7U|O-mxi zCpG7_Ro0<-J2mH5A!p2323HSsJIb!Hq!VMu&{Q0{M)hy2sVf}KKmH7 zA*gO=Q!Qdjg1())sS#jzL>DyDeIlhhIw_zx }U&C|dt64}|n8Z|zXpJ5<0ovL_t8E2J>^1~}Cg?b*|3LrSX;?Tj}emDP7mR9KNI@qu1Xu6fJ1HA3XA}-UYSt4GW?^4nD=3Y8Wk+==Bvc8 zz*DJ2w()}Wpb2fQL5oTOEkn^pa79JUz{ECc6!60hFl1fLCV+tAvl#Duz|8;%J6hM+ zxD}NMb+4Y))V8l^yNQb}%MH4>!Hq0O!6kaIsr)2QGY)eN>}?}XgJCOLx##5f)bP>~fg0i2 zUdy75#u29RqB7Jqbpo6QP&EOkJrvgjylDV#Z!F)^xE-*;nA$O%V@O6vAB4KRZDVU~ zYaKB^6Wo~v)vHbO{T~Ibj)Pj;0kfA&0l@PANubtFeI(OQCdSr82LuErFvlp$W!DMhpENh@E2i7C2yQ8)>hK5~ekBxS?g_`Bv1gpnb5DlDJfgE>eo6lFn(g^S%cahrN?X_hC>;Zm3^^efJkVxb z0UirRffvm4A|NT75~l2sO>_uAnERr+^!m%&jEJ( z2t1f(ZQF3%--71GdZQ8K!N)Q5Y~m{?A3PIZxzqTWK*t@2(Amb#FV^@#d6;qUTIpq2 zWIH}%ih2mQatnLRbOx~UNidR=!XkTc$muO@8(W~eG;Bs;xA;KI9{h0tdE6z$u>~4V z0o-r}%G?3CFtj?06db|^j<9m0awUfdCcLi&^+gEA0Gk0C?^*0qgE}9*X zY$KCP;%u3Hka7kBUJoFIGqL&VEC6<#jf!v%cH?gdu~8Ia!)&6)Qfu{j1yDp&7v^|O za4+(*Fs7MFJvJ7A`|40|ZpYwa2=lVy)x?dAiTvM zd&FK_25b@TC0`cZ6-S&41=|n`c3_B2?EX9g2tkDVxggv`KD$VFODMpkd|n@f7efxn_ zWEOV@JWABB$CpohNS;u#Lq_4|NhOcVbbx*l^Xsval<_%0cW9SK*6um_^YQmDJ0#P9 zVsp~Eth592AR5WRc6n&R0r~P{DD^b#Cp;A};}OH9Z3UOX^-3VHT!rd(HCn*65DV9# z(O!@B|2Lra--ItdDs$xHCN*|*(RzKV+6!*eWR<>2J&2I|OR=7#9!9|qk|I41_1Zx= z{q$I zxGN_V*qtUYZ&ywzu&5EoNTqU-D^t)K9ZgOVY*zI7RMVH!b~hGHHBf22fb={Iv}!)$Q^?No>6T z+%ET*WEADZaxxCc=k}=EiFuXf9+0~qTRVO{5VGXn%(M;k#JK0TOEn|jvaTd{Sk^Oc zLg>|yY|gLbWmA4lyIkt^QYWFe9FDeK%id|9EKcgVVUH>#V8mj-AKRmbtj$jcAn>9? zGI`zj1G1}K?gEpHEu&p7@d6*)F>t)A-y^?B3`?H(0|C#WaPrB^?shp8=66b`AQQYb z?2$`5gx;{$2%i2BJSag59+sWq75vU8zZZG@PUsN0eUFZ^ZjX%Z5bWTRG!t$N;j-Kg ztaYYEv!gqN&_hd#+6}4zuUC7|#C7E}VI+CI%)4G`uKQ$FJ21fjTV=j)m$p6Lp4*D- zs70nq1N{EO_%}sms4=P#^6L?GqB;rBThw`~71u*(X5Yv4Wc8wYS*GYA`Z#QNngaD@ znm!p8tS5dL8pmU@5>mZFo{)`z z)@zifa2UYT;NshIk$gw4z@Y%w$_wZKzAt;^#|Y&ovR8hNFMkEB^WVwy@_YHI`~gpY zl6U3LkZ7-|40%J1k-vlcH`O?K8$Hb5kcQbv#Sw5VxO3D(6;Vr7sybbzsk2oKsq2IE zWvN!xSGB23b+PKNE>{E9RcbI)oFVEKHB@~`<*EDCaOA*9fhtfxLr%S@ zW?}7ek@}4)R`06gA?c^+K58nKBTvU-;+X&}JV_U+5 z#AR47yaa23mtvjoGOXcUuA2e#bD>&^CAz2So7GyZxjh4`XwSl0*$Vwdwb6*6_p#3c z!o`-cVmcNv#A{ zRgpS??En|a99@QQ(@+K_dLq6}M=1=_2jCV%S)>8ebT5?LM-*Tk)&21IywvJ`a7#yt zoTdJu?nFO7PF&!L-!B>JWPlr`;4U2sBlF=tyj==}v%czUczZMYQ|opMaOJGqZ=_s* z1z*GfEji2Zm!W5XYlf0$dQobomg9p67n&(xhXx%*1w@bim zTSaLBjDK7>=pbg>XNcK$Dj-!X7Od$}&2CM#8R*cpGEi-m9Mvcz(TX_Wu|4c4zi!GX z^-uP&alIHjtkkE~Y)}s2c0k*p<}ow>EOqN`lA5LF zPXG$eM=8~pOlSv0_vrm{R(#ZB&I3?4pfcYigK^Hx2tpK9B#?o zuv^yfdd?lP+&RS{vaA4@?xWLEptAs_Ed@}yIe=@MVsH;fsY%Ngpc zK!m?n&Vf*a$@zM@_nFDeQ;l!53Gs(83Z-DV{ zNngNFXQ^jVA)X6`Kg4E$Nf>zTi*6QMWjyvTK>?F}0ue2X-YpY(<*2Q|++eiEB97Yw zS`7*k)2;aWBDNp>Brd9^fPQ^`UQIWUxoNMA;bp;qJ>8w?IYZ)*%|XQ zN|Dw%I}L{ETzAt!`GR{;_GBECFD}4~x$Z{)@g$-y%^P#>d|n1e&Mh770%|G6onK(D z3{2}y9s6`(C!TDQXIuE$UjAx1Q!g~qEdrR+kD8I)FbuI5;Lbr;Hv;Mq#-^Ucb3Q<@ zI{Gg3%LsRod39i=R|^MNu6b?=$4k_H<7IB_g8CF>`D`c^b3#>YK&X-%BMuE+*9DcAW<(WX7ucZg%<4fs;5x}+heIg!}MK>))REq!tT_(ADF%q&gRJ!?I@&`a) zx*H-f)KiX-7N&5 z`3(&tSs9T>nKzoOki4xj_u#lV%>m-c#^i${ZpN1kuzn zsJnf+KQJqaaFlyjNy@|t2j#XB0xT~9cxUQ9*+^0qA5T)g!RmP&FNr=dG|NmFLovuZ zA1DD1JFYp=$53!fU{kEbKqVKak+p&&n+q0-_iPkV1ytLOFyK_7m^L9twqWaWEo$*r zRJD32r{@8BcN-8tn}KcK3YE7_8UWARqA!tFeX+?kYbv@lkQkR5Rhbg{Qj>ogMx%O@ zrw+KN(gV=%MPT?|st-aLPJwP(YH~N#*ZDR^-ITx!2uf{C&s%t+pluWln)B^@D()MfyCkhAd^@TDK7kK>w_WK#T6=u)4 zSv01@7zW_r<1K>0CR-S<9H6Pz*XVt^D6LVK($=uc(dm&?6e=o>z0 zV7%FrA7bjWkYGDd{yWhOZwqBcUoS-9twT?I5j^m~j~W}clY_8Px79x4*eyfXMvSS` z5DpD78%z$VxmNj7C0YjKS6`c7D;{l^{aHYoJ;-Xj;?dhx3gM(SIH&M& z-SS7L;h=#O96J!%E#H}#oq`shdRPwSpkKSmOl3TXd|?hzbsdi1m+|A-iFcBhH3;PF zj8E^BQRHU8oidak-e`2Yet@sWaZS>A&3-xC(-f=V9}Vp+|1~>;zyzpfDH_%h{T0as&_Oove)IG`DFFCEv3>}k z2ZsQF@CZN>9+UO@ar9+Rp!I(P@aNx>+w?QQ`h6Z)zu%F)`g?LvzaWnQ2lyHN6L~@Z zOnw5OgDSZ<{kkg9Z>q7t|D6oH->Lcu7!LlS z=I9S#EI10Nz7)0I(dtacRhK&bapFOi`jnHcb~wY-9%r=rnlnZ{=oFgTYhnBL`Au2v z!{Jk3M2gRne;A!vLjpc-bmmk!2$|QY?uI;h75%rlGx7&R?jw?Y6ca*#-7{lNqe;In zCjfr$h)kH(HyTZ+R&9o&l94$VMrs)~6o7jeNa;&3LbQXtC(uk-E$6Tp^6ZIgWy9`} z6HI{*MuDSh?Z=T+auB16{cCxc+VY}d`=!j*T@>#bYz*t-9jh5Z0VFolnGBfQ6M&mJ zRVF*r0Cjs3kkC%Xh;_Ef2Rq+4$Il0tHf%nC8GWA_MeuGcM-g6+hH*kBk4Qj*(VU2r z#y_6av&AMy5fhvOxZ1Ek$Y(#rV;|?lp%FXNs8}sy)11Ws@W*e);8*DV=+678djMBS z0KAIGvCe|g$IWSiMVTRV$jd=Y1Xd}A#0tp0VIhY z&e>{GZndlGAm!CT%B%I)yp&h#45l2$xl%~CUwYcr7>=J7**?Z(0YtCqf-;Um>1Qg8 zpiz3eF9_vah-Yd>giT(x(;SJ(aWRomF^J#I)|fc(FKC0GB-Odm1Ywn-Xuwo7$jYd`(qttMw(_cnd=kO3wvW&IDyS`DTI3$V zeJ-w#;yRiYdnIgXtkx?X>R2J2%=rXL`4&Jpe;REgUAc~Qb&M$}J(9(+6^V@F}J^x{3Kvn!Ne%8Ny-o$$ICv$=`z%pI^0O4tMO(MX{>91c_ z{v~7@f1JX>BDC%SUhHy^g2@Gw6Y*W-6x3Fnrh?N)3>CPrCJuEmeLlW;8K5?aAQmHBHY(u zi@1`>W_weQQ&}(>-xT-m8+9a_ukuYI+PO3m_Azk>MwLivFS^7;y!H5lC0 zSFH691~12|Gq1q0T9nJ>=GR~y6P6nB9*cmvj0}q#jcW~RkJH?Sb*I7dqb;?_Kh#DZ z!(K2MQiF%C;u#26nQS3B3uFRb$r8^fY@nXyk|2c=Jc=a1gQK1stvyY$<@lhOEkANnVPzPom8 zWTLcIzuB<(oeF!@9GuHEHx&J3FZvO%xK4wpL-HZ$sC+vZB9F#h78qdX!aw!~{G;U6 zG9pp*MV@=*{X_7<-wE*0tFrGb_&Q3xs7$5I8%UB(GKkU-xJk${5{STvWKsIzF)D*y z6b2++J|$fNMc|1t-bEUVC<2e82+XAj96{-aMUM&6FNAjB@4)f*tFB*Pww}`I|7rml zD{H82t*xx9<@(B=Ny`5XspoC6OlbN>?!}jx_d*!{KP3OK#5s_ESh$U{#^PPCb3KN1 z?2SZ(Amrd7E(kdQps32HW(!G@L=g6~f)Epz6rT`;Cqg-i3qq(Oc(Q`95byg#HUTEn zgw=}1jW5hG7#W8|VUo(-Z%)6!Q-rIn`tFDDvtrO*yr;DO(eJfOCZu8?PbxBgD-}=1 zTtx|x+va03r_}IbmF!tmi{Q&K5|AQzfDzKkWFakDT1FzUQq=^ps1h%z!ho@sz*Ouv+%SI-?7E!P*I7Z38fY3{emO*_Dd?K5mRh) z9Re?=xnQYFI&9B<0iihnD*>={11f?E08Nxfjvy!#5e%)8jVE@?w07nq+M#&H=p?b3 z3|o7`%zNjE@HZJAdXYk!BIUVs&k@xXb`U~gytz|WqAr(S)PJcmZvZ#%~L~2a!7`f2E0UFNYHFawxGbhZ4DRC^098 z5_57WaV>`u(KDA2nYqNe%p-PY9m+ZGyb0J*0$C0xF|eNbM8_OSo<|WPbF}=820*?4vyki9Lj_}ZfQ7gdPd@E2Fkc)tMFq=H*Yy)%^btQj`m@(HCbo;&W2JE(OqM32# z0_OO?po}Jfrg>$=0r}uCVwpeKG2HY9PL0@Qs1F?>%u)(%8Kljus;kA=c~%e1lf3{d zi_ER7g&isyV3rM@x23XSb4{l~92B>CTWYGd1~0gW5ZdfK0yP*dmOg?9z~z_?l1PxX zmG*%dqouVn&|-(!U9oc-s^``=RF~H_Y~_YsgDsO~Us>De>dIzp&4;EO2S%gmAS?W6 zeWD=Zju%>q z&VA#~%NrZO8wVp9b_Z?6d>}p{m%OJ%OUt1Yc@O2d@9W*4-mtZyaXXBE84EqwAF~CN zXluc4+FoL@<=|Tnav=^uV79qKvyZz!adNzL($>3 zaYj+v(pn2(h??rTXm@6dCD3O!aA>vtyL6R0mnr(-0^A|;4bzc zH<96ZZTGFmQ-Emu!I=fi4WX7Xa%zj(OJEl;bA#c}4!=x|HT>BSnEVdR4Tw82lK?Hj zZO~-d-;K!~1FZHBp{ z>ualu=a|df#>Tpu$_B916W^G|sM&00w2G34UDsH(wFNVg*hk+C@xK(02s-HuQaUTG z*NTR8r41nWIw7l}o_2C0W6cfRlAU5&0D2;36{5B|X6ua)Q7|Cvh@JevAwpw!z1`|% z^_80;*a6#C-?*)2ep^#rZ53qRJl|N8>h~S4y|IB|PriK&!i&SZMcDixHh5V8sRzlA zI8E9uD2V@Lz%vjvp2OmKL0#qM&1}{E@M1w@Ra;A`nZSe#k>iXDI*cYtcK>-*BhWcu zkF_81*pIkN44wkHvBRD%WRC>8kRw70WB;t(ae0-pP`eW7?({w*`B#`GK6vN_gj0&i;vxrluyk z*&36b;4fZ%x`wms5Q@pUfhH8>X=_bIs6(+xdDc1Jv-AsjF2nS-p91TT4bSu=HXiHf z_c=DHo}1tKgk$mHAkf)|VzI6!)Nlwa^(Ld4tgWm?9dGvP2r9Ja0I&~JrclD5nCmm= zl0Y2`8CJul)YOW4NE{$A^a^b+VQxDOb<}j07|K;vqxlW=#~7L zI=$!!yK_=EKDr!IK`Qv4VpW1csKz{IN2da>jssM-t5<&YPddewSxJ=61mrgWyVX5P*bIE8H8ssVHv{9$Ek3SV-#BL4 zVuR8ZtA(m>8ZShoTWgU3&0qk{ySAaKxuzZ}1mcI%jewwM+7W0R6fIVZ9^dqE2qDcr z5U6XonY1+;m{AIv+nO+53Bj241P3j&JjCK`p$Wyq^$TG@f|Erxhq#Q-8ppxO2F4wM zSG?68x`3p{oxLv0Mw77MWL(@+H(DG(uDkc^>2NqDC8^&e8XPJZQPWIuc>}x%y`kiK zfpi8mFt3O7lKQ^@eKxSZ!s|uYg|P875~~Tx@SIIAgk?P@t#g{2YXS3Pi~Ij;?@ZvU zs;>RN_PsYbH{k*yBtRGgGEY$u5D+0ug3N>|sKo#QB9O!+sA%g{XKP!lwc=1MT5+t3 z2q?8qt=iVMwsx@ZwS9dZ-fLf9`(B6F(aQh3_CDv_b8l{PgZ@9C_y7Dq4cxQO+2`ze z@3q(7d#&GEJl}p7tpuRaf)$AaL}NaPc!irM^v^WpT10#(2ecY6X#T=9vI@<@TkDKp`J!S1$;*Dqt}#Wm0HXpvO!sw?uQ(E*6dLAl(XCy(0a{)YAg&TAgk}7BVNX z9)xJSn|XD+cIldl&cUnJJ-f(CcVzljG_Gw3W{6blraH@RxY=uPE8{7Iiwqk!-QFd9 zV82gu%JEj60S9pHc#Yh%H5)mxpmkS$J&UFutq$kRCn}Jz)(qUp@Q5E$sGEF+dm0^O z@3E(OE9(Wq`Rq~;_LVZmN^d+EIIcfKH{A$IU8tzwVXGEi*tBbpvMAjyA~rx}TbTRc z*Wtor7sIHSy@{b5Fb?JPzKpZ}gdXQ`SZz;Ra1(mQV_goZtjjTubvaA2E{8+b<>1J= zobXte11IZpN@ZORw5-c1lXW>PvMz^O*5wGwx*SSbmvbrWa!h7j&djXK0h)C=ak4Jw zVb>vAlHYmfe{%Q>KRIrg(Ir-9bxkkGoE30ju}LfnL&&>?;Q&)mn% zQBIhDkH0}rF=I83jGh+67Vra|B(VlfV-LozSeAeaM&$=AxS(g(* z>vFJXU5*K@%bB5dIsdaRr;gU;9MZZRN?MmAN$YadX?@1I-nY z{A&3wk34fUZZ3;FccVOr?RNOK>-?h&ioZ_xeB=nG(hEC|Av~@X+ z#x>?)0H4%-$af#{-Ou`NlXVk%K5f7I4tg5;{f&TysQX=0W8H6<4c7fOde`dzmhXPc zthLW?`{BN6-GrVy{Ek71Wb28ddsm!f~gQGmYp34r(#vkWoUgJ^t$MdZFMIT|T`$`-?iRhArTJP4timITnaHb6 zdO1%oZKN=!Hhx5&Ql-d}Nvif$CKFMK89U)s>F!W9okm9y-t)d=SK?%7D zsjM$UYTrP7uC^ksrtc`5|g7KLX+KUu2E^D^grP zMIHEOvIQ)m9pDJ2`g#5%5$S;itDp68?Z;Iv5CI#|PcT)_` zP%m(XhI7@E!2)}dC6|m3=$u#ok?-T}Ro9kKw4$9s;5%PMBw)v=btV7c1p2w-` z-62{0qLlC-jqGDmN=Nt*DtInv86EZ$6@|xSkjjvL7AUf@19?+_Sne7-s60_#0C0>` zYSO{rpg_t2S?DL-O@DwE21_3Uh>01BZ2c(IFh?U_KNe%N<7KX?l7$AK0EXK+W{IsM zr&hf!s3X}H8_4vjLvCB_4p&Fq4dG6O)3%{jeV?t7ZD?n`gS73*sBI=uWLM}-L2xPF zv*&SS?a^w)s6Bsp8o(|TkWR;QBZ1XV)y!9-G!FtBU}RcPXyO9jwog$T^*(V}o=&8T z>3}p=AskzSu+%#A;WyAoXH&d$BXnS-D~8PqBC;il6ZuzYjZ0e*K~*+zZ2a^AR~thr z%lAv)FyZcHa`I7m{J`;_tG??B#_H3m$J!Tprb@K<-0*NHI9s4Z^~kR_P|b}}361~| zJxDCI*t|Fi#Ib&r#$+@gOmsV&t1^kx??A#Cq9ILl3Oe~TTb>x?p$Zef_xXbd zyn=U$)KIqJnPq!3EZZ!~rmf#iRrDOGQp)4Vx`mDau%`f(`(lKu(&W9Hp9wTx!;Tcy zPCQThNn~yS11TN2APkH=m){e#GiyFt!F#w(iRFeYa(upeMk&7~`kj+wpRN;dm81QK zWVf%bZfUxu?rmvGyHOBOMFlWn?nZU*)1W=w3!Kh9xQ;e({=T!q7ih9-HweD3rOxIDsEA>$!_;|HW zFG@7ec@;Hyl-FOifHbODzwxkqSl^zbmyO!n&P$iUqEY||1}iqcP{!Td}bk=IN2v8G6Q3nkIJv_CjW z=1XCb$I;iczxisRAroVM8HvRB9W|j6gnmcuFyOCq1T^L=P(@4YOi#wC(mDkS-UJZX zQ_9&~q)-DF6+EDf&y14N&xn^`{-?u!0RPpm0daIp`ZE`SH=!-DIvzKwXsvG>fI`sF ztD(y`9g$CR3j;L{r{*>Ah{AB%Ts6Jq-ClC@L6pUL`T&IVBk9VY1j{Do_f-D>0AKZI z=B&R^>F-eK$HB`Jpg@eQ2eYR>Rv^u>Lb;aNMJw77)$9B^qF}KxN{(#59wr5VdC<#z zifX56`=B$mnfzB~b_GUT;@4`Fc3hlAI{+9=w`-bq+z|$b_S?2ppc=ZbVj?ii6$N1z zlb4;yR#W7g(sP%?#3=>upiKJ4`b6TdjPx6j#y|vk$1jBWM3~?r64a(lkwn|+mbDv@ z&a{hsfE2_A0;4e~QdeqDT$y4JWI!6Et|&bssD2$Z6Q|DTsz%;)Cvx`mj|Sz9>(gyz zMeG3{@?s-dW{&~NV62V5(uEA$q7)UU zOuPc_Y_w#D;Th$BJ14UNBi@evw*2iw{VL88^e-s#M=E~ zTk?&uO6an-)5h31{1WzV81)X-H4o;Tx3;D;Y1cFe%jW8P9}BxewBxSI4!kyJ;G4sx zR28|?HY%XSmu0P{5W3Bk@?AMoJ~un%O*sSKk~8p{?7&-d2L1>uL)TTJWj@Qn5QOv- z0pDENzAb0q3$g<@u9zeemkNHRh>C9gmiNa@b zf@xau*A(JBV4I_rusu5~S4QGVQ>=S(2Hut(__~~d59AEIAUp8QIRoFBv-;1>uKrtd z2EI0D;DyylNabNtd4yCRC6&i=rt;&ir!p^BDo>HhK~i~|R1T5K zGdWXvBj6Z-7Ipw^eHD|`)ls!`<^by#sVX-sJV*4$i2n0HoIP)&b~AL}kT&*>-R93a zU+Y35)wvRRnM7V8kuQ?Sm+~ZXLr!wjn%!l;5~+stV7WDC;62%a-^>~Kft-V-E<5md za|ZrY&i>w#-QRzZGw{BUxC6p($&G55t}l~GyR!-WPa_c&`E6v(7ud*iWOk3={KJ$H zP+-ChV9Y2;?cEAeJInQiSwTm0i($JMi2VxQ<3BO%@f&9U-+{;fdl?%0qfO2Ah+$!m z7zUCHd_tPYDWvN6S<$;JeAv&z_>%xodL4Ab|-tekqogQ2bng=(A9p1CfE#>Dy*Z;(ZUnRQM`wAi}wOc zsW(_WP8BGC4k4&WMkZ>i9UBAD;j$(nMR8jt5*CW_&5&Kgwf{W2g>bMe26cVE^8c zex8gN{TI!->RS0Fd6c@lwae*-mrQ^ky;KWFzP~`ed2>$(xt>I> zCzIB0NL{KLEb zg)Od_>S?)*8{NZDHtzr#Ie(w**X+H@)|_pE7meI0A9MFFyXs#`^)vb0#}Waw!~@5_ zKhAob;XLj;aQt=WG0%BCaNzh6=P`$wXe_svf~9}p_~?mIsdSOt4e-@Rx?}^q^afo~`J3*CWamDM zEy!!TzSGw%e($u)BwZ7q%WsX^-w6Wk)Xjz6_-?t=ZfYvow4izC(z0baon-c3+Vm(We`l_VJUW-$D z-_73ZdJ{~+)7q|8zwYj7x_#(jKj@iSg=dXX7|?4sa7*rP#5woVR2Lyv4FZjD)!0Gc zktR+b|H=U=o>4IVm5PEFSiZ*OK`a8@OPk$m?pN2}U;U9n%f~N7TY9e)#V>_+UIrrD z6*4k@l}w0VEvLq>mFe;8AW1jKg7{6cG=4Lk_M>##k4r=RHffB1Qd;A;%f<11a$Wo` z`AGb3xjTNZ?2kV}r+rMGh(9hb#h;SbxMw80PK$K+@6FUTL_FU#NJU*zQfOC}kA z)pU=)W=i9)o4)Zcn}PAKm=W=>nsM=Fa#p%!Bb?rHPPv$R9K@^I+_HyL^5E z^g=x&Wa5%bV|&fJ5X>J^Gs~s>J8ZV~E-M;)nnI}S`2^cLoKbL2a!=uL6x&(Jt0(6b zl)!BvaBtz??eg1`;l~*vZUGom9aoTH=4Rg>-|pDl8-_w0@GcB&h_nf?cEDwF8dGWe!7g z9aP{-eiq`_apgAh1d<4e0x6@|{Swj5po)-;SHwnJG9ELi()!6L=BsWo%;s?HoNCIo zq`pk1?w*#=uDNu;HFX@E^+}Y;skhw)m?rO+-q0s;LuvQ(8^dF@%Fvvamej%`Cc1N; z*+WVaB{CpUD#JB`L?4-+=qqO=D$>m>v%}2I22x$;m;}2DpRjubC2X7z=FT;*ony`b z1@UsT$SVT91OIsW6WH=4JE55 zNsq*E>5~`{A=kl521th3Eyy4^a@|X}YZP?V_9S-ChI4THZ*&wXNya===VvXw66KUC zO|RXVZ0|_Z7sT$d+fPZ;5cW3U#K|jF8Rx*2-|WQGaz??^GOzGynd3bzvyxBC+!7wD zHD<%6wqNZ`%L%Cl4s$L$O7j4Wn9srF0?H0%qnye7d_P}~rNsv`EPlzigLu}zzEW;} z0b5hXF0Ufx_2K#7*>3*q2C{n_Bi}0zt@2N!gi{k9cyeC)ay&vnL<*={8`GhC8dUBg5pY-H*Pd??z zXFYk)lLMYSEs!rWib%1$sHNnD15>Q#(Ko^cAoO`pF7K8{n}*&d^J> zUeL&|5U>a;WTjqKDaOFOZZylHZq)Jo6o(6I^-`;sje0pxFLip^lENm~B`LX1Ht6L8 zDY-$mrC?RhNy&Y(DaA?f`jqUKttq)*)}%NLZcfQlvO9%onwFG2Eo~`G-Rw$nLVQh1 zj!1nWm+X?0qA z*veTqwpGn@^42r0GS>E{Cd8Sm0%7?2i<_EJYN&6SRJFBbch&rs-8Ep|A?UoUt`UWy zmYG(i`seRCQfrD;HBh%yS>v6mle(qG8vSf)nR(WG%F@PAX)gjtm?tJHz*S|XAf0Si zeaixDrMHC&+P0j7IxeSbk(-U__x~4@&XaYkfly_|;B#j^Pk4k|+p1JlZpEH9jJW3O z2D|Iq>JXBvqrKcs*MjBlJ!8(!lewToGlBX3N9CT-&~(a`osVZLEqYN?%T71=TJ|=# zHKAI00?i^FK?aP7LI(J1p-~z(PtikBlN_7ly9nt*sMP5gShRr(|6{8vFb^qKi~~cA z?7Kdo3q%5@bv%8%fytxKj=XlsM+0ErSff*Nh$8(So&U(*sEkknA&o>7lH3uUd};Hm zw1gN(=lm|3w=l{O8_Y)-7}oh@t*Q-1hFXo1$_9r;(15l`+7L$2oJ36ht( z1_kSUptYYkjWp#+Iw#3|AEVmHv^*(xMB4*g-j2(dJ&EM6*t|0?GUsRw)jMJPKyNlO z@B#u7)k?R1r;k{K;#DlHb)wQ8YJaJIcWC`1OsgC4?`U3HgSVr2T3 zrri@=%TM&#!ij0NklVJ27dB6yxU^yOh0Pada8R8q1a?XT>WMt>zf+{jHv1=a&6voIIod?KAU;K*bxJWsvMBa+%V5IvBr5&f1HO`I9?7Vnx zl&9%>R{zLTIr(S=GJJLsqspQ^QJ+NHB4{bpI!d-?EoxD>$o6vMpcj>xxvpWn)w5eu zuWNu1;JQyZg9fSiT0P#jrWR+f-l>uHKy@_2Mi3Dm7C~SQ1c103fOxQqh;}*WvnqjR zr1i6u%t&SWE9ogwEK$z=2$JAk`^G{mYeB%> z1Z~s0j1;UAAbLgH0H|o%)^<@{3toMK-XDDGmN4k+G}d3V*z!$V_^h3NRI;VMacg}` zJqou)!7YVJw4z9eMwX6^>==DjBd@K=S0MDzt=xl_GBs^`cMu?h_#*CFz!nC{*sV_X z33QW3HxjJNHiC88Q?M?Z3D#w2fiPFvd(2yMzeCi@U;{oMCnlAWn#$?K1eJ~&#-?SV z${Y?mA|sz+Us$3mph|+s*%>DtB0Ex5s2J;qBfb65|Q54U5>Q>c=_R zNEy#{0>?`eWeTQHF6X;Sml{@hn|LB!xr5y5rrA_EN_k>_KF?;;hMg0aOHSre(w+UX z5#(#gxbYLzf_p{bvoam~Ri5VcPVAO>Paczs+6wQeOgkc{s14)_MEy>lQ52tATwbh( zkf-dIF%`-3;=^+4i;{d+PGdH^S4t|dZf!je%jES}7h_oHt%@R!{GrWhg0k8I~r%Wx@r-J*W@ap2@rP%rzn|xk+)y5CXNj0^JgEFF~wxBdo zQ(IWtv!>QND8mu`9LFbpYU7EcGKOz@^}hb7jOVj)e1+?kOw#AWQbj&zq$-NYf9kMI z!Wt6iB)w*UzudRB)Tr6*i7$|S&BgOV38%g&@h7RY{c_x3u)?~99E&AvBVA~B4X3dc zHUpK1nd~JZ6ee?MoND$R=gL}k9yfEpgB`~kK%MN7wy}MCbwS#c?d6X#<_U^DC({1nWrXv?3k=u(i$ZOf@8;>f*UGgEe=cb@+ z@f>$WK+K;k576<8$@z!Kx!xVX4%$s}35JFK$QRGb1?ZrujrDs_*61czkUL+ILhhD5 zq~PMcER6RuLb*6NuaOV)J@SOdsXlD$7I=DGLD_U$nXKy;bGHm{{44lRQOBrd-Qvub z`c^|tC+2ii8kvSTPR(Mu$N$q$*|#n|ZU+%}y^k|2GT)0ofKc1O1hbNd^E3B=n{V8- zXnIn_{`f#AYDaCly!y)8{yirttCOX#@31H<#FT>On-~hc0>PDIR>!mUU`52j^NvEaQ2_K!JV`4gGkzi0@ zv6>b*ORcM{kU1$?CDT)M&685d`CxXX7O+%*t90h*F?rWFTN~=KcN-TsZfjy)kO@Q? z;#jc@%dTlh+pGhkn-}wT)PbsW!JhiYE%h@MH8EprB-jGMe|a>N@6X;v=bY5;`i}FS zYp*5P46*aBzs3oW7f<(L7X597K^^hazAYGU{(^* z)Xjw~y9e)e?LYl}RLZRP5;oj=&b9jV4aHdgEbJg9k#(bA%}cVp@~t8}ZrT%HR(1+I zrEAFdwyv7?9y@2=1wziU2d%)4#d}D1ZCeA{?aSU{$l)Dy@uaRa>ey9-+`!Gl9&+`+ zRT4sn$@JjE3Vc?w&Dq8#=AP|4GQQR|Km=YT;J+hYu8WaSnyYrp6@Uh^S=!`oICZzU zNHhX%0~$`#?u-3pdk$8%yahtlfChg}Js>;ve$FUbix$o2Xp4coX=!U+-=HWFJ}29) zt!Zh~MHqjw@BjsthlO#ru4U<4VP4hVB`g=em=bL!AJtNtzM!v`R^as;gz zgJ zR`Zi@R3x4}DBZ^md{%nL;lk1Ih5bPFj|>VNa0%0O9}W;JV75kaj5`PRYZ>=7GL)HW zxGjP;wFny(6roO5!U{0+YLaG6(yULK4M|g*G#iuVoTNE7X*MU#%}Mjor1@CVd^~AxNt#b2 z%_o!QuB5p;X+E7a_a@DKN%NVcIgm6DCC$T0^9XvPN%MHp{BzR$AZdP>G(Sq3e?hn) z87oi5`X*yblCh=9*y?0#T{3oVGFF$2U6_nrl#E@RjO|UvF7eF$o_WACPkQDl&m8p3 z)1EoxnP)t6*fU2wbJR1>dgeLL9P`ZQJ@dS0zTlY`JoBPwUh>S#o_WPHU&I=`XI}Np zYo2-CGhapr%rjs0%p0EhnrFW5nQwUJP0xJOGvD&eTiCq!%y&Anyijlj?ZKbn=v%(5 zmp|&|I2W~RFkfvLERf$7F>wE+mv_}v1@;e?$Zv}1<(NaLk-u_L(+6whO}$_bV2%8~ zhM9-cz+cUj83WBRAe-_6M>^DZ9)r?6Eo z*C?ESWeNqjds4Atz4TVUGX11XQRfGmCPnwhZ?GAoF#X&uFy|{mf1P6RFIEixISR1P zi&_Qt-)KfFwmz2+=qH;rp&e$1BIOTMRQ$^n2A_}H^s>hc(aRKtya&K5R#^$?OQrpz zbEtbJ6Lj+oCbG)PU`K{0UNzUZG&F6kJlj581RPY;Mf%`X+U-2PiRoi(1hf5+5v?;S zl{wslWW=lyt>Y`V*0*kHX|QmjJo{e+Gj+}{#%mlIUnr=Z&geNmPwD5NYS*{e_>1*% zPs=X*VBgu@Ci@tQlYoUhIqyoTwP{bwmij7NNLx3okWM@CP{ZGH_+M;cK^n5qu*vqgN5IG#OfJ)@iw-PW$C2Bh79UY=M zL1yItHrQ$m#U+L>03}#)r%%lvI9Dr7e-FWeW|)&dY*sr&8bHt4+pUDdN*$Lh9J(HQ%1j#M`>&0&06umKi z5*gKcYGi3ZhHr!hMyGD;Q(!$Ps=CevEbq+1=3UOxpckh*4&JI zA$@8cEk~GRte137S%SbMG$r4+LH<_ODYz`aZ>_dyXXFbPP@|cVn)XG2tkhxN5^k;6 zJMbvJNbCXq`cIkAQaxrM?d5e)1 zPcF8@)<Vn+r3s18n)D3+ExU?hu~}i zTv27}$}?sE{Jf$znae+2fBt?r28irHi;ZVpP(HpA`Br%L3+p$v?rCmr0{wOCEOxZV zS4JOujIVU70Xy1wpUZlYnaz$`_0pxZNLtoyMrCAsgN>KDu%5be#w|ab(Bx$t|Q`|KV&<~9WE_S z$y0CbLXuA>+u5b=!ktipD}m7t0#T1gvg zt{{#Rs;RXtyA*Lf2%AsHwLQb1weC>cJ)JX3?W4$`PFZV)_a9#-uWBS;mv6^rbfMR_ z3lprPYw}b^7r2TXn;G-of2JG)$M@@)E$}0WG7(Ih8Ov9VG($pH%`$S9m$lbKu#6rTJO?Xt z=K1AS)ocVVU%_O*e8r{(8|E!oFu!Kgyy}(Ja~CgNyk@bQ(CN*awaaVPu3Wid^_m6q zH#yPX_=<%XaEY&2&ir2($f6axsNo7$v-enI_v02?i`v=7gu1O+yllayg)3GstLBJ4 zww81X-AqNKwVG@R*GgYG`)FuXf}Ni|PWBPu6r3PtAW< zSkYI1&9WG~j}3LZ5Tvtvtv%hlhE{D2>(j&fEN~W}bj!8OdN@`A$%{rzMX9&@&KKrX z^BvAYOX!gfYJ2Wl73c%MT)m4o@7bnuf>xR@m3~l&a4R32pC>XhymK7w@@IJ-uxI*%&krk43ybSEyc?YO-zh)87V>jmc@Id1O)M9icw+Sv zWfF}n=sazo7pnG`#&$AvlTsEbQFW0{G%);lkk(eycTFvkh>V>1p2KDjzdZES&qYS! zc}P$DAelTeoL84}A4xN-=9av#@R=O8k@p#!&1SGI&l0&yd9zchJub{U1pMkuhp?=p zk?PJ9(q5D2n9#_o_Z>$zcb->_Eh}HPSRq%9GTaH}C^NKQF?qUYepQ(ic?g%!s@~|MQW=uV5)NC`8M82(Z5?=U$?7`13tvPvV4>=>*M=jUVBTu z8dqKj7ppHkPR*5hq@?T_v|zib08UShr8%u0fAfNkyWoT!-qfwSVeZ{c$n0Vl&fh+O zU$)YJrCbAI7=EVme!fBK_Ui}UMJ-FKskwj~>=WMmQMttpEy9bmLW%|nRs|}3=XTQemyG}7R1mU@91;6KIJVpd^LXioqeW0HGbDIF{!zyHHg1I-fJ6? zactUxs?fnR@`8%arsNW z^y#&4W2v3KRK#PMHJufa*6c)pvu`?PS8e_dG`-ipX}6=zs>QyDEL^FOK(vH@ib%+I z70N8yMN$0m)ZN~z!kQCDweM8-n+ix`TCrgpqmp5@J5!2+&c0hk%e7MU2sU_5uWXY6 zlcVv3Vy4b$RYg-{wOYVzzluDxH~Hn@-RP2xNNk(k59OuE8#~0;i7+8zubgNUqwilEtggw zR^zrH!9qVJS?ht>t6iJ~;?vFf1a0M>uo|nU3pP{wJ*^cMzYL5OZ5Mx#TjfT+EYI*> z?d){nU#$L))5maDQ)BxTWEgXI_ZEZ`M-NHKEgs1Z7N6Z(nq3UMedEX25?1NwhQ>XZ zOt-m(C~I!R0uYD4I@r3fp~W|wXd7&GeKUHQs*4xKOzo%l?PV?O0?f-)bdejJ;-- z@#}ZgQ=4^Lsp?XF)}*`vjNW4dM#oB220xX<3WYc#Jfvl9TSfcZ*NGdk4=MGe&Vs*z`=g=?9IWn>*lI zymf601iwcp_~l2~6U%RQ5}}V_u8?-@htIOQiyL-Zvv(HtV}8T-hBjs<`- zABxQvw)t@-^+sitNJK^H8A7xJdt}MBrr@@?Eiw_i2fto=*f$ZzvS+3TIqDwqQEn&E zW>t>+?P-MW?`o(IEuzn_-`-MRPl&#}$~}L_ktL+*xQ3?*)P_BYr0Ah0YsH1RN0`=B zPxmgmlV^SW5vHG%S&t0Dt=^^9J2JS`6N`GSX);@Ikq#i5!C5Q6ivs~h}xfvVr&8SGLWQ2_PJDrMy-pCsC5xQwJx%yxN3M|otew^Y@V8s zsgL1~LWALuD$8Dk{_GOeP(Q0?w~onK+}^L2u8zv>n9OqUa#s?-A`K%8oj~?kMW4%% zd>(?#^GF1pZ{WQ{8Xgs^H`{n30h=x6C{SHj_=zv|6E8a^O|_*{kH`@qr$1kczUr~{ z>6D6X2G2t&v@Q~JSr~I!tjOGh(0;Gj6r&)DTC86ZGrEm(j*apfXE`9gu?3a*ZU+Vcck4IQ@xw z8B*}7oL=y{R2O_j78blAOA5X&D+}JFk+#uH+imWhKJhtW?$3!Wwz(&-vGdGkAn-m# zjAH~4N!1uZXR-<9#EhRpN}?x;uZM(ouh?{>hOe~P&-oQP+ZKCUoN?}4K7Z#$zvJ(Y~U6D4K9hPc#Y%OIm zwk#v0Kn)PJFH3egriSHE?HJ9gZ=FT!*eP&a5J}C1shQX+O^vFUY)<#9VkaRqigC6o zP_RByI;!A#*x?@{RI z#vPXXrY5-VpITrmU?vq%4l3-?(lUyw_Bf8Nk54TuFDy?K9+ju}%gN))3(*SS14i+B z8=_DLjrDlosN5O$`l}03B>JigTHt~%cR?=(OxXqXTu?k7^n>bPBeIJR$%k}=ryoBU z4tN{!<2vl!pt5FZ}sh}(lj-!#t6kn6LF@**76{9$5RceQMO4pkcM{0%F@2J zc2CnP@=20Xlf&}-xTEr^NFQ`$?_S30eUXk+8J4ROjfm~G@69sRE|tU+$`ca~$!+`1!%X>U(ORf4;N_zEg0zYjH z?DlECI;!IHK_%EiENwg$FoR>gT~iA&};NxuT*_aSx{U zoYA9pMtAU_E70=#BCK(b2c@i{dwI`i$41n11RY~iuT@PGE^RC^7tHc&1(#Vm#{_msQILP z13PVRVw3G#z~#P$xwCJZH{?6!`|@4$FY-O}bNPO(Q2r^_U%nHolyAjG%1`Vd`Zgq; z;SmfX?h+W>W88AL+g!mAO~!`AD$IxI!X@UKSdAqPLrr6B4c`@DP;eVYjxUEeEW)DY zao&2=$6sRSn@g#?N97?5!d?SE^aj?jcJj8EQqGTU#;+S?oML{(UCPwS#MlN6OWAs= z&Jc=#cgoGN3rHh@eYq=b%mtKajg7g`d_z{*_&iEC)5e#ij4r++OP&r%AH`OHiScBI z2g6}W(YrFuldT@S$8jbxKp)&o>fd^L&^Z0Glx(2i2TmKY^Il{M^N9h9^^ANMh&-N~| ztrb>jDZ-dYwslN1pGSDlXe#e8P5j-a;_N9zr-|>==cs(C#AL!&Tf>#HLhevZjtw&) z{@V&W+pn;bY|7)aQ}&5s$oNJQXC548;*lbr6jt6zXz1;*MXcMU67RmryFLzlkhem{ukRO{29}d03vcbiNN$-?O&0n03t&?5PkUS|C6? zuv>crzOFVWh6S2vK4;sE6wDKTZB8^l^J}xZgF<5GsPjUWQONQ1=u1+%6 zOz=C&X1cmA_S_(w9En`(ufw5i#!`RdY$|RM7p=eV`Q4%tV;VZhdd23MaejJ=5TxX8 zknNMzq-WF6#0GXmH_XYvrk`RHa~AFfg?(^P?1O${gJQy+(#%1zX6}^j8WdZ^{Gwy~ zG;^AtflPWeoeV%pp36zE%oJeRr$(wWLa$<5OuZe4|2vklqb27TAirK4!1&PbStME=Bv(1OvW;rLx+gb(vW-wscAb zi-va1z7vMVZ45YL)8L4+UCIKvkPM8=U&705CB4@Y zj?bUK4eu*~Gt8-e73y+PX;8a1y45D&=AC?Pq%9MtVn*bT_TKjp?KE?WpIe3KP~y@q zxBG3hjvRKD+g`Dg^GEjCE=P7s{>UEcVq`JZ%J+-8lP1w(j`0`ir$)wh#?%VmFh0j> z9rMqlVGESpxhfeG_WLohCZ7!(V+mgjt7sqrxP;>;F`Ve@=1=ii1F^UA(0=n@W0@Kb z)GmKXYWK;h6J8V+jyioDk;9e?EOC2Tx`6yBJ6Y;}EZE07U>=?Dl5BM0HfDzFnGW}H zKink9 zYx&pjlkud#J~MoAB253L^!M}lzQ(0jllguBbb6Qj>0NeI4*E%65k!IA_yh0uOs~T) zk->C>gRC2$X8m~xgZ3a=g6FdUE8;86v$ECz8fcEmb>{P;raqs+==Tfe1y;u|!vDW) zKvXf^u~t3HyvjWGnptLEHy<)zG1r-|nw!lV=5g~ia|C;O&zo0C+olT^H7~&!~7tj*BnUcci2P(Xj?8 ze;^hs;)fr{65>$aso&r-X}JwR&eC$wk=h2|P-+@)J}h6*_}o^ci|?Nz@%4*sgUu70 zXLuH%{}f}ykN66b*UU}sZ#Ulo5_Nw{@AY6|3_tZ7$&VeeCrbxESvus&(m_v>0lZwA z_I$aP%{q*)u`eYD2lG7ripkID>$SI)8Sa#?2G)w0UmT3BRmC;pf@ zFB7@xobAglzNv?Z{uI7Th1uL`e>)_}v+7z@h@{4zux4U6$%{!@mz2h&T$z+>lJb-% zS9x-^CpUR&QYbVg^l4A-_2fQJKI6%LPww~RfzXmr!Eyhuh;5@edRe3wYzHOPc2H7n z2PM^Z5CD>TS)pcwtg)cw#h?IT1gN{34eBoQ)OHZofqJM-pdM=fr-zyi>Z#^{N@SUu z5}IBN`WQxqO4UwKsoEGSl{Lj|OAtYCwL8>X))vz=^VQlAetk5mK5Aa5kIYSR$aA({ z>hywjplj6}&~<7U=tg~Us~QlxO+K6gy%hUDcgPMkAcUczJJqPrL$Wy~59`MdtHq#4 zWp9d2MeZJ#OWAQ(142*8ht#srxoS#iONwnm-X76}j!HvHo>MbK$J8LvF||+hJco;t z#3V%JB@NA$h_D5wg}{R84Kz!j%F$TgR>gt*OwMHS&6ZliJ0}{ZJGSO6$Q>5c1LH$E zz(DvQ0h|Cy=G95x@97L=~?C^<=B_ z?U&!LFe|e~HCJtHXts*Flsjkk$abF`8qyZ>q$;ZZoDrFyiq?V3Op!K1PbA@uK6|dK z{alL3{i>0(X-kjHP}7Pwak|I77c_3IY}!_-!jP53iT*KLkNI#tRgt(fbIfb6VRJ4= zpBig5%eq21C{I3pzV=-NSp%dLGVMj=(K>5ai|Ox?%5O~9Zd4mB?C!qeS*`}}>jqEs zmFjL$uAJItovL^BLA(+{*2=b~N))URL~(6|nB>{0j`xmg)Q4H?nKhyrn{~}QhgKmf z5vX4k(M}D!oakerQ+7grV)Nd%`qni~Dt$zlExVdp5mXu7Rf3NquzuRHT1VJwS^d$- ziuV?9cveJ_j(tiOV@!{VykhQQ_5->ERo$x79V7~FfvO5*jpOw#$leqq668$oAZAmn zLu4VcWOClI+2?cUc+(w2qVekkAl|3F@kV5XP;FLz>W6zJ!;Lpc)bM z>IP}oO!xx#JZU!diIc-5JP2iG3#Y$w3d)%2)Nft*0PDgOSQie#x^M-!%AW4zaLFL> zB*3e?ZQG%o8H`s^rGaBH2RdLZ=jOu{_n)Owf4vO0+xdKsHBC5Acx)JbJ=_`rZ!{97 zW)zU7qgkPk5tWm2EA^q^x9{OeIP%28HA(8-C&?CjxytJJnRtt5Wr63h>gfNfH4EJT zu#7q&J(eDnp)Acu92PZQI@rA%48ncZJI$fZ>r+JJk)>X+aVK%oFabAivptnNJv{fQ zy&f`^FDApYO@Vcu&X=?Jb}nyc!^2i{Zo2@Vh4`EqDb75+Cl3gjlt!s_BrAL9EL@$nl&!Z?bQEV$&E{6F} zPy>TrlY*kh+0ZyB6<^pdzrz_gX*n+jat=PBc531-d0U@Kx*?o!SSFrVu=Oy;4+_-J z_raXNj6zOw`qb(!;}oqpYPO>AuuQ9+QS_QjI3~rl$D}*I-nFHigrB1CCMf{!q>2JA z7(O^6!;i>GFW5Fwxq{Q^CF-6^R0Ha#sWFEB$N{Ns=>c_zWsKh6cDEps=Atf*`7t24 zphxb-wG~A+Lfig*_JONr_!E5jJ0On6=&#yN+gw`&J=-L(k8mNm>c*FM6K{;ve@e`k((Q&} z8{r=OFo`QKVYl;A7TilX?EeCHh4$`t#)3z_EE8?^rP?pf~QgzJu+5?dR#HrNs<3bWZA3V41< zK-|tQVw!BImDa{f3)mgP*2dFPVVBL3!B#;67m$Pk605y|T{M>(rie*v=CXF&6IHWz z#zpiug%7&Q<>a=FI|}pEo(%G2uqQ)28CFDsDZM}_=sU$!b8(8A@2QuP6tz{Jq8c#% zFeNWIW+vZZ*VeF-ZZX#38Y0_xpy%fsf!@W9AcoFU1B@#Ft4w@F1`{8Y(DCw)74Hh) z?uR39?OE}hEOdTu_yl-QtD|@V*<_LN9$3UY`mH&dYIs=jCC)}wl;h0c3L{KXpia~g zC*$)YmZxC4i_yJcL~vu;scd(rhgp}^7<(ElJ$R~R%;|nwPndxsWd=ND1`6HO-;Wng zgp+xWfmy^X+Jik26@7KneNPyHzB~~DYyn0}?A=fj(&@gEuU#@TY<3V{J0?c0>*#b* zctnzJV$^ip#Ms-$?Iy+&KkgV?Hg5FlsX}iys|N54K6>Wp9rD71e|){0i2m}7-WAPz zP)USu#B@_&m@R8>YPlzqJvr5rsh*1doaQ-`Lo(Bo(>2Wq`zJUrQk6Jq+l&7Qg9g6Z!1Ccg z3> zreZ5{bu1s@vCC#;Pk@3-POGt<8jJ0W_sW&~ypTh|K>dfsRrU}q*h>Jq^S*%~EKA*X zQPbvz?e%PKRar_fdFsg+^_^4|Z7h0jJEN+(Or>U-NzGyGGzVi_x_eX5#sN=eH}I77 zvo{#%oCn_orH>lkENRJN>fnG|ZSc-)advKZGj6wOI5p=VY@6jg;o+={0SC6m41BIK z(rQ-6G14WDNc8ql99-8WP1dQ}jR)G4~lQZ0rJ|n%Dgp`qneZ;L~ znP0{VyNItA!a#SA7{n}9gP8HD$?{}{$1c&R3a>ml=~?MT4csTa_34;&Q_i~w7M5zR z#&*r|?_oHTm=g9Z-Kim-468kvLQP{^Y&zRvld-2Vi+hynT&kQsyId}0BVw4%Zw|XNSaHPY&>~{?SU8L){-G@E^$^)H{rc5t zzEbU%(Gow-M@81WBF_XdMr4Evy{k5i{^7;-WPUNW^;p5#J1h;ESXrDcG`{QIuyh%| z;h$EY`zw)OSL@xf1#7A&EMC4aBiP)_USE3f^4M>5?W8|lgam&NTsex{Fxax{<%<_C zs97^{*}`bT8bc65U0r9nKTTLSYIV8US%{J#0PD41SKsD`a6`ZywRaX;mr3qVL%+;z zCp#L^h_uGe`L}LE2Gh;;r|D9(>d$B@6A|rg^2zpXQVS|ZCBG-zijbtU~O|J(D(8= z1=|OS=x=I90*AkoKLJ}qJ}NROe5d42rX@2 z_tRfy8aMy>gwvRuJB_LvFB(~TEu@g&sTp;}?quFRm04H0Q&@iZzb?Ibfr$PxOR@DD z)3p>F$cBYZ$eqU8|GuK;AzDIzy3r8)J#giMuXZtwl{Wg}r*zcdiLd_honu6=zsz1c z=gkvLB6k^{PgVTxtI%xyoe>lO_kk;ye&@szu&pu=Bq>gqbEh?E{p8ahhtBFRlajQ) zeL`vFj(*jXZ++#Va+-r*W>K2@$2x0rXXLa4!{WKq$~K`J)Z7DCww~ODv~1T>@ro@D zv7yPgW|vJIvn}JLlZj97G#LjV7qOF<9dowiRyyYAuj(}BjP2mum6N@Fo{syrTe=>1 tu+_XpccZhjpS{PIPGa>ZJ53_W#RlAEP>KR59=a0z8wUI-QC?Kf#B{02#{>t-L22**W>lM{rcQ{ zU)5M+)cR5N{g^ds&6;Z}$wEP61K{D|0RRB`ALG9dCIAk=#KDf$)x*Kq%EAof?7|9i zGqrL6anEv z+dFM(QhATk1>=d2mLbPTOMwFoN|IX|&2oaqVxDyJpwR>a(WsYWid=3~ZZ!4Zx75W0 zeEWK#cn95K*=tG~vIahoD_5qm%pkbR<1_Q$eZy+AK%7WtuY(2E{IJCL?)g{R<=xQc-EP4N!<`qFv(4z*FTcjE%RHdC~Fj!$|DeO-jp**PT;DZ(lAo0)2w>Q zAjwdrGGsJpu#Q%z9oN{TCr{hrLbz;NNdDp^y4tiS!keE5{0ZN-@iL^!(9K|f!!{3=a#+!sDq7dZ> zt1=?eKVh)g$jKE{79how5ICvilgmov+XtnyQ_Ae-sSlI5?bcLQc7*PGy|M_Thr!ja zUVC-#0uuq#ogObwsWX0g5$+NE&`a^uSh35!W6FLas;cJ2S#gJB#8dKXV>@@l+~rtH zvD<=}!3<{_iWRX=OBt3Yq`kU?&Aw`MmPjUYRLNLQwaQ$^l_exLgKw1`-ZHXw?c{b$ zgrkg>+T1r95;%)JR2jDdT~=0MX;+Dc2|^24i=CVqaV6|^iY2O5rL?gZW9)WOgn|qh zYRwlp1sC&i5%^uD)lRQ{FTio=B^C~P%kz0uzMOexW+b1?f~KGB!l9ye?FdyTnb*dP zGKa%r(PY%?eo%G1O`x+gXA3Yoijvx7ZB7 zMOd71zBru3&g{lkTgvr=ijBMSLm2M4dO38hp{qrBH=>VBjOzda8wP7xX<3Z{b6K^h zw+R0i@;T;;AD_%(#F>}o(GkqOISX~ua0&5cTk@MYYc5Chxz7*1ER-RXxo=FDvkxmP zO~(iPDXpaQxb8}~o!mI5t#L=lBiP-eN~^hAl9vGuv|L=vLW1_z8iNs5v@p#1;{>Nt zWhg&fLNldkYNg@xffGuM;HpCr@ufjEy@?+MpYV_Q@ zY!ULc!P*EBT}#GxRJuhe#?GbcS$S7r`x9vV3tx(7JC7a*m8gNuL^q@6Dg)-|Bo~kUH<+m zjcy&l&xo%?2MNvVDZcO&&DQ>1vPzEZ(H3%h#mYNb2vbMd(e-tvGGTkM(cRqH&}=#} zEr8fL-iSO_dmo+nk&Y}mSSec59tB+9RFOm^iZaPoH8wsHSB_u;BE_L++VtwI`pcYg#6X`t(1vdIYCVoDYp&QpY4Vti4WNSu~lbE^oBYmYsdvP*FL zh;A2Q+yE@nco5+iNlGs!oz`?oHfVOzLQ4~o9N9~k$Ttzmz#A&yW-Q6(Uk9cFp7+hl+JPRZg1MLDcf228h;Onp!oUOT6YD^vv*!k33RPHz;`*2V$1rD>OTJ=DD zBpv!*pwyh(_C8ZqnR`e@Xo6u?)o%LmU9d&hoIA+fh+$%$+MFZz!$N`?R|;#;7j^6L z@1>qS#+|vx&c<*sfnLCr!M?Z4ikdJfZO4FVK(~_?281#sBNEKsg8V*}yYI42o93FD z7+?1tMv$f?fv-?tR#e8$sESzWO_!EEzit@$3YNIqgc9~kK@h-YW-#r^!@JoWtdY%K zETLWwAlof9io0wV&HY+g3Odw<=3;h>SF8yN<^Qg47w#PfZD;sY7}a60h!cG*mf$i1 zIj*V5WSf$EdoDF3^Fu4^>y!v8sr*FwTpo3Yoqhg|c4rn^+c7cdGJ7hKsVb93gc{R? zdqUPZGmED$N7~LXrsxhR=b}NG^^)adQ5A7WBQzQ|pL4vcRBFBxgY2*s7HnqL^@y2r z6-#wI1$@ z!J_n~wqQEU*`6%(6W6aIFic`+DUIW{mF)^GufD>?l5k6;JF0Wfbv3TeZ!D1i9t}u@ zEAENOUKA`Ev|2w)!hh+;pHz~Ky+++!b|5;i(43iVjpWxqKavE<90*+0$PXAFMze* zo3Q=hP7Z#=c+W;DFc357RfX6yE;~!wMj8E6gFnX7EJIb1HKuWb{^!<%`hryZ0GzkF z>7#n#_pX|^+k+Le+mM6$siS()_pq8b?;9S|Tb`l-6I26;udZf<=X#H^;o&dCHk$rC zA75$8j9wQ~?gztRhQ>a~}$pn|Xk2086L(StxfZpVh9>hRb%ISl>L;bI8w$s>1q2`s0 zEmm1~;oOR<9u=Nh-Xft3i+EM=JvtonP=!k0nNZ{xE`E-YpX|;|j*;K*B=|Mi5|^!4 zDvdXwVq%<*)WM(CZ>UMYS@PX}Yww*cLi2fUe1<0;@*brbZ)n2jm(cW?Q9fiWA*$># zNs}<>u5(r|t9KT8~)jMO8k(p2C{JU17 zZ7(S^X@?8Y55WAjMFhT&Olt_KJ7t0W;sv$A4Z8X)_+33FZXuU5Xt{)!saH$Oz(4a2 z-ihCvh&+lnc-fiM?Cl41vo2|g!bmIstVw?_0g7Ec{aryV2$u)^O~L3)7|#g%0-}~!0TmTP|wS#CK z;h3j?IRH8U=)uxy+btF#7eHa>8Tp3Y>VyQ~V@#Se+ z_epHrgj>9)H1P$nzX@|(h_GR7-7lEnzry=P2+CMo+)MW?=a)8f$}7&MADHm&OZUW0 zOV_0)w|Cre5a0Ajqoh}^mg!*((n;!IYNZtp+lT88adY*#@#aGfT|eAPvps50`mMus zE34X4PLegNw-p>718 zY)-PV&UnZ#uD?AKKIy`pqjZFgd7_KFZfIYr&us}=Ogt*G&VLPv^2L9jiM}z%d37j4 z!P1-#rfe2DxyvcX6pNvQX4f=n2$N>3kxsi?^jzF`_H010i~k-HQWppps_D3)rKtNw z@ydu*ef_v(R<{y5pEU?>!BSrg){j8_LcJyc#p^!$^BaSE4{A?6`HH{(Q(H<8HBNfv zvP-5f$q$VOeMvD#zn*^hcFDUf0T0d-MsC@E%|hVqeghfcB+X$clLo-dN(fG<&a_ z(gq@xei1nAkr3-*Qky`fAaiH@w)Bk zoapa4;{Na*q#)B&ty81Z-;4~p2jY!)kDsXGqjxZl#d1STk?u`y?9q>jQ)=V5T$F8x zK3!u!)4SWD6Xy1IdkSb~`-*?@=|Sg-ddk^mEnXoLkq!Dm#R_8iVw7!slJE1dR9kP+X|z zydPKI1q@>}ZBbf}F^q(Jls>9PvF^L@wlAK~{$UgBde-3tlCA%*fpvQWID+Yga((7c z9751XRfG1uGCxy1<8Y^jib6XxLR&EyQRfRnmcT}j_BEJ3@j_W>J1#-K#-wKotDnhh z9-xonP+XJc=qsFNBPOn)&}gd$YqgVByHaNsVi(TuH}vN6)LWiN45@%A(@?8$oc(zJxCX-fbs1xeoex-KFaZK{Ni>A1dwa$%;ay9%XD0!#mPH?A9 zR^69ng=nab`^bR-a|bS$?Q!5}mZZ`te%adks3;n(T8(GCW=_CyY$wG)eQ0ruFftk7 zA6k4zMtG+l?-eWaMZ^P3a!OA7s8HQsO?iaz6Byod9)oqJsQx2i=tv}s;IOw9=- zkiITy3)X^A3L^26;4WmCMr7*|6JWpJb=R^D%J|L^%9ipQH09O?MEPP=87vY1VqnnGEnTdm`ne*Rd4?~&=p4dyo@4cox z&E1)wwVL{IX4R`~(?0WZswiM#x`Oy7Vc7z|NV`kHa`PXP=+#OcE7z#&9!KJlaOt!L zhobM!lB8KX_>i{UHP!Z>d(UrW6AaKmi@!W^J@)aOziz$vZ3g5A99M<_%6_51@Gy1^ zg|BujMXx({2cMGs{2fB*kp^b@S!t_-zGe;AQdX^g-QyJ*{>}kO>nDSrMd} z%cL52d8xB(tEoXbh?j}2tI)}QBT37}rl--#{}^00yj&*UsAbb*-w)O@$&nJZ5~=jF zwX3qR$5vYBZ&i~~oMykSBpPx%(h->%Tp>8@SWZtUT4^0rCyt)y${UUsd6$ z+ETnXFlqW=K6d+M#jAW^v4G1nis2i$Q!B6Diu9n+#G_O>rvrVb6Qwk;`1JE{PQ#i+rBqS%z@ z@%4TqfCLV-E%3`VQ&z56R*DUCVsg29W;MyO3v)guyR=Hk<%!vOP(&30MW?#uzD3_y>k2# z^FsL$z;i5{{%Xy))T-7pv49{K#hwCt^E(|~D4!~5MnlASoi#lePYahopwdQr&44J) zOeJfaJKK+W7AH@0Xjq?$acZVVb}&YdrIM!%Gb}AjP4?_J&aHAJxJ`}xn_lzq{7kO_ zw^va0`~4#u8&;gTC8(h~UK2N@cqPv<6BT}T;+&x?ZVC8CDt=A!A^2pvuOoA&<=6#9 zn{O9}np@ag&FE+>%XOe+WUa&)qObNBKSN*i1T;kt}R?E@Rq)lYA?iSOe2)qJ?AxWp&Z$Gfq zq>SV^hY&e1$+I2YDketFA5}t6?l~7rOKIsI3ZqDWk1+TL;~`1yXw8!}?L{VJB8<_~ z4SG?0_X-xT2bVu&2B)jN5Pem;lzovIs=sWCiZ{xRLMp9O?tFp$s?Lsf4I@E(E4^h} zKzbPywe=f^8`FEZ1Y(}KesuR9@?7W;8jE-P00}QC?hxsVKeQy`V@Q+`Sdrl^=8?fz z<@oC_XPkhcXok12uShZY5A!Sgv8DqGDbIh}x={53d<(En+1$-x8(|Dj z5lpX76eZM{F3CFKCJ#9!nM>@EUjr?!HEZF@!M=-^9yS7s;u+svMEg4v_d8+s$zHA^ ze{Hg^*Wbo|G`urJqBYM|pJ)0ef^CAKL=-e&ID)<+DM1p5?*rCg}*s;{C{#h;ua(MfRF#Ua>K}9R|&ygxHXaY00E?yzkGXUZL}Wu(zS%6fr@#;9e({N@hUOw!(Y51AJ>gO;?KE_p61x29hUCcNGB4l)F^^HB;$n3 zf&r?*Y@TIc`DWdSpA}Io-%_Ao6UK6NfUY}B-v+AfKs}}-?1&|33C-eS|JswHB|+eJ zk+{MulNGPxe670ayUDiDkm3wFWohHkI@9T3Y;vFIWNdS1Y)CSw!2HP4&(PtNm=US5 znP$|<3s>E#TCw4|)*E%(M9Rwhfe8Gy6k;vMx4pA9SvNRACxy7I%RclDzR(Ee0#-rw zmmgB|?&>paSj6>^4Zg}F%`m+3sUNY+QsY5G(E!aCh3Y)yvz2)`5e>}YYguW!yZp9= zuC(8bji1YQX_orjC-J0;CdhL|DtfNZLM)xmhYq0#b`bGBpYa`Oc+-THWldQ{pa^U~ zdTeFlj9@U4{o^YOK;09h2iF($Ly}{Yte``K)SjV~Cve5&uA`hBr=@Tm#CTX;ZTY|* z^ZT41cUs#f^9kxTEwEtkWMxP_T zo3kmdnRF)uR?RZ%u~+v~l4%5!&L^qWjhiV^n8&h@UC%r5P~j_`l2@lKh;m#EY_&G) z#ZXtLiIBLZt`ok|FaZ#JOgdvCQOFV!I=umV6{Aus);79ls~v886_RiVcf10fSd>2? zskamUuuHW~FCR>|lcq*PKrs~A%3j2(PhpUL`YMT|9Y+>QgCqhbMt*8{3o9I*JweoW zPT@mh#6x-fx*QXV-L`NSr9%zYNHj@TcHwuCmC7i3aF-og5@e~Xoyc<(fCR>$2 zK(hO50YeyBjN9}vEpeq9qN>vzl}x-sxN{+tzb5xmY7G5~9;>nTvJ9RHEKj;R^*qbd z3LWyM8V^kxPnDm=d40_G@={2wdf4v(I3r#g=E`L&noc^*V)X%O19Px;mQm(6*0raF zXe_Op%2VSOE5H$IA;KlD+y2D?&PiwjOnTKyqu}9_7G+Df8YtI(wh-lpE(FwkZR_`+ z|5vUhGU-HrZ0`2`G5&sYm;T=nL`FgSZ#0Ni(O1M0#uivevlnVpstzm?ftbThu=1c4nP8bnlUQeta4DU#KV%lX z9i*16i#8bPZP^+>46>Q2V>iVP<(^~TVQ70Z;I3wt;e6BTU~g5oYR&QUpJX;F`|7)xAL~-V#Qv7}`}U zBRfM8mKUj%uqn53OA|6a(cm;$>LD0h!|ODpOqDvL)c5V>Cz==4_d;x_tlfTl^ol?U zr30~_0-odXV1)TsrF&v7RJ}{FBj-I+9m1}p$WL-f#cuc=7GObcd}O!2P|)R;D^1fV zd(GR(E*o|L=^CrjK4;7z`Ry6K0`zMjTsd-cDiVrE(dVaPoz`$OZ)XDU1mu+#$f$X2 zRYp^!6zv^?$I4qYBMWRQHi16~fhZ>7XQ)EImi%8h=TysoigZc?vQ#E< zHE9}UuQabb;OQtaXRK(o+AoXHxZM)t-uedw4G3=Tb zV%tRsf(|m0({A<%%1knQ^yj17^f^PPYlBTDf?3>8o5t?H0Bf&hgx9=9{F>*ziAXn0 z;b~5Tjd=4D)3oYRoCmb``I609Oiw=X@N`lxb#N2h^d+%;&tM&WUY;H+`W2^ZmY11J z0a|#H=>*pyRFe_?9z@tqVuF2*8D|&Ukmv;`~kDVjFh8MvHeEc7x% zE(D{3(vg>1+N3QM;)HTf@2lMn-VxWS(p~i7bx`o1^6-RKuCW@GXo$lIi(J@M`($+_ zn?kFmK_(emO|V3xfkKF33&ujpm$(3=D3vMhS5+tOnB^sx-IO>|J|O1<^&GAOfrD9o zR1^=8XsM0sANpbfO}K+S*v8nlCX+9t3}5eyrzhB!N}AwSB7VCs%q%*coHxo58+SkH zA7#gG<%-6*4XN@ETyf0bep$i~xcc6_B*M(LII4S}MxQAWbK-6c1eszYWnzDCHLt_@ z&X-=zwlq^-#kz>GB5#j#TeB}!E!Ez#e?TN3>A>*QHMYo%pJGfu_--W5MDkF{Basog zDipVKgb+2E(gIA@9jI*l$i2A2$P62i8w^J2zA&E&$YwTC(=b8VFX zC^cULa$E+yYW_>uP3V_RK&?__Si58DGWM3@Vw)=e3v$pSQh(&WWk68e>aTCAU!Fr0 z=ju)u^!D>D9kv|S%VUKN7jZ0ah>Pa9I7~7sB&2rSkSQdZP5K_P)xl7g-&>xzBQ<-; z2Vmd@q+T&vFeFoEDLJu8*3$RsLxBwiJu--gYGKeC@?^9%FSTP((OC@Lu5x@4~J$~~1Ml{H*Q`m%h{$x4CaTu>?o_VcZg<8>g!<1CnZd0~NHkEp|_Tym? zDTg2Nt0#QjQc6YkmEi04+goSAf3D-&^)b)2&;Y;>2IS z?vLyLzm^`%|7q#{+0Of)n7>A~EC7VRU@reK7k`iW-@9S|1^Sy(!|1qY21N-ZeM*k16Y0`fU`-|!No9F-a#rQ{6eE*2l|CuWP a+cNooAuzCi>I?hFY5d1}oJRZS>^}ftd!3K~ diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360-exo28.jar.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360-exo28.jar.meta deleted file mode 100644 index 156345d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360-exo28.jar.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: 42c230d24a7133d4aa94e4854714f9d6 -timeCreated: 1528467015 -licenseType: Store -PluginImporter: - serializedVersion: 2 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - isOverridable: 0 - platformData: - data: - first: - Android: Android - second: - enabled: 1 - settings: {} - data: - first: - Any: - second: - enabled: 0 - settings: {} - data: - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar deleted file mode 100644 index 8cf8f690da87bef5f07afb48329954e8af980c1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64885 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 diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar.meta b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar.meta deleted file mode 100644 index b10920d..0000000 --- a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/audio360.jar.meta +++ /dev/null @@ -1,29 +0,0 @@ -fileFormatVersion: 2 -guid: d132f8ed008cd5b49a3d33b80f1b3b09 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - isOverridable: 0 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-dash.jar b/03_RoyalGallery/Unity-19050-03_RoyalGallery_iPad/19050-03_RoyalGallery_iPad/Assets/Plugins/Android/exoplayer2-dash.jar deleted file mode 100644 index bfe1e184d2a338a02cc96510881f05064dee32ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116488 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