Просмотр исходного кода

WIP: macOS port
- Various build fixes, getting the examples to compile

Marko Pintera 7 лет назад
Родитель
Сommit
5c5f9b3252

+ 1 - 1
Source/BansheeCore/Components/BsCRigidbody.cpp

@@ -126,7 +126,7 @@ namespace bs
 			mInternal->setAngularVelocity(velocity);
 			mInternal->setAngularVelocity(velocity);
 	}
 	}
 
 
-	inline Vector3 CRigidbody::getAngularVelocity() const
+	Vector3 CRigidbody::getAngularVelocity() const
 	{
 	{
 		if (mInternal != nullptr)
 		if (mInternal != nullptr)
 			return mInternal->getAngularVelocity();
 			return mInternal->getAngularVelocity();

+ 2 - 2
Source/BansheeEditor/GUI/BsGUIMenuBar.cpp

@@ -60,8 +60,8 @@ namespace bs
 	}
 	}
 
 
 	GUIMenuBar::GUIMenuBar(GUIWidget* parent, RenderWindow* parentWindow)
 	GUIMenuBar::GUIMenuBar(GUIWidget* parent, RenderWindow* parentWindow)
-		: mParentWindow(parentWindow), mParentWidget(parent), mMainPanel(nullptr), mBgPanel(nullptr)
-		, mMenuItemLayout(nullptr), mBgTexture(nullptr), mLogoTexture(nullptr), mSubMenuButton(nullptr), mSubMenuOpen(false)
+		: mParentWindow(parentWindow), mMainPanel(nullptr), mBgPanel(nullptr), mMenuItemLayout(nullptr)
+		, mBgTexture(nullptr), mLogoTexture(nullptr), mSubMenuButton(nullptr), mSubMenuOpen(false)
 	{
 	{
 		mMainPanel = parent->getPanel()->addNewElement<GUIPanel>(std::numeric_limits<INT16>::min() + 15);
 		mMainPanel = parent->getPanel()->addNewElement<GUIPanel>(std::numeric_limits<INT16>::min() + 15);
 		mMainPanel->setWidth(1);
 		mMainPanel->setWidth(1);

+ 0 - 1
Source/BansheeEditor/GUI/BsGUIMenuBar.h

@@ -202,7 +202,6 @@ namespace bs
 		static const UINT32 ELEMENT_SPACING;
 		static const UINT32 ELEMENT_SPACING;
 
 
 		RenderWindow* mParentWindow;
 		RenderWindow* mParentWindow;
-		GUIWidget* mParentWidget;
 		GUIPanel* mMainPanel;
 		GUIPanel* mMainPanel;
 		GUIPanel* mBgPanel;
 		GUIPanel* mBgPanel;
 		GUILayout* mMenuItemLayout;
 		GUILayout* mMenuItemLayout;

+ 5 - 5
Source/BansheeEngine/2D/BsTextSprite.cpp

@@ -157,7 +157,7 @@ namespace bs
 		}
 		}
 
 
 		// Calc vertical alignment offset
 		// Calc vertical alignment offset
-		UINT32 vertDiff = std::max(0U, height - curHeight);
+		UINT32 vertDiff = (UINT32)std::max(0, (INT32)height - (INT32)curHeight);
 		UINT32 vertOffset = 0;
 		UINT32 vertOffset = 0;
 		switch(vertAlign)
 		switch(vertAlign)
 		{
 		{
@@ -165,10 +165,10 @@ namespace bs
 			vertOffset = 0;
 			vertOffset = 0;
 			break;
 			break;
 		case TVA_Bottom:
 		case TVA_Bottom:
-			vertOffset = std::max(0, (INT32)vertDiff);
+			vertOffset = (UINT32)std::max(0, (INT32)vertDiff);
 			break;
 			break;
 		case TVA_Center:
 		case TVA_Center:
-			vertOffset = std::max(0, (INT32)vertDiff) / 2;
+			vertOffset = (UINT32)std::max(0, (INT32)vertDiff) / 2;
 			break;
 			break;
 		}
 		}
 
 
@@ -185,10 +185,10 @@ namespace bs
 				horzOffset = 0;
 				horzOffset = 0;
 				break;
 				break;
 			case THA_Right:
 			case THA_Right:
-				horzOffset = std::max(0, (INT32)(width - line.getWidth()));
+				horzOffset = (UINT32)std::max(0, (INT32)(width - line.getWidth()));
 				break;
 				break;
 			case THA_Center:
 			case THA_Center:
-				horzOffset = std::max(0, (INT32)(width - line.getWidth())) / 2;
+				horzOffset = (UINT32)std::max(0, (INT32)(width - line.getWidth())) / 2;
 				break;
 				break;
 			}
 			}
 
 

+ 2 - 2
Source/BansheeEngine/GUI/BsGUICanvas.cpp

@@ -537,12 +537,12 @@ namespace bs
 			};
 			};
 
 
 			std::array<Plane2D, 4> clipPlanes =
 			std::array<Plane2D, 4> clipPlanes =
-			{
+			{{
 				Plane2D(Vector2(1.0f, 0.0f), (float)clipRect.x),
 				Plane2D(Vector2(1.0f, 0.0f), (float)clipRect.x),
 				Plane2D(Vector2(-1.0f, 0.0f), (float)-(clipRect.x + (INT32)clipRect.width)),
 				Plane2D(Vector2(-1.0f, 0.0f), (float)-(clipRect.x + (INT32)clipRect.width)),
 				Plane2D(Vector2(0.0f, 1.0f), (float)clipRect.y),
 				Plane2D(Vector2(0.0f, 1.0f), (float)clipRect.y),
 				Plane2D(Vector2(0.0f, -1.0f), (float)-(clipRect.y + (INT32)clipRect.height))
 				Plane2D(Vector2(0.0f, -1.0f), (float)-(clipRect.y + (INT32)clipRect.height))
-			};
+			}};
 
 
 			element.clippedVertexStart = (UINT32)mClippedLineVertices.size();
 			element.clippedVertexStart = (UINT32)mClippedLineVertices.size();
 			element.clippedNumVertices = 0;
 			element.clippedNumVertices = 0;

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

@@ -159,6 +159,66 @@ namespace bs
 
 
 #else
 #else
 
 
-static_assert("Missing SplashScreen implementation.");
+#include "Private/MacOS/BsMacOSWindow.h"
+
+namespace bs
+{
+	struct SplashScreen::Pimpl
+	{
+		CocoaWindow* window = nullptr;
+		Timer timer;
+	};
+
+	// Note: Never freed, but that's fine
+	SplashScreen::Pimpl* SplashScreen::m = bs_new<Pimpl>();
+	const UINT32 SplashScreen::SPLASH_SCREEN_DURATION_MS = 1000;
+
+	void SplashScreen::show()
+	{
+		gCoreThread().queueCommand(&SplashScreen::create, CTQF_InternalQueue);
+	}
+
+	void SplashScreen::hide()
+	{
+		gCoreThread().queueCommand(&SplashScreen::destroy, CTQF_InternalQueue);
+	}
+
+	void SplashScreen::create()
+	{
+		if (m->window != nullptr)
+			return;
+
+		WINDOW_DESC windowDesc;
+		windowDesc.width = 543;
+		windowDesc.height = 680;
+		windowDesc.x = -1;
+		windowDesc.y = -1;
+		windowDesc.title = "Banshee Splash";
+		windowDesc.showDecorations = false;
+		windowDesc.allowResize = false;
+
+		SPtr<PixelData> splashPixelData = BuiltinResources::getSplashScreen();
+		if (splashPixelData == nullptr)
+			return;
+
+		windowDesc.background = splashPixelData;
+
+		m->window = bs_new<CocoaWindow>(windowDesc);
+		m->timer.reset();
+	}
+
+	void SplashScreen::destroy()
+	{
+		if (m->window == nullptr)
+			return;
+
+		UINT64 currentTime = m->timer.getMilliseconds();
+		if (currentTime < SPLASH_SCREEN_DURATION_MS)
+			BS_THREAD_SLEEP(SPLASH_SCREEN_DURATION_MS - currentTime);
+
+		bs_delete(m->window);
+		m->window = nullptr;
+	}
+}
 
 
 #endif
 #endif

+ 1 - 1
Source/BansheeFBXImporter/BsFBXImporter.cpp

@@ -2221,7 +2221,7 @@ namespace bs
 				}
 				}
 				else
 				else
 				{
 				{
-					setKeyframeValues(keyFrame, j, defaultValues[C], 0.0f, 0.0f);
+					setKeyframeValues(keyFrame, j, defaultValues[j], 0.0f, 0.0f);
 				}
 				}
 			}
 			}
 		}
 		}

+ 6 - 6
Source/BansheeFreeImgImporter/BsFreeImgImporter.cpp

@@ -556,12 +556,12 @@ namespace bs
 		// coordinates are mapped.
 		// coordinates are mapped.
 		static const RemapInfo remapLookup[] = 
 		static const RemapInfo remapLookup[] = 
 		{
 		{
-			{ 2, 1, 0, { -1.0f, -1.0f,  1.0f }}, // X+
-			{ 2, 1, 0, {  1.0f, -1.0f, -1.0f }}, // X-
-			{ 0, 2, 1, {  1.0f,  1.0f,  1.0f }}, // Y+
-			{ 0, 2, 1, {  1.0f, -1.0f, -1.0f }}, // Y-
-			{ 0, 1, 2, {  1.0f, -1.0f,  1.0f }}, // Z+
-			{ 0, 1, 2, { -1.0f, -1.0f, -1.0f }}  // Z-
+			{ {2, 1, 0}, { -1.0f, -1.0f,  1.0f }}, // X+
+			{ {2, 1, 0}, {  1.0f, -1.0f, -1.0f }}, // X-
+			{ {0, 2, 1}, {  1.0f,  1.0f,  1.0f }}, // Y+
+			{ {0, 2, 1}, {  1.0f, -1.0f, -1.0f }}, // Y-
+			{ {0, 1, 2}, {  1.0f, -1.0f,  1.0f }}, // Z+
+			{ {0, 1, 2}, { -1.0f, -1.0f, -1.0f }}  // Z-
 		};
 		};
 
 
 		float invSize = 1.0f / faceSize;
 		float invSize = 1.0f / faceSize;

+ 9 - 11
Source/BansheeGLRenderAPI/BsGLPrerequisites.h

@@ -10,11 +10,14 @@
 
 
 // 4.1 is the minimum supported version for OpenGL
 // 4.1 is the minimum supported version for OpenGL
 #define BS_OPENGL_4_1 1
 #define BS_OPENGL_4_1 1
-#define BS_OPENGL_4_2 1
-#define BS_OPENGL_4_3 1
-#define BS_OPENGL_4_4 1
-#define BS_OPENGL_4_5 1
-#define BS_OPENGL_4_6 0
+
+#if BS_PLATFORM != BS_PLATFORM_OSX
+	#define BS_OPENGL_4_2 1
+	#define BS_OPENGL_4_3 1
+	#define BS_OPENGL_4_4 1
+	#define BS_OPENGL_4_5 1
+	#define BS_OPENGL_4_6 0
+#endif
 
 
 // 3.1 is the minimum supported version for OpenGL ES
 // 3.1 is the minimum supported version for OpenGL ES
 #define BS_OPENGLES_3_1 0
 #define BS_OPENGLES_3_1 0
@@ -36,12 +39,7 @@
 #   include <GL/glu.h>
 #   include <GL/glu.h>
 #   define GL_GLEXT_PROTOTYPES
 #   define GL_GLEXT_PROTOTYPES
 #elif BS_PLATFORM == BS_PLATFORM_OSX
 #elif BS_PLATFORM == BS_PLATFORM_OSX
-<<<<<<< HEAD
-#   include <GL/glew.h>
-=======
-#	include <OpenGL/gl3.h>
-#	include <OpenGL/gl3ext.h>
->>>>>>> WIP: macOS port
+#	include "GL/glew.h"
 #endif
 #endif
 
 
 #if BS_THREAD_SUPPORT == 1
 #if BS_THREAD_SUPPORT == 1

+ 4 - 0
Source/BansheeGLRenderAPI/CMakeLists.txt

@@ -37,6 +37,10 @@ elseif(LINUX)
 elseif(APPLE) # MacOS
 elseif(APPLE) # MacOS
 	target_link_framework(BansheeGLRenderAPI Foundation)
 	target_link_framework(BansheeGLRenderAPI Foundation)
 	target_link_framework(BansheeGLRenderAPI CoreGraphics)
 	target_link_framework(BansheeGLRenderAPI CoreGraphics)
+	target_link_framework(BansheeGLRenderAPI CoreVideo)
+	target_link_framework(BansheeGLRenderAPI OpenGL)
+	target_link_framework(BansheeGLRenderAPI IOKit)
+	target_link_framework(BansheeGLRenderAPI AppKit)
 endif()
 endif()
 
 
 ## Local libs
 ## Local libs

+ 1 - 4
Source/BansheeGLRenderAPI/CMakeSources.cmake

@@ -69,12 +69,9 @@ set(BS_BANSHEEGLRENDERAPI_SRC_NOFILTER
 	"BsGLCommandBuffer.cpp"
 	"BsGLCommandBuffer.cpp"
 	"BsGLCommandBufferManager.cpp"
 	"BsGLCommandBufferManager.cpp"
 	"BsGLTextureView.cpp"
 	"BsGLTextureView.cpp"
+	"glew.cpp"
 )
 )
 
 
-if(NOT APPLE)
-	list(APPEND BS_BANSHEEGLRENDERAPI_SRC_NOFILTER "glew.cpp")
-endif()
-
 set(BS_BANSHEEGLRENDERAPI_INC_GLSL
 set(BS_BANSHEEGLRENDERAPI_INC_GLSL
 	"GLSL/BsGLSLProgramPipelineManager.h"
 	"GLSL/BsGLSLProgramPipelineManager.h"
 	"GLSL/BsGLSLProgramFactory.h"
 	"GLSL/BsGLSLProgramFactory.h"

+ 7 - 3
Source/BansheeGLRenderAPI/MacOS/BsMacOSContext.mm

@@ -2,6 +2,8 @@
 //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
 //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
 #include "MacOS/BsMacOSContext.h"
 #include "MacOS/BsMacOSContext.h"
 #include "MacOS/BsMacOSGLSupport.h"
 #include "MacOS/BsMacOSGLSupport.h"
+#define BS_COCOA_INTERNALS
+#include "Private/MacOS/BsMacOSWindow.h"
 #import <AppKit/AppKit.h>
 #import <AppKit/AppKit.h>
 
 
 namespace bs::ct
 namespace bs::ct
@@ -69,10 +71,12 @@ namespace bs::ct
 
 
 	void MacOSContext::setCurrent(const RenderWindow& renderWindow)
 	void MacOSContext::setCurrent(const RenderWindow& renderWindow)
 	{
 	{
-		NSWindow* window;
-		renderWindow.getCustomAttribute("WINDOW", &window);
+		CocoaWindow* window;
+		renderWindow.getCustomAttribute("COCOA_WINDOW", &window);
 
 
-		[m->context setView:[window contentView]];
+		NSWindow* nsWindow = window->_getPrivateData()->window;
+
+		[m->context setView:[nsWindow contentView]];
 		[m->context makeCurrentContext];
 		[m->context makeCurrentContext];
 		[m->context update];
 		[m->context update];
 
 

+ 3 - 10
Source/BansheeGLRenderAPI/MacOS/BsMacOSRenderWindow.mm

@@ -1,12 +1,11 @@
 //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
 //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
 //**************** Copyright (c) 2017 Marko Pintera ([email protected]). All rights reserved. **********************//
 //**************** Copyright (c) 2017 Marko Pintera ([email protected]). All rights reserved. **********************//
 #define BS_COCOA_INTERNALS
 #define BS_COCOA_INTERNALS
-#include "MacOS/BsMacOSWindow.h"
+#include "MacOS/BsMacOSVideoModeInfo.h"
+#include "Private/MacOS/BsMacOSWindow.h"
 #include "Math/BsMath.h"
 #include "Math/BsMath.h"
 #include "CoreThread/BsCoreThread.h"
 #include "CoreThread/BsCoreThread.h"
 #include "MacOS/BsMacOSRenderWindow.h"
 #include "MacOS/BsMacOSRenderWindow.h"
-#include "MacOS/BsMacOSWindow.h"
-#include "MacOS/BsMacOSVideoModeInfo.h"
 #include "MacOS/BsMacOSGLSupport.h"
 #include "MacOS/BsMacOSGLSupport.h"
 #include "MacOS/BsMacOSContext.h"
 #include "MacOS/BsMacOSContext.h"
 #include "BsGLRenderWindowManager.h"
 #include "BsGLRenderWindowManager.h"
@@ -64,7 +63,7 @@ namespace bs
 	namespace ct
 	namespace ct
 	{
 	{
 		MacOSRenderWindow::MacOSRenderWindow(const RENDER_WINDOW_DESC& desc, UINT32 windowId, MacOSGLSupport& glsupport)
 		MacOSRenderWindow::MacOSRenderWindow(const RENDER_WINDOW_DESC& desc, UINT32 windowId, MacOSGLSupport& glsupport)
-			: RenderWindow(desc, windowId), mWindow(nullptr), mGLSupport(glsupport), mContext(nullptr), mProperties(desc)
+			: RenderWindow(desc, windowId), mWindow(nullptr), mContext(nullptr), mGLSupport(glsupport), mProperties(desc)
 			, mSyncedProperties(desc), mIsChild(false), mShowOnSwap(false)
 			, mSyncedProperties(desc), mIsChild(false), mShowOnSwap(false)
 		{ }
 		{ }
 
 
@@ -468,12 +467,6 @@ namespace bs
 				*window = mWindow;
 				*window = mWindow;
 				return;
 				return;
 			}
 			}
-			else if(name == "WINDOW")
-			{
-				NSWindow** window = (NSWindow**)data;
-				*window = mWindow->_getPrivateData()->window;
-				return;
-			}
 		}
 		}
 
 
 		void MacOSRenderWindow::setActive(bool state)
 		void MacOSRenderWindow::setActive(bool state)

+ 1 - 1
Source/BansheeGLRenderAPI/MacOS/BsMacOSVideoModeInfo.cpp

@@ -78,7 +78,7 @@ namespace bs::ct
 	{ }
 	{ }
 
 
 	MacOSVideoMode::MacOSVideoMode(CGDisplayModeRef mode, CVDisplayLinkRef linkRef, UINT32 outputIdx)
 	MacOSVideoMode::MacOSVideoMode(CGDisplayModeRef mode, CVDisplayLinkRef linkRef, UINT32 outputIdx)
-			:VideoMode(0, 0, 0.0f, outputIdx), mModeRef(mModeRef)
+			:VideoMode(0, 0, 0.0f, outputIdx), mModeRef(mode)
 	{
 	{
 		mWidth = (UINT32)CGDisplayModeGetPixelWidth(mModeRef);
 		mWidth = (UINT32)CGDisplayModeGetPixelWidth(mModeRef);
 		mHeight = (UINT32)CGDisplayModeGetPixelHeight(mModeRef);
 		mHeight = (UINT32)CGDisplayModeGetPixelHeight(mModeRef);

+ 2 - 2
Source/BansheeOpenAudio/BsOAAudioListener.cpp

@@ -73,14 +73,14 @@ namespace bs
 		Vector3 up = getTransform().getUp();
 		Vector3 up = getTransform().getUp();
 
 
 		return
 		return
-		{
+		{{
 			direction.x,
 			direction.x,
 			direction.y,
 			direction.y,
 			direction.z,
 			direction.z,
 			up.x,
 			up.x,
 			up.y,
 			up.y,
 			up.z
 			up.z
-		};
+		}};
 	}
 	}
 
 
 	void OAAudioListener::updatePosition()
 	void OAAudioListener::updatePosition()

+ 6 - 1
Source/BansheeUtility/CMakeLists.txt

@@ -19,6 +19,8 @@ if(LINUX)
 	if(NOT X11_Xi_FOUND)
 	if(NOT X11_Xi_FOUND)
 		message(FATAL_ERROR "Could not find Xi (XInput) library.")
 		message(FATAL_ERROR "Could not find Xi (XInput) library.")
 	endif()
 	endif()
+elseif(APPLE)
+	find_package(LibUUID REQUIRED)
 endif()
 endif()
 
 
 # Third party (non-package) libraries
 # Third party (non-package) libraries
@@ -51,13 +53,16 @@ target_link_libraries(BansheeUtility PUBLIC ThirdParty)
 if(WIN32)
 if(WIN32)
 	## OS libs
 	## OS libs
 	target_link_libraries(BansheeUtility PRIVATE DbgHelp IPHLPAPI Rpcrt4)
 	target_link_libraries(BansheeUtility PRIVATE DbgHelp IPHLPAPI Rpcrt4)
-else()
+elseif(LINUX)
 	## OS libs
 	## OS libs
 	target_link_libraries(BansheeUtility PRIVATE dl pthread)
 	target_link_libraries(BansheeUtility PRIVATE dl pthread)
 
 
 	## External lib: X11, LibUUID
 	## External lib: X11, LibUUID
 	target_link_libraries(BansheeUtility PUBLIC ${X11_LIBRARIES} ${X11_Xcursor_LIB} ${X11_Xrandr_LIB} ${X11_Xi_LIB})
 	target_link_libraries(BansheeUtility PUBLIC ${X11_LIBRARIES} ${X11_Xcursor_LIB} ${X11_Xrandr_LIB} ${X11_Xi_LIB})
 	target_link_libraries(BansheeUtility PRIVATE ${LibUUID_LIBRARIES})
 	target_link_libraries(BansheeUtility PRIVATE ${LibUUID_LIBRARIES})
+elseif(APPLE)
+	## External lib: LibUUID
+	target_link_libraries(BansheeUtility PRIVATE ${LibUUID_LIBRARIES})
 endif()
 endif()
 
 
 # IDE specific
 # IDE specific

+ 20 - 5
Source/CMake/Modules/FindPhysX.cmake

@@ -19,11 +19,26 @@ if(NOT APPLE)
 endif()
 endif()
 
 
 find_imported_includes(PhysX PxPhysics.h)
 find_imported_includes(PhysX PxPhysics.h)
-find_imported_library_shared2(PhysX PhysX3${BS_PHYSX_SUFFIX} PhysX3CHECKED${BS_PHYSX_SUFFIX})
-find_imported_library_shared2(PhysX PhysX3Common${BS_PHYSX_SUFFIX} PhysX3CommonCHECKED${BS_PHYSX_SUFFIX})
-find_imported_library_shared2(PhysX PhysX3Cooking${BS_PHYSX_SUFFIX} PhysX3CookingCHECKED${BS_PHYSX_SUFFIX})
-find_imported_library_shared2(PhysX PhysX3CharacterKinematic${BS_PHYSX_SUFFIX} PhysX3CharacterKinematicCHECKED${BS_PHYSX_SUFFIX})
-find_imported_library2(PhysX PhysX3Extensions PhysX3ExtensionsCHECKED)
+if(NOT APPLE)
+	find_imported_library_shared2(PhysX PhysX3${BS_PHYSX_SUFFIX} PhysX3CHECKED${BS_PHYSX_SUFFIX})
+	find_imported_library_shared2(PhysX PhysX3Common${BS_PHYSX_SUFFIX} PhysX3CommonCHECKED${BS_PHYSX_SUFFIX})
+	find_imported_library_shared2(PhysX PhysX3Cooking${BS_PHYSX_SUFFIX} PhysX3CookingCHECKED${BS_PHYSX_SUFFIX})
+	find_imported_library_shared2(PhysX PhysX3CharacterKinematic${BS_PHYSX_SUFFIX} PhysX3CharacterKinematicCHECKED${BS_PHYSX_SUFFIX})
+	find_imported_library2(PhysX PhysX3Extensions PhysX3ExtensionsCHECKED)
+else()
+	find_imported_library(PhysX LowLevel)
+	find_imported_library(PhysX LowLevelCloth)
+	find_imported_library(PhysX PhysX3)
+	find_imported_library(PhysX PhysX3Common)
+	find_imported_library(PhysX PhysX3Cooking)
+	find_imported_library(PhysX PhysX3CharacterKinematic)
+	find_imported_library(PhysX PhysX3Extensions)
+	find_imported_library(PhysX PhysXProfileSDK)
+	find_imported_library(PhysX PvdRuntime)
+	find_imported_library(PhysX PxTask)
+	find_imported_library(PhysX SceneQuery)
+	find_imported_library(PhysX SimulationController)
+endif()
 
 
 install_dependency_binaries(PhysX)
 install_dependency_binaries(PhysX)
 
 

+ 4 - 0
Source/CMake/Modules/Findvorbis.cmake

@@ -18,6 +18,10 @@ find_imported_includes(vorbis vorbis/vorbisenc.h)
 find_imported_library_shared(vorbis ${vorbis_LIB_PREFIX}vorbis)
 find_imported_library_shared(vorbis ${vorbis_LIB_PREFIX}vorbis)
 find_imported_library_shared(vorbis ${vorbis_LIB_PREFIX}vorbisfile)
 find_imported_library_shared(vorbis ${vorbis_LIB_PREFIX}vorbisfile)
 
 
+if(APPLE)
+	find_imported_library_shared(vorbis ${vorbis_LIB_PREFIX}vorbisenc)
+endif()
+
 install_dependency_binaries(vorbis)
 install_dependency_binaries(vorbis)
 
 
 end_find_package(vorbis ${vorbis_LIB_PREFIX}vorbis)
 end_find_package(vorbis ${vorbis_LIB_PREFIX}vorbis)

+ 9 - 4
Source/CMakeLists.txt

@@ -177,7 +177,7 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "A
 	if(LINUX)
 	if(LINUX)
 		set(BS_COMPILER_FLAGS_COMMON "${BS_COMPILER_FLAGS_COMMON} -Wl,-rpath=$ORIGIN")
 		set(BS_COMPILER_FLAGS_COMMON "${BS_COMPILER_FLAGS_COMMON} -Wl,-rpath=$ORIGIN")
 	elseif(APPLE)
 	elseif(APPLE)
-		set(BS_COMPILER_FLAGS_COMMON "${BS_COMPILER_FLAGS_COMMON} -fobjc-arc")
+		set(BS_COMPILER_FLAGS_COMMON "${BS_COMPILER_FLAGS_COMMON} -fobjc-arc -Wno-c++1z-extensions")
 	endif()
 	endif()
 
 
 	set(CMAKE_CXX_FLAGS_DEBUG "${BS_COMPILER_FLAGS_COMMON} -g -O0 -DDEBUG")
 	set(CMAKE_CXX_FLAGS_DEBUG "${BS_COMPILER_FLAGS_COMMON} -g -O0 -DDEBUG")
@@ -186,9 +186,13 @@ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "A
 
 
 	set(CMAKE_SHARED_LINKER_FLAGS_RELEASE -s)
 	set(CMAKE_SHARED_LINKER_FLAGS_RELEASE -s)
 	set(CMAKE_MODULE_LINKER_FLAGS_RELEASE -s)
 	set(CMAKE_MODULE_LINKER_FLAGS_RELEASE -s)
-	set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-no-pie")
-	set(CMAKE_EXE_LINKER_FLAGS_OPTIMIZEDDEBUG "-s -no-pie")
-	set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-s -no-pie")
+
+	if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+		set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-no-pie")
+		set(CMAKE_EXE_LINKER_FLAGS_OPTIMIZEDDEBUG "-s -no-pie")
+		set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-s -no-pie")
+	endif()
+
 elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 	# TODO: Use link-time optimization -flto. Might require non-default linker.
 	# TODO: Use link-time optimization -flto. Might require non-default linker.
 	set(BS_COMPILER_FLAGS_COMMON "-Wall -fPIC -fno-exceptions -fno-strict-aliasing -fno-rtti")
 	set(BS_COMPILER_FLAGS_COMMON "-Wall -fPIC -fno-exceptions -fno-strict-aliasing -fno-rtti")
@@ -211,6 +215,7 @@ else()
 endif()
 endif()
 
 
 set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES")
 set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES")
+set(CMAKE_FIND_FRAMEWORK "LAST")
 
 
 # Output
 # Output
 if(BS_64BIT)
 if(BS_64BIT)

+ 0 - 2
Source/RenderBeast/BsShadowRendering.cpp

@@ -1278,7 +1278,6 @@ namespace bs { namespace ct
 	{
 	{
 		Light* light = rendererLight.internal;
 		Light* light = rendererLight.internal;
 
 
-		const SceneInfo& sceneInfo = scene.getSceneInfo();
 		SPtr<GpuParamBlockBuffer> shadowParamsBuffer = gShadowParamsDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowParamsBuffer = gShadowParamsDef.createBuffer();
 
 
 		ShadowInfo mapInfo;
 		ShadowInfo mapInfo;
@@ -1375,7 +1374,6 @@ namespace bs { namespace ct
 	{
 	{
 		Light* light = rendererLight.internal;
 		Light* light = rendererLight.internal;
 
 
-		const SceneInfo& sceneInfo = scene.getSceneInfo();
 		SPtr<GpuParamBlockBuffer> shadowParamsBuffer = gShadowParamsDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowParamsBuffer = gShadowParamsDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowCubeMatricesBuffer = gShadowCubeMatricesDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowCubeMatricesBuffer = gShadowCubeMatricesDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowCubeMasksBuffer = gShadowCubeMasksDef.createBuffer();
 		SPtr<GpuParamBlockBuffer> shadowCubeMasksBuffer = gShadowCubeMasksDef.createBuffer();

+ 1 - 1
Source/SBansheeEngine/Wrappers/GUI/BsScriptGUIListBox.cpp

@@ -122,7 +122,7 @@ namespace bs
 		ScriptArray outStates = ScriptArray::create<bool>(numElements);
 		ScriptArray outStates = ScriptArray::create<bool>(numElements);
 
 
 		for (UINT32 i = 0; i < numElements; i++)
 		for (UINT32 i = 0; i < numElements; i++)
-			outStates.set(i, states[i]);
+			outStates.set(i, (bool)states[i]);
 
 
 		return outStates.getInternal();
 		return outStates.getInternal();
 	}
 	}

+ 1 - 1
Source/SBansheeEngine/Wrappers/GUI/BsScriptGUIWidget.cpp

@@ -17,7 +17,7 @@ namespace bs
 	MonoField* ScriptGUIWidget::sGUIPanelField = nullptr;
 	MonoField* ScriptGUIWidget::sGUIPanelField = nullptr;
 
 
 	ScriptGUIWidget::ScriptGUIWidget(MonoObject* managedInstance)
 	ScriptGUIWidget::ScriptGUIWidget(MonoObject* managedInstance)
-		:ScriptObject(managedInstance), mGUIWidget(nullptr), mLastUpdateHash((UINT32)-1)
+		:ScriptObject(managedInstance), mGUIWidget(nullptr)
 	{
 	{
 		SPtr<Camera> mainCamera = gSceneManager().getMainCamera();
 		SPtr<Camera> mainCamera = gSceneManager().getMainCamera();
 
 

+ 0 - 1
Source/SBansheeEngine/Wrappers/GUI/BsScriptGUIWidget.h

@@ -34,7 +34,6 @@ namespace bs
 
 
 		SPtr<GUIWidget> mGUIWidget;
 		SPtr<GUIWidget> mGUIWidget;
 		ScriptGUILayout* mPanel;
 		ScriptGUILayout* mPanel;
-		UINT32 mLastUpdateHash;
 
 
 		static MonoField* sGUIPanelField;
 		static MonoField* sGUIPanelField;