Browse Source

added fps input

meemknight 2 years ago
parent
commit
d7e5412a2d

+ 9 - 3
Pika/core/pikaRuntime/containerManager/containerManager.cpp

@@ -491,7 +491,9 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 				c.second.requestedContainerInfo.internal.window = window.context.wind;
 				c.second.requestedContainerInfo.internal.window = window.context.wind;
 				c.second.requestedContainerInfo.internal.windowPosX = windowPos.x;
 				c.second.requestedContainerInfo.internal.windowPosX = windowPos.x;
 				c.second.requestedContainerInfo.internal.windowPosY = windowPos.y;
 				c.second.requestedContainerInfo.internal.windowPosY = windowPos.y;
-
+				c.second.requestedContainerInfo.internal.setCursorPosFunc = glfwSetCursorPos;
+				c.second.requestedContainerInfo.internal.getWindowPosFunc = glfwGetWindowPos;
+				c.second.requestedContainerInfo.internal.setInputModeFunc = glfwSetInputMode;
 
 
 				glBindFramebuffer(GL_FRAMEBUFFER, c.second.requestedContainerInfo.requestedFBO.fbo);
 				glBindFramebuffer(GL_FRAMEBUFFER, c.second.requestedContainerInfo.requestedFBO.fbo);
 
 
@@ -510,8 +512,12 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 			{
 			{
 				c.second.requestedContainerInfo.internal.mainWindow = 1;
 				c.second.requestedContainerInfo.internal.mainWindow = 1;
 				c.second.requestedContainerInfo.internal.window = window.context.wind;
 				c.second.requestedContainerInfo.internal.window = window.context.wind;
-				glfwGetWindowPos(window.context.wind, &c.second.requestedContainerInfo.internal.windowPosX,
-					&c.second.requestedContainerInfo.internal.windowPosX);
+				glfwGetWindowPos(window.context.wind, 
+					&c.second.requestedContainerInfo.internal.windowPosX,
+					&c.second.requestedContainerInfo.internal.windowPosY);
+				c.second.requestedContainerInfo.internal.setCursorPosFunc = glfwSetCursorPos;
+				c.second.requestedContainerInfo.internal.getWindowPosFunc = glfwGetWindowPos;
+				c.second.requestedContainerInfo.internal.setInputModeFunc = glfwSetInputMode;
 
 
 				rez = callUpdate(window.windowState);
 				rez = callUpdate(window.windowState);
 			}
 			}

+ 10 - 3
Pika/core/pikaSTD/engineLibraresSupport/engineGL3DSupport.cpp

@@ -448,24 +448,31 @@ void pika::gl3d::fpsInput(::gl3d::Renderer3D &renderer, pika::Input &input, floa
 	renderer.camera.moveFPS(dir);
 	renderer.camera.moveFPS(dir);
 
 
 	{
 	{
-		if (input.hasFocus && input.rMouse.held())
+		if (input.hasFocus)
 		{
 		{
+			requestedInfo.setFpsCursor();
+
 			glm::dvec2 currentMousePos = {input.mouseX, input.mouseY};
 			glm::dvec2 currentMousePos = {input.mouseX, input.mouseY};
 
 
-			float speed = 0.8f;
+			float speed = 0.2f;
 
 
 			glm::vec2 delta = lastMousePos - currentMousePos;
 			glm::vec2 delta = lastMousePos - currentMousePos;
 			delta *= speed * input.deltaTime;
 			delta *= speed * input.deltaTime;
 
 
 			renderer.camera.rotateCamera(delta);
 			renderer.camera.rotateCamera(delta);
 
 
-			//glm::ivec2 windowMid = windowSize / 2;
+			glm::ivec2 windowMid = windowSize / 2;
 			//requestedInfo.setMousePositionRelevantToWindow(windowMid.x, windowMid.y);
 			//requestedInfo.setMousePositionRelevantToWindow(windowMid.x, windowMid.y);
 			lastMousePos = currentMousePos;
 			lastMousePos = currentMousePos;
+			//lastMousePos = {windowMid.x, windowMid.y};
+
+			//requestedInfo.consoleWrite((std::to_string(currentMousePos.y) + " " + std::to_string(windowMid.y) + '\n').c_str());
 		}
 		}
 		else
 		else
 		{
 		{
 			lastMousePos = {input.mouseX, input.mouseY};
 			lastMousePos = {input.mouseX, input.mouseY};
+			requestedInfo.setNormalCursor();
+
 		}
 		}
 
 
 	}
 	}

+ 22 - 3
Pika/core/sharedRuntime/baseContainer.h

@@ -44,27 +44,46 @@ struct RequestedContainerInfo
 
 
 	//todo add logs here
 	//todo add logs here
 
 
+	//todo probably remove
 	void setMousePositionRelevantToWindow(int x, int y) 
 	void setMousePositionRelevantToWindow(int x, int y) 
 	{
 	{
 		if (internal.mainWindow)
 		if (internal.mainWindow)
 		{
 		{
-			glfwSetCursorPos(internal.window, x, y);
+			internal.setCursorPosFunc(internal.window, x, y);
 		}
 		}
 		else
 		else
 		{
 		{
 			int mainX = 0;
 			int mainX = 0;
 			int mainY = 0;
 			int mainY = 0;
-			glfwGetWindowPos(internal.window, &mainX, &mainY);
-			glfwSetCursorPos(internal.window, x + internal.windowPosX - mainX, y + internal.windowPosY - mainY);
+			internal.getWindowPosFunc(internal.window, &mainX, &mainY);
+			//internal.setCursorPosFunc(internal.window, x + internal.windowPosX - mainX, y + internal.windowPosY - mainY);
+			internal.setCursorPosFunc(internal.window, x + internal.windowPosX - mainX + 8, y + internal.windowPosY - mainY + 28);
 		}
 		}
 	};
 	};
 
 
+	void setFpsCursor()
+	{
+		PIKA_DEVELOPMENT_ONLY_ASSERT(internal.setInputModeFunc, "missing setInputModeFunc func");
+	
+		internal.setInputModeFunc(internal.window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
+	}
+
+	void setNormalCursor()
+	{
+		PIKA_DEVELOPMENT_ONLY_ASSERT(internal.setInputModeFunc, "missing setInputModeFunc func");
+
+		internal.setInputModeFunc(internal.window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
+	}
+
 	struct
 	struct
 	{
 	{
 		int windowPosX = 0;
 		int windowPosX = 0;
 		int windowPosY = 0;
 		int windowPosY = 0;
 		GLFWwindow *window = 0;
 		GLFWwindow *window = 0;
 		bool mainWindow = 0;
 		bool mainWindow = 0;
+		decltype(glfwSetCursorPos) *setCursorPosFunc = nullptr;
+		decltype(glfwGetWindowPos) *getWindowPosFunc = nullptr;
+		decltype(glfwSetInputMode) *setInputModeFunc = nullptr;
 
 
 	}internal;
 	}internal;
 
 

BIN
Pika/engineResources/engineSaves/windowPos1.bin


BIN
Pika/engineResources/engineSaves/windowPos2.bin


+ 3 - 2
Pika/gameplay/containers/minecraftDungeons/mcDungeonsEditor.h

@@ -445,6 +445,7 @@ struct McDungeonsEditor: public Container
 	bool update(pika::Input input, pika::WindowState windowState,
 	bool update(pika::Input input, pika::WindowState windowState,
 		RequestedContainerInfo &requestedInfo)
 		RequestedContainerInfo &requestedInfo)
 	{
 	{
+
 		renderer2d.updateWindowMetrics(windowState.w, windowState.h);
 		renderer2d.updateWindowMetrics(windowState.w, windowState.h);
 
 
 		renderer.setErrorCallback(&errorCallbackCustom, &requestedInfo);
 		renderer.setErrorCallback(&errorCallbackCustom, &requestedInfo);
@@ -476,7 +477,7 @@ struct McDungeonsEditor: public Container
 			if (input.lMouse.released() && input.hasFocus) //todo and this by the engine
 			if (input.lMouse.released() && input.hasFocus) //todo and this by the engine
 			{
 			{
 				auto cameraRayPos = renderer.camera.position;
 				auto cameraRayPos = renderer.camera.position;
-				cameraRayPos.y += 1;
+				cameraRayPos.y += 1.5;
 				cameraRayPos.x += 0.5;
 				cameraRayPos.x += 0.5;
 				cameraRayPos.z += 0.5;
 				cameraRayPos.z += 0.5;
 				if (rayMarch(cameraRayPos, renderer.camera.viewDirection, 10, &block, nullptr))
 				if (rayMarch(cameraRayPos, renderer.camera.viewDirection, 10, &block, nullptr))
@@ -488,7 +489,7 @@ struct McDungeonsEditor: public Container
 			if (input.rMouse.released() && input.hasFocus && currentBlock != 0)
 			if (input.rMouse.released() && input.hasFocus && currentBlock != 0)
 			{
 			{
 				auto cameraRayPos = renderer.camera.position;
 				auto cameraRayPos = renderer.camera.position;
-				cameraRayPos.y += 1;
+				cameraRayPos.y += 1.5;
 				cameraRayPos.x += 0.5;
 				cameraRayPos.x += 0.5;
 				cameraRayPos.z += 0.5;
 				cameraRayPos.z += 0.5;
 				if (rayMarch(cameraRayPos, renderer.camera.viewDirection, 10, nullptr, &block))
 				if (rayMarch(cameraRayPos, renderer.camera.viewDirection, 10, nullptr, &block))

+ 4 - 6
Pika/resources/logs.txt

@@ -1,6 +1,4 @@
-#2023-02-25 14:13:22: Created container: Gameplay
-#2023-02-25 14:13:26: Created container: McDungeonsEditor
-#2023-02-25 14:14:12: Destroyed continer: McDungeonsEditor #2
-#2023-02-25 14:14:14: Created container: McDungeonsEditor
-#2023-02-25 14:14:21: Destroyed continer: Gameplay #1
-#2023-02-25 14:14:21: Destroyed continer: McDungeonsEditor #3
+#2023-02-25 19:21:43: Created container: Gameplay
+#2023-02-25 19:22:14: Created container: McDungeonsEditor
+#2023-02-25 19:22:19: Destroyed continer: Gameplay #1
+#2023-02-25 19:22:19: Destroyed continer: McDungeonsEditor #2

BIN
Pika/resources/mcDungeons/map1.mcDungeons