Browse Source

added mouse pos on imgui

meemknight 3 years ago
parent
commit
70eed70348

+ 21 - 2
Pika/core/pikaRuntime/containerManager/containerManager.cpp

@@ -11,6 +11,7 @@
 #include <filesystem>
 #include <imgui.h>
 #include <containersWindow/containersWindow.h>
+#include <imgui_internal.h>
 
 pika::containerId_t pika::ContainerManager::createContainer(std::string containerName, 
 	pika::LoadedDll &loadedDll, pika::LogManager &logManager, 
@@ -262,6 +263,8 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 	
 #pragma endregion
 
+	
+
 
 #pragma region running containers
 	for (auto &c : runningContainers)
@@ -378,7 +381,6 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 
 			if (c.second.imguiWindowId && !isProduction)
 			{
-
 				ImGui::PushID(c.second.imguiWindowId);
 				
 				ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(0.f, 0.f, 0.f, 1.0f));
@@ -386,6 +388,8 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 				ImGui::Begin( (std::string("gameplay window id: ") + std::to_string(c.first)).c_str(),
 					0, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse);
 				
+				auto windowPos = ImGui::GetWindowPos();
+
 				auto s = ImGui::GetContentRegionMax();
 
 				ImGui::Image((void *)c.second.requestedContainerInfo.requestedFBO.texture, s, {0, 1}, {1, 0},
@@ -401,6 +405,21 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 				windowState.w = s.x;
 				windowState.h = s.y;
 
+				ImVec2 globalMousePos = {};
+				{
+					ImGuiContext *g = ImGui::GetCurrentContext();
+					globalMousePos = g->IO.MousePos;
+				}
+
+				windowInput.mouseX = globalMousePos.x;
+				windowInput.mouseY = globalMousePos.y;
+
+				ImVec2 vMin = ImGui::GetWindowContentRegionMin();
+				windowInput.mouseX -= windowPos.x + vMin.x;
+				windowInput.mouseY -= windowPos.y + vMin.y;
+
+
+
 				c.second.requestedContainerInfo.requestedFBO.resizeFramebuffer(windowState.w, windowState.h);
 
 				glBindFramebuffer(GL_FRAMEBUFFER, c.second.requestedContainerInfo.requestedFBO.fbo);
@@ -417,7 +436,7 @@ void pika::ContainerManager::update(pika::LoadedDll &loadedDll, pika::PikaWindow
 
 
 		}
-		else
+		else //on pause
 		{
 			//still keep it running on the same frame mabe
 		}

+ 1 - 1
Pika/core/sharedRuntime/windowSystemm/input.h

@@ -60,7 +60,7 @@ namespace pika
 		Button lMouse = {};
 		Button rMouse = {};
 
-		//mouse position relevant to window
+		//mouse position relative to window
 		int mouseX = 0;
 		int mouseY = 0;
 

+ 0 - 1
Pika/core/sharedRuntime/windowSystemm/window.cpp

@@ -145,7 +145,6 @@ void pika::PikaWindow::update()
 	double mouseX = 0;
 	double mouseY = 0;
 	glfwGetCursorPos(context.wind, &mouseX, &mouseY);
-
 	input.mouseX = (int)mouseX;
 	input.mouseY = (int)mouseY;
 

BIN
Pika/engineResources/engineSaves/windowPos1.bin


BIN
Pika/engineResources/engineSaves/windowPos2.bin


+ 9 - 0
Pika/gameplay/containers/pikaGameplay.h

@@ -83,6 +83,15 @@ struct Gameplay : public Container
 		*r += input.deltaTime * 4.f;
 
 		renderer.renderRectangle({10, 10, 100, 100}, Colors_Blue, {}, *r);
+		
+		int size = 11;
+		renderer.renderRectangle({input.mouseX-size/2, input.mouseY-size/2, size, size},
+			Colors_Red, {}, 0.f);
+
+
+		requestedInfo.consoleWrite((std::string("Mouse: ") + std::to_string(input.mouseX) + " " +
+			std::to_string(input.mouseY) + "\n").c_str());
+
 
 		//if (input.lMouse.pressed())
 		//{

+ 2 - 2
Pika/resources/logs.txt

@@ -1,2 +1,2 @@
-#2022-11-10 20:34:41: Created container: Gameplay
-#2022-11-10 20:34:55: Destroyed continer: Gameplay #1
+#2022-11-12 10:17:19: Created container: Gameplay
+#2022-11-12 10:18:05: Destroyed continer: Gameplay #1