From 3f222b75d8f85f4a2835dbd828b6962f7e3a7120 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 24 Apr 2018 18:01:26 -0700 Subject: [PATCH 01/11] 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 02/11] 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 03/11] 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 04/11] 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 05/11] 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 06/11] 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 07/11] 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 08/11] 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 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 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 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 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 09/11] 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 zcmW+(cUTkI*PclynG}kU&=RFZ5REhu6=pz+Eb0iTSXKhk>>wh^WHpkMKF_YNe2Lc zxh!O9xFHG+XD*FmxYz%>A=wZ}iO6yU0IoGHAmt6|2+h{p!UO0BkrKbbk{lNFcubB;p;W_oAAFb;B5)$P4T8X>JZT@`SkFf$QuduL} zkLrG0`U%o4UJNNiL!nyC)(rO#UN@FXTp)4Jt^lonCB3nM6x#@Xddo0J&wqGHtUcAU% z92dvEu_u$a-QIy$(eRL$hRtjuru9o!tdL9K^&IsI^ALUJbZPHcE*qL-VuD9$bA3i! z@7up;7(i>Nn7_}9IDX7Y*&P@EIdGn^{@xyM_EmRw;IA;<+9M`?|zH|H;*M5;OF@510adRFfIu&QrwdoMUQ-KI}Nq2Uk~A<%}q^; z7uai!mUOVwub8Z9t*3{blf8Zo{h>i`0p)L83i<9eaGL(Ba zi<7nj$6EAvGuGi9ON;n|J zwY$gz(Y@4^9$*iyG7@a~XDC9xGWf8x=t_Xikg|d=kkS^8@U=g_K+*R_sbGQ0DzRA} z&~jttQg4pg)>`cLI71r~jZJ(lm>djHyL}Dcp-Ncit7wUiE zbMsedHqt|LC(eJPHm!mox~D3jmN>u3SR#$xt#KQ57d?-{0uSA=^j2xgXw6gm;amwR z=q|3H5#9NG^{5!23F4@3{sl!GlsEb5@0Ahaj=Jyc;&1nt>~9+3ahG%>TWC?Zi$c+J zXuT@?KGEhYb6CV_qqMg9YB>8QhfJg1xCof}2gfygt?bzmc4Xz5Xw6_k&%0-Y%Z5RU zqsmSNcR~8;_fylOc|)dJr)X@bUw=Ijs+F>SutwhpX~tIjCI0@j#s{P5orgr^X; zS`O^Ln^8E_mS+k@&)q1Vph64N#gBl%w%TjaJT6Ar=(oSP%tCnL{XZ=@xk6HPDG+re zyibox%eE%$?svlN5CH#{AUJ9WaV9Ys4NK>i!@z)o8+(hhnu1kxy+xqO>o z#q{JChnA}Wx!kuE>&ZKPs}Ps{XfOTug)n)pC}+jaPK}1r+BJFhY|ot&Gkyw@J)JFV zbVtTyGNRd-V49C!rE(v3OS%1UIyxJKZtr_}&0Uw862oy50lXB8rT>kT$L6Lf{ny}r zQ_=IcySiEF)*cT7cC%VR?J(0`GNu9L$1E+OcIi+cG3wcBAb^fDLed z9rhjWpw;1WQd8+Jc&Zy&?k4Vf)k4ew`P`f`KZ*@eG5AKhRSLU5c~e zGU`dnLd(l6%45uAA{8g&vq)y^1-UXy`eKa-E&qG8_RA+W>Z+g|v}J4UYH?k+M#eXj z)nY>LUv@ zC597w`J!7gk#NbI%*ms@oXY*Cq~Qe-k#Q(_J%PSTwF%|X!ii7WTeVqW`65*|QbMz5 z=MNXcjrS;&!?&%fowL{tR?-POg<-SjXv-&-B==DU!m@BOUwWI?AA&P9ta$&>%}p~W z*q4JRz~bsp(KSuUrcpilK*6jhkg`wTl=H8)60sB+i_C#OCzh+x`8I&N4TLOf>4f^opaKK&xWC^dVzWB?S!h zGZm#FMwb26(XekTCc!*HAhTJ!q|0Zcs~s7wd4k}3Wb=qR&7U*XA+gk0)wnIl(2c{t ze8Oh3udFJ4^@=-fX(>B4*W=@XoP`{LRAsYAwJt;`BNw|Yl%CpymCXi5jj5H@)qhC* z>bHqK8^AOn8=bb$#-hfcvkyFE6uC_Y4EUpJN#^)rjLaSWgnhWBF>jeC_BoI-0M#4f zJ4$)PrqooqMC0X9>9e_qIJ_zx6^p5V&F${$LJr3Hapoa&nE-({0ILdCibU?gA_5a! zH_GSU3)AGBHRe6W*Py`8JZqAC*i}Gz@oW3e?u0!?qcow#9|RlHl{;}Bo)2bLsL$7l z%PLwm71!F6sob%af!3G_0CGjdw;vxrTBjk5dM{9?Fh;F~ZIZ;8N%9UsEBwiiNa7e! z!w(QCj$#GoU7;zZh1L{eGh@j&pyz2+kSBh^NKa1?0p;$=K~k@9p@*B8123J$# zNw)arZXm#@-&l*h3%c8C`8<8bc5>kUt!r#9$JU0{#l^S zZH2RuvIz?J6n+YbR7!_eM`iactbA=kEq7PFgG`<_u~qRyt{KaT?+XB{_9(*To@${B%6xPQ~?2;qJ7-}W0lIG zXPP2%Mjles_!RXwzXuQ4kSkgSIqTs-w#ALxZ09v_39!)=JjQSm4fAF?)ETQUWch#I zweb+!kTt!>MHLi;MgkX1i@e|$U5Vll%%AxB9%<|m>`Bm?jQSMwUM(d2y#`$lUPM+~ zHDUN`c4+%X%|!z9!GVT!o`KOWb5wK&44$d>24c}ZJ*f0TLo}8kt|G495|(t&2ThV$ z)99|~b)yE#EiyJA_(`%|(??m~xy$JhvYHxZb-e1bYsv)WRX25;EA=qjFs*A71@q9VgBZSeb`H#W2(=l9ERI6#YY-w zLoM6w9{$((Z`&xBsmKoRq&t}mrDHJ>Ig$N;nITN7VM4YXGdkska3ifTdXjlkM?HaO z7bo?)phy?MKul^61AWtKMFqyL=NDX5RvN^{iz>TPbA5YwIHZ@}r+5l$0e5XU4BLuhAdfXh((H95U40;O6F3dXf)ay<}v343ax zjv29f9+}IMNUf<>ZvoFBq=aJjA|WdaD#gE;MLEM)tH-og4kZB`xLWS3xwq|ok67NV z`D^U{i>ti2`uYbC6-R0oS348OmUx#DOYkxdx{c~FCze^U3%Rg17c0wRbh6Bpg^4}S zUK}jhce)575DdoI@_nNtt9kcvcq4gOI7N}$yH{pDfo>F&JN>CKJ|@m1P$KrY`TN-NT{XMeRf(Ak1P+DVpnq~3Y3lzO{o z#`BcMltY2gR^<`z;`Xx 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 10/11] 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 11/11] 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) {