From c1118489e3f6c64039ab29a54faa1168ad0dc4fa Mon Sep 17 00:00:00 2001 From: Modnark <66146584+Modnark@users.noreply.github.com> Date: Thu, 6 Oct 2022 12:18:35 -0400 Subject: [PATCH] very basic ThumbnailGenerator --- Blocks3D.vcproj | 8 + ThumbnailGeneratorInstance.cpp | 43 +++++ click_output.PNG | Bin 0 -> 93096 bytes src/include/Application.h | 3 + src/include/DataModelV2/DataModelInstance.h | 13 +- .../DataModelV2/ThumbnailGeneratorInstance.h | 14 ++ src/include/Globals.h | 2 + src/source/Application.cpp | 153 +++++------------- src/source/DataModelV2/DataModelInstance.cpp | 13 +- src/source/DataModelV2/LevelInstance.cpp | 1 + src/source/Listener/MenuButtonListener.cpp | 3 + 11 files changed, 135 insertions(+), 118 deletions(-) create mode 100644 ThumbnailGeneratorInstance.cpp create mode 100644 click_output.PNG create mode 100644 src/include/DataModelV2/ThumbnailGeneratorInstance.h diff --git a/Blocks3D.vcproj b/Blocks3D.vcproj index d556d08..ea5e9d4 100644 --- a/Blocks3D.vcproj +++ b/Blocks3D.vcproj @@ -497,6 +497,10 @@ RelativePath=".\src\source\DataModel\SelectionService.cpp" > + + @@ -862,6 +866,10 @@ RelativePath=".\src\include\DataModelV2\SelectionService.h" > + + diff --git a/ThumbnailGeneratorInstance.cpp b/ThumbnailGeneratorInstance.cpp new file mode 100644 index 0000000..cdf1164 --- /dev/null +++ b/ThumbnailGeneratorInstance.cpp @@ -0,0 +1,43 @@ +#include "DataModelV2/ThumbnailGeneratorInstance.h" +#include "Application.h" +#include "Globals.h" +#include + +ThumbnailGeneratorInstance::ThumbnailGeneratorInstance(void) +{ + Instance::Instance(); + name = "ThumbnailGenerator"; + className = "ThumbnailGenerator"; + canDelete = false; +} + +ThumbnailGeneratorInstance::~ThumbnailGeneratorInstance(void) {} + +std::string ThumbnailGeneratorInstance::click(std::string fileType, int cx, int cy, bool hideSky) +{ + const G3D::GImage::Format format = G3D::GImage::stringToFormat(fileType); + + RenderDevice* rd = g_usableApp->getRenderDevice(); + + // Disable the sky + if(hideSky) + g_usableApp->toggleSky(); + + // Update graphics + g_usableApp->onGraphics(rd); + + // Sky SHOULD be gone now, and alpha channel should be present + G3D::GImage imgBuffer(cx, cy, 4); + rd->screenshotPic(imgBuffer, true, hideSky); + + G3D::BinaryOutput binOut; + imgBuffer.encode(format, binOut); + + // Temporary file saving + std::string fileSave = "./click_output." + fileType; + std::ofstream out(fileSave.c_str(), std::ios::out | std::ios::binary); + out.write(reinterpret_cast(binOut.getCArray()), binOut.length()); + + return "boop!"; +} + diff --git a/click_output.PNG b/click_output.PNG new file mode 100644 index 0000000000000000000000000000000000000000..eaa12a91511bb9b3c6e3b3f38e44ecab98904446 GIT binary patch literal 93096 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

+-P$Ey8^h@oPGj^KbF&zmRk6Gjq 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 literal 0 HcmV?d00001 diff --git a/src/include/Application.h b/src/include/Application.h index b2a45b1..0921f96 100644 --- a/src/include/Application.h +++ b/src/include/Application.h @@ -48,6 +48,7 @@ class Application { // : public GApp { void setFocus(bool isFocused); int getMode(); void unSetMode(); + void toggleSky(); CameraController cameraController; UserInput* userInput; PropertyWindow* _propWindow; @@ -55,6 +56,7 @@ class Application { // : public GApp { RenderDevice* getRenderDevice(); void selectInstance(Instance* selectedInstance,PropertyWindow* propWindow); void setMode(int mode); + SkyRef getSky(); Tool * tool; void changeTool(Tool *); @@ -82,6 +84,7 @@ class Application { // : public GApp { GAppSettings _settings; double lightProjX, lightProjY, lightProjNear, lightProjFar; IEBrowser* webBrowser; + bool _hideSky; protected: Stopwatch m_graphicsWatch; Stopwatch m_logicWatch; diff --git a/src/include/DataModelV2/DataModelInstance.h b/src/include/DataModelV2/DataModelInstance.h index 8dab766..9591ffa 100644 --- a/src/include/DataModelV2/DataModelInstance.h +++ b/src/include/DataModelV2/DataModelInstance.h @@ -2,6 +2,7 @@ #include "WorkspaceInstance.h" #include "LevelInstance.h" #include "PartInstance.h" +#include "ThumbnailGeneratorInstance.h" #include "SelectionService.h" #include "rapidxml/rapidxml.hpp" #include "GuiRootInstance.h" @@ -23,9 +24,12 @@ public: bool load(const char* filename,bool clearObjects); bool readXMLFileStream(std::ifstream* file); void drawMessage(RenderDevice*); - WorkspaceInstance* getWorkspace(); - LevelInstance * getLevel(); - XplicitNgine * getEngine(); + + WorkspaceInstance* getWorkspace(); + LevelInstance* getLevel(); + XplicitNgine* getEngine(); + ThumbnailGeneratorInstance* getThumbnailGenerator(); + std::string message; std::string _loadedFileName; bool showMessage; @@ -50,9 +54,10 @@ private: bool _legacyLoad; float _modY; WorkspaceInstance* workspace; - LevelInstance * level; + LevelInstance* level; GuiRootInstance* guiRoot; SelectionService* selectionService; + ThumbnailGeneratorInstance * thumbnailGenerator; bool running; XplicitNgine * xplicitNgine; }; diff --git a/src/include/DataModelV2/ThumbnailGeneratorInstance.h b/src/include/DataModelV2/ThumbnailGeneratorInstance.h new file mode 100644 index 0000000..988a15d --- /dev/null +++ b/src/include/DataModelV2/ThumbnailGeneratorInstance.h @@ -0,0 +1,14 @@ +#pragma once +#include "instance.h" + +class ThumbnailGeneratorInstance : + public Instance +{ +public: + // Constructor / Destructor + ThumbnailGeneratorInstance(void); + ~ThumbnailGeneratorInstance(void); + + // Functions + std::string click(std::string fileType, int cx, int cy, bool hideSky); +}; diff --git a/src/include/Globals.h b/src/include/Globals.h index d01fb67..ca7673b 100644 --- a/src/include/Globals.h +++ b/src/include/Globals.h @@ -29,6 +29,8 @@ extern bool running; extern DataModelInstance* g_dataModel; extern XplicitNgine* g_xplicitNgine; extern Application* g_usableApp; +extern SkyRef g_sky; +extern RenderDevice g_renderDevice; extern GFontRef g_fntdominant; extern GFontRef g_fntlighttrek; diff --git a/src/source/Application.cpp b/src/source/Application.cpp index d58588c..e0f1510 100644 --- a/src/source/Application.cpp +++ b/src/source/Application.cpp @@ -117,8 +117,10 @@ Application::Application(HWND parentWindow) : _propWindow(NULL) { //: GApp(setti quit=false; rightButtonHolding=false; mouseOnScreen=false; + // GApp replacement renderDevice = new RenderDevice(); + if (window != NULL) { renderDevice->init(window, NULL); } @@ -194,6 +196,7 @@ void Application::onInit() { _dataModel->setName("undefined"); _dataModel->font = g_fntdominant; g_dataModel = _dataModel; + _hideSky = false; #ifdef LEGACY_LOAD_G3DFUN_LEVEL // Anchored this baseplate for XplicitNgine tests @@ -503,9 +506,6 @@ void Application::exitApplication() //endProgram = true; } - - - void Application::onGraphics(RenderDevice* rd) { G3D::uint8 num = 0; @@ -514,27 +514,17 @@ void Application::onGraphics(RenderDevice* rd) { if (GetCursorPos(&mousepos)) { POINT pointm = mousepos; - if (ScreenToClient(_hWndMain, &mousepos)) - { - //mouseOnScreen = true; - //POINT pointm; - ///GetCursorPos(&pointm); - if(_hwndRenderer != WindowFromPoint(pointm)) //OLD: mousepos.x < 1 || mousepos.y < 1 || mousepos.x >= rd->getViewport().width()-1 || mousepos.y >= rd->getViewport().height()-1 + if (ScreenToClient(_hWndMain, &mousepos)) { - mouseOnScreen = false; - //ShowCursor(true); - //_window->setMouseVisible(true); - //rd->window()->setInputCaptureCount(0); + if(_hwndRenderer != WindowFromPoint(pointm)) + { + mouseOnScreen = false; + } + else + { + mouseOnScreen = true; + } } - else - { - mouseOnScreen = true; - //SetCursor(NULL); - //_window->setMouseVisible(false); - //rd->window()->setInputCaptureCount(1); - } - - } } if(Globals::useMousePoint) @@ -547,14 +537,18 @@ void Application::onGraphics(RenderDevice* rd) { lighting.ambient = Color3(0.6F,0.6F,0.6F); renderDevice->setProjectionAndCameraMatrix(*cameraController.getCamera()); - // Cyan background - //renderDevice->setColorClearValue(Color3(0.0f, 0.5f, 1.0f)); + // TODO: stick this into its own rendering thing + if(!_hideSky) { + renderDevice->clear(sky.isNull(), true, true); + if (sky.notNull()) sky->render(renderDevice, lighting); + } else { + printf("ThumbnailGenerator::click\n"); + + rd->setColorClearValue(Color4(0.0f, 0.0f, 0.0f, 0.0f)); + renderDevice->clear(true, true, true); + toggleSky(); + } - renderDevice->clear(sky.isNull(), true, true); - if (sky.notNull()) { - sky->render(renderDevice, lighting); - } - // Setup lighting renderDevice->enableLighting(); @@ -564,115 +558,47 @@ void Application::onGraphics(RenderDevice* rd) { renderDevice->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor, true, true)); renderDevice->setAmbientLightColor(lighting.ambient); - //renderDevice->setBlendFunc(RenderDevice::BLEND_ONE, RenderDevice::BLEND_ONE); - - - renderDevice->setShininess(70); renderDevice->setSpecularCoefficient(Color3(0.1F, 0.1F, 0.1F)); - - //float lightAmbient[] = { 0.5F, 0.6F, 0.9F, 1.0F }; - //float lightDiffuse[] = { 0.6F, 0.4F, 0.9F, 1.0F }; - //float lightSpecular[] = { 0.8F, 0.6F, 1.0F, 1.0F }; - - //glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, lightAmbient); - //glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, lightDiffuse); - //glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, lightSpecular); - //glMateriali(GL_FRONT_AND_BACK, GL_SHININESS, 70); - rd->beforePrimitive(); CoordinateFrame forDraw = rd->getObjectToWorldMatrix(); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); - //if(_dataModel->getWorkspace() != NULL) _dataModel->getWorkspace()->render(rd); - //else throw std::exception("Workspace not found"); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); rd->setObjectToWorldMatrix(forDraw); rd->afterPrimitive(); - - //Draw::box(G3D::Box(mouse.getPosition()-Vector3(2,0.5F,1),mouse.getPosition()+Vector3(2,0.5F,1)), rd, Color3::cyan(), Color4::clear()); - for(size_t i = 0; i < _dataModel->getSelectionService()->getSelection().size(); i++) { if(PartInstance* part = dynamic_cast(g_dataModel->getSelectionService()->getSelection()[i])) { - Vector3 size = part->getSize(); - Vector3 pos = part->getPosition(); - drawOutline(Vector3(0+size.x/2, 0+size.y/2, 0+size.z/2) ,Vector3(0-size.x/2,0-size.y/2,0-size.z/2), rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x, pos.y, pos.z), part->getCFrame()); + Vector3 size = part->getSize(); + Vector3 pos = part->getPosition(); + drawOutline( + Vector3(0+size.x/2, 0+size.y/2, 0+size.z/2), + Vector3(0-size.x/2,0-size.y/2,0-size.z/2), + rd, + lighting, + Vector3(size.x/2, size.y/2, size.z/2), + Vector3(pos.x, pos.y, pos.z), part->getCFrame() + ); } } - - - //Vector3 gamepoint = Vector3(0, 5, 0); - //Vector3 camerapoint = rd->getCameraToWorldMatrix().translation; - //float distance = pow(pow((double)gamepoint.x - (double)camerapoint.x, 2) + pow((double)gamepoint.y - (double)camerapoint.y, 2) + pow((double)gamepoint.z - (double)camerapoint.z, 2), 0.5); - //if(distance < 50 && distance > -50) - - //{ - // if(distance < 0) - // distance = distance*-1; - // fntdominant->draw3D(rd, "Testing", CoordinateFrame(rd->getCameraToWorldMatrix().rotation, gamepoint), 0.04*distance, Color3::yellow(), Color3::black(), G3D::GFont::XALIGN_CENTER, G3D::GFont::YALIGN_CENTER); - //} renderDevice->disableLighting(); if (sky.notNull()) { sky->renderLensFlare(renderDevice, lighting); } + renderDevice->push2D(); _dataModel->getGuiRoot()->renderGUI(renderDevice, m_graphicsWatch.FPS()); - /*rd->pushState(); - rd->beforePrimitive(); - - if(Globals::showMouse && mouseOnScreen) - { - glEnable( GL_TEXTURE_2D ); - glEnable(GL_BLEND);// you enable blending function - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - /* - std::vector instances = _dataModel->getWorkspace()->getAllChildren(); - currentcursorid = cursorid; - for(size_t i = 0; i < instances.size(); i++) - { - if(PartInstance* test = dynamic_cast(instances.at(i))) - { - float time = cameraController.getCamera()->worldRay(_dataModel->mousex, _dataModel->mousey, renderDevice->getViewport()).intersectionTime(test->getBox()); - //float time = testRay.intersectionTime(test->getBox()); - if (time != inf()) - { - currentcursorid = cursorOvrid; - break; - } - - } - } - */ - /*glBindTexture( GL_TEXTURE_2D, tool->getCursorId()); - - - glBegin( GL_QUADS ); - glTexCoord2d(0.0,0.0); - glVertex2f(mousepos.x-64, mousepos.y-64); - glTexCoord2d( 1.0,0.0 ); - glVertex2f(mousepos.x+64, mousepos.y-64); - glTexCoord2d(1.0,1.0 ); - glVertex2f(mousepos.x+64, mousepos.y+64 ); - glTexCoord2d( 0.0,1.0 ); - glVertex2f( mousepos.x-64, mousepos.y+64 ); - glEnd(); - - glDisable( GL_TEXTURE_2D );*/ - //} - - /*rd->afterPrimitive(); - rd->popState();*/ renderDevice->pop2D(); } @@ -709,6 +635,16 @@ G3D::RenderDevice* Application::getRenderDevice() return renderDevice; } +G3D::SkyRef Application::getSky() +{ + return sky; +} + +void Application::toggleSky() +{ + _hideSky = !_hideSky; +} + void Application::onMouseLeftUp(G3D::RenderDevice* renderDevice, int x, int y) { _dataModel->getGuiRoot()->onMouseLeftUp(renderDevice, x, y); @@ -731,7 +667,6 @@ void Application::onMouseMoved(int x,int y) mouse.oldy = mouse.y; mouse.x = x; mouse.y = y; - //tool->onMouseMoved(mouse); mouseMoveState = true; } diff --git a/src/source/DataModelV2/DataModelInstance.cpp b/src/source/DataModelV2/DataModelInstance.cpp index 162e16a..4da558f 100644 --- a/src/source/DataModelV2/DataModelInstance.cpp +++ b/src/source/DataModelV2/DataModelInstance.cpp @@ -2,6 +2,7 @@ #include "DataModelV2/GuiRootInstance.h" #include "DataModelV2/ToggleImageButtonInstance.h" #include "DataModelV2/DataModelInstance.h" +#include "DataModelV2/ThumbnailGeneratorInstance.h" #include #include #include @@ -20,14 +21,11 @@ DataModelInstance::DataModelInstance(void) workspace = new WorkspaceInstance(); guiRoot = new GuiRootInstance(); level = new LevelInstance(); + thumbnailGenerator = new ThumbnailGeneratorInstance(); + selectionService = new SelectionService(); selectionService->setPropertyWindow(g_usableApp->_propWindow); - //children.push_back(workspace); - //children.push_back(level); className = "dataModel"; - //mousex = 0; - //mousey = 0; - //mouseButton1Down = false; showMessage = false; canDelete = false; _modY=0; @@ -652,3 +650,8 @@ LevelInstance* DataModelInstance::getLevel() { return level; } + +ThumbnailGeneratorInstance* DataModelInstance::getThumbnailGenerator() +{ + return thumbnailGenerator; +} diff --git a/src/source/DataModelV2/LevelInstance.cpp b/src/source/DataModelV2/LevelInstance.cpp index 4b33578..14601f6 100644 --- a/src/source/DataModelV2/LevelInstance.cpp +++ b/src/source/DataModelV2/LevelInstance.cpp @@ -5,6 +5,7 @@ LevelInstance::LevelInstance(void) { Instance::Instance(); name = "Level"; + className = "LevelService"; winMessage = "You Won!"; loseMessage = "You Lost. Try Again"; timer = 60.0F; diff --git a/src/source/Listener/MenuButtonListener.cpp b/src/source/Listener/MenuButtonListener.cpp index c595a4e..afd3bb4 100644 --- a/src/source/Listener/MenuButtonListener.cpp +++ b/src/source/Listener/MenuButtonListener.cpp @@ -15,6 +15,7 @@ void MenuButtonListener::onButton1MouseClick(BaseButtonInstance* button) AppendMenu(mainmenu, MF_STRING, 100, "New"); AppendMenu(mainmenu, MF_STRING, 101, "Open..."); AppendMenu(mainmenu, MF_STRING, 102, "Close"); + AppendMenu(mainmenu, MF_STRING, 103, "ThumbnailGenerator::click"); AppendMenu(mainmenu, MF_SEPARATOR, 0, NULL); POINT p; GetCursorPos(&p); @@ -31,6 +32,8 @@ void MenuButtonListener::onButton1MouseClick(BaseButtonInstance* button) case 102: g_usableApp->QuitApp(); break; + case 103: + g_dataModel->getThumbnailGenerator()->click("PNG", 256, 256, true); } } } \ No newline at end of file