Преглед изворни кода

WIP: Linux port
- Cleanup/fixes of various Windows functionality in order to match the recent Linux related changes

BearishSun пре 8 година
родитељ
комит
2bd675d648

+ 4 - 1
Source/BansheeCore/Win32/BsWin32Gamepad.cpp

@@ -222,6 +222,9 @@ namespace bs
 
 	void Gamepad::capture()
 	{
+		if (m->hWnd == (HWND)-1 || m->gamepad == nullptr)
+			return;
+
 		if(m->info.isXInput)
 		{
 			XINPUT_STATE inputState;
@@ -417,7 +420,7 @@ namespace bs
 		{
 			releaseDirectInput(m);
 
-			if (!m->info.isXInput)
+			if (!m->info.isXInput && windowHandle != (UINT64)-1)
 				initializeDirectInput(m, newhWnd);
 			else
 				m->hWnd = newhWnd;

+ 8 - 1
Source/BansheeCore/Win32/BsWin32Keyboard.cpp

@@ -84,6 +84,9 @@ namespace bs
 
 	void Keyboard::capture()
 	{
+		if (m->keyboard == nullptr)
+			return;
+
 		DIDEVICEOBJECTDATA diBuff[DI_BUFFER_SIZE_KEYBOARD];
 		DWORD numEntries = DI_BUFFER_SIZE_KEYBOARD;
 
@@ -160,7 +163,11 @@ namespace bs
 		if(m->hWnd != newhWnd)
 		{
 			releaseDirectInput(m);
-			initializeDirectInput(m, newhWnd);
+
+			if (windowHandle != (UINT64)-1)
+				initializeDirectInput(m, newhWnd);
+			else
+				m->hWnd = (HWND)-1;
 		}
 	}
 }

+ 8 - 1
Source/BansheeCore/Win32/BsWin32Mouse.cpp

@@ -90,6 +90,9 @@ namespace bs
 
 	void Mouse::capture()
 	{
+		if (m->mouse == nullptr)
+			return;
+
 		DIDEVICEOBJECTDATA diBuff[DI_BUFFER_SIZE_MOUSE];
 		DWORD numEntries = DI_BUFFER_SIZE_MOUSE;
 
@@ -166,7 +169,11 @@ namespace bs
 		if(m->hWnd != newhWnd)
 		{
 			releaseDirectInput(m);
-			initializeDirectInput(m, newhWnd);
+
+			if (windowHandle != (UINT64)-1)
+				initializeDirectInput(m, newhWnd);
+			else
+				m->hWnd = (HWND)-1;
 		}
 	}
 }

+ 3 - 1
Source/BansheeEngine/Platform/BsSplashScreen.cpp

@@ -37,7 +37,9 @@ namespace bs
 			return;
 
 		WINDOW_DESC windowDesc;
-		windowDesc.border = WindowBorder::None;
+		windowDesc.allowResize = false;
+		windowDesc.showBorder = false;
+		windowDesc.showTitleBar = false;
 		windowDesc.width = 543;
 		windowDesc.height = 680;
 		windowDesc.left = -1;

+ 6 - 6
Source/BansheeVulkanRenderAPI/BsVulkanCommandBuffer.cpp

@@ -1257,7 +1257,7 @@ namespace bs { namespace ct
 		for (UINT32 i = 0; i < numColorAttachments; i++)
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getColorAttachment(i);
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice, 
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face, 
 				fbAttachment.surface.mipLevel);
 
 			if (subresourceInfo.isShaderInput && !pipeline->isColorReadOnly(i))
@@ -1270,7 +1270,7 @@ namespace bs { namespace ct
 		if (mFramebuffer->hasDepthAttachment())
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getDepthStencilAttachment();
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice,
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face,
 				fbAttachment.surface.mipLevel);
 
 			if (subresourceInfo.isShaderInput && !pipeline->isDepthReadOnly())
@@ -1421,7 +1421,7 @@ namespace bs { namespace ct
 		for (UINT32 i = 0; i < numColorAttachments; i++)
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getColorAttachment(i);
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice,
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face,
 																		fbAttachment.surface.mipLevel);
 
 			subresourceInfo.currentLayout = subresourceInfo.finalLayout;
@@ -1432,7 +1432,7 @@ namespace bs { namespace ct
 		if (mFramebuffer->hasDepthAttachment())
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getDepthStencilAttachment();
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice,
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face,
 																		fbAttachment.surface.mipLevel);
 
 			subresourceInfo.currentLayout = subresourceInfo.finalLayout;
@@ -2323,7 +2323,7 @@ namespace bs { namespace ct
 		for(UINT32 i = 0; i < numColorAttachments; i++)
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getColorAttachment(i);
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice,
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face,
 				fbAttachment.surface.mipLevel);
 
 			bool readOnly = subresourceInfo.isShaderInput;
@@ -2335,7 +2335,7 @@ namespace bs { namespace ct
 		if (mFramebuffer->hasDepthAttachment())
 		{
 			const VulkanFramebufferAttachment& fbAttachment = mFramebuffer->getDepthStencilAttachment();
-			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.arraySlice,
+			ImageSubresourceInfo& subresourceInfo = findSubresourceInfo(fbAttachment.image, fbAttachment.surface.face,
 				fbAttachment.surface.mipLevel);
 
 			bool readOnly = subresourceInfo.isShaderInput;

+ 2 - 2
Source/BansheeVulkanRenderAPI/BsVulkanGpuParams.cpp

@@ -309,8 +309,8 @@ namespace bs { namespace ct
 				if (surface.numMipLevels == 0)
 					actualSurface.numMipLevels = texProps.getNumMipmaps() + 1;
 				
-				if(surface.numArraySlices == 0)
-					actualSurface.numArraySlices = texProps.getNumFaces();
+				if(surface.numFaces == 0)
+					actualSurface.numFaces = texProps.getNumFaces();
 
 				perSetData.writeInfos[bindingIdx].image.imageView = imageRes->getView(actualSurface, false);
 				mPerDeviceData[i].sampledImages[sequentialIdx] = imageRes->getHandle();

+ 8 - 8
Source/BansheeVulkanRenderAPI/BsVulkanRenderTexture.cpp

@@ -63,15 +63,15 @@ namespace bs
 				if (view->getNumArraySlices() > 1)
 					LOGERR("Cannot specify array slices when rendering to a 3D texture.");
 
-				surface.arraySlice = 0;
-				surface.numArraySlices = mProperties.numSlices;
+				surface.face = 0;
+				surface.numFaces = mProperties.numSlices;
 
 				fbDesc.color[i].baseLayer = 0;
 			}
 			else
 			{
-				surface.arraySlice = view->getFirstArraySlice();
-				surface.numArraySlices = view->getNumArraySlices();
+				surface.face = view->getFirstArraySlice();
+				surface.numFaces = view->getNumArraySlices();
 
 				fbDesc.color[i].baseLayer = view->getFirstArraySlice();
 				fbDesc.layers = view->getNumArraySlices();
@@ -103,15 +103,15 @@ namespace bs
 					if (view->getNumArraySlices() > 1)
 						LOGERR("Cannot specify array slices when rendering to a 3D texture.");
 
-					surface.arraySlice = 0;
-					surface.numArraySlices = 1;
+					surface.face = 0;
+					surface.numFaces = 1;
 
 					fbDesc.depth.baseLayer = 0;
 				}
 				else
 				{
-					surface.arraySlice = view->getFirstArraySlice();
-					surface.numArraySlices = view->getNumArraySlices();
+					surface.face = view->getFirstArraySlice();
+					surface.numFaces = view->getNumArraySlices();
 
 					fbDesc.depth.baseLayer = view->getFirstArraySlice();
 					fbDesc.layers = view->getNumArraySlices();

+ 10 - 10
Source/BansheeVulkanRenderAPI/BsVulkanTexture.cpp

@@ -134,8 +134,8 @@ namespace bs { namespace ct
 		{
 			if (surface.mipLevel == entry.surface.mipLevel &&
 				surface.numMipLevels == entry.surface.numMipLevels &&
-				surface.arraySlice == entry.surface.arraySlice &&
-				surface.numArraySlices == entry.surface.numArraySlices)
+				surface.face == entry.surface.face &&
+				surface.numFaces == entry.surface.numFaces)
 			{
 				if((mUsage & TU_DEPTHSTENCIL) == 0)
 					return entry.view;
@@ -173,9 +173,9 @@ namespace bs { namespace ct
 		switch (oldViewType)
 		{
 		case VK_IMAGE_VIEW_TYPE_CUBE:
-			if(surface.numArraySlices == 1)
+			if(surface.numFaces == 1)
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D;
-			else if(surface.numArraySlices % 6 == 0)
+			else if(surface.numFaces % 6 == 0)
 			{
 				if(mNumFaces > 6)
 					mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
@@ -184,12 +184,12 @@ namespace bs { namespace ct
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
 			break;
 		case VK_IMAGE_VIEW_TYPE_1D:
-			if(surface.numArraySlices > 1)
+			if(surface.numFaces > 1)
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_1D_ARRAY;
 			break;
 		case VK_IMAGE_VIEW_TYPE_2D:
 		case VK_IMAGE_VIEW_TYPE_3D:
-			if (surface.numArraySlices > 1)
+			if (surface.numFaces > 1)
 				mImageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D_ARRAY;
 			break;
 		default:
@@ -199,8 +199,8 @@ namespace bs { namespace ct
 		mImageViewCI.subresourceRange.aspectMask = aspectMask;
 		mImageViewCI.subresourceRange.baseMipLevel = surface.mipLevel;
 		mImageViewCI.subresourceRange.levelCount = surface.numMipLevels == 0 ? VK_REMAINING_MIP_LEVELS : surface.numMipLevels;
-		mImageViewCI.subresourceRange.baseArrayLayer = surface.arraySlice;
-		mImageViewCI.subresourceRange.layerCount = surface.numArraySlices == 0 ? VK_REMAINING_ARRAY_LAYERS : surface.numArraySlices;
+		mImageViewCI.subresourceRange.baseArrayLayer = surface.face;
+		mImageViewCI.subresourceRange.layerCount = surface.numFaces == 0 ? VK_REMAINING_ARRAY_LAYERS : surface.numFaces;
 
 		VkImageView view;
 		VkResult result = vkCreateImageView(mOwner->getDevice().getLogical(), &mImageViewCI, gVulkanAllocator, &view);
@@ -261,8 +261,8 @@ namespace bs { namespace ct
 	VkImageSubresourceRange VulkanImage::getRange(const TextureSurface& surface) const
 	{
 		VkImageSubresourceRange range;
-		range.baseArrayLayer = surface.arraySlice;
-		range.layerCount = surface.numArraySlices == 0 ? mNumFaces : surface.numArraySlices;
+		range.baseArrayLayer = surface.face;
+		range.layerCount = surface.numFaces == 0 ? mNumFaces : surface.numFaces;
 		range.baseMipLevel = surface.mipLevel;
 		range.levelCount = surface.numMipLevels == 0 ? mNumMipLevels : surface.numMipLevels;
 		range.aspectMask = getAspectFlags();

+ 0 - 4
Source/Examples/ExampleGettingStarted/Main.cpp

@@ -1,10 +1,6 @@
 //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
 //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
 // Engine includes
-#include <Platform/BsPlatform.h>
-#include <Platform/BsFolderMonitor.h>
-#include <Platform/BsCursor.h>
-#include <Platform/BsDropTarget.h>
 #include "BsApplication.h"
 #include "Resources/BsResources.h"
 #include "Resources/BsBuiltinResources.h"

+ 3 - 3
Source/Examples/ExamplePhysicallyBasedShading/CameraFlyer.cpp

@@ -14,7 +14,7 @@ namespace bs
 	const float CameraFlyer::TOP_SPEED = 13.0f;
 	const float CameraFlyer::ACCELERATION = 1.0f;
 	const float CameraFlyer::FAST_MODE_MULTIPLIER = 2.0f;
-	const float CameraFlyer::ROTATION_SPEED = 360.0f; // Degrees/second
+	const float CameraFlyer::ROTATION_SPEED = 3.0f;
 
 	/** Wraps an angle so it always stays in [0, 360) range. */
 	Degree wrapAngle(Degree angle)
@@ -71,8 +71,8 @@ namespace bs
 		float frameDelta = gTime().getFrameDelta();
 		if (camRotating)
 		{
-			mYaw += Degree(gVirtualInput().getAxisValue(mHorizontalAxis) * ROTATION_SPEED * frameDelta);
-			mPitch += Degree(gVirtualInput().getAxisValue(mVerticalAxis) * ROTATION_SPEED * frameDelta);
+			mYaw += Degree(gVirtualInput().getAxisValue(mHorizontalAxis) * ROTATION_SPEED);
+			mPitch += Degree(gVirtualInput().getAxisValue(mVerticalAxis) * ROTATION_SPEED);
 
 			mYaw = wrapAngle(mYaw);
 			mPitch = wrapAngle(mPitch);

+ 3 - 3
Source/Examples/ExamplePhysicallyBasedShading/ObjectRotator.cpp

@@ -9,7 +9,7 @@
 
 namespace bs
 {
-	const float ObjectRotator::ROTATION_SPEED = 120.0f; // Degrees/second
+	const float ObjectRotator::ROTATION_SPEED = 1.0f;
 
 	/** Wraps an angle so it always stays in [0, 360) range. */
 	Degree wrapAngle2(Degree angle)
@@ -56,8 +56,8 @@ namespace bs
 		float frameDelta = gTime().getFrameDelta();
 		if (isRotating)
 		{
-			mYaw -= Degree(gVirtualInput().getAxisValue(mHorizontalAxis) * ROTATION_SPEED * frameDelta);
-			mPitch -= Degree(gVirtualInput().getAxisValue(mVerticalAxis) * ROTATION_SPEED * frameDelta);
+			mYaw -= Degree(gVirtualInput().getAxisValue(mHorizontalAxis) * ROTATION_SPEED);
+			mPitch -= Degree(gVirtualInput().getAxisValue(mVerticalAxis) * ROTATION_SPEED);
 
 			mYaw = wrapAngle2(mYaw);
 			mPitch = wrapAngle2(mPitch);

+ 10 - 10
Source/MBansheeEditor/Windows/Scene/SceneCamera.cs

@@ -16,25 +16,25 @@ namespace BansheeEditor
     {
         #region Constants
         public const string MoveForwardBinding = "SceneForward";
-	    public const string MoveLeftBinding = "SceneLeft";
-	    public const string MoveRightBinding = "SceneRight";
-	    public const string MoveBackBinding = "SceneBackward";
+        public const string MoveLeftBinding = "SceneLeft";
+        public const string MoveRightBinding = "SceneRight";
+        public const string MoveBackBinding = "SceneBackward";
         public const string MoveUpBinding = "SceneUp";
         public const string MoveDownBinding = "SceneDown";
         public const string FastMoveBinding = "SceneFastMove";
         public const string PanBinding = "ScenePan";
         public const string RotateBinding = "SceneRotate";
-	    public const string HorizontalAxisBinding = "SceneHorizontal";
-	    public const string VerticalAxisBinding = "SceneVertical";
+        public const string HorizontalAxisBinding = "SceneHorizontal";
+        public const string VerticalAxisBinding = "SceneVertical";
         public const string ScrollAxisBinding = "SceneScroll";
 
         private const float StartSpeed = 4.0f;
-	    private const float TopSpeed = 12.0f;
-	    private const float Acceleration = 1.0f;
-	    private const float FastModeMultiplier = 2.0f;
+        private const float TopSpeed = 12.0f;
+        private const float Acceleration = 1.0f;
+        private const float FastModeMultiplier = 2.0f;
         private const float PanSpeed = 3.0f;
         private const float ScrollSpeed = 3.0f;
-	    private const float RotationalSpeed = 360.0f; // Degrees/second
+        private const float RotationalSpeed = 3.0f;
         private readonly Degree FieldOfView = (Degree)90.0f;
         #endregion
 
@@ -197,7 +197,7 @@ namespace BansheeEditor
                     float horzValue = VirtualInput.GetAxisValue(horizontalAxis);
                     float vertValue = VirtualInput.GetAxisValue(verticalAxis);
 
-                    float rotationAmount = RotationalSpeed * EditorSettings.MouseSensitivity * frameDelta;
+                    float rotationAmount = RotationalSpeed * EditorSettings.MouseSensitivity;
 
                     yaw += new Degree(horzValue * rotationAmount);
                     pitch += new Degree(vertValue * rotationAmount);

+ 1 - 1
Source/MBansheeEditor/Windows/Scene/SceneWindow.cs

@@ -823,7 +823,7 @@ namespace BansheeEditor
                     SceneObject profilerSO = new SceneObject("EditorProfilerOverlay");
                     profilerCamera = profilerSO.AddComponent<Camera>();
                     profilerCamera.Viewport.Target = renderTexture;
-                    profilerCamera.Viewport.ClearFlags = ClearFlags.None;
+                    profilerCamera.Viewport.ClearFlags = ClearFlags.Empty;
                     profilerCamera.Priority = 1;
                     profilerCamera.Layers = 0;
                     profilerCamera.RenderSettings.EnableHDR = false;