From 96ad38384b8fbd9aeb090a31b35e780dd87d907c Mon Sep 17 00:00:00 2001 From: yoshidan Date: Sat, 30 Apr 2022 12:30:24 +0900 Subject: [PATCH] support multi display --- .../Assets/Plugins/WindowApi/WindowApi.cs | 9 ++++- .../WindowApi/macOS/libWindowApi.dylib | Bin 50352 -> 116016 bytes .../WindowApi/macOS/libWindowApi.dylib.meta | 32 +--------------- src/N0vaMac/Assets/Scenes/Wallpaper.unity | 4 ++ src/N0vaMac/Assets/Scripts/VideoController.cs | 36 +++++++++++++----- .../ProjectSettings/ProjectSettings.asset | 28 +++++++++++--- .../ProjectSettings/TimelineSettings.asset | 16 ++++++++ .../UnityConnectSettings.asset | 1 + src/WindowApi/WindowApi/WindowApi.h | 2 + src/WindowApi/WindowApi/WindowApi.m | 5 +++ 10 files changed, 87 insertions(+), 46 deletions(-) create mode 100644 src/N0vaMac/ProjectSettings/TimelineSettings.asset diff --git a/src/N0vaMac/Assets/Plugins/WindowApi/WindowApi.cs b/src/N0vaMac/Assets/Plugins/WindowApi/WindowApi.cs index 5919c7c..e96a908 100644 --- a/src/N0vaMac/Assets/Plugins/WindowApi/WindowApi.cs +++ b/src/N0vaMac/Assets/Plugins/WindowApi/WindowApi.cs @@ -12,7 +12,9 @@ public class WindowApi [DllImport(Target)] private static extern void initializePosition(); - + + [DllImport(Target)] + private static extern void maximize(); public static void Background() { @@ -28,5 +30,10 @@ public static void InitializePosition() { initializePosition(); } + + public static void Maximize() + { + maximize(); + } } \ No newline at end of file diff --git a/src/N0vaMac/Assets/Plugins/WindowApi/macOS/libWindowApi.dylib b/src/N0vaMac/Assets/Plugins/WindowApi/macOS/libWindowApi.dylib index 747e875795012995e213165157bf246ff17d1877..dad1fa723286d91a51f415b39c49f9fdabf41adf 100755 GIT binary patch delta 3755 zcmcImeQZ6;G@BZn0VO3~=a+Mq@q})3Uc)BA z;O55WMycin`nm$UG7Sd1JNY_eg~OBr2M_7X7O2!2EYeOj8J$Rgh`&QKO8P z*h)(yQX>wENX0ws{9#*g7dVRM0B!=dfaDbG1>jx4R9^{}<0NBcz|KL&QfN~?Xv=R2 zXj(R`60X@j_T&?cE#Nn_#cQYt^8Z)M-}m=C|CRSg-ahVnzHaHt`yngGLMYspym-*Q zT`NjOJEGXC3-;xZz-Z8`?BM6*Zr_=5x z@HG?Bw*#jJt|f~pzrl-5doJv&D)fAhLbJlKhp7%YsRNXY>;R~=+eJJ||0A*nMyM&2 zK7*as3;iA0lH@N)KLkb8pGvzwl#NJHhhTP|?n2uA7Nj*-U`6s0;r^P=!sJJiLb9Y2 zOS?zNQf8e>?xoO!7oEu3N;>PvLSn00_@5S(y@gQJKQ51?T;`2Kz^M%2AiVt)J9A`A z3yZ{YpyJH#gZ2v_LKT8!AHwgDMCK5FgbK3{0sAu+%Q}J|Q_A89E`dtBhh+)L?~vo1 zBY0KldzJpHq|Y1ybxoX>Z0@gw>DQ%@ZbK@$kn9I9K7hu?(iNM@pn?n-`{td^^x5AGq+^_IygTd5i%wkK-;I^HOhYqnw z0<{UyVo0*LlDAD%>b=$c>4{ZgTU+bigZmHn97SZ`flzx#bLdEC$Ahhh+2&Ap=t!uw zGjzP8sizNQPdEEUS8IQ$3lg@?V2NWG!->c6i9Jr#2?Pfujz#n_ZCZ4l_@8366QN)R zIKzj*e2TTt(Af58I@`#GJge}rUb|m{UY*60ezj$&?6;ASmO{e6PV#i+gumh~|1qd( zf8j>~NI*aa6d+bFSauaO1+aM1Qv%aco$=4+$-hNilUvH);w}FH3~~{I1eCx4zcc9x zTXmDJ5YmLod%5DRG^!PEg~hFAFhON&ExmX<4;PyA>+WM05ePiJx!DZ zz@#Ut6zd+W6<8S^|Mk=chjmT($5RL6p$j(6)?fQTkRQ5OzaVJotg9Zj$9_;Wj$azV zO||*>rs1D7xJFb1sZxTG;afh}drC-;F2Q@^zn3NICv;W{*^+ovE7r9DKWl7pABadP z&1?eV4g8YDKQVl{ZJl0CZ~PP9T~Ja6RGo8@F%NL%1-z>eW@8XmLsTcU){E_&L?8aWfj8BaSNx2zXYU#- zM&AHVV6vu3x;d9oiQL zgDH{KT65OHB0KQkZP6py@-HJ7?1{0J*+0ntQop|9VMwU9ZKRpE|3gZ*g=*6pL8|W3@j%V*a z{@}Uv1vWfk1mE|R8&{qA`Yxt>h`#^oOkRe$I-Nz2Df&)lJQR_z{J>6+WTxa|*wjc~U%iHrFb) zhubDbzsS@dr>Q?eQ~wXg@p&2-ieUWMO>G>1l9N+^QJ(y%kt~jd8zh0|Y8ope0G$ul zeVAACUjb_}yaPQA;qgs;$7EH}NSzF2&E}Ch{=>;CS2KkMe5kCO`S9fWngZ3_|0t=& zgB623CVW1B2x4LmTRU5G*xC{oQOsp)FPcs?r>&^}_c=^6*P6F9dua}rVa<`xnZxmq Or{2_Dnb8Yd0sjMaok@cL delta 1147 zcmZ8gO-NKx6u#%ZC;l}yqmGk0GHM!TX$mt%&W!IF4N4doxiB#Nx1{Jt`*-1(5sqLq zjdi1l{%oPEk%E~;;Hb+sGFZ?;&}d`KVhDm6O6uJA?!e0f=YHq=?m6e)_c%8=l^*no zGcajxa}m|r1q~S&0xuM&X|_>Q>NFs;kGDWJt#P%5t80OyO|r=$>0!Y*4rr~RuK|}LM2&V>W$vkYb8qZ z+n<+@1QPr?LYrJ58~WIGwvq(mjSkUi7aYoL=S@4bGfr}Pif+2VV#bf3c{S0MP|v7T zk^*?63N^UFQr4i~s=?#2rvtTAe<$_0vHw2auv+VH<8-h34N#=s>ukEN&cHH8J#&92 zz#kF2zSv5|&#PHN2N7&)9Mr`Rb@3G*U)?1bSxvloagJdfU2lXa4arbqV6$Y$pUnJS zXj2B8awf*-C&5wTlVjwVnxq4qdpLG-9OQU|<2{aV-;aC8WWQ1+naW8gl_D@-EcW*F zT{t&<`TC`P;y6FlKhQpO?c%_(o?+4uSc>G0$s$?3MMU!94lc1#yd^>5JA`r8o?)Dm zMM!FN=aBca1a7|&^&GHfkN|0w3VK-zQc{ac>U}L@T%qF_(vc;o%(c5&Iw7BUg56E$ zm!LK`#`UjUkEwcfz_pw|mTH=Vb-Qst)x*kps+K)n+?EhjJAx~6_P$i};Hu}Rckr7# lxKHD??9r)a# { var texture = source.texture; - aspectRatio = (float)texture.height / texture.width; + aspectRatio = (float) texture.height / texture.width; }; videoAspectRatio = player.aspectRatio; } private void Start() { + var settingFile = $"{Application.persistentDataPath}/path.txt"; if (File.Exists(settingFile)) { @@ -56,6 +59,7 @@ private void Start() WindowApi.Background(); WindowApi.HideTitleBar(); #endif + StartCoroutine(AdjustLoop()); } public void ChangeUrl(string url) @@ -65,7 +69,7 @@ public void ChangeUrl(string url) player.url = $"file://{url}"; player.Play(); } - + public void ChangeClip(VideoClip clip) { player.Stop(); @@ -74,16 +78,30 @@ public void ChangeClip(VideoClip clip) player.Play(); } + private IEnumerator AdjustLoop() + { + while (true) + { + yield return Adjust(); + yield return new WaitForSeconds(0.5f); + } + } + + private IEnumerator Adjust() + { + var resolution = Screen.currentResolution; + Screen.SetResolution(resolution.width, resolution.height, false); + var currentMonitor = Screen.mainWindowDisplayInfo; + //always move to origin in current monitor + yield return Screen.MoveMainWindowTo(currentMonitor, currentMonitor.workArea.min); + } + void Update() { if (player.isPrepared) { image.texture = player.texture; -#if !UNITY_EDITOR - var resolution = Screen.currentResolution; - Screen.SetResolution(resolution.width, resolution.height, false); - WindowApi.InitializePosition(); -#endif + switch(videoAspectRatio) { case VideoAspectRatio.FitHorizontally: diff --git a/src/N0vaMac/ProjectSettings/ProjectSettings.asset b/src/N0vaMac/ProjectSettings/ProjectSettings.asset index d011a74..d377931 100644 --- a/src/N0vaMac/ProjectSettings/ProjectSettings.asset +++ b/src/N0vaMac/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 22 + serializedVersion: 23 productGUID: f6c7a3693196b4c079983b7acd72cf92 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -68,6 +68,12 @@ PlayerSettings: androidRenderOutsideSafeArea: 1 androidUseSwappy: 1 androidBlitType: 0 + androidResizableWindow: 0 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 @@ -121,13 +127,14 @@ PlayerSettings: vulkanEnableSetSRGBWrite: 0 vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 m_SupportedAspectRatios: 4:3: 1 5:4: 1 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 0.1 + bundleVersion: 0.1.1 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 @@ -153,7 +160,7 @@ PlayerSettings: tvOS: 0 overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 19 + AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: @@ -209,6 +216,7 @@ PlayerSettings: iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] + macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 @@ -236,6 +244,7 @@ PlayerSettings: useCustomGradlePropertiesTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 1 + AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: @@ -252,6 +261,7 @@ PlayerSettings: height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 + chromeosInputEmulation: 1 AndroidMinifyWithR8: 0 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 @@ -317,7 +327,7 @@ PlayerSettings: m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 150000000b000000 - m_Automatic: 0 + m_Automatic: 1 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 @@ -346,6 +356,7 @@ PlayerSettings: m_EncodingQuality: 0 m_BuildTargetGroupLightmapSettings: [] m_BuildTargetNormalMapEncoding: [] + m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -355,6 +366,7 @@ PlayerSettings: cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: + bluetoothUsageDescription: switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 @@ -363,6 +375,7 @@ PlayerSettings: switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 switchUseGOLDLinker: 0 + switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchTitleNames_0: @@ -492,6 +505,10 @@ PlayerSettings: switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 switchUseNewStyleFilepaths: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: @@ -597,7 +614,6 @@ PlayerSettings: suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 - useReferenceAssemblies: 1 enableRoslynAnalyzers: 1 additionalIl2CppArgs: scriptingRuntimeVersion: 1 @@ -684,4 +700,6 @@ PlayerSettings: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 0 + playerDataPath: + forceSRGBBlit: 1 virtualTexturingSupportEnabled: 0 diff --git a/src/N0vaMac/ProjectSettings/TimelineSettings.asset b/src/N0vaMac/ProjectSettings/TimelineSettings.asset new file mode 100644 index 0000000..cfaebd7 --- /dev/null +++ b/src/N0vaMac/ProjectSettings/TimelineSettings.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 61 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3} + m_Name: + m_EditorClassIdentifier: + assetDefaultFramerate: 60 + m_DefaultFrameRate: 60 diff --git a/src/N0vaMac/ProjectSettings/UnityConnectSettings.asset b/src/N0vaMac/ProjectSettings/UnityConnectSettings.asset index fa0b146..6125b30 100644 --- a/src/N0vaMac/ProjectSettings/UnityConnectSettings.asset +++ b/src/N0vaMac/ProjectSettings/UnityConnectSettings.asset @@ -9,6 +9,7 @@ UnityConnectSettings: m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events m_EventUrl: https://cdp.cloud.unity3d.com/v1/events m_ConfigUrl: https://config.uca.cloud.unity3d.com + m_DashboardUrl: https://dashboard.unity3d.com m_TestInitMode: 0 CrashReportingSettings: m_EventUrl: https://perf-events.cloud.unity3d.com diff --git a/src/WindowApi/WindowApi/WindowApi.h b/src/WindowApi/WindowApi/WindowApi.h index 5e36117..f407c16 100644 --- a/src/WindowApi/WindowApi/WindowApi.h +++ b/src/WindowApi/WindowApi/WindowApi.h @@ -18,6 +18,8 @@ void hideTitleBar(void); void initializePosition(void); +void maximize(void); + #ifdef __cplusplus } #endif diff --git a/src/WindowApi/WindowApi/WindowApi.m b/src/WindowApi/WindowApi/WindowApi.m index a0e2575..6acbe75 100644 --- a/src/WindowApi/WindowApi/WindowApi.m +++ b/src/WindowApi/WindowApi/WindowApi.m @@ -28,3 +28,8 @@ void initializePosition() { NSWindow *window = [NSApp orderedWindows][0]; [window setFrameOrigin:NSMakePoint(0,0)]; } + +void maximize() { + NSWindow *window = [NSApp orderedWindows][0]; + [window zoom:(NULL)]; +}