From 20e8c63d5c2b17ff2f459ba09f7527a4f11e19e8 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 17:51:03 -0700 Subject: [PATCH 01/25] Changed how the camera works Added arrow key controlled camera Removed WASD camera movement FPS is now locked to 30 Frames P/S Mouse wheel now moves the camera --- main.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 16 deletions(-) diff --git a/main.cpp b/main.cpp index cd8aeed..b45f50b 100644 --- a/main.cpp +++ b/main.cpp @@ -32,6 +32,7 @@ GFontRef fntlighttrek = NULL; static bool democ = true; static std::string message = ""; static G3D::RealTime messageTime = 0; +static G3D::RealTime inputTime = 0; static int FPSVal[8] = {10, 20, 30, 60, 120, 240, INT_MAX,1}; static int index = 2; static float TIMERVAL = 60.0F; @@ -50,6 +51,13 @@ static bool mouseButton1Down = false; static bool running = true; static bool mouseMovedBeginMotion = false; static bool showMouse = true; +//Controller +static bool forwards = false; +static bool backwards = false; +static bool left = false; +static bool right = false; +Vector3 cameraPos = Vector3(0,2,10); +float moveRate = 0.5; /** This simple demo applet uses the debug mode as the regular rendering mode so you can fly around the scene. @@ -248,7 +256,7 @@ void Demo::onInit() { // Called before Demo::run() beings - + dataModel = new Instance(); dataModel->parent = NULL; dataModel->name = "undefined"; @@ -333,8 +341,6 @@ void Demo::onInit() { setDesiredFrameRate(FPSVal[index]); - app->debugCamera.setPosition(Vector3(0, 2, 10)); - app->debugCamera.lookAt(Vector3(0, 2, 0)); @@ -395,6 +401,29 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { title = dataModel->name; app->renderDevice->setCaption("Game \"" + title + "\""); } + + CoordinateFrame frame = app->debugCamera.getCoordinateFrame(); + if(forwards) + { + forwards = false; + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.lookVector()*moveRate; + } + else if(backwards) + { + backwards = false; + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) - frame.lookVector()*moveRate; + } + if(left) + { + left = false; + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.leftVector()*moveRate; + } + else if(right) + { + right = false; + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.rightVector()*moveRate; + } + app->debugCamera.setPosition(cameraPos); } @@ -439,15 +468,24 @@ void Demo::onUserInput(UserInput* ui) { app->debugController.setActive(false); } - if(ui->keyPressed(SDLK_LSHIFT)) + if(ui->keyPressed(SDLK_LSHIFT) || ui->keyPressed(SDLK_RSHIFT)) { - app->debugController.setMoveRate(20); - - + moveRate = 1; } - else if(ui->keyReleased(SDLK_LSHIFT)) + else if(ui->keyReleased(SDLK_LSHIFT) || ui->keyReleased(SDLK_RSHIFT)) { - app->debugController.setMoveRate(10); + moveRate = 0.5; + } + + if(ui->keyPressed(SDL_MOUSE_WHEEL_UP_KEY)) + { + CoordinateFrame frame = app->debugCamera.getCoordinateFrame(); + cameraPos = cameraPos + frame.lookVector()*2; + } + if(ui->keyPressed(SDL_MOUSE_WHEEL_DOWN_KEY)) + { + CoordinateFrame frame = app->debugCamera.getCoordinateFrame(); + cameraPos = cameraPos - frame.lookVector()*2; } if(ui->keyDown(SDLK_LCTRL)) @@ -472,14 +510,14 @@ void Demo::onUserInput(UserInput* ui) { } if(ui->keyPressed(SDLK_F8)) { - index++; - if(index >= 7) - { - index = 0; - } + //index++; + //if(index >= 7) + //{ + // index = 0; + //} messageTime = System::time(); - message = "FPS has been set to " + Convert(FPSVal[index]); - setDesiredFrameRate(FPSVal[index]); + message = "FPS has been locked at " + Convert(FPSVal[index]); + //setDesiredFrameRate(FPSVal[index]); } if(ui->keyPressed('u')) { @@ -488,6 +526,26 @@ void Demo::onUserInput(UserInput* ui) { mousex = ui->getMouseX(); mousey = ui->getMouseY(); mouseButton1Down = ui->keyDown(SDL_LEFT_MOUSE_KEY); + messageTime = System::time(); + if(ui->keyDown(SDLK_UP)) + { + forwards = true; + } + else if(ui->keyDown(SDLK_DOWN)) + { + backwards = true; + } + if(ui->keyDown(SDLK_LEFT)) + { + left = true; + } + else if(ui->keyDown(SDLK_RIGHT)) + { + right = true; + } + + + //readMouseGUIInput(); // Add other key handling here } @@ -574,9 +632,13 @@ void drawButtons(RenderDevice* rd) } void Demo::onGraphics(RenderDevice* rd) { + + + Vector2 mousepos = Vector2(0,0); G3D::uint8 num = 0; rd->window()->getRelativeMouseState(mousepos, num); + bool mouseOnScreen = true; if(mousepos.x < 5 || mousepos.y < 5 || mousepos.x > rd->getViewport().width()-5 || mousepos.y > rd->getViewport().height()-5) { @@ -592,6 +654,9 @@ void Demo::onGraphics(RenderDevice* rd) { LightingParameters lighting(G3D::toSeconds(11, 00, 00, AM)); app->renderDevice->setProjectionAndCameraMatrix(app->debugCamera); + + + // Cyan background app->renderDevice->setColorClearValue(Color3(0.0f, 0.5f, 1.0f)); @@ -773,6 +838,9 @@ void Demo::onGraphics(RenderDevice* rd) { drawButtons(rd); app->renderDevice->pop2D(); + + + } From 68edb442d3e982bd30e8576138032ed2e7d9e956 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 17:53:41 -0700 Subject: [PATCH 02/25] Mouse now stays where you left it --- main.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/main.cpp b/main.cpp index b45f50b..4ec5ce6 100644 --- a/main.cpp +++ b/main.cpp @@ -57,6 +57,7 @@ static bool backwards = false; static bool left = false; static bool right = false; Vector3 cameraPos = Vector3(0,2,10); +Vector2 oldMouse = Vector2(0,0); float moveRate = 0.5; /** This simple demo applet uses the debug mode as the regular @@ -457,6 +458,7 @@ void Demo::onUserInput(UserInput* ui) { } if(ui->keyPressed(SDL_RIGHT_MOUSE_KEY)) { + oldMouse = ui->getMouseXY(); showMouse = false; app->window()->setRelativeMousePosition(app->window()->width()/2, app->window()->height()/2); mouseMovedBeginMotion = true; @@ -464,6 +466,7 @@ void Demo::onUserInput(UserInput* ui) { } else if(ui->keyReleased(SDL_RIGHT_MOUSE_KEY)) { + ui->setMouseXY(oldMouse); showMouse = true; app->debugController.setActive(false); } From 98d3358fd561585f20da0cde913f8d002be89278 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 20:09:01 -0700 Subject: [PATCH 03/25] Added resize, cursor, and arrows mode Added selection box rendering Added arrow rendering added resize rendering --- main.cpp | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 4ec5ce6..8738808 100644 --- a/main.cpp +++ b/main.cpp @@ -56,9 +56,14 @@ static bool forwards = false; static bool backwards = false; static bool left = false; static bool right = false; +static const int CURSOR = 0; +static const int ARROWS = 1; +static const int RESIZE = 2; +static int mode = CURSOR; Vector3 cameraPos = Vector3(0,2,10); Vector2 oldMouse = Vector2(0,0); float moveRate = 0.5; +Instance* selectedInstance = NULL; /** This simple demo applet uses the debug mode as the regular rendering mode so you can fly around the scene. @@ -326,6 +331,8 @@ void Demo::onInit() { test->size = Vector3(4,1,2); test->position = Vector3(2,5,0); + selectedInstance = test; + test = makePart(); test->parent = dataModel; test->color = Color3::gray(); @@ -337,6 +344,8 @@ void Demo::onInit() { test->color = Color3::gray(); test->size = Vector3(4,1,2); test->position = Vector3(-2,7,0); + + @@ -634,6 +643,71 @@ void drawButtons(RenderDevice* rd) } } +void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos) +{ + rd->setLight(0, NULL); + rd->setAmbientLightColor(Color3(1,1,1)); + Color3 outline = Color3(0.098F,0.6F,1.0F); + float offsetSize = 0.05F; + //X + Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + //Y + Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + + //Z + Draw::box(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); + Draw::box(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); + + mode = RESIZE; + + if(mode == ARROWS) + { + float max = size.x; + if(abs(size.y) > max) + max = size.y; + if(abs(size.z) > max) + max = size.z; + max = max / 2; + Draw::arrow(pos, Vector3(0, 1+max, 0), rd); + Draw::arrow(pos, Vector3(1+max, 0, 0), rd); + Draw::arrow(pos, Vector3(0, 0, 1+max), rd); + Draw::arrow(pos, Vector3(0, (-1)-max, 0), rd); + Draw::arrow(pos, Vector3((-1)-max, 0, 0), rd); + Draw::arrow(pos, Vector3(0, 0, (-1)-max), rd); + } + else if(mode == RESIZE) + { + Vector3 gamepoint = pos; + 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 < 200) + { + Color3 sphereColor = outline; + float multiplier = distance * 0.025F/2; + if(multiplier < 0.25F) + multiplier = 0.25F; + + Draw::sphere(Sphere(Vector3(pos.x, pos.y + (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x, pos.y - (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x + (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x - (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x, pos.y, pos.z + (size.z/2 + 1)), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x, pos.y, pos.z - (size.z/2 + 1)), multiplier), rd, sphereColor, Color4::clear()); + } + } + + rd->setAmbientLightColor(lighting.ambient); + rd->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); +} + void Demo::onGraphics(RenderDevice* rd) { @@ -678,7 +752,6 @@ void Demo::onGraphics(RenderDevice* rd) { makeFlag(Vector3(-1, 3.5, 0), rd); - app->renderDevice->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); app->renderDevice->setAmbientLightColor(lighting.ambient); @@ -694,6 +767,10 @@ void Demo::onGraphics(RenderDevice* rd) { Vector3 pos2 = Vector3((pos.x-size.x/2)/2,(pos.y-size.y/2)/2,(pos.z-size.z/2)/2); Vector3 pos3 = Vector3((pos.x+size.x/2)/2,(pos.y+size.y/2)/2,(pos.z+size.z/2)/2); Draw::box(Box(pos2 ,pos3), app->renderDevice, part->color, Color4::clear()); + if(selectedInstance == part) + { + drawOutline(pos2, pos3, rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2)); + } } From 55e890bdc126f927ac656e7f28e8e000c976aa16 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 22:02:12 -0700 Subject: [PATCH 04/25] Made BaseButton class Buttons now children of BaseButton Buttons now render over and down modes Text buttons now exist Buttons render differently --- BaseButtonInstance.cpp | 29 ++++++++++++++++++ BaseButtonInstance.h | 15 +++++++++ G3DTest.vcproj | 8 +++++ ImageButtonInstance.cpp | 47 ++++++++++++++++++++++++++++ ImageButtonInstance.h | 8 +++-- TextButtonInstance.cpp | 39 +++++++++++++++++++---- TextButtonInstance.h | 10 +++--- main.cpp | 68 ++++++++++++++++++----------------------- 8 files changed, 171 insertions(+), 53 deletions(-) create mode 100644 BaseButtonInstance.cpp create mode 100644 BaseButtonInstance.h diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp new file mode 100644 index 0000000..33251e8 --- /dev/null +++ b/BaseButtonInstance.cpp @@ -0,0 +1,29 @@ +#include "BaseButtonInstance.h" + +bool floatBottom; +bool floatRight; +bool floatCenter; + +BaseButtonInstance::BaseButtonInstance(void) +{ +} + +BaseButtonInstance::~BaseButtonInstance(void) +{ +} + +void BaseButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown){} + +bool BaseButtonInstance::mouseInArea(float point1x, float point1y, float point2x, float point2y, float mousex, float mousey) +{ + + + if(mousex >= point1x && mousey >= point1y) + { + if(mousex < point2x && mousey < point2y) + { + return true; + } + } + return false; +} \ No newline at end of file diff --git a/BaseButtonInstance.h b/BaseButtonInstance.h new file mode 100644 index 0000000..3459b9a --- /dev/null +++ b/BaseButtonInstance.h @@ -0,0 +1,15 @@ +#pragma once +#include "instance.h" + +class BaseButtonInstance : public Instance +{ +public: + BaseButtonInstance(void); + ~BaseButtonInstance(void); + virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown); + bool floatBottom; + bool floatRight; + bool floatCenter; +protected: + bool mouseInArea(float, float, float, float, float, float); +}; diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 5b27a90..41d451f 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -230,6 +230,10 @@ Name="Source Files" Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" > + + @@ -279,6 +283,10 @@ Name="Header Files" Filter="h;hpp;hxx;hm;inl" > + + diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index 8b16f19..5912afa 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -5,6 +5,8 @@ G3D::TextureRef image_ovr = NULL; int openGLID_ovr = 0; G3D::TextureRef image_dn = NULL; int openGLID_dn = 0; +Vector2 size; +Vector2 position; ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL) { @@ -14,8 +16,53 @@ ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage = NULL, G3D::T openGLID_ovr = image_ovr->getOpenGLID(); image_dn = downImage; openGLID_dn = image_dn->getOpenGLID(); + Vector2 size = Vector2(0,0); + Vector2 position = Vector2(0,0); + floatCenter = false; + floatBottom = false; + floatRight = false; + + className = "ImageButton"; } ImageButtonInstance::~ImageButtonInstance(void) { } + +void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown) +{ + Vector2 positionRelative = position; + int renderimage = openGLID; + if(mouseInArea(position.x, position.y, position.x + size.x, position.y + size.y, mousePos.x, mousePos.y)) + { + if(mouseDown && openGLID_dn != 0) + { + renderimage = openGLID_dn; + } + else if(openGLID_ovr != 0) + { + renderimage = openGLID_ovr; + } + } + + + rd->pushState(); + rd->beforePrimitive(); + glEnable( GL_TEXTURE_2D ); + glEnable(GL_BLEND);// you enable blending function + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture( GL_TEXTURE_2D, renderimage); + glBegin( GL_QUADS ); + glTexCoord2d(0.0,0.0); + glVertex2f( positionRelative.x, positionRelative.y ); + glTexCoord2d( 1.0,0.0 ); + glVertex2f( positionRelative.x + size.x, positionRelative.y ); + glTexCoord2d( 1.0,1.0 ); + glVertex2f( positionRelative.x + size.x, positionRelative.y + size.y ); + glTexCoord2d( 0.0,1.0 ); + glVertex2f( positionRelative.x, positionRelative.y + size.y ); + glEnd(); + glDisable( GL_TEXTURE_2D ); + rd->afterPrimitive(); + rd->popState(); +} \ No newline at end of file diff --git a/ImageButtonInstance.h b/ImageButtonInstance.h index 139b2b3..e215576 100644 --- a/ImageButtonInstance.h +++ b/ImageButtonInstance.h @@ -1,10 +1,12 @@ #pragma once -#include "instance.h" +#include "BaseButtonInstance.h" -class ImageButtonInstance : - public Instance +class ImageButtonInstance : public BaseButtonInstance { public: ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); ~ImageButtonInstance(void); + void drawObj(RenderDevice*, Vector2, bool); + Vector2 size; + Vector2 position; }; diff --git a/TextButtonInstance.cpp b/TextButtonInstance.cpp index e22b991..f9e0c13 100644 --- a/TextButtonInstance.cpp +++ b/TextButtonInstance.cpp @@ -18,9 +18,7 @@ bool centeredWithinBox; std::string title; G3D::GFontRef* font; int textSize; -bool floatBottom; -bool floatRight; -bool floatCenter; + bool visible; ButtonListener* buttonListener; @@ -35,6 +33,7 @@ TextButtonInstance::TextButtonInstance(void) textOutlineColor = Color4(0, 0, 0, 0); boxColor = Color4(0.6F,0.6F,0.6F,0.4F); boxOutlineColor = Color4(0, 0, 0, 0); + setAllColorsSame(); textSize = 12; floatBottom = false; floatRight = false; @@ -43,6 +42,18 @@ TextButtonInstance::TextButtonInstance(void) className = "TextButton"; } +void TextButtonInstance::setAllColorsSame() +{ + textColorOvr = textColor; + textOutlineColorOvr = textOutlineColor; + boxColorOvr = boxColor; + boxOutlineColorOvr = boxOutlineColor; + textColorDn = textColor; + textOutlineColorDn = textOutlineColor; + boxColorDn = boxColor; + boxOutlineColorDn = boxOutlineColor; +} + TextButtonInstance::~TextButtonInstance(void) { delete buttonListener; @@ -61,7 +72,7 @@ void TextButtonInstance::onClick() } } -void TextButtonInstance::drawObj(RenderDevice* rd) +void TextButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown) { Vector3 point1; Vector3 point2; @@ -76,8 +87,24 @@ void TextButtonInstance::drawObj(RenderDevice* rd) point1 = Vector3(boxBegin.x, boxBegin.y,0); point2 = Vector3(boxEnd.x, boxEnd.y,0); } - Draw::box(Box(point1, point2), rd, boxColor, boxOutlineColor); Vector2 RelativeTo = Vector2(point1.x + fontLocationRelativeTo.x, point1.y + fontLocationRelativeTo.y); - font->draw2D(rd, title, RelativeTo, textSize, textColor, textOutlineColor); + if(mouseInArea(point1.x, point1.y, point2.x, point2.y, mousePos.x, mousePos.y) && mouseDown) + { + Draw::box(Box(point1, point2), rd, boxColorDn, boxOutlineColorDn); + font->draw2D(rd, title, RelativeTo, textSize, textColorDn, textOutlineColorDn); + } + else if(mouseInArea(point1.x, point1.y, point2.x, point2.y, mousePos.x, mousePos.y)) + { + Draw::box(Box(point1, point2), rd, boxColorOvr, boxOutlineColorOvr); + font->draw2D(rd, title, RelativeTo, textSize, textColorOvr, textOutlineColorOvr); + } + else + { + Draw::box(Box(point1, point2), rd, boxColor, boxOutlineColor); + font->draw2D(rd, title, RelativeTo, textSize, textColor, textOutlineColor); + } +} +void doNullCheck() +{ } \ No newline at end of file diff --git a/TextButtonInstance.h b/TextButtonInstance.h index 8dddb0c..f913210 100644 --- a/TextButtonInstance.h +++ b/TextButtonInstance.h @@ -1,14 +1,14 @@ #pragma once -#include "instance.h" +#include "BaseButtonInstance.h" #pragma once #include "ButtonListener.h" class ButtonListener; -class TextButtonInstance : - public Instance +class TextButtonInstance : public BaseButtonInstance { public: TextButtonInstance(void); ~TextButtonInstance(void); + void setAllColorsSame(void); Vector2 boxBegin; Vector2 boxEnd; Vector2 fontLocationRelativeTo; @@ -27,11 +27,9 @@ public: bool centeredWithinBox; std::string title; G3D::GFontRef font; - bool floatBottom; - bool floatRight; bool visible; int textSize; - void drawObj(G3D::RenderDevice*); + void drawObj(RenderDevice*, Vector2, bool); void setButtonListener(ButtonListener*); void onClick(); }; \ No newline at end of file diff --git a/main.cpp b/main.cpp index 8738808..e25341d 100644 --- a/main.cpp +++ b/main.cpp @@ -15,6 +15,7 @@ #include "resource.h" #include "PhysicalInstance.h" #include "TextButtonInstance.h" +#include "ImageButtonInstance.h" #if G3D_VER < 61000 @@ -139,6 +140,14 @@ TextButtonInstance* makeTextButton() return part; } +ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL) +{ + ImageButtonInstance* part = new ImageButtonInstance(newImage,overImage, downImage); + instances.push_back(part); + instances_2D.push_back(part); + return part; +} + void initGUI() { @@ -152,6 +161,7 @@ void initGUI() button->textOutlineColor = Color4::clear(); button->title = "Hopper"; button->fontLocationRelativeTo = Vector2(10, 3); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(0, -48); @@ -163,6 +173,7 @@ void initGUI() button->textOutlineColor = Color4::clear(); button->title = "Controller"; button->fontLocationRelativeTo = Vector2(10, 3); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(0, -72); @@ -174,6 +185,7 @@ void initGUI() button->textOutlineColor = Color4::clear(); button->title = "Color"; button->fontLocationRelativeTo = Vector2(10, 3); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(0, -96); @@ -185,6 +197,7 @@ void initGUI() button->textOutlineColor = Color4::clear(); button->title = "Surface"; button->fontLocationRelativeTo = Vector2(10, 3); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(0, -120); @@ -196,6 +209,7 @@ void initGUI() button->boxOutlineColor = Color3(0,255,255); button->title = "Model"; button->fontLocationRelativeTo = Vector2(10, 3); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(0, 0); @@ -208,6 +222,7 @@ void initGUI() button->title = "File"; button->textSize = 16; button->fontLocationRelativeTo = Vector2(10, 0); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(125, 0); @@ -220,6 +235,7 @@ void initGUI() button->title = "Edit"; button->textSize = 16; button->fontLocationRelativeTo = Vector2(10, 0); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(250, 0); @@ -232,6 +248,7 @@ void initGUI() button->title = "View"; button->textSize = 16; button->fontLocationRelativeTo = Vector2(10, 0); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(375, 0); @@ -244,6 +261,7 @@ void initGUI() button->title = "Insert"; button->textSize = 16; button->fontLocationRelativeTo = Vector2(10, 0); + button->setAllColorsSame(); button = makeTextButton(); button->boxBegin = Vector2(500, 0); @@ -256,6 +274,12 @@ void initGUI() button->title = "Format"; button->textSize = 16; button->fontLocationRelativeTo = Vector2(10, 0); + button->setAllColorsSame(); + + ImageButtonInstance* instance = makeImageButton(go, go_ovr, go_dn); + instance->size = Vector2(60,60); + instance->position = Vector2(10, 25); + instance->parent = dataModel; } void Demo::onInit() { @@ -635,10 +659,10 @@ void drawButtons(RenderDevice* rd) for(size_t i = 0; i < instances_2D.size(); i++) { Instance* instance = instances_2D.at(i); - if(instance->className == "TextButton" && instance->parent == dataModel) + if((instance->className == "TextButton" || instance->className == "ImageButton") && instance->parent == dataModel) { - TextButtonInstance* tbi = (TextButtonInstance*)instance; - tbi->drawObj(rd); + BaseButtonInstance* tbi = (BaseButtonInstance*)instance; + tbi->drawObj(rd, Vector2(mousex, mousey), mouseButton1Down); } } } @@ -717,7 +741,7 @@ void Demo::onGraphics(RenderDevice* rd) { rd->window()->getRelativeMouseState(mousepos, num); bool mouseOnScreen = true; - if(mousepos.x < 5 || mousepos.y < 5 || mousepos.x > rd->getViewport().width()-5 || mousepos.y > rd->getViewport().height()-5) + if(mousepos.x < 1 || mousepos.y < 1 || mousepos.x >= rd->getViewport().width()-1 || mousepos.y >= rd->getViewport().height()-1) { mouseOnScreen = false; rd->window()->setInputCaptureCount(0); @@ -846,42 +870,10 @@ void Demo::onGraphics(RenderDevice* rd) { //app->debugFont->draw2D("Debug Mode Enabled", Vector2(0,30), 20, Color3::white(), Color3::black()); - + drawButtons(rd); rd->pushState(); rd->beforePrimitive(); - - - glEnable( GL_TEXTURE_2D ); - glEnable(GL_BLEND);// you enable blending function - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - if(mouseInArea(10,25,70,85)) - { - if(mouseButton1Down) - glBindTexture( GL_TEXTURE_2D, go_dn_id); - else - glBindTexture( GL_TEXTURE_2D, go_ovr_id); - } - else - glBindTexture( GL_TEXTURE_2D, go_id); - - glBegin( GL_QUADS ); - glTexCoord2d(0.0,0.0); - glVertex2f( 10, 0+offset ); - glTexCoord2d( 1.0,0.0 ); - glVertex2f( 70, 0+offset ); - glTexCoord2d( 1.0,1.0 ); - glVertex2f( 70, 60+offset ); - glTexCoord2d( 0.0,1.0 ); - glVertex2f( 10, 60+offset ); - glEnd(); - - glDisable( GL_TEXTURE_2D ); - - - - if(showMouse && mouseOnScreen) { glEnable( GL_TEXTURE_2D ); @@ -915,7 +907,7 @@ void Demo::onGraphics(RenderDevice* rd) { - drawButtons(rd); + app->renderDevice->pop2D(); From a4176510b9259115da331d018428badc5078e63a Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 22:05:41 -0700 Subject: [PATCH 05/25] Changed class organization --- main.cpp | 79 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/main.cpp b/main.cpp index e25341d..e8a6884 100644 --- a/main.cpp +++ b/main.cpp @@ -114,9 +114,50 @@ public: ~App(); }; + Demo::Demo(App* _app) : GApplet(_app), app(_app) { } +void clearInstances() +{ + for(size_t i = 0; i < instances.size(); i++) + { + delete instances.at(i); + } + delete dataModel; +} + +void OnError(int err, std::string msg = "") +{ + std::string emsg = "An unexpected error has occured and DUOM 5 has to quit. We're sorry!" + msg; + clearInstances(); + //DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, NULL); + MessageBox(NULL, emsg.c_str(),"Dynamica Crash", MB_OK); + exit(err); +} + +std::string ExePath() { + char buffer[MAX_PATH]; + GetModuleFileName( NULL, buffer, MAX_PATH ); + std::string::size_type pos = std::string( buffer ).find_last_of( "\\/" ); + return std::string( buffer ).substr( 0, pos); +} + +std::string GetFileInPath(std::string file) +{ + std::string name = ExePath() + file; + struct stat buf; + if (stat(name.c_str(), &buf) != -1) + { + return name; + } + else + OnError(202, " \r\nFile not found: " + name); + return NULL; + + +} + #include std::string Convert (float number){ std::ostringstream buff; @@ -385,22 +426,8 @@ void Demo::onInit() { -void clearInstances() -{ - for(size_t i = 0; i < instances.size(); i++) - { - delete instances.at(i); - } - delete dataModel; -} -void OnError(int err, std::string msg = "") -{ - std::string emsg = "An unexpected error has occured and DUOM 5 has to quit. We're sorry!" + msg; - clearInstances(); - //DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG1), NULL, NULL); - MessageBox(NULL, emsg.c_str(),"Dynamica Crash", MB_OK); - exit(err); -} + + void Demo::onCleanup() { clearInstances(); @@ -588,27 +615,7 @@ void Demo::onUserInput(UserInput* ui) { -std::string ExePath() { - char buffer[MAX_PATH]; - GetModuleFileName( NULL, buffer, MAX_PATH ); - std::string::size_type pos = std::string( buffer ).find_last_of( "\\/" ); - return std::string( buffer ).substr( 0, pos); -} -std::string GetFileInPath(std::string file) -{ - std::string name = ExePath() + file; - struct stat buf; - if (stat(name.c_str(), &buf) != -1) - { - return name; - } - else - OnError(202, " \r\nFile not found: " + name); - return NULL; - - -} void makeFlag(Vector3 &vec, RenderDevice* &rd) { From 68ac692314de2909889e695bbccf9511698ed122 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 23:25:06 -0700 Subject: [PATCH 06/25] Added final GUI components --- ImageButtonInstance.cpp | 16 ++- ImageButtonInstance.h | 9 ++ content/images/CameraZoomIn.png | Bin 0 -> 1275 bytes content/images/CameraZoomIn_dn.png | Bin 0 -> 955 bytes content/images/CameraZoomIn_ovr.png | Bin 0 -> 971 bytes content/images/CameraZoomOut.png | Bin 0 -> 1514 bytes content/images/CameraZoomOut_dn.png | Bin 0 -> 1267 bytes content/images/CameraZoomOut_ovr.png | Bin 0 -> 1262 bytes main.cpp | 160 ++++++++++++++++++++++++--- 9 files changed, 168 insertions(+), 17 deletions(-) create mode 100644 content/images/CameraZoomIn.png create mode 100644 content/images/CameraZoomIn_dn.png create mode 100644 content/images/CameraZoomIn_ovr.png create mode 100644 content/images/CameraZoomOut.png create mode 100644 content/images/CameraZoomOut_dn.png create mode 100644 content/images/CameraZoomOut_ovr.png diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index 5912afa..bbda5d0 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -7,7 +7,7 @@ G3D::TextureRef image_dn = NULL; int openGLID_dn = 0; Vector2 size; Vector2 position; -ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL) +ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL) { image = newImage; @@ -32,8 +32,20 @@ ImageButtonInstance::~ImageButtonInstance(void) void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown) { Vector2 positionRelative = position; + if(floatRight && floatBottom) + { + positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y); + } + else if(floatBottom) + { + positionRelative = Vector2(position.x, rd->getHeight() + position.y); + } + else if(floatRight) + { + positionRelative = Vector2(rd->getWidth() + position.x, position.y); + } int renderimage = openGLID; - if(mouseInArea(position.x, position.y, position.x + size.x, position.y + size.y, mousePos.x, mousePos.y)) + if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y)) { if(mouseDown && openGLID_dn != 0) { diff --git a/ImageButtonInstance.h b/ImageButtonInstance.h index e215576..c030afd 100644 --- a/ImageButtonInstance.h +++ b/ImageButtonInstance.h @@ -4,9 +4,18 @@ class ImageButtonInstance : public BaseButtonInstance { public: + ImageButtonInstance(G3D::TextureRef); + ImageButtonInstance(G3D::TextureRef,G3D::TextureRef); ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); + ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); ~ImageButtonInstance(void); void drawObj(RenderDevice*, Vector2, bool); Vector2 size; Vector2 position; + G3D::TextureRef image; + int openGLID; + G3D::TextureRef image_ovr; + int openGLID_ovr; + G3D::TextureRef image_dn; + int openGLID_dn; }; diff --git a/content/images/CameraZoomIn.png b/content/images/CameraZoomIn.png new file mode 100644 index 0000000000000000000000000000000000000000..da8f900f29bfcc20110548a7845d39e050fc37a1 GIT binary patch literal 1275 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 literal 0 HcmV?d00001 diff --git a/content/images/CameraZoomIn_ovr.png b/content/images/CameraZoomIn_ovr.png new file mode 100644 index 0000000000000000000000000000000000000000..df86686f37396defa7d41a11c609ee6e1547fe4b GIT binary patch literal 971 zcmV;+12p`JP)X1^@s6RQmj^00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00TQoL_t(YOSP8EPg6k{#qWQ}f~9-Hf&d{T zVt7AGp=kpl& zMzsJ9w9vHjl|zqoScHeOv$HQ;qJIN4(Z<8t-H!hL{`*2?Zf@?GOXOby54`ZS_MX?? z-hQvCscBH}^GPz9eCZ{eq`uh4fJLAmE%uyr~IgiC+ zX}!xUgha{;O2AA{Pn*ffNfw^dJRj6h3kPn#7TS2=g(u$3!E0=6Om%d09BKib_w@8+ zy1KfqySuxM`bPaMxbE!i%=Sfgn&*QWYT>}m>7Z$^ukpeYZ|2}>7ksa+`P<0INJjk| zwI&CBa#?7l8Uvf;UWO- zibgYc50(KOxJBvTC>gF|z@1G@Ot=Tj08Y(M#Z{Pt&I!Xw~013+@24 z&@A;9N``j7v{roD$+`p3Let7u7n=ELTU*<)-tCt}B5}I0v2mjIOt{d2mR?(1yNbu- z*MeDJU(bR*ImW1=7LMhfqJ<{f)~0fdj*jk%^jhaYN=J1{hu2Ox9NrTSg<~C9XFAxv ztIg>8641A~Giq$@9$YlgLKAIkQ#my2u!zBymX?6XA+_P==H^Fgw}fqBzqPgXquLYY t&jEd#+qX4amJ_xb0W{IJHhJNBKLJYARwiNG=EML1002ovPDHLkV1hG&(4+tW literal 0 HcmV?d00001 diff --git a/content/images/CameraZoomOut.png b/content/images/CameraZoomOut.png new file mode 100644 index 0000000000000000000000000000000000000000..144f48ebba1fdaca23b6a2457d2c43315b759cf4 GIT binary patch literal 1514 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 YJ*AJG$oWuM-v9sr07*qoM6N<$f(TGY5dZ)H literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index e8a6884..f31e65b 100644 --- a/main.cpp +++ b/main.cpp @@ -43,9 +43,6 @@ static G3D::TextureRef go_ovr = NULL; static G3D::TextureRef go_dn = NULL; static float mousex = 0; static float mousey = 0; -static int go_id = 0; -static int go_ovr_id = 0; -static int go_dn_id = 0; static int cursorid = 0; static G3D::TextureRef cursor = NULL; static bool mouseButton1Down = false; @@ -181,9 +178,9 @@ TextButtonInstance* makeTextButton() return part; } -ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL) +ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL) { - ImageButtonInstance* part = new ImageButtonInstance(newImage,overImage, downImage); + ImageButtonInstance* part = new ImageButtonInstance(newImage,overImage, downImage, disableImage); instances.push_back(part); instances_2D.push_back(part); return part; @@ -318,8 +315,144 @@ void initGUI() button->setAllColorsSame(); ImageButtonInstance* instance = makeImageButton(go, go_ovr, go_dn); - instance->size = Vector2(60,60); - instance->position = Vector2(10, 25); + instance->size = Vector2(65,65); + instance->position = Vector2(6.5, 25); + instance->parent = dataModel; + + + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/ArrowTool.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ds.png"))); + instance->size = Vector2(50,50); + instance->position = Vector2(15, 90); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/ArrowTool.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ds.png"))); + instance->size = Vector2(40,40); + instance->position = Vector2(0, 140); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/MoveTool.png")), + Texture::fromFile(GetFileInPath("/content/images/MoveTool_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/MoveTool_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/MoveTool_ds.png"))); + instance->size = Vector2(40,40); + instance->position = Vector2(40, 140); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/SelectionRotate.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ds.png"))); + instance->size = Vector2(30,30); + instance->position = Vector2(10, 175); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/SelectionTilt.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ds.png"))); + instance->size = Vector2(30,30); + instance->position = Vector2(40, 175); + instance->parent = dataModel; + + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/Delete.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_ds.png"))); + instance->size = Vector2(40,46); + instance->position = Vector2(20, 284); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/Delete.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/Delete_ds.png"))); + instance->size = Vector2(40,46); + instance->position = Vector2(20, 284); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraZoomIn_dn.png"))); + instance->size = Vector2(34,25); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-77, -90); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut_dn.png"))); + instance->size = Vector2(34,26); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-77, -31); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft_dn.png"))); + instance->size = Vector2(34,34); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-110, -50); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraPanRight.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraPanRight_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraPanRight_dn.png"))); + instance->size = Vector2(34,34); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-45, -50); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraCenter.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraCenter_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraCenter_dn.png"))); + instance->size = Vector2(34,20); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-77, -60); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp_dn.png"))); + instance->size = Vector2(24,24); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-105, -75); + instance->parent = dataModel; + + instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown_dn.png"))); + instance->size = Vector2(24,24); + instance->floatBottom = true; + instance->floatRight = true; + instance->position = Vector2(-40, -75); instance->parent = dataModel; } @@ -867,11 +1000,11 @@ void Demo::onGraphics(RenderDevice* rd) { //Tools menu - Draw::box(G3D::Box(Vector3(5, 165+offset,0),Vector3(75, 165+offset,0)),rd,Color4(0.6F,0.6F,0.6F,0.4F), Color4(0.6F,0.6F,0.6F,0.4F)); - fntlighttrek->draw2D(rd,"Group", Vector2(10,170+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); - fntlighttrek->draw2D(rd,"UnGroup", Vector2(10,195+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); - fntlighttrek->draw2D(rd,"Duplicate", Vector2(10,220+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); - fntlighttrek->draw2D(rd,"MENU", Vector2(10,305+offset), 16, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); + Draw::box(G3D::Box(Vector3(5, 185+offset,0),Vector3(75, 185+offset,0)),rd,Color4(0.6F,0.6F,0.6F,0.4F), Color4(0.6F,0.6F,0.6F,0.4F)); + fntlighttrek->draw2D(rd,"Group", Vector2(10,190+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); + fntlighttrek->draw2D(rd,"UnGroup", Vector2(10,215+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); + fntlighttrek->draw2D(rd,"Duplicate", Vector2(10,240+offset), 12, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); + fntlighttrek->draw2D(rd,"MENU", Vector2(10,307+offset), 14, Color3::white(), Color4(0.5F,0.5F,0.5F,0.5F)); //G3D::GFont::draw2D("Debug Mode Enabled", Vector2(0,30), 20, Color3::white(), Color3::black()); //app->debugFont->draw2D("Dynamica 2004-2005 Simulation Client version " + VERSION + str, Vector2(0,0), 20, Color3::white(), Color3::black()); //app->debugFont->draw2D("Debug Mode Enabled", Vector2(0,30), 20, Color3::white(), Color3::black()); @@ -932,9 +1065,6 @@ void App::main() { go_ovr = Texture::fromFile(GetFileInPath("/content/images/Run_ovr.png")); go_dn = Texture::fromFile(GetFileInPath("/content/images/Run_dn.png")); cursor = Texture::fromFile(GetFileInPath("/content/cursor.png")); - go_id = go->getOpenGLID(); - go_dn_id = go_dn->getOpenGLID(); - go_ovr_id = go_ovr->getOpenGLID(); fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt")); fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt")); sky = Sky::create(NULL, ExePath() + "/content/sky/"); From 05da8e22702c2b5bde8db037021ae38c4dab9b66 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 23 Apr 2018 23:40:58 -0700 Subject: [PATCH 07/25] Added "disabled" bool to button Changed null check --- BaseButtonInstance.cpp | 1 + BaseButtonInstance.h | 1 + ImageButtonInstance.cpp | 24 ++++++++++++++++++------ TextButtonInstance.cpp | 1 + main.cpp | 4 ++-- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index 33251e8..cd30ca4 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -3,6 +3,7 @@ bool floatBottom; bool floatRight; bool floatCenter; +bool disabled; BaseButtonInstance::BaseButtonInstance(void) { diff --git a/BaseButtonInstance.h b/BaseButtonInstance.h index 3459b9a..aade340 100644 --- a/BaseButtonInstance.h +++ b/BaseButtonInstance.h @@ -10,6 +10,7 @@ public: bool floatBottom; bool floatRight; bool floatCenter; + bool disabled; protected: bool mouseInArea(float, float, float, float, float, float); }; diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index bbda5d0..3f91a43 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -5,23 +5,30 @@ G3D::TextureRef image_ovr = NULL; int openGLID_ovr = 0; G3D::TextureRef image_dn = NULL; int openGLID_dn = 0; +G3D::TextureRef image_ds = NULL; +int openGLID_ds = 0; Vector2 size; Vector2 position; -ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL) +ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL) { image = newImage; openGLID = image->getOpenGLID(); image_ovr = overImage; + if(!image_ovr.isNull()) openGLID_ovr = image_ovr->getOpenGLID(); image_dn = downImage; - openGLID_dn = image_dn->getOpenGLID(); + if(!image_dn.isNull()) + openGLID_dn = image_dn->getOpenGLID(); + image_ds = disableImage; + if(!image_ds.isNull()) + openGLID_ds = image_ds->getOpenGLID(); Vector2 size = Vector2(0,0); Vector2 position = Vector2(0,0); floatCenter = false; floatBottom = false; floatRight = false; - + disabled = false; className = "ImageButton"; } @@ -45,13 +52,18 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse positionRelative = Vector2(rd->getWidth() + position.x, position.y); } int renderimage = openGLID; - if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y)) + if(disabled) { - if(mouseDown && openGLID_dn != 0) + if(openGLID_ds != 0) + renderimage = openGLID; + } + else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y)) + { + if(mouseDown && !image_dn.isNull()) { renderimage = openGLID_dn; } - else if(openGLID_ovr != 0) + else if(!image_ovr.isNull()) { renderimage = openGLID_ovr; } diff --git a/TextButtonInstance.cpp b/TextButtonInstance.cpp index f9e0c13..ac92225 100644 --- a/TextButtonInstance.cpp +++ b/TextButtonInstance.cpp @@ -40,6 +40,7 @@ TextButtonInstance::TextButtonInstance(void) floatCenter = false; visible = true; className = "TextButton"; + disabled = false; } void TextButtonInstance::setAllColorsSame() diff --git a/main.cpp b/main.cpp index f31e65b..b3e3bf8 100644 --- a/main.cpp +++ b/main.cpp @@ -351,7 +351,7 @@ void initGUI() instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/SelectionRotate.png")), Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ovr.png")), - Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ovr.png")), + NULL, Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ds.png"))); instance->size = Vector2(30,30); instance->position = Vector2(10, 175); @@ -360,7 +360,7 @@ void initGUI() instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/SelectionTilt.png")), Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ovr.png")), - Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ovr.png")), + NULL, Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ds.png"))); instance->size = Vector2(30,30); instance->position = Vector2(40, 175); From 3ee0075f1d1296b7b7a41fc136d851d24c8aa942 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 00:34:34 -0700 Subject: [PATCH 08/25] Added scale tool image --- content/images/ScaleTool.png | Bin 0 -> 2498 bytes content/images/ScaleTool_dn.png | Bin 0 -> 3057 bytes content/images/ScaleTool_ds.png | Bin 0 -> 2498 bytes content/images/ScaleTool_ovr.png | Bin 0 -> 2485 bytes main.cpp | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 content/images/ScaleTool.png create mode 100644 content/images/ScaleTool_dn.png create mode 100644 content/images/ScaleTool_ds.png create mode 100644 content/images/ScaleTool_ovr.png diff --git a/content/images/ScaleTool.png b/content/images/ScaleTool.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6db4a40cecd35d28eb87cc039761862a68d125 GIT binary patch literal 2498 zcmY*b2{@E%8y*L9EDdKQvR8H)qv;@wT}@+~aI9Hk3`!VF#7q>aak3Oy#uCPUtd*^- z*%@mpj9rW)BU^?v>i?W`{{K4vcU|xIUhn%|_x(Q4`+U!HKe1OVP!Jwb9uNowL0>ku z0%pX~-~t10Nj=hYU}6ihLK%W8hs0Nb1&5b`xd90DJdu~>#tE#s@s}NfKp?)3qrukW zU*Z95iUeP@54QIA3=VY*#DVZ`*ZqQ3{BXgiepOLbL7dw@qo z)}>!F{j86HkEPExLb~ZF9>0~WY~pY@_yhG`5Z}a}Qj*^4`^r$S*}cOM&(IdlN}Jq*;Tn5I&Mz+j911B%FyX_IqIC4ifc=gWi=WrJ>Gy4qrH9Dl0olz^hg-~T}fVk zMf*)EgTZJN5fS+@S?`}iYYKbmSbHPIvF;|>@r6e$Waw454s9e=_e%`Biut#WF7kP= zPdVD5m0q^Cwx3F^i*N1#Otv3;678f>311RK)%vyFJGthn-8#zij2g0y zv|~}Y^!f8UX;BXHm}diXjiFT;I)pk=)oXXv@bhhp*T;%dBrf1{mkxHlY?HsLIMe%|sQ@^8n+T6IDg6Q62oYLe7^K5TxmF*G#X0-&ZI zl>}ZMo^lQU*%Atcf{9YEDdfMiaF^GjVN~CgYU@kVe|nAI`m~}VdUt(lTs!phbiG}r z)0Uu+5Dl!UwP4XUcPHU5d%bgGic+gGCR!tZRPjq9(~~kXZk&EsjLF$vpQ=wo*r>V} zC60Nh;+fHZar2tj)W*YkPydb#{&Pe?Gj%ve&lMtqC}3dgd2;Uu`VJ9Nli`2wPk8re;cXMTr_A%M(+dof+pan&-O*?6Kq`F z3CDp<4Y>Q-hYB>pPUqN8mS&L2=b6S8>hQ2#?Tu0s)z}MzZlt<48HQOu`F>`iu6LfI z?rm43B5*z12K%LT!o*%);bz~dIw#vjbh2C+E>9_0zH972U$6lZp$ugo>u&429z5dl zo4PNpU@4Ejh@RqAd3|e5NG@O1lbQ;9#>p#Gl5*Cr8++TWAZ2`3i%f)gs88zWwZtkWdQ?5b?7i!BQ8D+pWdvc3jgZ6j%R zWrMTj%+L7ko3`UA_k=R6l2gpdh_1@9rDaTfVxm6jP)p1+ z zp8mMwb&a`TQBA)rvM^qw$5kcEnI|iDw#9^}-2OQwiBDgQ-+NxMz!*qV2K3%i?-OYu zYwAgQhF&jExd#*yegpkeU6@8(0vqkNK0D_2m^wQuQ{DHwOxg8??PaQBKGlN+dq9@= zOrU3R1Ph$x)`Euq1k#OT?|@%h>i@@l2kRZ2UAfu$D`&&_U2ph&{Q-1SgM(eHZu zKHvEKT!M_R&Suu%esg@bX0UA(h$ZvI^1$O^33xr`k1KE+)yIp2x>}Z7Pb*BuVuEz} zEYf|fU$MzePM2ixoCcS2ch+zy1w}!=0e^+7m53 z_H4N~iXU}>d)=#Gu4<+s!Kp}dpOvBP)SCkn3J&h1d`x9nVMWj6cpo`6)l+H|Ncz7` z%B5I55`uwcWn`ANWbVH^>%&D5AQWC~SlplGisU7NCnqPxD_(jH9~6W$vo8d+%ezWd ziR+Nby{H9wYUHi1$;1m|jrd$?9SfB4z>lYR3>?iiSB#-=yhDe0%1e7z(w~tD>;qvi& zferx@u5xS9?R*WX zCOzaLVrX#`64^adGEiL7i2N6#XL#*>+4xnVyts(N0|(+yaHobVXKJ53Jd-G@_)FG< zuTwgPPUl-Iy)F1f|3+E4t?oq0k5CMv!Po*~%iGq-NJ8ykU!P(MW%w*5WYq4&-y#4M z>aE;nqNOpHBkzKqW4+&KRGjoO?mUjk$TQrleKmhy?5F}?C6pwU z$p2|y?>7^v?mx?N0-mo80UsIWX+&oeKyHwt8xcYWg6WqIgoP7X>-X4IE-YMPhy7X` zlF~iQF$#r3v7#D&St=dh;bDQyD&-e<$Eiqn>Fn%$+S$`n=F%KK317=Kh<-Q!CfXN2r1p9ALEV=; zxH$ez=_@10=2n?@4rPlbQe=g5BNI>Ni*;8hbnAHVO;qhhumS>sn34LYo4|Vm27iAO zEtLZO5r4{d#C%i3K#I+}^MBv(e`mj?#({aFIjHBckKPfEDw1N`^ESGAz*3ODa@4l` fNV6>a@B;+0+cvZ_<%|MaED-vlg>j|fwW$99v6Q*t literal 0 HcmV?d00001 diff --git a/content/images/ScaleTool_dn.png b/content/images/ScaleTool_dn.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cb04c91e6d68011846b9b2fd1ca825e32d2e6f GIT binary patch literal 3057 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 literal 0 HcmV?d00001 diff --git a/content/images/ScaleTool_ds.png b/content/images/ScaleTool_ds.png new file mode 100644 index 0000000000000000000000000000000000000000..6441f7b11ad46074920431a35336cb19ad7ba186 GIT binary patch literal 2498 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 literal 0 HcmV?d00001 diff --git a/content/images/ScaleTool_ovr.png b/content/images/ScaleTool_ovr.png new file mode 100644 index 0000000000000000000000000000000000000000..c64cf6dbac43cf36b5d6f5379712e6e3058de22a GIT binary patch literal 2485 zcmY*bc|6ox8y{p4@*-rp$^KS$W2?|uhnkVWh%Aw9xYkjY370$e?OIA06EoR&*|R3P zc9YN;*_Y~$>@qRjU+?XGKcDxHbI#|S^Lf6{`99C{`93G%4#I@{tjJjq2*hm)GeiQb z>W{$=2Ih-;@pZt$gh86YZELD< zY?XZ?*=z5eRRz2pP0~zcDb5&&Of^Xt^&j>YLTe1fmhh+)G{1Vk___Gq`_m~VV#*8{L2qSjxFE`1U)Yl#8*V*lqypHLx`EOM3jgHQTr8YtjErc4y zr)!)}?Y8nnHGPu>q}SHh<%Z_(RXcX%O2Q^#iz44V4eos(x0yKh51{X?I<2j)hF|^g zG%pXUclGLDdTi&!?%Zqkwf<|W%CZ7gg}jQYtnJaBZZQ#^c^B8|-(7_6>e34SYQM}W zq_{USFkq^OSxfeb0Fb8-rM`y4Z8S*j@9Us!TM9JNM*cd+5s@`tEwCrr%s? zv)}y80^WO;#O?Fhz)5Q%n%@`FV83DL?!Klehrr)`o}O;ek6b6)K7O_i$*6c%mt}+`RF8vSY|Yc#e!nNW9w2mhmXp(3r>ML~dI=IIF~gi$t9IFg&sX<*K}_-C zLiqNJq9U0Aw#BzIj$0B+_Is(nT;H)xD1qm#J&7sTC!9C`>pHR9XX`=2g=ZRI1cLOt zEGZ*5w|u2=ZP}E{sTj8ZML?FM>`ZO)A;{c%TH5G6-5I&P6tn+jvSL%3IoY-u8Z3#> z+I&SH{}Bgafp&R^w!O{p?|XDJDwmiJ_TZS(pCTGu<<#Xkg4fREBO+mwL)l6`Oj2v- zgGGXJAqg#uN*uijU^`DUI7;O~Ki4ZnX11P=u5M>cldx9U-X~reqqz~cp{LuvS*lJF z>No%FM!#XaVCkVu4}5;#hW%D;ZuSh>4%-fG#(w+Sqm-edqEffxA^_vNA|q3DJdi2( zRQ|5K-K1fN*TOCS#o7Gd$geQ#sg3A~;%k`zv#pq0u2wL^ zd>t%G2cXW<8fEz`Jzd*3r$mhXgfC#16uP}+^y=U>Ct<4?a0TR`ekUD9Q@#EmFJ_c4OQyE4lXEgv=i@n$c!A6$0}Th?{nF{DL8#>LpMlWKMVKF|>Ol~QkHp$g-6 zcgkioXLK|xglx{~pdNG;GZqgvs8b}9H2Ku6-!kRQXQaBVTm+wOsM>|}@Xs}jbVDB) z<2p1}{@A9gDIfXE-Nn2}-twLi$4zHMk7uL^ILWY1RoYs@*$PtFAY12=k`@*g2k|!p zX&+RQ%G|gxBjT>CsQP%YPNOsvwO!QsEy(9aL6lrOIxmU@=tE@IWJ3s0Nm*n8)i;8@ z!~AL{7zFb*j^s1>@zvXPGHfux{Z|sxKLPod=Yi2*h*zhK9x?O4en|_k&NaS|bpMvgG7G zA)`lrllO-~6p$^gakavIAayjO1idlWLCr`J7L~ch6|gs;UemCzb#zTzO;wd9mFv08 zq!jW4(+c7_Q9M$M!{L|-xIe<&xSh>iY8u${NKBEOkHM|2tzuPxh912LJIKHGa8S-k zyhcoiLZLjNsjqCBX~t<2V`OJSx`7Hpxv8`qrn}A=5xNVvm*3voAv#ymrmF5e`nYYR`ZaG`U{UAE9?dkY4Ecp z=Fdm0^7^*FgSqPu&p5UPmEHD|;xW3Yj=ZGB zz1xh%wYWz(kntBG|5z0bzFTKCFMwyt!ewFf$39yNJqKQS+1WOVM$c^wH;6T|AR)Xz zDM}ECC=^R4#{a89=yha+-~36~d}nw#a#wkz9a)DOG#(ssAEZ$XV!nD~{?jJ_EkC#; zMTU(xI`_t&{`#?PKc=OnWzaNJmXfDPZ_5%A5D10n9?S1tR!-SdQoKl~vas3vzfJ)J z$!kL-Wl5;x~80GM3@AvqE#Sb!FO36z1uFbH7MTVfg!zIsx0p%@Oj6^QWEN zOBAtiA+NT!)(`04_}O~5p$dn#AbRlTT*t;K%HqbL@o-z9ml dB*%_ZCXSuBzKCUC58zh?GBrXNR_ou7{u^o4)+_)3 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index b3e3bf8..660150a 100644 --- a/main.cpp +++ b/main.cpp @@ -331,10 +331,10 @@ void initGUI() instance->parent = dataModel; instance = makeImageButton( - Texture::fromFile(GetFileInPath("/content/images/ArrowTool.png")), - Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ovr.png")), - Texture::fromFile(GetFileInPath("/content/images/ArrowTool_dn.png")), - Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ds.png"))); + Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")), + Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")), + Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png"))); instance->size = Vector2(40,40); instance->position = Vector2(0, 140); instance->parent = dataModel; From 30aa99ff0b6029a42c8db5b6dba7f2579621a829 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 00:35:57 -0700 Subject: [PATCH 09/25] Changed how the scale disabled icon looks --- content/images/ScaleTool_ds.png | Bin 2498 -> 2484 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/content/images/ScaleTool_ds.png b/content/images/ScaleTool_ds.png index 6441f7b11ad46074920431a35336cb19ad7ba186..cd3b3721c7465ef3bb1f9ea3649440de67fb5626 100644 GIT binary patch delta 2386 zcmYk7c{~&TAIH;@M)V!!rk`?rT}`ebA?BDIUnIG658o{;uBaS$8X=hJ-(0c=kL$^e!bt%b^($=MkHDq2EBFzZnW~$-@<-UB&pgZ zbvR(-!;LCSyniVq6;P2ir2eU1y1a9TQhcq(NSu~`^O3)RM(26HlyyvP98IYcnBT@> zY}^rEa1FFSe60dC;C4{Z@8nzieHfMA-t6C=*EE4^9*daXo(x=RCWlr!2!+}R)tw)! zaX)fm;Lu_aB<7qnePKbaciQ=dTQl~8*+;Wk(QUYq^WKod$bL}pF7vB9{p;6g#qq~D zT%^9D;*vfWpZIUi4M_W?Pt|r+H>+(GZxUX%X^*`&6{CJgCI_{a`?s`c-CuQ?;}N>F z(cj$-(?`)Uh#0n~0Oovm!1DO3so=TJ@b?%I^qiPRK#oSpycws~!q2Eee6ME`oO?%+ z-hO^ZhAQ7T7Dp0U+ut457X}@Sl1{%$;*)UF3H(GzHA?2o{n8X(%iLXGAVcm6M&BO^H)k!WZP+wm>N_-0t;v~ z&&mIp%6$gzyd4Dnov;`$X=s$GA;5J;a{uEjC3)n-$cS>n${*#AUYst5>R15&h>cgFsspd#Z zUGk*T>*B>j{1dhFkKB9H-EPbqUn1-DYu0_VLLi2;B z?ynce3S!}E3So|K?k-NVHWt@&>qWF8ww8BmABjO$omyg=vDzqE8EAP1J`e0pJ#Nw` zzpDOC-Jd_0;?AEWz@AYKmf+cm5xMtF7L1OFLPtgMAk>1`ZMcuO zjxTSK@DCZIt$DKTjaN8I?=K8U1ddc#o*VUwYe#;0b8vI=w7Bcrdj|(i;p?fJ+)LRY z8}wko)mo1epJ7i=7{cBG`GZ5muFAWQ7F>;t3WHf#D5a;TAI7sw)VaU9|C}wP$6b{f zDLRo`gowS3MXnIQbCru1QJ+<ozelBSo0s-f)7o1^Ll^x%-ga>%QrECjLhF*Qlc7imwA^F3gbkd zv=Z+O(LVAe)*YG1JI)NY5DA?zmMqH3WJ9&-ACivZvmA2P1til4f4);vne;)E7;$n< z{auy5H@sS*w?HGm+UblK!b08O~xEF-5XDH^H&C0?TJ0b_PBpUj{8H zDOm=^&X2$H613|TrepQHxC!1M-iQF$@%nHGCY^&CW&p4b8_@)qCi6)g{#xa~_SeTM z`BFvi6y>C+a=z*G{1bQih0#DA(Ea1b^e_Ml`1ZWQ&tyswll3h)tzeoRy*%pj)VhRe ziqIgi0mNI8s=pJ+;y}8gpw3gc?XWh1DN=vyFy6jufcUj9Yfu8*V2%F`Y_F0*>(|rq zC?KNV1P#1z1EMVPoW{n1dyV1RTqGlBe9(C}Z|lND2m-AZqz)e{3jh80Wum-YMP;s{ z13o`L-&RB<4V=0>g>QSpLF6Eg2lhJjXGuJhu^yo|M>fcascD)&7N&j64s`Qh3f>A0 z@%8o|H)StAz>SdrL8w*2hbk;_9zY{Fu_o)eX-5!iYZWH~yQXuId?+aU+^jud%c#1?GidE%cT<{ftkK;2KN{wZ zDYqu7og0?l^vd(Srgu`3&*TyWwl4Hc+jcmGkjD7ZT}lZa*Y2*rk}Xb@rG~Zg6fkc3 zT;ADnqR&AmaA&Ow^`0g6$Q{om(r&U;8y(PI5X^*iEP|LeV)!$ry(5n@IqTb}7p`wd z4-Z&**EI;<*c)b+_6Q`vZ|z%>{v7i4ZrLic=%;@?AyHBvF(-yz-Q4C>R8x4xX;#a8_e2Y^>p1|KWjDm^gecYdv}rfoxOaMN7W@^Igg%%e(gCIdUP1g z>JX%8{)e>aALOdGuWIX|Ix!X)3Z2o_T1;Z=PZIu#Fp=5S)n$R6kwn0+pWkaQ zZk$PAMV^VdVX{9Kck3Fs?YcWB;DiO}-w&X@Goy9C=o-`2k1}TE`U`oSVovH2jIpPRl1)@bLsd5`1V?UU&74(JS?YRE~q0GY9 delta 2400 zcmY*bc{tQ-8@817h>1$ZQi$e646>8ZNHlg?GDDW8Ft!#k{0b?{G$9!~NtVQEnuVB& zNg^gQS+bNRyT;O}LAGx?-#ORyeed=D^ZxPP@BQ4@{XF+el%`8Rhy`?Ptxvh4tQK-F zh3xA*m@Ga*q4_azmpR zZzO0M85ynW>gw*i1a{&{H&=p4K@2(4#kXRlkU<@AK@>KYSgIK}D=vH?k9#-m<)!X^ z6JQ%t$7ZvMJrxea(>$bVHG6ys3@bMUHj5#KO}1xj1LJS*dcR4QaJd!r@2lgt#NqWM z`#zYvySr`++ob|NwKPm|U=*61mykDP%ITpTzyFx)>D;4e>JhmzeXe_Drh6-Fq{%64 zltyYX`c!WN9{PBf7T&yD{WA*HP@R&Vo*sr%I!V(vGouE4d3DV+E*p>cXo{F<+nWn~ zqa`E=eEZUPqq?$kHmgJ;bj}KCIF=xd)?4g?08}fe>W?6`z(?l9Yj5XgzDj8oz1$%kr-EkbH#hIC0XCDo$_HDIS zs_1YWV+$WB2rs+6KMxfQM((!+WUj3(j|WEn(6~_VD4}3XWVdIily}|CRn$)}4bP0= zLQTWzSRpUeV@(yA@&ycn{iTues0j~96Lxd}n{?Untcn12KdGa+79vMP1@)Mg(xIm8 z!Iu?}$ot~ipBr@DX=)9Tu32j5I33KK$*C#NI^=72A=u~8kN7CH^%sDCb4QAhmsggS zSFOB1>G|@-mW16I!{pF>m8iZ>?e2Voy2+MA;qA>$OkdN@6*27;Lx$fya2=)hbdvNKb$qa$q6Xda1G=e_x8FTkpzAk7ZIt<$FZx6ARRG(O32_>A0jHliyHHDpOl~Z0dWY&pU!CurTjlXS-g~SD z2?MOnV!2((pm6oTy&~!$^)syuf6nH+@I^0DDMWE1I59K4{8Q*2lmBPai_a!h3U}{xGKv?!p95ic|gs^$h=a_p2r+ z1Gr-I-zVPbH{AC2kcw1JFH+@Wvr1lPf!jyk9$zTmc8(q&PtLw~5VVdyHV7UVcKz#e zkJ{;uLnrWYKHSl>+!68^HFnhlE10(@iDwCKoT3@QkS+)>F!aOmxukgdl7UXt_-=>j z9{ogN>_HHB=z&$+Om{Q;O`$I%Lr1w}&O!=dCuV77HG(7`IR(R}&{+C{Q>u+O7IS&q}2xhrG^Evq0%{C-QQX!&WV5RM!=yzS)PL(e{T z-WitDA?5vtu0xkR!$@>i70})rsl2$04bSnUuNI)xtZxHdFGzbD*9G*h8Ym2_8Y*d@%jQRA|k?04PH?B zNDEm@c=<9dFhGNLlo0!jPuERb6?`a-O2+hQ46-~qde40tuX_@p{$&9vhwsNXOlOf1 zmyqh0Vq#v!S@ZgT>~BS_Qin9X$?^qwJpNsllyh;-VYV$hd%xd(xXPyHGI(-wGMxAU zC^VVLnI8l=leVuhahS*-L4koc2ZGy26%B-E{m0{|J?ifm%vsme{I9}<#DSc-;${JI26|xkK`9fi7KCt275>qVs4!f)zo9P2_lx0 zD3bfFaCL#^_p_+B+Yccw9+jKQz*xpU%4Vna-o?HF34gAOZ$8`J`j;oFG(}%=IiW(b zpPp8yYD__YF(x?_o0mIF9LrS;bau(^4zPA=rl5r@3`SOOz?LliCoTU5Co-?w1et-${-=AG3({ietGLp zF8*wXy?+<H&SG#>i>QGdj})2f2yr^ktb!LB?}V@(zg=Hji|$_gKCy5v2jg>A z91s(0lAAgy9w%n6vXz#0ew$0@|0f{48l5LDCE(lJ+h1ViPP~8Mx07RPv~hmFXEWwv zTN)HPn^AUW(BgGllmq23zgFBoDP$MyZrcmOfI*<|KD;5CnXh*_vYgk=JBzHcyIZ4w zrrHeN^UTpgy00#cQjj44G$ir=lb6Nxa+9m6(cA^px;^WU28|BXM@*zScTrQZSWVkA zXB>GQO-AZs2{eJHXAXt`_x~|2vLihI zr$~`^7|*VtyKoY?(i?o;%H>_aVj5g*`9`5*IN1} F{0A<$zr+9l From 9ffe37c21a8ab7f2f91c87466ef43d4ce9e54b95 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 00:59:03 -0700 Subject: [PATCH 10/25] Fixed issue with disabled images --- ImageButtonInstance.cpp | 4 ++-- ImageButtonInstance.h | 8 +++++--- main.cpp | 7 ++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index 3f91a43..c629d4f 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -54,8 +54,8 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse int renderimage = openGLID; if(disabled) { - if(openGLID_ds != 0) - renderimage = openGLID; + if(!image_ds.isNull()) + renderimage = openGLID_ds; } else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y)) { diff --git a/ImageButtonInstance.h b/ImageButtonInstance.h index c030afd..f5b40c6 100644 --- a/ImageButtonInstance.h +++ b/ImageButtonInstance.h @@ -4,9 +4,9 @@ class ImageButtonInstance : public BaseButtonInstance { public: - ImageButtonInstance(G3D::TextureRef); - ImageButtonInstance(G3D::TextureRef,G3D::TextureRef); - ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); + //ImageButtonInstance(G3D::TextureRef); + //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef); + //ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); ImageButtonInstance(G3D::TextureRef,G3D::TextureRef,G3D::TextureRef,G3D::TextureRef); ~ImageButtonInstance(void); void drawObj(RenderDevice*, Vector2, bool); @@ -18,4 +18,6 @@ public: int openGLID_ovr; G3D::TextureRef image_dn; int openGLID_dn; + G3D::TextureRef image_ds; + int openGLID_ds; }; diff --git a/main.cpp b/main.cpp index 660150a..e6fa6b4 100644 --- a/main.cpp +++ b/main.cpp @@ -330,14 +330,11 @@ void initGUI() instance->position = Vector2(15, 90); instance->parent = dataModel; - instance = makeImageButton( - Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")), - Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")), - Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")), - Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png"))); + instance = makeImageButton(Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png"))); instance->size = Vector2(40,40); instance->position = Vector2(0, 140); instance->parent = dataModel; + instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/MoveTool.png")), From d1a1ebd016f778cc6697d3ed9a07f707bfbe1c7e Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 12:39:53 -0700 Subject: [PATCH 11/25] Added mouse click functions to image button Added destructor for images Deleting listener now on exit --- BaseButtonInstance.cpp | 22 +++++++++++++--- BaseButtonInstance.h | 8 ++++-- ButtonListener.cpp | 3 ++- ButtonListener.h | 6 ++--- ImageButtonInstance.cpp | 47 +++++++++++++++++++++++++++++++++ ImageButtonInstance.h | 2 +- Instance.cpp | 4 +-- Instance.h | 2 +- TextButtonInstance.cpp | 15 ----------- TextButtonInstance.h | 7 +---- main.cpp | 57 +++++++++++++++++++++++++++++------------ 11 files changed, 121 insertions(+), 52 deletions(-) diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index cd30ca4..0ebed99 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -1,20 +1,34 @@ #include "BaseButtonInstance.h" -bool floatBottom; -bool floatRight; -bool floatCenter; -bool disabled; +bool floatBottom = false; +bool floatRight = false; +bool floatCenter = false; +bool disabled = false; +ButtonListener* listener = NULL; BaseButtonInstance::BaseButtonInstance(void) { + listener = NULL; } BaseButtonInstance::~BaseButtonInstance(void) { + delete listener; } void BaseButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown){} +bool BaseButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd){return false;} + +void BaseButtonInstance::onMouseClick() +{ + if(listener != NULL) + { + listener->onButton1MouseClick(this); + } +} + + bool BaseButtonInstance::mouseInArea(float point1x, float point1y, float point2x, float point2y, float mousex, float mousey) { diff --git a/BaseButtonInstance.h b/BaseButtonInstance.h index aade340..1f96f93 100644 --- a/BaseButtonInstance.h +++ b/BaseButtonInstance.h @@ -1,16 +1,20 @@ #pragma once #include "instance.h" - +#pragma once +#include "ButtonListener.h" class BaseButtonInstance : public Instance { public: BaseButtonInstance(void); - ~BaseButtonInstance(void); + virtual ~BaseButtonInstance(void); virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown); + virtual bool mouseInButton(float, float, RenderDevice* rd); + virtual void onMouseClick(); bool floatBottom; bool floatRight; bool floatCenter; bool disabled; protected: bool mouseInArea(float, float, float, float, float, float); + class ButtonListener* listener; }; diff --git a/ButtonListener.cpp b/ButtonListener.cpp index 4e9ff6c..44510a5 100644 --- a/ButtonListener.cpp +++ b/ButtonListener.cpp @@ -1,5 +1,6 @@ #include "ButtonListener.h" + ButtonListener::ButtonListener(void) { } @@ -8,7 +9,7 @@ ButtonListener::~ButtonListener(void) { } -void ButtonListener::onButton1MouseClick(TextButtonInstance* button) +void ButtonListener::onButton1MouseClick(BaseButtonInstance* button) { } diff --git a/ButtonListener.h b/ButtonListener.h index c12b8e3..6377b68 100644 --- a/ButtonListener.h +++ b/ButtonListener.h @@ -1,12 +1,12 @@ #pragma once -#include "TextButtonInstance.h" -class TextButtonInstance; +#include "BaseButtonInstance.h" +class BaseButtonInstance; class ButtonListener { public: ButtonListener(void); ~ButtonListener(void); - virtual void onButton1MouseClick(TextButtonInstance*); + virtual void onButton1MouseClick(BaseButtonInstance*); //virtual void onMouseOver(); //TODO //virtual void onMouseOut(); //TODO //virtual void onButton1MouseDown(); //TODO diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index c629d4f..cf0d42d 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -34,10 +34,51 @@ ImageButtonInstance::ImageButtonInstance(G3D::TextureRef newImage, G3D::TextureR ImageButtonInstance::~ImageButtonInstance(void) { + //Delete everything on destruction + image.~ReferenceCountedPointer(); + delete image.getPointer(); + image_ovr.~ReferenceCountedPointer(); + delete image_ovr.getPointer(); + image_ds.~ReferenceCountedPointer(); + delete image_ds.getPointer(); + image_dn.~ReferenceCountedPointer(); + delete image_dn.getPointer(); + image = NULL; + image_ovr = NULL; + image_ds = NULL; + image_dn = NULL; + delete listener; + listener = NULL; +} + +bool ImageButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd) +{ + Vector2 positionRelative = position; + if(floatRight && floatBottom) + { + positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y); + } + else if(floatBottom) + { + positionRelative = Vector2(position.x, rd->getHeight() + position.y); + } + else if(floatRight) + { + positionRelative = Vector2(rd->getWidth() + position.x, position.y); + } + if(mousex >= positionRelative.x && mousey >= positionRelative.y) + { + if(mousex < positionRelative.x + size.x && mousey < positionRelative.y + size.y) + { + return true; + } + } + return false; } void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown) { + bool drawDisabledBox = false; Vector2 positionRelative = position; if(floatRight && floatBottom) { @@ -56,6 +97,8 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse { if(!image_ds.isNull()) renderimage = openGLID_ds; + else + drawDisabledBox = true; } else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y)) { @@ -89,4 +132,8 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse glDisable( GL_TEXTURE_2D ); rd->afterPrimitive(); rd->popState(); + if(drawDisabledBox) + { + Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7,0.7,0.7,0.3), Color4::clear()); + } } \ No newline at end of file diff --git a/ImageButtonInstance.h b/ImageButtonInstance.h index f5b40c6..ea73fed 100644 --- a/ImageButtonInstance.h +++ b/ImageButtonInstance.h @@ -1,6 +1,5 @@ #pragma once #include "BaseButtonInstance.h" - class ImageButtonInstance : public BaseButtonInstance { public: @@ -20,4 +19,5 @@ public: int openGLID_dn; G3D::TextureRef image_ds; int openGLID_ds; + bool mouseInButton(float, float, RenderDevice*); }; diff --git a/Instance.cpp b/Instance.cpp index d54e945..b981f8b 100644 --- a/Instance.cpp +++ b/Instance.cpp @@ -4,12 +4,12 @@ std::string name; Instance* parent; -static std::string className = "Instance"; +static std::string className = "DataModel"; Instance::Instance(void) { name = "Default Game Instance"; - className = "Part"; + className = "DataModel"; } Instance::~Instance(void) diff --git a/Instance.h b/Instance.h index fe087c0..8a58954 100644 --- a/Instance.h +++ b/Instance.h @@ -5,7 +5,7 @@ class Instance { public: Instance(void); - ~Instance(void); + virtual ~Instance(void); std::string name; Instance* parent; // Another pointer. std::string className; diff --git a/TextButtonInstance.cpp b/TextButtonInstance.cpp index ac92225..916fe73 100644 --- a/TextButtonInstance.cpp +++ b/TextButtonInstance.cpp @@ -20,7 +20,6 @@ G3D::GFontRef* font; int textSize; bool visible; -ButtonListener* buttonListener; TextButtonInstance::TextButtonInstance(void) { @@ -57,20 +56,6 @@ void TextButtonInstance::setAllColorsSame() TextButtonInstance::~TextButtonInstance(void) { - delete buttonListener; -} - -void TextButtonInstance::setButtonListener(ButtonListener* listener) -{ - buttonListener = listener; -} - -void TextButtonInstance::onClick() -{ - if(buttonListener != NULL) - { - buttonListener->onButton1MouseClick(this); - } } void TextButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown) diff --git a/TextButtonInstance.h b/TextButtonInstance.h index f913210..fe1c4e2 100644 --- a/TextButtonInstance.h +++ b/TextButtonInstance.h @@ -1,14 +1,11 @@ #pragma once #include "BaseButtonInstance.h" -#pragma once -#include "ButtonListener.h" -class ButtonListener; class TextButtonInstance : public BaseButtonInstance { public: TextButtonInstance(void); ~TextButtonInstance(void); - void setAllColorsSame(void); + void setAllColorsSame(); Vector2 boxBegin; Vector2 boxEnd; Vector2 fontLocationRelativeTo; @@ -30,6 +27,4 @@ public: bool visible; int textSize; void drawObj(RenderDevice*, Vector2, bool); - void setButtonListener(ButtonListener*); - void onClick(); }; \ No newline at end of file diff --git a/main.cpp b/main.cpp index e6fa6b4..ae3daa7 100644 --- a/main.cpp +++ b/main.cpp @@ -391,6 +391,7 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-77, -90); instance->parent = dataModel; + instance->disabled = true; instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")), @@ -737,6 +738,20 @@ void Demo::onUserInput(UserInput* ui) { right = true; } + if(ui->keyReleased(SDL_LEFT_MOUSE_KEY)) + { + for(size_t i = 0; i < instances_2D.size(); i++) + { + if(instances_2D.at(i)->className == "TextButton" || instances_2D.at(i)->className == "ImageButton") + { + BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); + if(button->mouseInButton(ui->mouseXY().x, ui->mouseXY().y, app->renderDevice)) + { + button->onMouseClick(); + } + } + } + } //readMouseGUIInput(); @@ -806,9 +821,9 @@ void drawButtons(RenderDevice* rd) void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos) { - rd->setLight(0, NULL); - rd->setAmbientLightColor(Color3(1,1,1)); - Color3 outline = Color3(0.098F,0.6F,1.0F); + //rd->setLight(0, NULL); + //rd->setAmbientLightColor(Color3(1,1,1)); + Color3 outline = Color3::cyan();//Color3(0.098F,0.6F,1.0F); float offsetSize = 0.05F; //X Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); @@ -831,6 +846,8 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters if(mode == ARROWS) { + rd->setLight(0, NULL); + rd->setAmbientLightColor(Color3(1,1,1)); float max = size.x; if(abs(size.y) > max) max = size.y; @@ -843,30 +860,35 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters Draw::arrow(pos, Vector3(0, (-1)-max, 0), rd); Draw::arrow(pos, Vector3((-1)-max, 0, 0), rd); Draw::arrow(pos, Vector3(0, 0, (-1)-max), rd); + rd->setAmbientLightColor(lighting.ambient); + rd->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); } else if(mode == RESIZE) { + + rd->setLight(0, NULL); + rd->setAmbientLightColor(Color3(1,1,1)); Vector3 gamepoint = pos; 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 < 200) { - Color3 sphereColor = outline; - float multiplier = distance * 0.025F/2; - if(multiplier < 0.25F) - multiplier = 0.25F; - - Draw::sphere(Sphere(Vector3(pos.x, pos.y + (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); - Draw::sphere(Sphere(Vector3(pos.x, pos.y - (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); - Draw::sphere(Sphere(Vector3(pos.x + (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); - Draw::sphere(Sphere(Vector3(pos.x - (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); - Draw::sphere(Sphere(Vector3(pos.x, pos.y, pos.z + (size.z/2 + 1)), multiplier), rd, sphereColor, Color4::clear()); + Color3 sphereColor = outline; + float multiplier = distance * 0.025F/2; + if(multiplier < 0.25F) + multiplier = 0.25F; + + Draw::sphere(Sphere(Vector3(pos.x, pos.y + (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x, pos.y - (size.y/2 + 1), pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x + (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x - (size.x/2 + 1), pos.y, pos.z), multiplier), rd, sphereColor, Color4::clear()); + Draw::sphere(Sphere(Vector3(pos.x, pos.y, pos.z + (size.z/2 + 1)), multiplier), rd, sphereColor, Color4::clear()); Draw::sphere(Sphere(Vector3(pos.x, pos.y, pos.z - (size.z/2 + 1)), multiplier), rd, sphereColor, Color4::clear()); } + rd->setAmbientLightColor(lighting.ambient); + rd->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); } - - rd->setAmbientLightColor(lighting.ambient); - rd->setLight(0, GLight::directional(lighting.lightDirection, lighting.lightColor)); + } void Demo::onGraphics(RenderDevice* rd) { @@ -1108,7 +1130,8 @@ int main(int argc, char** argv) { settings.window.defaultIconFilename = GetFileInPath("/content/images/rico256c.png"); settings.window.resizable = true; settings.writeLicenseFile = false; - + settings.window.width = 841; + settings.window.height = 639; //Using the damned SDL window now SDLWindow* wnd = new SDLWindow(settings.window); //wnd->setInputCaptureCount(200); From f6b301a836bb62cc7e4fe0d198230f3010927913 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 12:44:24 -0700 Subject: [PATCH 12/25] Added click listener to TextButton --- TextButtonInstance.cpp | 25 +++++++++++++++++++++++++ TextButtonInstance.h | 1 + 2 files changed, 26 insertions(+) diff --git a/TextButtonInstance.cpp b/TextButtonInstance.cpp index 916fe73..523c918 100644 --- a/TextButtonInstance.cpp +++ b/TextButtonInstance.cpp @@ -42,6 +42,31 @@ TextButtonInstance::TextButtonInstance(void) disabled = false; } +bool TextButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd) +{ + Vector3 point1; + Vector3 point2; + if(floatBottom) + { + point1 = Vector3(boxBegin.x, rd->getHeight() + boxBegin.y,0); + point2 = Vector3(boxEnd.x, rd->getHeight() + boxEnd.y,0); + + } + else + { + point1 = Vector3(boxBegin.x, boxBegin.y,0); + point2 = Vector3(boxEnd.x, boxEnd.y,0); + } + if(mousex >= point1.x && mousey >= point1.y) + { + if(mousex < point2.x && mousey < point2.y) + { + return true; + } + } + return false; +} + void TextButtonInstance::setAllColorsSame() { textColorOvr = textColor; diff --git a/TextButtonInstance.h b/TextButtonInstance.h index fe1c4e2..2f8823c 100644 --- a/TextButtonInstance.h +++ b/TextButtonInstance.h @@ -27,4 +27,5 @@ public: bool visible; int textSize; void drawObj(RenderDevice*, Vector2, bool); + bool mouseInButton(float, float, RenderDevice*); }; \ No newline at end of file From cbd680a6ac9e489e4a9ad4bfcadccff5edcb481f Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 17:13:04 -0700 Subject: [PATCH 13/25] Changed the way blocks are rendered --- BaseButtonInstance.cpp | 1 + Dialogs.aps | Bin 18120 -> 33680 bytes PhysicalInstance.cpp | 22 +++++++ PhysicalInstance.h | 8 ++- main.cpp | 128 +++++++++++++++++++++-------------------- 5 files changed, 97 insertions(+), 62 deletions(-) diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index 0ebed99..c8968e8 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -25,6 +25,7 @@ void BaseButtonInstance::onMouseClick() if(listener != NULL) { listener->onButton1MouseClick(this); + } } diff --git a/Dialogs.aps b/Dialogs.aps index 51701b7447bd01f66e7debdfdc99f6597fb80bfe..0e9ce3f13515059dd7ecd00065073952913a9b10 100644 GIT binary patch delta 8116 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 delta 269 zcmbQx&UB)eae@o8h%3Y72M(H>JL-9uCKkvrGHvX=Zm&0wk%2*lfq}t;A)LVpNdNzT z5=b&I7%*@OFo9VhF$mxkn4IAlz=gyOaB7=u=OlzGG;4B-1JL-%jSh!pCSVv3F%)F{ zhb^1mh{r4XS0|NmKmI1TI=0|8C}Fat<< r0I>parent = dataModel; } + void Demo::onInit() { // Called before Demo::run() beings @@ -470,76 +472,77 @@ void Demo::onInit() { test->parent = dataModel; test->color = Color3(0.2F,0.3F,1); test->size = Vector3(24,1,24); - - - - - test = makePart(); - test->parent = dataModel; - test->color = Color3(.5F,1,.5F); - test->size = Vector3(4,1,2); - test->position = Vector3(10,1,0); - test = makePart(); - test->parent = dataModel; - test->color = Color3(.5F,1,.5F); - test->size = Vector3(4,1,2); - test->position = Vector3(-10,1,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(-7,2,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(7,2,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(-4,3,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(5,3,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(-1,4,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(3,4,0); - - test = makePart(); - test->parent = dataModel; - test->color = Color3::gray(); - test->size = Vector3(4,1,2); - test->position = Vector3(2,5,0); - + test->setCFrame(CoordinateFrame(Matrix3::fromEulerAnglesXYZ(toRadians(90),toRadians(45),toRadians(45)), Vector3(0,0,0))); selectedInstance = test; + + + + test = makePart(); + test->parent = dataModel; + test->color = Color3(.5F,1,.5F); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(10,1,0)); + test = makePart(); + test->parent = dataModel; + test->color = Color3(.5F,1,.5F); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(-10,1,0)); test = makePart(); test->parent = dataModel; test->color = Color3::gray(); test->size = Vector3(4,1,2); - test->position = Vector3(0,6,0); + test->setPosition(Vector3(-7,2,0)); test = makePart(); test->parent = dataModel; test->color = Color3::gray(); test->size = Vector3(4,1,2); - test->position = Vector3(-2,7,0); + test->setPosition(Vector3(7,2,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(-4,3,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(5,3,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(-1,4,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(3,4,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(2,5,0)); + + + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(0,6,0)); + + test = makePart(); + test->parent = dataModel; + test->color = Color3::gray(); + test->size = Vector3(4,1,2); + test->setPosition(Vector3(-2,7,0)); @@ -946,10 +949,13 @@ void Demo::onGraphics(RenderDevice* rd) { { PhysicalInstance* part = (PhysicalInstance*)instance; Vector3 size = part->size; - Vector3 pos = part->position; + Vector3 pos = part->getCFrame().translation; + rd->setObjectToWorldMatrix(CoordinateFrame()); Vector3 pos2 = Vector3((pos.x-size.x/2)/2,(pos.y-size.y/2)/2,(pos.z-size.z/2)/2); Vector3 pos3 = Vector3((pos.x+size.x/2)/2,(pos.y+size.y/2)/2,(pos.z+size.z/2)/2); - Draw::box(Box(pos2 ,pos3), app->renderDevice, part->color, Color4::clear()); + Box box = Box(Vector3(0+size.x/4, 0+size.y/4, 0+size.z/4) ,Vector3(0-size.x/4,0-size.y/4,0-size.z/4)); + CoordinateFrame c = CoordinateFrame(part->getCFrame().rotation,Vector3(part->getCFrame().translation.x/2, part->getCFrame().translation.y/2, part->getCFrame().translation.z/2)); + Draw::box(c.toWorldSpace(box), app->renderDevice, part->color, Color4::clear()); if(selectedInstance == part) { drawOutline(pos2, pos3, rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2)); From 560245e005b8139a759cd1291a6c3be398e53671 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 17:20:04 -0700 Subject: [PATCH 14/25] Im not sure what changed --- Dialogs.aps | Bin 33680 -> 18120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Dialogs.aps b/Dialogs.aps index 0e9ce3f13515059dd7ecd00065073952913a9b10..51701b7447bd01f66e7debdfdc99f6597fb80bfe 100644 GIT binary patch delta 269 zcmbQx&UB)eae@o8h%3Y72M(H>JL-9uCKkvrGHvX=Zm&0wk%2*lfq}t;A)LVpNdNzT z5=b&I7%*@OFo9VhF$mxkn4IAlz=gyOaB7=u=OlzGG;4B-1JL-%jSh!pCSVv3F%)F{ zhb^1mh{r4XS0|NmKmI1TI=0|8C}Fat<< r0I>%+npn~+}mC4?unw5WaFSn)4+9W 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 From 3f222b75d8f85f4a2835dbd828b6962f7e3a7120 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 18:01:26 -0700 Subject: [PATCH 15/25] Tried adding dialog and main window --- Dialogs.aps | Bin 18120 -> 34160 bytes Dialogs.rc | 31 +++++++++++++++++++++++++++++++ main.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++++- resource.h | 6 ++++-- 4 files changed, 81 insertions(+), 3 deletions(-) diff --git a/Dialogs.aps b/Dialogs.aps index 51701b7447bd01f66e7debdfdc99f6597fb80bfe..d31b93976558fc97b03ae56c2e7e4be29d6067a9 100644 GIT binary patch delta 8559 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 UeDKkDpm<@3Rq)oMKV1d?2Yje4sQ>@~ delta 264 zcmey+#dM;Vae@o8h%3Y72M(Hy+>;9%6gRUq#4%1bXzH0*Aj8PCvG=;Y-aJMI1{DSd z1`mdC1}7l>|NluK$-rR1z$w54W`V>YfKy;{hGPI15;wr9ZL*z{5US9u$tey%<0m&d z9G01YVLZf8knxiPnswN?fp#omm^`mVW-?oY5Sti~`vk&mYY}5IUio`GQj)5J14VUP!=09}scfyw>NqD&Dkld~M;0AP7k`2YX_ diff --git a/Dialogs.rc b/Dialogs.rc index b346945..bc28737 100644 --- a/Dialogs.rc +++ b/Dialogs.rc @@ -46,6 +46,37 @@ END #endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_TOOLBOX DIALOGEX 0, 0, 398, 64 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + CONTROL "",IDC_TOOLBOX_BROWSER, + "{A8F8E829-06DA-11D2-8D70-00A0C98B28E2}",WS_TABSTOP,0,0,398,64 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_TOOLBOX DLGINIT +BEGIN + IDC_TOOLBOX_BROWSER, 0x376, 76, 0 +0x0000, 0x0000, 0xb293, 0x0000, 0x0048, 0x0000, 0x0003, 0x0008, 0xf20b, +0x4757, 0x0020, 0x0000, 0x005f, 0x0065, 0x0078, 0x0074, 0x0065, 0x006e, +0x0074, 0x0078, 0x3db4, 0x0000, 0x0003, 0x0008, 0xf20a, 0x4757, 0xffe0, +0xffff, 0x005f, 0x0065, 0x0078, 0x0074, 0x0065, 0x006e, 0x0074, 0x0079, +0x0ac0, 0x0000, + 0 +END + #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/main.cpp b/main.cpp index 602d3ed..f883492 100644 --- a/main.cpp +++ b/main.cpp @@ -1111,6 +1111,8 @@ App::~App() { LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { + App *app = (App *)GetWindowLongPtr(hwnd, GWL_USERDATA); + switch(msg) { case WM_CLOSE: @@ -1143,8 +1145,51 @@ int main(int argc, char** argv) { //wnd->setInputCaptureCount(200); wnd->setMouseVisible(false); App app = App(settings, wnd); - HWND hwnd = wnd->win32HWND(); + + + WNDCLASSEX wc; + HINSTANCE hInstance = GetModuleHandle(NULL); + wc.cbSize = sizeof(WNDCLASSEX); + wc.style = 0; + wc.lpfnWndProc = WndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wc.lpszMenuName = NULL; + wc.lpszClassName = "containerHWND"; + wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); + if (!RegisterClassEx (&wc)) + return false; + + HMODULE hThisInstance = GetModuleHandle(NULL); + HWND hwnd = wnd->win32HWND(); + HWND hwndMain = CreateWindowEx( + WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE, + "containerHWND", + "Main test", + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, + CW_USEDEFAULT, + 800, + 800, + NULL, // parent + NULL, // menu + hThisInstance, + NULL + ); + ShowWindow(hwndMain, SW_SHOW); + if(hwndMain == NULL) + { + MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); + } + SetParent(hwnd, hwndMain); + SetWindowPos(hwnd, NULL, 0, 0, 640, 480, NULL); + SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD | WS_BORDER); + SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); app.run(); return 0; } diff --git a/resource.h b/resource.h index 3d988c8..7259ef5 100644 --- a/resource.h +++ b/resource.h @@ -3,14 +3,16 @@ // Used by Dialogs.rc // #define IDD_ABOUT_DIALOG 102 +#define IDD_TOOLBOX 103 +#define IDC_TOOLBOX_BROWSER 1001 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_RESOURCE_VALUE 106 #define _APS_NEXT_COMMAND_VALUE 40004 -#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_CONTROL_VALUE 1002 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif From d0bba08f3a83e3fa73cd30c29e3f58712632f620 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 18:11:29 -0700 Subject: [PATCH 16/25] Controlls dont work --- main.cpp | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/main.cpp b/main.cpp index f883492..c508ab0 100644 --- a/main.cpp +++ b/main.cpp @@ -98,7 +98,7 @@ public: -class App : public GApp { +/*class App : public GApp { protected: void main(); public: @@ -109,7 +109,41 @@ public: App(const GAppSettings& settings, GWindow* wnd); ~App(); +};*/ + +class App : public GApp { + protected: + void main(); + public: + SkyRef sky; + + Demo* applet; + + App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd); + + ~App(); + HWND getHWND(); + HWND getPropertyHWND(); + HWND getMainHWND(); + //void addHWND(HWND hwnd); + private: + HWND hwnd; + HWND propertyHWnd; + HWND mainHWnd; }; + +HWND App::getHWND() +{ + return hwnd; +} +HWND App::getPropertyHWND() +{ + return propertyHWnd; +} +HWND App::getMainHWND() +{ + return mainHWnd; +} Demo::Demo(App* _app) : GApplet(_app), app(_app) { @@ -1099,8 +1133,22 @@ void App::main() { -App::App(const GAppSettings& settings, GWindow* wnd) : GApp(settings, wnd) { +//App::App(const GAppSettings& settings, GWindow* wnd) : GApp(settings, wnd) { +// applet = new Demo(this); +//} + +App::App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd) : GApp(settings, wnd) { applet = new Demo(this); + SDLWindow* sdlWnd = new SDLWindow(settings.window); + hwnd = sdlWnd->win32HWND(); + mainHWnd = tempMainHWnd; + propertyHWnd = CreateWindowEx( + WS_EX_TOOLWINDOW, + "ToolWindowClass", "ToolWindow", + WS_SYSMENU | WS_THICKFRAME | WS_VISIBLE | WS_CHILD, + 200, 700, 400, 64, + mainHWnd, NULL, GetModuleHandle(0), NULL + ); } @@ -1111,12 +1159,17 @@ App::~App() { LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - App *app = (App *)GetWindowLongPtr(hwnd, GWL_USERDATA); - + App *app = (App *)GetWindowLongPtr(hwnd, GWL_USERDATA); switch(msg) { case WM_CLOSE: - DestroyWindow(hwnd); + if (app != 0) + { + HWND g3DWind = app->getHWND(); + app->endProgram = true; + //DestroyWindow(hwnd); + } + DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); @@ -1144,7 +1197,7 @@ int main(int argc, char** argv) { SDLWindow* wnd = new SDLWindow(settings.window); //wnd->setInputCaptureCount(200); wnd->setMouseVisible(false); - App app = App(settings, wnd); + WNDCLASSEX wc; @@ -1175,7 +1228,7 @@ int main(int argc, char** argv) { CW_USEDEFAULT, CW_USEDEFAULT, 800, - 800, + 600, NULL, // parent NULL, // menu hThisInstance, @@ -1187,9 +1240,19 @@ int main(int argc, char** argv) { MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); } SetParent(hwnd, hwndMain); - SetWindowPos(hwnd, NULL, 0, 0, 640, 480, NULL); + App app = App(settings, wnd, hwndMain); + RECT rect; + int width = 640; + int height = 480; + if(GetWindowRect(hwndMain, &rect)) + { + width = rect.right - rect.left; + height = rect.bottom - rect.top; + } + SetWindowPos(hwnd, NULL, 0, 0, width, height, NULL); SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD | WS_BORDER); SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); + app.run(); return 0; } From 2b2672b9fdd47e40fdab53bc0ab9c21b23a1522a Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 18:23:07 -0700 Subject: [PATCH 17/25] Now resizes with hwnd but controls are dead asgassdsad --- main.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index c508ab0..a66d5b7 100644 --- a/main.cpp +++ b/main.cpp @@ -1174,6 +1174,21 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_DESTROY: PostQuitMessage(0); break; + case WM_SIZE: + if(app != 0) + { + HWND g3DWind = app->getHWND(); + int width = 640; + int height = 480; + RECT rect; + if(GetClientRect(hwnd, &rect)) + { + width = rect.right - rect.left; + height = rect.bottom - rect.top; + } + SetWindowPos(g3DWind, NULL, 0, 0, width, height, NULL); + } + break; default: return DefWindowProc(hwnd, msg, wParam, lParam); } @@ -1244,7 +1259,7 @@ int main(int argc, char** argv) { RECT rect; int width = 640; int height = 480; - if(GetWindowRect(hwndMain, &rect)) + if(GetClientRect(hwndMain, &rect)) { width = rect.right - rect.left; height = rect.bottom - rect.top; From 04f1ac813e78460a815c3cf283db33ba72989f6e Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 19:02:48 -0700 Subject: [PATCH 18/25] Controller still broken but window size works --- main.cpp | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/main.cpp b/main.cpp index a66d5b7..c1aa5ba 100644 --- a/main.cpp +++ b/main.cpp @@ -76,6 +76,8 @@ public: class App* app; + virtual void exitApplication(); + Demo(App* app); virtual ~Demo() {} @@ -119,7 +121,8 @@ class App : public GApp { Demo* applet; - App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd); + App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd, SDLWindow*); + ~App(); HWND getHWND(); @@ -772,11 +775,13 @@ void Demo::onUserInput(UserInput* ui) { } else if(ui->keyDown(SDLK_RIGHT)) { + right = true; } if(ui->keyReleased(SDL_LEFT_MOUSE_KEY)) { + for(size_t i = 0; i < instances_2D.size(); i++) { if(instances_2D.at(i)->className == "TextButton" || instances_2D.at(i)->className == "ImageButton") @@ -801,6 +806,7 @@ void Demo::onUserInput(UserInput* ui) { void makeFlag(Vector3 &vec, RenderDevice* &rd) { + Vector3 up = Vector3(vec.x, vec.y+3, vec.z); //Draw::lineSegment(G3D::LineSegment::fromTwoPoints(vec, up), rd, Color3::blue(), 3); rd->setColor(Color3::blue()); @@ -928,6 +934,12 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters } +void Demo::exitApplication() +{ + endApplet = true; + app->endProgram = true; +} + void Demo::onGraphics(RenderDevice* rd) { @@ -1137,10 +1149,9 @@ void App::main() { // applet = new Demo(this); //} -App::App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd) : GApp(settings, wnd) { +App::App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd, SDLWindow* wndSDL) : GApp(settings, wnd) { applet = new Demo(this); - SDLWindow* sdlWnd = new SDLWindow(settings.window); - hwnd = sdlWnd->win32HWND(); + hwnd = wndSDL->win32HWND(); mainHWnd = tempMainHWnd; propertyHWnd = CreateWindowEx( WS_EX_TOOLWINDOW, @@ -1165,11 +1176,12 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_CLOSE: if (app != 0) { + HWND g3DWind = app->getHWND(); - app->endProgram = true; + app->applet->exitApplication(); //DestroyWindow(hwnd); } - DestroyWindow(hwnd); + //DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); @@ -1187,10 +1199,19 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) height = rect.bottom - rect.top; } SetWindowPos(g3DWind, NULL, 0, 0, width, height, NULL); + SetActiveWindow(g3DWind); } break; default: + { + if(app != 0) + { + HWND g3DWind = app->getHWND(); + + SetActiveWindow(g3DWind); + } return DefWindowProc(hwnd, msg, wParam, lParam); + } } return 0; } @@ -1255,7 +1276,7 @@ int main(int argc, char** argv) { MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); } SetParent(hwnd, hwndMain); - App app = App(settings, wnd, hwndMain); + App app = App(settings, wnd, hwndMain, wnd); RECT rect; int width = 640; int height = 480; @@ -1265,9 +1286,8 @@ int main(int argc, char** argv) { height = rect.bottom - rect.top; } SetWindowPos(hwnd, NULL, 0, 0, width, height, NULL); - SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD | WS_BORDER); + SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD); SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); - app.run(); return 0; } From a9f91c8a9e3db50666db7e100a7a083f6bc844b0 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 19:17:49 -0700 Subject: [PATCH 19/25] Changed how window works Controls now work --- main.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/main.cpp b/main.cpp index c1aa5ba..137d5ca 100644 --- a/main.cpp +++ b/main.cpp @@ -1199,17 +1199,10 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) height = rect.bottom - rect.top; } SetWindowPos(g3DWind, NULL, 0, 0, width, height, NULL); - SetActiveWindow(g3DWind); } break; default: { - if(app != 0) - { - HWND g3DWind = app->getHWND(); - - SetActiveWindow(g3DWind); - } return DefWindowProc(hwnd, msg, wParam, lParam); } } @@ -1286,7 +1279,16 @@ int main(int argc, char** argv) { height = rect.bottom - rect.top; } SetWindowPos(hwnd, NULL, 0, 0, width, height, NULL); - SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD); + + LONG lStyle = GetWindowLong(hwnd, GWL_STYLE); + lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU); + SetWindowLong(hwnd, GWL_STYLE, lStyle); + + LONG lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE); + lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE); + SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle); + + //SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD); SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); app.run(); return 0; From a9d533e447d6514c4838c1f7cd3df08c4a57d0a9 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 19:35:53 -0700 Subject: [PATCH 20/25] YAY --- Dialogs.aps | Bin 34160 -> 35196 bytes Dialogs.rc | 9 +++++++++ G3DTest.vcproj | 4 ++++ icon1.ico | Bin 0 -> 4286 bytes main.cpp | 13 ++++++------- resource.h | 3 ++- 6 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 icon1.ico diff --git a/Dialogs.aps b/Dialogs.aps index d31b93976558fc97b03ae56c2e7e4be29d6067a9..88ed17ca41767131de2d86db3ca39e21df317d99 100644 GIT binary patch delta 1183 zcmcgrF^dyX5S~rUorfSfiDwY?B4?q^ksPOjSmcruE{#^ll@?Z7cv@ux2fHDA$*xVz zJwkR0O=D#tNGiJs7UzFZxKax-R!Jc|zj>QI4QT6R=goZc&3iNNkr_Qp{5(iJ-%NgL zk~%70d;4UsWF4q)rB|84Iu-IasIpnPUn$?aTOgth)h(}B-v{r?YgXnrA!!MVEIQeF zf5Eyrn7{M+))vw)L9al!XopI$T7Se!lus|D6ULL+Y3L(bNI#?pv`devK&uq_l5$Et zbuSO*+|{J>1$%M`X`O^x!kVLugXJnT2Q5M^I)N1u*MXa!s)UJL^O5U{2gMK0a5#jO zh&CSzi3in=_)twX775{MTWo}TQ_N1l-R*4-9jzw;65HJIZQo~LpR+#qIa`HrTTi&t zs>V3z3ypZ6cgEm@{)D?Nv3yRj6ZCxc4Z&FrTkCOH1rzjxENYL@M$6GojL}xMim=TQ z4-6XVC?LJ*T37{(4*P+@b{4cWe2jI3L&H1T#+Apmk1N-r4UF@3)dud!fnzCvK#gOJ zei5+Qmdk@jhX_pmz_U~G*gU_AYdpr;wZK4*GZWbmK(&r+VPmjTQ{;{g&@21{%tGLgAl+RTE? zjzxRwdSig`{@PecZQLe0REyqnM#ePn&W@?dc^S)7FT9It&OMV_Ldpk&n%+_(T~{x? wwZwW|y>ZW{UV|H{AKtQcq!#zf^IHvRYNU4SXN%J0Ve{WjN?Svd|M!vp1?Q97KL7v# delta 140 zcmew}iRnWZ(*zf0lV*m=4;(Z%7SuQ~Hco!)w1kC$fk9{TQfFnxcbiW-8!=8iB+Y2H zS;zIR)#iYP0A@ys$#>f}1C>r}S7y_(VPM$dJb9I~94j|ao5W + + diff --git a/icon1.ico b/icon1.ico new file mode 100644 index 0000000000000000000000000000000000000000..5423a6a0dbcaf755c2dd01c3fdd91809a72d3ef9 GIT binary patch literal 4286 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 HU!VUI(y$bj literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 137d5ca..bc935e9 100644 --- a/main.cpp +++ b/main.cpp @@ -631,7 +631,8 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { if(dataModel->name != title) { title = dataModel->name; - app->renderDevice->setCaption("Game \"" + title + "\""); + std::string text = "Game \"" + title + "\""; + SetWindowText(app->getMainHWND(), text.c_str()); } CoordinateFrame frame = app->debugCamera.getCoordinateFrame(); @@ -1214,14 +1215,8 @@ int main(int argc, char** argv) { //_CrtSetBreakAlloc(1279); GAppSettings settings; - if(getOSVersion() > 5.0) - settings.window.defaultIconFilename = GetFileInPath("/content/images/rico.png"); - else - settings.window.defaultIconFilename = GetFileInPath("/content/images/rico256c.png"); settings.window.resizable = true; settings.writeLicenseFile = false; - settings.window.width = 841; - settings.window.height = 639; //Using the damned SDL window now SDLWindow* wnd = new SDLWindow(settings.window); //wnd->setInputCaptureCount(200); @@ -1290,6 +1285,10 @@ int main(int argc, char** argv) { //SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD); SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); + + HICON hicon = (HICON)LoadImage(GetModuleHandleW(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE); + SendMessage(hwndMain, WM_SETICON, ICON_BIG, (LPARAM)hicon); + app.run(); return 0; } diff --git a/resource.h b/resource.h index 7259ef5..56d9469 100644 --- a/resource.h +++ b/resource.h @@ -4,13 +4,14 @@ // #define IDD_ABOUT_DIALOG 102 #define IDD_TOOLBOX 103 +#define IDI_ICON1 106 #define IDC_TOOLBOX_BROWSER 1001 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 106 +#define _APS_NEXT_RESOURCE_VALUE 107 #define _APS_NEXT_COMMAND_VALUE 40004 #define _APS_NEXT_CONTROL_VALUE 1002 #define _APS_NEXT_SYMED_VALUE 101 From 1f7c5b28f8182251f0c3c340f99921ea63f67402 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 20:24:34 -0700 Subject: [PATCH 21/25] Test of forward button --- BaseButtonInstance.cpp | 5 +++++ BaseButtonInstance.h | 2 ++ ImageButtonInstance.cpp | 2 +- main.cpp | 26 +++++++++++++++++++++++++- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index c8968e8..fac54ed 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -16,6 +16,11 @@ BaseButtonInstance::~BaseButtonInstance(void) delete listener; } +void BaseButtonInstance::setButtonListener(ButtonListener* buttonListener) +{ + listener = buttonListener; +} + void BaseButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown){} bool BaseButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd){return false;} diff --git a/BaseButtonInstance.h b/BaseButtonInstance.h index 1f96f93..6cff6bf 100644 --- a/BaseButtonInstance.h +++ b/BaseButtonInstance.h @@ -2,6 +2,7 @@ #include "instance.h" #pragma once #include "ButtonListener.h" +class ButtonListener; class BaseButtonInstance : public Instance { public: @@ -10,6 +11,7 @@ public: virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown); virtual bool mouseInButton(float, float, RenderDevice* rd); virtual void onMouseClick(); + void setButtonListener(ButtonListener*); bool floatBottom; bool floatRight; bool floatCenter; diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index cf0d42d..58a579f 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -134,6 +134,6 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse rd->popState(); if(drawDisabledBox) { - Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7,0.7,0.7,0.3), Color4::clear()); + Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7F,0.7F,0.7F,0.3F), Color4::clear()); } } \ No newline at end of file diff --git a/main.cpp b/main.cpp index bc935e9..8239bb4 100644 --- a/main.cpp +++ b/main.cpp @@ -66,6 +66,11 @@ Instance* selectedInstance = NULL; This simple demo applet uses the debug mode as the regular rendering mode so you can fly around the scene. */ + + + + + class Demo : public GApplet { public: @@ -135,6 +140,8 @@ class App : public GApp { HWND mainHWnd; }; +App *usableApp = NULL; + HWND App::getHWND() { return hwnd; @@ -225,6 +232,20 @@ ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::Textu } + +class ForwardButtonListener : public ButtonListener { +public: + void onButton1MouseClick(BaseButtonInstance*); +}; + +void ForwardButtonListener::onButton1MouseClick(BaseButtonInstance*) +{ + + CoordinateFrame frame = usableApp->renderDevice->getCameraToWorldMatrix(); + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.lookVector()*2; +} + + void initGUI() { TextButtonInstance* button = makeTextButton(); @@ -353,6 +374,7 @@ void initGUI() button->setAllColorsSame(); ImageButtonInstance* instance = makeImageButton(go, go_ovr, go_dn); + instance->name = "go"; instance->size = Vector2(65,65); instance->position = Vector2(6.5, 25); instance->parent = dataModel; @@ -429,7 +451,7 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-77, -90); instance->parent = dataModel; - instance->disabled = true; + instance->setButtonListener(new ForwardButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")), @@ -1130,6 +1152,7 @@ void Demo::onGraphics(RenderDevice* rd) { void App::main() { + usableApp = this; setDebugMode(false); debugController.setActive(false); // Load objects here @@ -1262,6 +1285,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); + return 0; } SetParent(hwnd, hwndMain); App app = App(settings, wnd, hwndMain, wnd); From d738a804e6ebf260e09c2155386ac12dadd1ad8c Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 22:00:46 -0700 Subject: [PATCH 22/25] Changed some images, Added camera button listeners --- content/cursor.png | Bin 599 -> 576 bytes content/images/StopReset.png | Bin 2815 -> 0 bytes content/images/StopReset_dn.png | Bin 3058 -> 0 bytes content/images/StopReset_ds.png | Bin 2040 -> 0 bytes content/images/StopReset_ovr.png | Bin 2814 -> 0 bytes content/images/rico.png | Bin 2756 -> 0 bytes content/images/rico16c.png | Bin 484 -> 0 bytes content/images/rico256c.png | Bin 792 -> 0 bytes main.cpp | 42 ++++++++++++++++++++++++++----- 9 files changed, 36 insertions(+), 6 deletions(-) delete mode 100644 content/images/StopReset.png delete mode 100644 content/images/StopReset_dn.png delete mode 100644 content/images/StopReset_ds.png delete mode 100644 content/images/StopReset_ovr.png delete mode 100644 content/images/rico.png delete mode 100644 content/images/rico16c.png delete mode 100644 content/images/rico256c.png diff --git a/content/cursor.png b/content/cursor.png index 229081cad9286cb90931826b6416fa0e856d92c5..1ef72c3ce39a8b7ae13b1eb1f814be2ec0414b12 100644 GIT binary patch delta 404 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 G-v0rY?b^-& diff --git a/content/images/StopReset_dn.png b/content/images/StopReset_dn.png deleted file mode 100644 index 9afde4a9526fc606637fded00075e2b7de2163a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3058 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 diff --git a/content/images/StopReset_ds.png b/content/images/StopReset_ds.png deleted file mode 100644 index 4e85960ced4e5599e0881d7a54500d52a9ce31f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 zcmVbkea^l1ZIez?jg#rFEXU@pQix=g}l`FDx<;tI2?!G85f0g&_*^|F}_imX# zf4&SHI8Zuu>Ll&kx0iP9+Eo}jbm$=6yLXqQq$Js}VS^kwaztj&o*frSY~?j;*5q&6 zv`I#d8b$Vge)jB{ynOjmUcY`VZ{EC-w{PDn-o1OLc>n%=DHInMix>Xi&Cht?1g~Db zk{2&t$kV4!5&X-NB}>F5tidWy_XHN=k}kWn~o?6&1;&M~}qBLS}+3fLFAM zh}2?hezb7G=@m)5!otFmK7IQ9ik5Zj)|EJ+U;CFp^t^fVWb)+6a{c;sxqJ7n+`oTc z9zJ|1Po6xH=g*((sL3#}AOs8ovp0XZ0EvK~IK;bi=Z@s(=a)>KI#m`gUMx=JkA9&s zbLPyEnKNffPEL+oyLL^T?%lg54<0_W)&7zn}uY!DXQ+uHBgdVS$~{P?j7gx_US zZr{GGafv@=$`sZqLSxDZWdo5_c00yyWOD1)EzK^1Sq=bV1A!Psc`z~NV?1OKUifd` zyeWBkd1BRO)~s1FckbNCLJ@oF)G0Z8_Ns2sF{36FZD!%7fYAWBzb4 zYh)095<^Tt%?>0KLkhh)A{e6c=g%u3X7mOILBMd}H?J+e#zPX|wm8Hj_OWBff(gYC zOq(`M5)%`pb?eqLWXKT7$jDH^TeohNMT-_G*qH|E-;NzSR2ae8xd{mg5+5J0n*$Mu zgk$sO&AJ~9%a`}XbA zqi*BIjnc1QKLr^A2M-?9jCJhTQHBm3s=~m82@`a77$_W+LipCMT`TTH)L1QAw2<}d z*Gpz*W-y@#4jho?&6~@N88hV2p+h=C>TAoEEkn~|mz2SS2Me%uM$7b*t))wshAuTs zEyA{J*`gejANb%V#`f*oH73iAL2V#er;-X<+M%mMmGe zte>nQY}Kk&%3*wP6J!7W{Th>#k@$gx?%K6W1NH9RTb=gq-K(QC(U3DeERp{G`|BFC z0nj3bL76BrwqnH!%@~=*pClj*ZeoBYO`7OBX43`|$~3Uc8#it&)2B}tgd2?1#P{vn zR{(=BaG^jHEtvvoX=&25X;Vo}O;u3{LKwUVBjd!QQf%9{EtpU?1tTX|qehK%4YKai z)6*3YoA6$}dI_)r&?3e}nH{AIVN?Y;*jxx(uwa3T>e{udG;G*V2gfE2l+o3zSL-^1 zgz0I}pn+bZ*$9jlkafiO=+Q%WtPOxcAO;a83OmXjgGK=UW5r4B4FU=etEWViB`Zy2o=gA+VFMuu+2K+_A9j=@M6uiPA31WQa*h}=LWT_+ zCS%5ok>uoLUAs(wAfb?WK|QQpyS7xXUcFR5He>>L?a45$w*xMILC^mjuf8R$D%27!mUb=V&1d5K1*4FxHZH;;R!rA)!;D*oq{IeJ+qpTN5 zAme%T=+RnJ>7(U;g9+t-ziqc}-9mOe*Qik=J%K_EuX z|A?Yx)3BSZ&-$^&$NJ5m&4Ueh0c^Zn=1X57q2tDl)3O8+*EGO0g80n~`oi_sty@=p z_#R;X^qDV0Yu2o(|BoL(z6@_5p_C_fdYw9TBqkMyeO%uFCkvpk1N!izkLTgT zhij!Uf1c?x|IVE|OKfaxh{x-TO(3CM7z~gDZ(q=7>LR|>NuKfZw~@F43H9E*Ki6|0 zp`6Qr`($}A8^3K(f4C!Ya4LeZZ=sycIJ&QCpB-FmK71)D`vC%>h_u%VZ)<0^wfq+D z+1uy$xBGyf-`j8gT>H4lgv}@m+kKeQFKKo?+qrXRsrxAZTc5wh$J^)kwcjIgn7zBS z{EiMPNLZm<o%iUVJrzw!(H(sg|2kXWTkl}s)moJ_o=aZXp{r*S?`aJq4N zMMXvZRh~!_jo5D;;vJG5(mpX#KTLPnOoq!W%OL8*LZ*&=O0Xu&Ot)X;|NnoC4EzJf W@n>7t@^KFU0000A7M};Ftb@1I7rHhnbQnHQAWt3YrQbsB{ zog$~J6Jr!1y15-fr06nEl*_j7Z=KKM@&3FYpFcjI_viI~KR=(xJ1bzDkFNGAZ2$mt zec7Ht8voM|(?V{2CXXkjOdA16WaUTprc; z04IhQ#N$LI#kccZ0YE#?*OL`|Y>=yjAUAmc0Ki({<|Hz?sdTtLu_H??j^lB;FBVnH z4)T#kKACA&ekF!^)K)WUYH9>i8F!??s z_(Ex^gE(&?5=ou9z$cSZ5Ce^Th7y{+Sg!6LQ=mh7OSxPw?z>_n(bwO92yKAfRaGC%q}nM|HSz_DAXxA02O}U; z0q2k){r;H54}#&Uajb9!r~PhyMJijy=VTFCo=4W$tL^Ue{ptbN#s({i!ajG<;1_#uF}fm zM+&4(8zRQhnHlBpd5#%Vr?1ELcv;Io_u6lJ1kXg788JIpfs4>*<2|pG2+=y4g$fx9 zLeFHf$7nsAw^7s+2GyiPU^HJdigYP}jj{8tH3{_$k*!8;N}DpW8sR}SEQH*W(HIhu zNX*`=0WCE=n3lWxo-UQbkNEKjtmEoZW)F(5;ozAlZ= zr*f%Jgr8t5PDlfmv43GC6jB4+V{SZ#3c1{`a>oF$QybvgFz~G!?>7pf zC?9#WOjZv+Y?r;AY?D=9lg~g?zp@(;&JvWQNPS}%xgoGc5Pj?+mFFle?CK(=Y`=Kg z@2R4EkYKC7y52pLDESit2@KBYS+jv2z^&p@!zdtUxjNbvMX5nLuH!u`2z z=)8^oQTLAB2>^i^%6RE^=zotZuRfkhT;9eW{HGypOz|u%(+>O85yUf}wm|H1;0Q8P zjX$DQgnmEc#wWBI`kS1~0=c0-GU~mhX6JXs92vb%cQZPAqt2-@X*1a}BNbw0n;6n- z-a!HLN};zyCVCdCa4yX+qclTv*r5F!m_|VHN1-;f|4p+jYJZ!|fY>UtT;DMh^E`;X zN1fjLQ;j*+Xlq+JAP$jW@{HHgGSthMt%W~I&cp|P&-7Qkr7u9w>kbMA zY%0_T2b*UU?Z1|8Hqj_@oSVEChcjXRg1Y%TkFYdd1>?SIll#!vdE$L zM@~YQ#%zO2zmH?kJZYpNMcp#9sB%HqDn>|^0<(uT2~N+$j08Y)o4-`cP)8daec6Yo zgJ8Q=w|f7?bTqYSanR;1HM6rY0l;lG1f%k@b2+0yA?P~R!uO8800eoA>(72{A!bpl zcO}qClmQd>(`YSfP8DXY?frG@*!8e2NK#M9(;S+O#dY4;m^a6k#>EFpe6atWIOvS9 z=MD(==3)o)-qU+f7nZ)Nx3Jq=kP7?qq7dqA+<6;etJ996(OA}g!h+tbZs5QRhHQ?` zD!G>vP*RMo_t2!p!c(|4N_6Y|CR?rghk|{U1Oj$0W&v(Bu7)j2*&Yc$lg8{0i|3vU zpTKd2FtASTG0(?j3#)^ok1+%vBGZqeim|6Gf0WL!KLK3$JB5hA({i(6*1*bKn+SSx z=tA=nocq2I}m?(G3C}-!jtl#nA%5eX1{wwqD0p&O`(x zE>d>YYd+8b_oCcf-TpK0TY@rK#@)14J8|b-AEw+$i(wyTFAWI8zQ)PyF$_S9df$Vu zT!5LWmn~#nvZard*db8-+x}URmB?D1e?syhn%Vm1uu_G{*?A66`B}OL^<#@-q_JCu z#dQ(a4xG8Mt~)7w3~PiRoE&)bNL z+I_vcI@-y_0* z3gC`~YzJKhv)tNn%E@4$T+;?P22U0P@XRbuCLjP10Hd$RCo-#UQq#Z!zFylrZ@Po2 F{|5lJ?->99 diff --git a/content/images/rico.png b/content/images/rico.png deleted file mode 100644 index d2c49762b782a2cb98c19a1875031c1cfce10aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2756 zcmV;#3On_QP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XS000XS0e@s)kpKVy8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQW zX_Wu~3KdC2K~z{r#g_?iR8X#%jDQTQvMDlxNCa7;fXX^BIEsZLCCKQY zBQP?h0_s!=5oA%42oeaAfJuN5Vz!1XoxRf`o%EL8(%tF3J3tn){qw)>4q`-Ws-~u< ztG;^u-hKC;bMHOpKlh0M{9pOmjqROxpkKHM%HUuq*d(C*A0mu@$GG*cTVYH1S!lqE%!5+ZD=T4Ohj{g7`aq@i!`&skzVf^G1Xhw|q$pKGP z6m;~e?7sUTdHj!%9X|=HrylifZSWBHU3A{pH8;c9&+4~q1G;Hbq2h}B9B}R44ejXB$PEfc z#+G-X)ap^s27zBV(Ao;SR*R~C>_Xw92;|S3kAeje_h1o<=FUehNnO1T1wUrO)YJ@* z(}_B6xpv|ND7ts|J79nReP|e=IU)BWd&fVa*Bfx-E~7t#OK&SIgktVol=tj~a?YZn zN6&lE19BQD?%o5JhL6P6*f?%Y1H4u%>h|q}nlYg0*3IvLl@Y39%H<3upL_*h-(RRCd6JJU-*&6v90zdy34KZ&9XDKIxS!DBYV!WCE3-klgQ ztyzQWf%hXfY$PQ6zJk?UcW3{*I^e2j5T&F*Gh+snoS|S?9iY<@mGGQ8qT#kGSFgtP zFAt!mMh7Ri&uKKGcIQs01`P1MBk~+S?h_z+zkawjnt^yE8dj?fw`lC14!B&fBqTsH zZJN)4uCrE!gg{NhHH#KOw{v)a7}l*^iQ2t;Va?2hUC;oR z8=l*@QBUJSe}_f`BL%6F&P&->9ggDkY&dSRGmTk^tqWG2&ZlIGVZ%`sIvDC@%b@%8Qy9f!n7O|;2C1E* zW1~SU5mL{{6|K?KKwVk}ouD~Wr$RPpFv_0}rvo2;h}x%~LNQk$``HC3%_~G5qg61j zCkA4?8%nB{XsE|W;DHY}Wzl3b- zJ5bJ^4K25;BJ3f^*RG=oz56bVk3ELMUO^B)zZ9kAmC)aAMGcKrk?Jm}Dk`9O{dMGy znSi|ac0fZTHJquEC}{k8oegEza!~Sh6pBCEjpElgqIB^KkUlyYvd}@kz^&o(myZ~U z%2zi)9AK*;;{gOZ{p#Egc<1qVv|hv52#jdXx1s2ei|*Mj>Z{pHtC zU@)Viy#pm2FrP?BK>*>tgeq9MbSbii4#VXw+fYzvM>%I+#J0S)cI0Vw$dCIT#eaDP z(n(WL#k5p%du#48t|i43G5$m%$BO09F`~u&Lh$3pEs$89DCTnJvNfAr4ImEO=jY|2 zf;FHZs1L5pU5K>Q4CFXHkkIKI_7gJ}t_iDf_ACl_??D+?OEz;B6vCl|sov>85rdvT zk;u92Z>V7%$Ql@mv~Amw>$$;!fFIdcb-oRI<9yk{voEZzMFAbG`FTsWP8 zEV~QhmNuku8&aE_km`0Ljk22|lOa1P2?g&laG#z7b)R6r1DpVVbl`)(Lo;j`GFS&v zckRa2TTMu(p$jCDBn3$1+licI`o&9-av&|2RZaoQ8v1)&ShfZil2UQSV#gJ3M>1F9 zJg)+YOvz-Y3n@7{5P$YL1>bq;}v;D-hSh zs{sF>rtvt=@N(=Kls*0g3}gNP^PH!l9`!Ktxq8Wqm*M=e6G${#@Iy;0;^{;j$2leR zZRz9m9dW?`QTApW(o>MV_1y@jtfv0qgy-h zZNqI`I&=(WOexEA5peC?0qe>YP>&pmYlDU&Y2gyY#U&!4)`|pb!6_P!Vc(c0Ad0II zOEJoQWj&PlhoXqv=X1a?^GPU}5-E?*LgKfvxJU=0X*7~bbb!)#kk^9_{%`8Q*UlTb zxOX3hOnnN+k9>!7jkj^8xedqM?Ktdg#}R@0c6{A*8z-rf8O#5K%0WY5 zees1m4hT4ST(_~v2t}%hDV_YpY@GV=Q$&|5@Rhd_yBk_?Fs%TR=`*3F8eSa`SOE>w zNjOBLgpEba+dC0crod^v6(_V#L@9}yXdU=Yu0&$=3FNb6S5w)n6tGU?ojCa|U|F&l zS_Wu-pT4*_Wd=@u7Ky_-#n_`Z;m~(UC>}czdWuqE??4dNK0F$=9Pm01q$v}pvX{T<|f!#&rLiaR`v;jc-%CIXU#{>GtVP; zP6TqopF>`F1f-LvLnAExLl41A1Ky85@(pk=+&pkJ(GgGh9H>~bi$;w@?o1wHCrp8f zMbAbD>iHciyeo2?H~}3`xSBwfQgrK%3KkA&&mbQ%a-9fqqNaZ9r%#9N) zL$Gar3x?stdH(0OCWTAMF@)_lFIj?HJQoP>iCpRF(6PAGP@T+dv=E_aR0j|ao5H=0 z2okCb4~K~*ywlLH;X3vWY+JU#LX9wTbq#?rgd?1p^}+uhME?c{{8rX*+mXHi0000< KMNUMnLSTXqqZaT0 diff --git a/content/images/rico16c.png b/content/images/rico16c.png deleted file mode 100644 index 264bcf862e1f87a17af791ba0a00bbf7fbbc1cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmV004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XQ000XQ0h0Lxr2qf`8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQW zX_Wu~0X0cPK~z{r&6GhFf-nq3x&J9#c@EZ|!9%!rfh3Z?FicY_EtuzjLOYWT^y%74&8quUAyin{fE}9H;61Y75NB2M}?ouz7@)T)R0mfIfLt&}0`D;<5k& z@zMY(ZLUzi7wLOA05quL$^hwDF@V2GG!Bq{&cxq0fM~JTX#sLQK-V^a>@n}WrpG`$ z)d5(e)fxK=1{<3IY6xo65C_Y>-!D)d0QDH4^u);F0Qbl50qCEQZ-~wH9`ww!H$)gf zz8R=DbdUI=FxdbRsP{0v!Su}o2+U*L#`W9i5Q5SX|58_))G`85xE4+o$P zmh$VKqTeqF-hiN18@R%KLk4I4xLAWWfI>|~wE@uvq)?ZmN{pyEDAY4{3mIw-3iZfW aH4GnAS$2#8MAjVu0000004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00009 za7bBm000XQ000XQ0h0Lxr2qf`8FWQhbW?9;ba!ELWdLwtX>N2bZe?^JG%heMGBNQW zX_Wu~0%=J^K~z{r&6d%TgD?z4DJ7+(l$4TED21=9;y%&|x4V{%j16|~n9MP=L%@>u zS$3RE|LS@@pX=*>UthQBV=`-)KVbg&tT|=&25<`i?1Z4M7CknfWIkgcww{6WvM%4t z`n9f?igmTr6#%FfyjTc=pjPr#5`=Xj0f@)|(4vu$P; zHn96;02({MNwO=p(2aX}Tn3q&pK@`38-Rrzfbp$0jw+1VdN()t8sMZDB>)~)+%L#& z#=wx9nd3UxR6iI?c*a=%6%+v1rU$^;Xbsx{nla6rrkm(z01R>fB#r=h#}HqQ3ji|6 zmN~`za0ne2+^YcK9nV#aLud(5A92S3+ynMv

y(oCAYaoJ%msVeJU=CjjmKP^bq% zWe8iA4M0o47ii}Q0AdmVWOqT}b1Ob-CPemg0GkZ~T1k5ez|A=$6)K5GLEBvToH z#ypaD5Ob$a-2oPR6TsWA0=VJ{*MmsQR{*5V)FXHK3?cw8K@2R%ApqMtkDLS6F`B7B zxVBCh1Z$#Wo;&kwz&j*rJSBO-4#c+m8H+ofRbY3;PQ;o7@eN1-j&BKgNH0?YjVf6| zi3SG%yb^?WW2@;t^78znzgMY+oe_CnAr!^u#rrRe(y$uj%?KSfLnWi7B WOkh{4oImvd0000renderDevice->getCameraToWorldMatrix(); - cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.lookVector()*2; + CoordinateFrame frame = usableApp->debugCamera.getCoordinateFrame(); + if(button->name == "CenterCam") + centerCam = true; + else if(button->name == "ZoomIn") + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.lookVector()*2; + else if(button->name == "ZoomOut") + cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) - frame.lookVector()*2; } @@ -451,7 +456,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-77, -90); instance->parent = dataModel; - instance->setButtonListener(new ForwardButtonListener()); + instance->name = "ZoomIn"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")), @@ -462,6 +468,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-77, -31); instance->parent = dataModel; + instance->name = "ZoomOut"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft.png")), @@ -472,6 +480,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-110, -50); instance->parent = dataModel; + instance->name = "PanLeft"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraPanRight.png")), @@ -482,6 +492,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-45, -50); instance->parent = dataModel; + instance->name = "PanRight"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraCenter.png")), @@ -492,6 +504,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-77, -60); instance->parent = dataModel; + instance->name = "CenterCam"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp.png")), @@ -502,6 +516,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-105, -75); instance->parent = dataModel; + instance->name = "TiltUp"; + instance->setButtonListener(new CameraButtonListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown.png")), @@ -512,6 +528,8 @@ void initGUI() instance->floatRight = true; instance->position = Vector2(-40, -75); instance->parent = dataModel; + instance->name = "TiltDown"; + instance->setButtonListener(new CameraButtonListener()); } @@ -679,6 +697,17 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.rightVector()*moveRate; } app->debugCamera.setPosition(cameraPos); + if(centerCam) + { + CoordinateFrame frame = CoordinateFrame(app->debugCamera.getCoordinateFrame().translation); + if(selectedInstance == NULL) + frame.lookAt(Vector3(0,0,0)); + else + frame.lookAt(((PhysicalInstance*)selectedInstance)->getPosition()); + app->debugController.setCoordinateFrame(frame); + centerCam = false; + } + } @@ -985,6 +1014,7 @@ void Demo::onGraphics(RenderDevice* rd) { LightingParameters lighting(G3D::toSeconds(11, 00, 00, AM)); app->renderDevice->setProjectionAndCameraMatrix(app->debugCamera); + From e650d4afbc0e90720774d836b6ad6658cf2c3f88 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Wed, 25 Apr 2018 05:58:33 -0700 Subject: [PATCH 23/25] Removed useless images --- content/images/7.ico | Bin 4286 -> 0 bytes content/images/PlayDelete.png | Bin 2630 -> 0 bytes content/images/PlayDelete_dn.png | Bin 2973 -> 0 bytes content/images/PlayDelete_ds.png | Bin 2158 -> 0 bytes content/images/PlayDelete_ovr.png | Bin 3602 -> 0 bytes main.cpp | 4 +++- 6 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 content/images/7.ico delete mode 100644 content/images/PlayDelete.png delete mode 100644 content/images/PlayDelete_dn.png delete mode 100644 content/images/PlayDelete_ds.png delete mode 100644 content/images/PlayDelete_ovr.png diff --git a/content/images/7.ico b/content/images/7.ico deleted file mode 100644 index 5423a6a0dbcaf755c2dd01c3fdd91809a72d3ef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 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 HU!VUI(y$bj diff --git a/content/images/PlayDelete.png b/content/images/PlayDelete.png deleted file mode 100644 index 8b049d149fa693b76aa49912d285b0a1ae78e0a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2630 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 T$nArvzXq0vL@hlRge(3JpV+=Z diff --git a/content/images/PlayDelete_ds.png b/content/images/PlayDelete_ds.png deleted file mode 100644 index 49b6c2fb5072baa9e2e2b1b1836dba8fbf87e1f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2158 zcmV-!2$A=RP)^md3m`z zb?TJk9%I}C{F^LbTCVMY)mS8;tMR~n=rN{~Gx6!ur`?4M7u?mWSKYO1*IZj$n_h!C zt}QGqxVgDGH#$1%`uh6x_xAR7ckbLd1&s_um&z~;WKNm8QpT%cK>{!yfg3pV)zZ?U z42_MADG0`$J9qTj#ful+;NYOUb?a8-H$V;#54-c{&ujQ$xU#a+UA}x-!PeE)MKp^P z04eX=df>o;hlBJPCo6nHZtiAvtQf}Z<@59N5fFFp-qn!uoBulJv$L~qYHG@zJ$qI| z4QujpJx2mvU0wPcEFL;^NFyYpK*ozfAmg}6#v~8HfS(y-FWM1idFJ}{>#nh}F#;|v zElssZ$N|Twudi2-9*c|e&LkO|qp=9U?ef3^Iw6E%K-oQn7Um`;dk^jT>%YU_cq$ zzkk01V8MVvlOz@yUR_R%@O>&mZf>ql#LL34h$aaw_mjnFt)Zbo6M`&< zInK>?U=t4o*zVoC%{RXjCLak3@ka(QKR;iy4rYQt65h$lNjE+|u9kz%kPICi9cni) z2ZLtv06Tj0s4|?Al46OnBQT4F=1*k&M0OEoCLS6Z(#(toa%N^m!wY+a7yXhD#vI^a z4N%O>;&}%eC4ofu4>0af0A-c;JmG4XdV71LX0z!J21iClA^@={*dw&)4KGA{XcJAs zVtRVIOHEBR)BZ6uKvEy?!YW`S$ZpL4Zr{GGIy9h|b7yC#N~N{6RlypYFqo8-<>Q)Gd(@6UI;;ewl7+^CdjMzE18_VKxU8%!9RT#YrLG`wk#7>r(rbe>(_k_?JKN>tohAD*daJc$v3Ve2C3A@mi}!lO|AGMW36lauwx{a%8+9V@_X29TEljtOChs)6nRNymdW z2`gsJK%;2YN}F}u+z-=$gF)uAPlKQ?#=u9u4+Pv68B44X2KoMALi9(+0zgmPESz{lx@`Mg{3?Ruu zD@ACL0jyy&BnceL6s@rb@F2NcHG8usA3g5#I>G_O7 zSVf!s20)mDMHT^rwD{aW#f*jWyc5(hXyV$z(O{(RdV#jzyFsv+j0fcpV}=m)Fe<(M^$p+8>E z(LM_>a55Gh!Xyje9;%SP#bOsD7X7UWP$v4yI&9M+A+t^z{Sj9G&KK4K%h(YK#Rof~ zg+1TqX6OpCqMPxrj4%kuZ@jFF?4WwPQtETCgf0Qgk;K4iNG|JGYI@%JTA!`udN5%njv1s<|YC5l8i6B9sT8d(JTHI28W3N|7{UVSzAq? kF>PqaD)9f}{tXZCZ@_wiY*>UK!vFvP07*qoM6N<$f|_{XG5`Po diff --git a/content/images/PlayDelete_ovr.png b/content/images/PlayDelete_ovr.png deleted file mode 100644 index c0a49d8b81c1655c78901c1f4c0824c0cd0a7baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3602 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 hU?!n#YksetInputCaptureCount(200); @@ -1342,7 +1344,7 @@ int main(int argc, char** argv) { HICON hicon = (HICON)LoadImage(GetModuleHandleW(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE); SendMessage(hwndMain, WM_SETICON, ICON_BIG, (LPARAM)hicon); - + SetWindowPos(hwndMain, NULL, 0, 0, 800, 600, NULL); app.run(); return 0; } From 10f3a25c5468a4f1d40e957f0a7af916e59b547a Mon Sep 17 00:00:00 2001 From: andreja6 Date: Wed, 25 Apr 2018 14:17:33 -0700 Subject: [PATCH 24/25] Changed how selection boxes are rendered --- content/cursor2.png | Bin 0 -> 637 bytes main.cpp | 45 +++++++++++++++++++++++++++----------------- 2 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 content/cursor2.png diff --git a/content/cursor2.png b/content/cursor2.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f972a033e521424792b5a563a5095d04db5315 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk+G7#M$f zx;TbZ#J#;4o%hN?#N}d7Q>KC3vxDZr-+eu=bDU8VS(e*(_v)on$?A%)gybv#@EjJ9 zKOkY(^YAe3h=`-_FLtLb>%Y%*OsnMO;fDru{FZNj`Ffh1zd_i-?(7~*_xSB!Dw;NS z?PQ*J{`qU;58rKU^1LNh&oF-Qv`Dh=_+zcdoX51D@vNAf{-C~?{YqrEOHXKx(SmbQ z%1LV;U1ltuCMTFIs>^mIvIr=#MJgbDrJ!Nh#Uh8fs%}RjTwgPmM)h}W?0VVoOL6DX zOiQI>T6yeOmVT9Pi`#Co7O0|CZ@G8Yk&m0IVl#pIUnFfm76xVnEzVqT1XNwJFnxN^ zdIKOUE_T_W4vFngZYw9*n7w zdIjI_dnmV6F0lT_h2%bEyPCtcS*A(T&mXwBT=`N(QSD;(V)q)ed3W|+ZZ3EKlWkMU zVO!u{V>&P4&B4`zb3d{q>(A?b(Wfp^Z6x~<#LYh@nE(H``QJI|2H!ju_b!wF&3!Cx hul2kHp6eez^G|k`Ev(W$s|idh44$rjF6*2UngDLF9UTAw literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index af16561..6e1e94a 100644 --- a/main.cpp +++ b/main.cpp @@ -812,7 +812,6 @@ void Demo::onUserInput(UserInput* ui) { mousex = ui->getMouseX(); mousey = ui->getMouseY(); mouseButton1Down = ui->keyDown(SDL_LEFT_MOUSE_KEY); - messageTime = System::time(); if(ui->keyDown(SDLK_UP)) { forwards = true; @@ -914,28 +913,28 @@ void drawButtons(RenderDevice* rd) } } -void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos) +void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos, CoordinateFrame c) { //rd->setLight(0, NULL); //rd->setAmbientLightColor(Color3(1,1,1)); Color3 outline = Color3::cyan();//Color3(0.098F,0.6F,1.0F); float offsetSize = 0.05F; //X - Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear()); //Y - Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize-0.1, to.z - offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, to.z - offsetSize))), rd, outline, Color4::clear()); //Z - Draw::box(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); - Draw::box(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); + Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); mode = RESIZE; @@ -1057,7 +1056,7 @@ void Demo::onGraphics(RenderDevice* rd) { Draw::box(c.toWorldSpace(box), app->renderDevice, part->color, Color4::clear()); if(selectedInstance == part) { - drawOutline(pos2, pos3, rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2)); + drawOutline(Vector3(0+size.x/4, 0+size.y/4, 0+size.z/4) ,Vector3(0-size.x/4,0-size.y/4,0-size.z/4), rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2), c); } } @@ -1189,7 +1188,7 @@ void App::main() { go = Texture::fromFile(GetFileInPath("/content/images/Run.png")); go_ovr = Texture::fromFile(GetFileInPath("/content/images/Run_ovr.png")); go_dn = Texture::fromFile(GetFileInPath("/content/images/Run_dn.png")); - cursor = Texture::fromFile(GetFileInPath("/content/cursor.png")); + cursor = Texture::fromFile(GetFileInPath("/content/cursor2.png")); fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt")); fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt")); sky = Sky::create(NULL, ExePath() + "/content/sky/"); @@ -1341,10 +1340,22 @@ int main(int argc, char** argv) { //SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD); SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app); - HICON hicon = (HICON)LoadImage(GetModuleHandleW(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE); SendMessage(hwndMain, WM_SETICON, ICON_BIG, (LPARAM)hicon); + + + SetWindowPos(hwndMain, NULL, 0, 0, 800, 600, NULL); + HMONITOR monitor = MonitorFromWindow(hwndMain, MONITOR_DEFAULTTONEAREST); + MONITORINFO lpmi; + GetMonitorInfo( monitor, &lpmi); + + int widthMON = lpmi.rcMonitor.bottom; + int heightMON = lpmi.rcMonitor.right; + + //message = Convert(widthMON) + ", " + Convert(heightMON); + //messageTime = G3D::System::time(); + app.run(); return 0; } From 827e610b8c5235eb34957fcb33118aadd6e5cbd3 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Wed, 25 Apr 2018 14:34:27 -0700 Subject: [PATCH 25/25] Added selected in button class Basically active, it will probably be renamed --- BaseButtonInstance.cpp | 1 + BaseButtonInstance.h | 1 + ImageButtonInstance.cpp | 7 ++++++- ImageButtonInstance.h | 1 + main.cpp | 37 +++++++++++++++++++++++++++++++++++-- 5 files changed, 44 insertions(+), 3 deletions(-) diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index fac54ed..5259e99 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -4,6 +4,7 @@ bool floatBottom = false; bool floatRight = false; bool floatCenter = false; bool disabled = false; +bool selected = false; ButtonListener* listener = NULL; BaseButtonInstance::BaseButtonInstance(void) diff --git a/BaseButtonInstance.h b/BaseButtonInstance.h index 6cff6bf..688299c 100644 --- a/BaseButtonInstance.h +++ b/BaseButtonInstance.h @@ -16,6 +16,7 @@ public: bool floatRight; bool floatCenter; bool disabled; + bool selected; protected: bool mouseInArea(float, float, float, float, float, float); class ButtonListener* listener; diff --git a/ImageButtonInstance.cpp b/ImageButtonInstance.cpp index 58a579f..d5c9a85 100644 --- a/ImageButtonInstance.cpp +++ b/ImageButtonInstance.cpp @@ -49,6 +49,7 @@ ImageButtonInstance::~ImageButtonInstance(void) image_dn = NULL; delete listener; listener = NULL; + selected = false; } bool ImageButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd) @@ -93,7 +94,11 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse positionRelative = Vector2(rd->getWidth() + position.x, position.y); } int renderimage = openGLID; - if(disabled) + if(selected == true && !image_dn.isNull()) + { + renderimage = openGLID_dn; + } + else if(disabled) { if(!image_ds.isNull()) renderimage = openGLID_ds; diff --git a/ImageButtonInstance.h b/ImageButtonInstance.h index ea73fed..eaad788 100644 --- a/ImageButtonInstance.h +++ b/ImageButtonInstance.h @@ -11,6 +11,7 @@ public: void drawObj(RenderDevice*, Vector2, bool); Vector2 size; Vector2 position; + G3D::TextureRef image; int openGLID; G3D::TextureRef image_ovr; diff --git a/main.cpp b/main.cpp index 6e1e94a..d7c01eb 100644 --- a/main.cpp +++ b/main.cpp @@ -251,6 +251,35 @@ void CameraButtonListener::onButton1MouseClick(BaseButtonInstance* button) } +class ModeSelectionListener : public ButtonListener { +public: + void onButton1MouseClick(BaseButtonInstance*); +}; + +void ModeSelectionListener::onButton1MouseClick(BaseButtonInstance* button) +{ + CoordinateFrame frame = usableApp->debugCamera.getCoordinateFrame(); + + + for(size_t i = 0; i < instances_2D.size(); i++) + { + if(instances_2D.at(i)->name == "Cursor" || instances_2D.at(i)->name == "Resize" || instances_2D.at(i)->name == "Arrows") + { + BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); + button->selected = false; + } + } + + button->selected = true; + if(button->name == "Cursor") + mode = CURSOR; + else if(button->name == "Resize") + mode = RESIZE; + else if(button->name == "Arrows") + mode = ARROWS; +} + + void initGUI() { TextButtonInstance* button = makeTextButton(); @@ -394,11 +423,15 @@ void initGUI() instance->size = Vector2(50,50); instance->position = Vector2(15, 90); instance->parent = dataModel; + instance->name = "Cursor"; + instance->setButtonListener(new ModeSelectionListener()); instance = makeImageButton(Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png"))); instance->size = Vector2(40,40); instance->position = Vector2(0, 140); instance->parent = dataModel; + instance->name = "Resize"; + instance->setButtonListener(new ModeSelectionListener()); instance = makeImageButton( @@ -409,6 +442,8 @@ void initGUI() instance->size = Vector2(40,40); instance->position = Vector2(40, 140); instance->parent = dataModel; + instance->name = "Arrows"; + instance->setButtonListener(new ModeSelectionListener()); instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/SelectionRotate.png")), @@ -935,8 +970,6 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear()); - - mode = RESIZE; if(mode == ARROWS) {