From 39f68e1acc415acf6b899306cf3b2a39a4274700 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 2 Jun 2018 14:54:15 -0700 Subject: [PATCH 001/105] Removed many useless variables --- Globals.cpp | 2 +- Globals.h | 1 + main.cpp | 60 ++++++++++++----------------------------------------- 3 files changed, 15 insertions(+), 48 deletions(-) diff --git a/Globals.cpp b/Globals.cpp index 3cc0e67..365a13e 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -5,7 +5,7 @@ int const Globals::gen = 0; int const Globals::major = 0; int const Globals::minor = 4; int const Globals::patch = 2; - +bool Globals::showMouse = true; Globals::Globals(void){} Globals::~Globals(void){} diff --git a/Globals.h b/Globals.h index 8c6e277..40175b4 100644 --- a/Globals.h +++ b/Globals.h @@ -7,6 +7,7 @@ public: Globals(void); ~Globals(void); static DataModelInstance* dataModel; + static bool showMouse; static const int gen; static const int major; static const int minor; diff --git a/main.cpp b/main.cpp index 6c710b2..e28cc77 100644 --- a/main.cpp +++ b/main.cpp @@ -40,45 +40,22 @@ static DataModelInstance* dataModel; GFontRef fntdominant = NULL; GFontRef fntlighttrek = NULL; Ray testRay; -static bool democ = true; static std::string message = ""; static G3D::RealTime messageTime = 0; static std::string tempPath = ""; -static G3D::RealTime inputTime = 0; -static int FPSVal[8] = {10, 20, 30, 60, 120, 240, INT_MAX,1}; -static int index = 2; static std::string cameraSound = ""; static std::string clickSound = ""; static std::string dingSound = ""; -static G3D::TextureRef go = NULL; -static G3D::TextureRef go_ovr = NULL; -static G3D::TextureRef go_dn = NULL; -VARAreaRef varStatic = NULL; -//static float dataModel->mousex = 0; -//static float dataModel->mousey = 0; static int cursorid = 0; static G3D::TextureRef cursor = NULL; -//static bool dataModel->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; -static bool centerCam = false; -static bool panRight = false; -static bool panLeft = false; -static bool tiltUp = false; static const int CURSOR = 0; static const int ARROWS = 1; static const int RESIZE = 2; static POINT oldGlobalMouse; - static int mode = CURSOR; bool dragging = false; -Vector3 cameraPos = Vector3(0,2,10); Vector2 oldMouse = Vector2(0,0); float moveRate = 0.5; Instance* selectedInstance = NULL; @@ -86,7 +63,6 @@ Instance* selectedInstance = NULL; Demo *usableApp = NULL; Demo::Demo(const GAppSettings& settings,Win32Window* window) : GApp(settings,window) { - varStatic = VARArea::create(1024 * 1024); hWndMain = window->hwnd(); quit=false; rightButtonHolding=false; @@ -452,14 +428,15 @@ void Demo::initGUI() button->name = "Duplicate"; button->setButtonListener(new GUDButtonListener()); - - ImageButtonInstance* instance = makeImageButton(go, go_ovr, go_dn); + ImageButtonInstance* instance = makeImageButton( + Texture::fromFile(GetFileInPath("/content/images/Run.png")), + Texture::fromFile(GetFileInPath("/content/images/Run_ovr.png")), + Texture::fromFile(GetFileInPath("/content/images/Run_dn.png"))); instance->name = "go"; instance->size = Vector2(65,65); instance->position = Vector2(6.5, 25); instance->setParent(dataModel->getGuiRoot()); - instance = makeImageButton( Texture::fromFile(GetFileInPath("/content/images/ArrowTool.png")), @@ -614,7 +591,7 @@ void Demo::initGUI() void Demo::onInit() { // Called before Demo::run() beings - cameraController.setFrame(cameraPos); + cameraController.setFrame(Vector3(0,2,10)); dataModel = new DataModelInstance(); dataModel->setParent(NULL); dataModel->name = "undefined"; @@ -721,15 +698,6 @@ void Demo::onInit() { void Demo::onCleanup() { clearInstances(); - go->~Texture(); - go_ovr->~Texture(); - go_dn->~Texture(); - go_dn.~ReferenceCountedPointer(); - delete go_dn.pointer(); - go.~ReferenceCountedPointer(); - delete go.pointer(); - go_ovr.~ReferenceCountedPointer(); - delete go_ovr.pointer(); sky->~Sky(); } @@ -806,15 +774,16 @@ void Demo::onUserInput(UserInput* ui) { if(debugMode()) message = "Debug Mode Disabled"; else - message = "Debug Mode Enabled, Soon to be depricated"; + message = "Debug Mode Enabled"; setDebugMode(!debugMode()); } } - //if(ui->keyPressed(SDLK_F8)) - //{ - // messageTime = System::time(); - // message = "FPS has been locked at " + Convert(FPSVal[index]); - //setDesiredFrameRate(FPSVal[index]); + if(GetHoldKeyState(VK_F8)) + { + messageTime = System::time(); + message = "FOV Set to 10"; + + } //} //dataModel->mousex = ui->getMouseX(); @@ -1111,7 +1080,7 @@ void Demo::onGraphics(RenderDevice* rd) { rd->pushState(); rd->beforePrimitive(); - if(showMouse && mouseOnScreen) + if(Globals::showMouse && mouseOnScreen) { glEnable( GL_TEXTURE_2D ); glEnable(GL_BLEND);// you enable blending function @@ -1381,9 +1350,6 @@ void Demo::main() { UpdateWindow(hWndMain); // Load objects here= - 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/cursor2.png")); fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt")); fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt")); From 0cf7813bea2768214fcff06fb6998cdfd7e1188e Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 2 Jun 2018 15:24:32 -0700 Subject: [PATCH 002/105] Made mouse cursor not flicker --- CameraController.cpp | 6 ++++++ CameraController.h | 1 + Globals.cpp | 2 ++ Globals.h | 2 ++ main.cpp | 5 +++++ 5 files changed, 16 insertions(+) diff --git a/CameraController.cpp b/CameraController.cpp index a7c78bf..567f089 100644 --- a/CameraController.cpp +++ b/CameraController.cpp @@ -196,11 +196,17 @@ void CameraController::update(Demo* demo) } if(rightButtonHolding) { + Globals::useMousePoint = true; + Globals::mousepoint = oldDesktopMouse; POINT mouse; GetCursorPos(&mouse); pan(&frame,(mouse.x-oldDesktopMouse.x)/100.f,(mouse.y-oldDesktopMouse.y)/100.f); SetCursorPos(oldDesktopMouse.x,oldDesktopMouse.y); } + else + { + Globals::useMousePoint = false; + } if(GetHoldKeyState(VK_RSHIFT) || GetHoldKeyState(VK_LSHIFT)) { moveRate = 1; diff --git a/CameraController.h b/CameraController.h index 8fd23a3..c6c6ccb 100644 --- a/CameraController.h +++ b/CameraController.h @@ -2,6 +2,7 @@ #include #include "Instance.h" +#include "Globals.h" #include #define CAM_ZOOM_MIN 0.1f diff --git a/Globals.cpp b/Globals.cpp index 365a13e..13d4520 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -6,6 +6,8 @@ int const Globals::major = 0; int const Globals::minor = 4; int const Globals::patch = 2; bool Globals::showMouse = true; +bool Globals::useMousePoint = false; +POINT Globals::mousepoint; Globals::Globals(void){} Globals::~Globals(void){} diff --git a/Globals.h b/Globals.h index 40175b4..db0e4b5 100644 --- a/Globals.h +++ b/Globals.h @@ -8,6 +8,8 @@ public: ~Globals(void); static DataModelInstance* dataModel; static bool showMouse; + static POINT mousepoint; + static bool useMousePoint; static const int gen; static const int major; static const int minor; diff --git a/main.cpp b/main.cpp index e28cc77..8ef7617 100644 --- a/main.cpp +++ b/main.cpp @@ -999,6 +999,11 @@ void Demo::onGraphics(RenderDevice* rd) { } } + if(Globals::useMousePoint) + { + mousepos = Globals::mousepoint; + ScreenToClient(hWndMain, &mousepos); + } LightingParameters lighting(G3D::toSeconds(11, 00, 00, AM)); renderDevice->setProjectionAndCameraMatrix(*cameraController.getCamera()); From fb3513c6f64e6cd1aa224b2444c903f362d934e3 Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Sat, 2 Jun 2018 19:22:01 -0400 Subject: [PATCH 003/105] WindowFunctions.cpp added for annoyingly long win32 stuff. --- WindowFunctions.cpp | 23 +++++++++++++++++++++++ WindowFunctions.h | 4 ++++ main.cpp | 21 +-------------------- 3 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 WindowFunctions.cpp create mode 100644 WindowFunctions.h diff --git a/WindowFunctions.cpp b/WindowFunctions.cpp new file mode 100644 index 0000000..0202a27 --- /dev/null +++ b/WindowFunctions.cpp @@ -0,0 +1,23 @@ + +#include "WindowFunctions.h" + +bool createWindowClass(const char* name,WNDPROC proc,HMODULE hInstance) +{ + WNDCLASSEX wc; + wc.cbSize = sizeof(WNDCLASSEX); + wc.style = 0; + wc.lpfnWndProc = proc; + 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); + wc.lpszMenuName = NULL; + wc.lpszClassName = name; + wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); + if (!RegisterClassEx (&wc)) + return false; + return true; +} + diff --git a/WindowFunctions.h b/WindowFunctions.h new file mode 100644 index 0000000..9b3aeb7 --- /dev/null +++ b/WindowFunctions.h @@ -0,0 +1,4 @@ +#pragma once +#include + +bool createWindowClass(const char* name,WNDPROC proc,HMODULE hInstance); \ No newline at end of file diff --git a/main.cpp b/main.cpp index 8ef7617..9a93c69 100644 --- a/main.cpp +++ b/main.cpp @@ -26,6 +26,7 @@ #include "Globals.h" #include "Demo.h" #include "win32Defines.h" +#include "WindowFunctions.h" #include @@ -1314,26 +1315,6 @@ LRESULT CALLBACK ToolProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) return 0; } -bool createWindowClass(const char* name,WNDPROC proc,HMODULE hInstance) -{ - WNDCLASSEX wc; - wc.cbSize = sizeof(WNDCLASSEX); - wc.style = 0; - wc.lpfnWndProc = proc; - 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); - wc.lpszMenuName = NULL; - wc.lpszClassName = name; - wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); - if (!RegisterClassEx (&wc)) - return false; - return true; -} - void Demo::main() { usableApp = this; setDebugMode(false); From cd7785ce0627f263a8dfaa886ae9e91e03243d68 Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Sat, 2 Jun 2018 21:27:10 -0400 Subject: [PATCH 004/105] Bye bye GApp. We need more control. --- Demo.h | 13 ++++++++++++- main.cpp | 37 ++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/Demo.h b/Demo.h index a449294..44ba0e3 100644 --- a/Demo.h +++ b/Demo.h @@ -2,7 +2,7 @@ #include #include "CameraController.h" -class Demo : public GApp { +class Demo { // : public GApp { public: Demo(const GAppSettings& settings,Win32Window* wind); virtual ~Demo() {} @@ -16,6 +16,7 @@ class Demo : public GApp { virtual void onCleanup(); Instance* getSelection(); + void run(); void QuitApp(); void onKeyPressed(int key); void onKeyUp(int key); @@ -26,6 +27,8 @@ class Demo : public GApp { void onMouseMoved(int x, int y); void onMouseWheel(int x, int y, short delta); CameraController cameraController; + RenderDevice* renderDevice; + UserInput* userInput; private: void initGUI(); HWND hWndMain; @@ -33,4 +36,12 @@ class Demo : public GApp { bool quit; bool rightButtonHolding; void main(); + GWindow* _window; + protected: + Stopwatch m_graphicsWatch; + Stopwatch m_logicWatch; + Stopwatch m_networkWatch; + Stopwatch m_userInputWatch; + Stopwatch m_simulationWatch; + Stopwatch m_waitWatch; }; diff --git a/main.cpp b/main.cpp index 9a93c69..2a95577 100644 --- a/main.cpp +++ b/main.cpp @@ -63,10 +63,24 @@ Instance* selectedInstance = NULL; Demo *usableApp = NULL; -Demo::Demo(const GAppSettings& settings,Win32Window* window) : GApp(settings,window) { +Demo::Demo(const GAppSettings& settings,Win32Window* window) { //: GApp(settings,window) { hWndMain = window->hwnd(); quit=false; rightButtonHolding=false; + + // GApp replacement + renderDevice = new RenderDevice(); + + if (window != NULL) { + renderDevice->init(window, NULL); + } + else + { + MessageBox(NULL,"Window not found!","Error",MB_OK); + return; + } + _window = renderDevice->window(); + _window->makeCurrent(); } void clearInstances() @@ -767,6 +781,7 @@ bool IsHolding(int button) void Demo::onUserInput(UserInput* ui) { + /* if(GetHoldKeyState(VK_LCONTROL)) { if(GetHoldKeyState('D')) @@ -779,6 +794,7 @@ void Demo::onUserInput(UserInput* ui) { setDebugMode(!debugMode()); } } + */ if(GetHoldKeyState(VK_F8)) { messageTime = System::time(); @@ -967,7 +983,7 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters void Demo::exitApplication() { //endApplet = true; - endProgram = true; + //endProgram = true; } @@ -986,14 +1002,14 @@ void Demo::onGraphics(RenderDevice* rd) { { mouseOnScreen = false; //ShowCursor(true); - window()->setMouseVisible(true); + _window->setMouseVisible(true); //rd->window()->setInputCaptureCount(0); } else { mouseOnScreen = true; //SetCursor(NULL); - window()->setMouseVisible(false); + _window->setMouseVisible(false); //rd->window()->setInputCaptureCount(1); } @@ -1315,10 +1331,10 @@ LRESULT CALLBACK ToolProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) return 0; } -void Demo::main() { +void Demo::run() { usableApp = this; - setDebugMode(false); - debugController.setActive(false); + //setDebugMode(false); + //debugController.setActive(false); /* if (!createWindowClass("ToolWindowClass",ToolProc,GetModuleHandle(0))) { @@ -1371,7 +1387,7 @@ void Demo::main() { m_userInputWatch.tick(); onUserInput(userInput); - m_moduleManager->onUserInput(userInput); + //m_moduleManager->onUserInput(userInput); m_userInputWatch.tock(); m_simulationWatch.tick(); @@ -1401,9 +1417,9 @@ void Demo::main() { renderDevice->pushState(); onGraphics(renderDevice); renderDevice->popState(); - renderDebugInfo(); + //renderDebugInfo(); renderDevice->endFrame(); - debugText.clear(); + //debugText.clear(); m_graphicsWatch.tock(); while (PeekMessage (&messages, NULL, 0, 0,PM_REMOVE)) @@ -1471,7 +1487,6 @@ int main(int argc, char** argv) { Win32Window* win32Window = Win32Window::create(settings.window,hwndMain); Demo demo = Demo(settings,win32Window); - SetWindowLongPtr(hwndMain,GWL_USERDATA,(LONG)&demo); demo.run(); } From a676a44feabd8b8deb89e5ff4815e85f4ac9dc04 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 2 Jun 2018 21:30:56 -0700 Subject: [PATCH 005/105] updated VCPROJ --- G3DTest.vcproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 1829c62..4b48193 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -270,6 +270,10 @@ /> + + @@ -335,6 +339,10 @@ RelativePath=".\win32Defines.h" > + + From 22e018e13805410d87f9168598a117b16b6d467b Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 4 Jun 2018 08:52:35 -0700 Subject: [PATCH 006/105] replaced DLL --- SDL.dll | Bin 499712 -> 262144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/SDL.dll b/SDL.dll index 6e77db715e794d13ce7a95b17158f951eb1699f8..376722beafb0e8062e03d6bc99dc26612a04e587 100644 GIT binary patch literal 262144 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 XJ}pop_+osqy&8ua(7Sd@VA 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 Date: Mon, 4 Jun 2018 22:58:20 -0400 Subject: [PATCH 007/105] Child windows added. --- Demo.h | 10 +- WindowFunctions.cpp | 9 ++ main.cpp | 223 +++++++++++++++++++++++++++++++------------- 3 files changed, 175 insertions(+), 67 deletions(-) diff --git a/Demo.h b/Demo.h index 44ba0e3..a1b67bc 100644 --- a/Demo.h +++ b/Demo.h @@ -4,7 +4,7 @@ class Demo { // : public GApp { public: - Demo(const GAppSettings& settings,Win32Window* wind); + Demo(const GAppSettings& settings,HWND parentWindow); virtual ~Demo() {} virtual void exitApplication(); virtual void onInit(); @@ -18,6 +18,8 @@ class Demo { // : public GApp { Instance* getSelection(); void run(); void QuitApp(); + void resizeWithParent(HWND parentWindow); + void onCreate(HWND parentWindow); void onKeyPressed(int key); void onKeyUp(int key); void onMouseLeftPressed(int x, int y); @@ -31,12 +33,16 @@ class Demo { // : public GApp { UserInput* userInput; private: void initGUI(); - HWND hWndMain; + HWND _hWndMain; SkyRef sky; bool quit; + bool mouseOnScreen; bool rightButtonHolding; void main(); GWindow* _window; + HWND _hwndToolbox; + HWND _buttonTest; + HWND _hwndRenderer; protected: Stopwatch m_graphicsWatch; Stopwatch m_logicWatch; diff --git a/WindowFunctions.cpp b/WindowFunctions.cpp index 0202a27..4593dcd 100644 --- a/WindowFunctions.cpp +++ b/WindowFunctions.cpp @@ -1,5 +1,9 @@ #include "WindowFunctions.h" +#include +#include + +using namespace std; bool createWindowClass(const char* name,WNDPROC proc,HMODULE hInstance) { @@ -17,7 +21,12 @@ bool createWindowClass(const char* name,WNDPROC proc,HMODULE hInstance) wc.lpszClassName = name; wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); if (!RegisterClassEx (&wc)) + { + stringstream errMsg; + errMsg<<"Failed to register " << name; + MessageBox(NULL, errMsg.str().c_str(),"Dynamica Crash", MB_OK); return false; + } return true; } diff --git a/main.cpp b/main.cpp index 2a95577..09ee5a3 100644 --- a/main.cpp +++ b/main.cpp @@ -11,6 +11,8 @@ @author Morgan McGuire, matrix@graphics3d.com */ +// TODO: Move toolbar buttons with resized window. + #define _WIN32_WINNT 0x0400 #include @@ -63,14 +65,68 @@ Instance* selectedInstance = NULL; Demo *usableApp = NULL; -Demo::Demo(const GAppSettings& settings,Win32Window* window) { //: GApp(settings,window) { - hWndMain = window->hwnd(); +Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,window) { + _hWndMain = parentWindow; + + HMODULE hThisInstance = GetModuleHandle(NULL); + + _hwndToolbox = CreateWindowEx( + WS_EX_ACCEPTFILES, + "toolboxHWND", + "Main test", + WS_CHILD | WS_VISIBLE, + 0, + 560, + 800, + 50, + _hWndMain, // parent + NULL, // menu + hThisInstance, + NULL + ); + _buttonTest = CreateWindow( + "COMBOBOX", + "", + CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, + 20, + 10, + 80, + 120, + _hwndToolbox, // parent + NULL, // menu + hThisInstance, + NULL + ); + SendMessage(_buttonTest,(UINT) CB_ADDSTRING,(WPARAM) 0,(LPARAM) "TEST"); + SendMessage(_buttonTest,(UINT) CB_ADDSTRING,(WPARAM) 0,(LPARAM) "TEST2"); + SendMessage(_buttonTest, CB_SETCURSEL, (WPARAM)1, (LPARAM)0); + _hwndRenderer = CreateWindowEx( + WS_EX_ACCEPTFILES, + "G3DWindow", + "3D", + WS_CHILD, + CW_USEDEFAULT, + CW_USEDEFAULT, + 1, + 1, + _hWndMain, // parent + NULL, // menu + hThisInstance, + NULL + ); + + + Win32Window* window = Win32Window::create(settings.window,_hwndRenderer); + ShowWindow(_hwndRenderer, SW_SHOW); + SetWindowLongPtr(_hWndMain,GWL_USERDATA,(LONG)this); + SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); + SetWindowLongPtr(_hwndToolbox,GWL_USERDATA,(LONG)this); + ShowWindow(_hWndMain, SW_SHOW); quit=false; rightButtonHolding=false; - + mouseOnScreen=false; // GApp replacement renderDevice = new RenderDevice(); - if (window != NULL) { renderDevice->init(window, NULL); } @@ -81,6 +137,7 @@ Demo::Demo(const GAppSettings& settings,Win32Window* window) { //: GApp(settings } _window = renderDevice->window(); _window->makeCurrent(); + } void clearInstances() @@ -755,7 +812,7 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { { title = dataModel->name; std::string text = "Game \"" + title + "\""; - SetWindowText(hWndMain, text.c_str()); + SetWindowText(_hWndMain, text.c_str()); } @@ -991,10 +1048,10 @@ void Demo::onGraphics(RenderDevice* rd) { G3D::uint8 num = 0; POINT mousepos; - bool mouseOnScreen = true; + mouseOnScreen = true; if (GetCursorPos(&mousepos)) { - if (ScreenToClient(hWndMain, &mousepos)) + if (ScreenToClient(_hWndMain, &mousepos)) { //mouseOnScreen = true; @@ -1019,7 +1076,7 @@ void Demo::onGraphics(RenderDevice* rd) { if(Globals::useMousePoint) { mousepos = Globals::mousepoint; - ScreenToClient(hWndMain, &mousepos); + ScreenToClient(_hWndMain, &mousepos); } LightingParameters lighting(G3D::toSeconds(11, 00, 00, AM)); @@ -1225,6 +1282,7 @@ void Demo::onMouseMoved(int x,int y) } void Demo::onMouseWheel(int x,int y,short delta) { + if (mouseOnScreen==true) if (cameraController.onMouseWheel(x, y, delta)) { AudioPlayer::playSound(cameraSound); @@ -1254,6 +1312,58 @@ App::~App() { */ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); + if (app==NULL) + { + return DefWindowProc(hwnd, msg, wParam, lParam); + } + switch(msg) + { + case WM_KEYDOWN: + if ((HIWORD(lParam)&0x4000)==0) // single key press + { + app->onKeyPressed(wParam); + } + break; + case WM_KEYUP: + { + app->onKeyUp(wParam); + } + break; + case WM_MOUSEWHEEL: + app->onMouseWheel(LOWORD(lParam),HIWORD(lParam),HIWORD(wParam)); + break; + case WM_SIZE: + app->resizeWithParent(hwnd); + break; + default: + { + return DefWindowProc(hwnd, msg, wParam, lParam); + } + } + return 0; +} + +LRESULT CALLBACK ToolboxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); + if (app==NULL) + { + return DefWindowProc(hwnd, msg, wParam, lParam); + } + switch(msg) + { + case WM_SIZE: + break; + default: + { + return DefWindowProc(hwnd, msg, wParam, lParam); + } + } + return 0; +} +LRESULT CALLBACK G3DProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); if (app==NULL) @@ -1268,23 +1378,9 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_DESTROY: app->QuitApp(); break; - case WM_KEYDOWN: - if ((HIWORD(lParam)&0x4000)==0) // single key press - { - app->onKeyPressed(wParam); - } - break; - case WM_KEYUP: - { - app->onKeyUp(wParam); - } - break; case WM_LBUTTONDOWN: app->onMouseLeftPressed(LOWORD(lParam),HIWORD(lParam)); break; - case WM_MOUSEMOVE: - app->onMouseMoved(LOWORD(lParam),HIWORD(lParam)); - break; case WM_LBUTTONUP: app->onMouseLeftUp(LOWORD(lParam),HIWORD(lParam)); break; @@ -1294,16 +1390,11 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_RBUTTONUP: app->onMouseRightUp(LOWORD(lParam),HIWORD(lParam)); break; - case WM_MOUSEWHEEL: - app->onMouseWheel(LOWORD(lParam),HIWORD(lParam),HIWORD(wParam)); + case WM_MOUSEMOVE: + app->onMouseMoved(LOWORD(lParam),HIWORD(lParam)); break; case WM_SIZE: { - int viewWidth = LOWORD(lParam); - int viewHeight = HIWORD(lParam); - app->renderDevice->notifyResize(viewWidth,viewHeight); - Rect2D viewportRect = Rect2D::xywh(0,0,viewWidth,viewHeight); - app->renderDevice->setViewport(viewportRect); app->onGraphics(app->renderDevice); } break; @@ -1315,22 +1406,6 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) return 0; } - -LRESULT CALLBACK ToolProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - //Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); - switch(msg) - { - case WM_SIZE: - break; - default: - { - return DefWindowProc(hwnd, msg, wParam, lParam); - } - } - return 0; -} - void Demo::run() { usableApp = this; //setDebugMode(false); @@ -1349,7 +1424,7 @@ void Demo::run() { ShowWindow(propertyHWnd,SW_SHOW); */ - UpdateWindow(hWndMain); + UpdateWindow(_hWndMain); // Load objects here= cursor = Texture::fromFile(GetFileInPath("/content/cursor2.png")); @@ -1370,13 +1445,13 @@ void Demo::run() { RealTime lastWaitTime=0; MSG messages; - RECT cRect; - GetClientRect(hWndMain,&cRect); - - renderDevice->notifyResize(cRect.right,cRect.bottom); - Rect2D viewportRect = Rect2D::xywh(0,0,cRect.right,cRect.bottom); - renderDevice->setViewport(viewportRect); + //RECT cRect; + //GetClientRect(_hWndMain,&cRect); + //renderDevice->notifyResize(cRect.right,cRect.bottom); + //Rect2D viewportRect = Rect2D::xywh(0,0,cRect.right,cRect.bottom); + //renderDevice->setViewport(viewportRect); //window()->setInputCaptureCount(1); + resizeWithParent(_hWndMain); while (!quit) { @@ -1424,7 +1499,7 @@ void Demo::run() { while (PeekMessage (&messages, NULL, 0, 0,PM_REMOVE)) { - if (IsDialogMessage(hWndMain, &messages) == 0) + if (IsDialogMessage(_hWndMain, &messages) == 0) { TranslateMessage(&messages); DispatchMessage(&messages); @@ -1433,12 +1508,32 @@ void Demo::run() { } onCleanup(); } +void Demo::resizeWithParent(HWND parentWindow) +{ + RECT rect; + GetClientRect(parentWindow,&rect); + SetWindowPos(_hwndRenderer,NULL,0,0,rect.right,rect.bottom-50,SWP_NOMOVE); + SetWindowPos(_hwndToolbox,NULL,0,rect.bottom-50,rect.right,50,SWP_NOACTIVATE | SWP_SHOWWINDOW); + GetClientRect(_hwndRenderer,&rect); + int viewWidth=rect.right; + int viewHeight=rect.bottom; + renderDevice->notifyResize(viewWidth,viewHeight); + Rect2D viewportRect = Rect2D::xywh(0,0,viewWidth,viewHeight); + renderDevice->setViewport(viewportRect); + +} void Demo::QuitApp() { PostQuitMessage(0); quit=true; } +void Demo::onCreate(HWND parentWindow) +{ + //SetWindowLongPtr(hwndRenderer,GWL_USERDATA,(LONG)this); + //SetWindowLongPtr(hwndToolbox,GWL_USERDATA,(LONG)this); + //SetWindowLongPtr(hwndMain,GWL_USERDATA,(LONG)&demo); +} int main(int argc, char** argv) { try{ @@ -1456,13 +1551,13 @@ int main(int argc, char** argv) { HMODULE hThisInstance = GetModuleHandle(NULL); if (!createWindowClass("mainHWND",WndProc,hThisInstance)) - { - MessageBox(NULL, "Failed to register mainHWND","Dynamica Crash", MB_OK); return false; - } - + if (!createWindowClass("toolboxHWND",ToolboxProc,hThisInstance)) + return false; + if (!createWindowClass("G3DWindow",G3DProc,hThisInstance)) + return false; - HWND hwndMain = CreateWindowEx( + HWND hwndMain = CreateWindowEx( WS_EX_ACCEPTFILES, "mainHWND", "Main test", @@ -1470,25 +1565,23 @@ int main(int argc, char** argv) { CW_USEDEFAULT, CW_USEDEFAULT, 800, - 600, + 660, NULL, // parent NULL, // menu hThisInstance, NULL ); - + if(hwndMain == NULL) { MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); - ShowWindow(hwndMain, SW_SHOW); - Win32Window* win32Window = Win32Window::create(settings.window,hwndMain); - Demo demo = Demo(settings,win32Window); - SetWindowLongPtr(hwndMain,GWL_USERDATA,(LONG)&demo); - demo.run(); + + Demo demo = Demo(settings,hwndMain); + demo.run(); } catch(...) { From 336b978fd3c4abf7ba4111cc316f345cc7bd37cb Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Mon, 4 Jun 2018 23:01:45 -0400 Subject: [PATCH 008/105] Disabled editing inside the ComboBox. --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 09ee5a3..21aacc9 100644 --- a/main.cpp +++ b/main.cpp @@ -87,7 +87,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w _buttonTest = CreateWindow( "COMBOBOX", "", - CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE, + CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE , 20, 10, 80, From 54b19ba65964e68cd3c78b807c8b8fa0e303dbca Mon Sep 17 00:00:00 2001 From: andreja6 Date: Mon, 4 Jun 2018 23:55:55 -0700 Subject: [PATCH 009/105] Added "Oh No!" to test gitlab --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 21aacc9..7261a15 100644 --- a/main.cpp +++ b/main.cpp @@ -132,7 +132,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w } else { - MessageBox(NULL,"Window not found!","Error",MB_OK); + MessageBox(NULL,"Oh No! Window not found!","Error",MB_OK); return; } _window = renderDevice->window(); From 1c337b0cdcd55ed8ee372d12b09305abac2e5c01 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 5 Jun 2018 00:00:59 -0700 Subject: [PATCH 010/105] test --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 7261a15..21aacc9 100644 --- a/main.cpp +++ b/main.cpp @@ -132,7 +132,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w } else { - MessageBox(NULL,"Oh No! Window not found!","Error",MB_OK); + MessageBox(NULL,"Window not found!","Error",MB_OK); return; } _window = renderDevice->window(); From 1926dfa6864441504a6d38a44eb3fac231ccfb4b Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 10 Jun 2018 20:26:33 -0700 Subject: [PATCH 011/105] Added surfaces --- G3DTest.vcproj | 4 ++++ PhysicalInstance.cpp | 30 ++++++++++++++++++++++++++++++ PhysicalInstance.h | 8 ++++++++ Surface.h | 4 ++++ 4 files changed, 46 insertions(+) create mode 100644 Surface.h diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 4b48193..7cf57bf 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -335,6 +335,10 @@ RelativePath=".\resource.h" > + + diff --git a/PhysicalInstance.cpp b/PhysicalInstance.cpp index ff0ae8c..bbb607a 100644 --- a/PhysicalInstance.cpp +++ b/PhysicalInstance.cpp @@ -6,6 +6,12 @@ Vector3 position; Vector3 velocity; Vector3 rotVelocity; GLfloat vertecies[96]; +Surface top; +Surface front; +Surface right; +Surface back; +Surface left; +Surface bottom; CoordinateFrame cFrame; Color3 color; bool changed = true; @@ -24,6 +30,12 @@ PhysicalInstance::PhysicalInstance(void) color = Color3::gray(); velocity = Vector3(0,0,0); rotVelocity = Vector3(0,0,0); + top = Snaps; + front = Smooth; + right = Smooth; + back = Smooth; + left = Smooth; + bottom = Inlets; } void PhysicalInstance::setSize(Vector3 newSize) { @@ -122,6 +134,24 @@ void PhysicalInstance::render(RenderDevice* rd) glBegin(GL_QUADS); for(int i = 0; i < 96; i+=16) { + if(i == 0)//Back + { + } + if(i == 16)//Right + { + } + if(i == 32)//Front + { + } + else if(i == 48)//Top + { + } + else if(i == 64)//Left + { + } + else if(i == 80)//Bottom + { + } Vector3 v0 = Vector3(vertecies[i], vertecies[i+1], vertecies[i+2]), v1 = Vector3(vertecies[i+3], vertecies[i+4], vertecies[i+5]), v3 = Vector3(vertecies[i+9], vertecies[i+10], vertecies[i+11]); glNormal3fv((v1 - v0).cross(v3 - v0).direction()); glVertex3fv(v0); diff --git a/PhysicalInstance.h b/PhysicalInstance.h index 8731067..8fb4973 100644 --- a/PhysicalInstance.h +++ b/PhysicalInstance.h @@ -1,5 +1,6 @@ #pragma once #include "instance.h" +#include "Surface.h" class PhysicalInstance : public Instance @@ -10,6 +11,12 @@ public: virtual void render(RenderDevice*); Vector3 velocity; Vector3 rotvelocity; + Surface top; + Surface front; + Surface right; + Surface back; + Surface left; + Surface bottom; CoordinateFrame cFrame; Color3 color; Vector3 getPosition(); @@ -17,6 +24,7 @@ public: CoordinateFrame getCFrame(); void setCFrame(CoordinateFrame); Box getBox(); + Box getScaledBox(); CoordinateFrame getCFrameRenderBased(); Vector3 getSize(); void setSize(Vector3); diff --git a/Surface.h b/Surface.h new file mode 100644 index 0000000..23b2be4 --- /dev/null +++ b/Surface.h @@ -0,0 +1,4 @@ +#ifndef SURFACE_H +#define SURFACE_H +enum Surface {Smooth, Snaps, Inlets, Glue, Weld, Hinge, Motor}; +#endif From 018c4a15574bc10b45a371fc861d6bb48f039f1e Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 10 Jun 2018 21:02:38 -0700 Subject: [PATCH 012/105] Added basic textures for now --- Globals.cpp | 2 ++ Globals.h | 3 ++ PhysicalInstance.cpp | 52 +++++++++++++++++++++++++++++++---- content/images/surface.png | Bin 0 -> 13933 bytes content/images/surfacebr.png | Bin 0 -> 14307 bytes main.cpp | 2 ++ 6 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 content/images/surface.png create mode 100644 content/images/surfacebr.png diff --git a/Globals.cpp b/Globals.cpp index 13d4520..914660c 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -5,8 +5,10 @@ int const Globals::gen = 0; int const Globals::major = 0; int const Globals::minor = 4; int const Globals::patch = 2; +int Globals::surfaceId = 2; bool Globals::showMouse = true; bool Globals::useMousePoint = false; +G3D::TextureRef Globals::surface; POINT Globals::mousepoint; Globals::Globals(void){} diff --git a/Globals.h b/Globals.h index db0e4b5..f0052d2 100644 --- a/Globals.h +++ b/Globals.h @@ -1,5 +1,6 @@ #pragma once #include "DataModelInstance.h" +#include class Globals { @@ -14,4 +15,6 @@ public: static const int major; static const int minor; static const int patch; + static G3D::TextureRef surface; + static int surfaceId; }; \ No newline at end of file diff --git a/PhysicalInstance.cpp b/PhysicalInstance.cpp index bbb607a..7c97dce 100644 --- a/PhysicalInstance.cpp +++ b/PhysicalInstance.cpp @@ -1,4 +1,5 @@ #include "PhysicalInstance.h" +#include "Globals.h" bool canCollide = true; bool anchored = false; Vector3 size; @@ -130,36 +131,77 @@ void PhysicalInstance::render(RenderDevice* rd) { if(changed) Box box = getBox(); + glColor(color); - glBegin(GL_QUADS); + /*glEnable( GL_TEXTURE_2D ); + glEnable(GL_BLEND);// you enable blending function + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture( GL_TEXTURE_2D, Globals::surfaceId); + glBegin(GL_QUADS);*/ for(int i = 0; i < 96; i+=16) { + double add = 0.8; + Surface face; if(i == 0)//Back { + face = back; } - if(i == 16)//Right + else if(i == 16)//Right { + face = right; } - if(i == 32)//Front + else if(i == 32)//Front { + face = front; } else if(i == 48)//Top { + face = top; } else if(i == 64)//Left { + face = left; } else if(i == 80)//Bottom { + face = bottom; } + + if(face == Snaps) + add = 0.0; + else if(face == Inlets) + add = 0.2; + Vector3 v0 = Vector3(vertecies[i], vertecies[i+1], vertecies[i+2]), v1 = Vector3(vertecies[i+3], vertecies[i+4], vertecies[i+5]), v3 = Vector3(vertecies[i+9], vertecies[i+10], vertecies[i+11]); - glNormal3fv((v1 - v0).cross(v3 - v0).direction()); + /*glNormal3fv((v1 - v0).cross(v3 - v0).direction()); + glTexCoord2f(0.0F,0.0F); glVertex3fv(v0); + glTexCoord2f(1.0F,0.0F); glVertex3fv(v1); + glTexCoord2f(1.0F,0.25F); glVertex3f(vertecies[i+6], vertecies[i+7], vertecies[i+8]); + glTexCoord2f(0.0F,0.25F); + glVertex3fv(v3);*/ + + glEnable( GL_TEXTURE_2D ); + glEnable(GL_BLEND);// you enable blending function + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBindTexture( GL_TEXTURE_2D, Globals::surfaceId); + glBegin( GL_QUADS ); + glNormal3fv((v1 - v0).cross(v3 - v0).direction()); + glTexCoord2d(0.0,0.0+add); + glVertex3fv(v0); + glTexCoord2d( 1.0,0.0+add); + glVertex3fv(v1); + glTexCoord2d(1.0,0.2+add); + glVertex3f(vertecies[i+6], vertecies[i+7], vertecies[i+8]); + glTexCoord2d( 0.0,0.2+add); glVertex3fv(v3); + glEnd(); + glDisable( GL_TEXTURE_2D ); } - glEnd(); + /*glEnd(); + glDisable(GL_TEXTURE_2D);*/ glColor(Color3::white()); if(!children.empty()) { diff --git a/content/images/surface.png b/content/images/surface.png new file mode 100644 index 0000000000000000000000000000000000000000..1be30dc70ee5771b62859c9254c211b89bb0c325 GIT binary patch literal 13933 zcmZv@2UJs0w=H}U0)$TJoe&UEM0#(bqta1CK&puJ2+~`mBM4YPfzZ21QF^ZeQUU_f zdq=8-D(%JZ-v591j`7AwM$XyUd+j#oTx*}PPPD$RCIu-ADF6TzceT_E@xMp_00U4W z{FP{_V=Dd!sa-7 z#{aL^2e0GTmRAQKEBcu46Q2Gm3zCS`U6n6lQZz; z4VwpoTZ@sL=?xad=POEFXs`{EG;sTC_p_GE9XI=yvjI0E+lBF#t0T7DAM43XuPzu{ zPQRnfA4LV?21)dPa6OG;-tShrdU4z@HrSu;vlI;*zS@seBDaEae|WW@70Houd03#t zzK_ee4k+RhCcNfH-YBq%3O;F=rwCU%TX|nmknZPrJmWDqVBxo!H#vWGTmuTe+_EIj zS#gODzF6iQT;x+a`=J8LU&^4(yv6BG%6*MDCV#%JbS-l}e|;r&jvt=HIsQ^Hp_}Q% zBIs=O)k37w#bOla#R4(6xmYQSu*5Y9C@evr^lU^=Nr4)E)n|DnI;x^_r;6a9{-m8u zh`cNKe0n}Ta9wUbx#Ohyq$%r}pMfy_H3kr@8~QsKd?i-MZsQ`7Ks6=q8~%rYN?!PU ztfpB4tqiAQB>6Wf;OMOYPw(|I=k=#c{75)d%HMqfb2ABSH~)F#*1y|wef5*cdV<#K z)|CP9yI_`!&h`3oFPK=OxVNnN?{BCt)8E;>An(SqSft>L_k3VQS>TRS4i|oQCkiuMY;3-mE?2#{zzt>~B@p`g<>$j6o5jz2A2o}f{~d2pG-plikdwHEqmTJK zREWP0(Y_{ibON|mxyBU;MnfdM*VDY?GztlA-N`?tT!#T1;*CsR?z3W%RSC_ zY6f>}m*d)?i-mk~AR}D74&1gZ$68ZP&HRV85kVO1ftg#AXJNEZ@L8W~Ntn0el?eEy ziYx_tr$AYwsJ0k=IR!yN@D(nD({X9HVUNRaeF~=YLrDYR<{_oxD!e>$T$r@anC$^Z z23g%2U$hF=%!oE@l{Q3>+@-g=cclz4eo(n1pKx2WRpOhc9G6&maapt9aou2`YayXE zzuSN6pzpb6XG(@y4Fazb&OgPFTER!fmT7^%jWSZ6`0rFzq`EcxK94T}j1J<#Vdg$P z<%JaW;F>rF866C&qgly?-LBT8T4Z9gNL_xulaY#B=Rf@L=VyG-OK~JLXpzj4 zscXrL?$f(#Qog9l5=XQHxA1M-Lj*jLSj4`+TJh>n{NNle{iI*s7qaL1|5=@8exdCCe`h(hQI-#^aTnMGY1|3&qP(XStrSQ4k^A6|vL^qMBbwSgn zPcE6TMB;a^f zPIgra2tLkFEvC+KeB4xS79MzzL5&27z{97?`aZ{qB*^%}1<(CNz`iaY1s_qJuiiNM(+HLr8|0rUzkrO4Y(b;)3fG^Y=P~t;AR9vCc2)a;QI1Oz5bB?ZR zgLaY1kuj5{FmaRn|A+R-%SyShb3Y{|3A}EO7O)KmHf3a_1XCl=-^*lG44&YOa2eFC zp%EXKPe321xR&lwrn10i5`_NKf(azcl@>v{gtwkYJ$mIQfx>q+{NLQN+gmSKkuAAlK_#J=sqKH#y+?587m}Ph z#D!D%#yySkBxVes30>UEU*aUJHUIhmDE>xjHctP)J)B*26{*PQq+etW z4=4EW>Q6^aU|6{G`L-+*LGnAI;cq4M+{0IFqhcep`P2^1;Z*9K5d8!Gz zB}1?3tg5o;<)`K>oZRDPu}~N2i9$4h4J*D|K|iocByx_ zjt)mJasY!2cde5nKR-vjux;(s#H4@*(4>9wOp2m|7!hz zTKebc^uKp2Kp|+8WwJgkfqCNF_=pjX3O`O-!YVF^KaoD2bxb-)W$M|pxq->fQ4TXu z{t71{v~EAa+JNIetyZ;^46dG64V4?R@21z&13|*3b!^+GE|5>$PzRaUGMtC z7M?DOAIg8tCsN#HFmTn~Q1A%yDdhUpZ-(&yN%rpX<^TG07zlDDbyuk9%Jha8wrHV? zPKiM_YUB=1+z}hfuavvCnRv{f^ljC#xZbQ_45Bys6Ay;?7AmswhrJLHULSs6pg1j1 z;eMo#YcD<1gQDuJi-4p&`r}=J-%WEkdv!rhueN#m%o}|#J?QZPar`8?*B_jRWh%CvR zW#NENcase^4d_cfWd47iq8{9jTK)4S!6?q1>$eaMK1fkUGr?4+rlPp~^sN#^HQfqVa{<_1JqQT?dFXjrPjpa`GWifZHZ6Ef4P4zd) zm*2MZ$Ahuu#C$I(;oN1;ysVwxLTiP~sF&kiH$hzK^!XNCUb#2a)S|cltK$2^6d_;t zxokzw1ur-1OomS?TO#Xqx?B>L!@n;dMgfb3CY`g!D!up8@pdo(jp2gmXd|iCpeY&A zNo&)~2QddSca}bnAKWFd6I@OzRVDZKnF@%rg-G9n-t}@|$5nS3dp?N>VQ2L}Jzj6@ z|3D>AVC>XG?oh(D5@dIeVmVtv3tjY4kKzu?amnv*{w(rA_dzF9g5E$k zbr^Y(#vw!t5^lCp?4m2UOew@Fs#EPMOm7Uz?;ay!(0KI3^A`yy!~h`bj4BM3j*zxT zwqsxiH{1|hRghQ&GWK+du|@ikq8hN7;MBMnhg)2eHhVAiR=-Xn^mb|q12=M&Xf+nR zQfMVrGzj(BbA%Gi^fj8lA(Q!iUvGfA)v<&$^TH8OL-z`%Akd-$Qo0TYP+y$^Q}_ut zG9~?nD9CR{m=W}Yhr-tpfq?(WR;~9E+J@067p$kic1b!$LwNPyEZnY~iG#rr9!&P0 z9P#CRA>RZ;XS)Zi&k0jFKogJZ1iB312^)pwj!~uyAH?-LVtWoAl({|roS#=`*-=gp z&~z<&QKpy7q+mpCY305>N{FMXaS`*Kc;DQu5xwEup(HIre(z;Tm#tPTO1mU8sVwi#$toI~HW*66&q%Pu$px;>+XM!#Zy zRw+?6Kn>QP*>8UgdF8a}_@r<;EpWVHPGW{OB9HqSs~}cDXL*=E#EP6djMY$c;Zyb1re3h$L{d-(>zuH&PBA;)U*1AW zBapRev@IHdToh+Bnj!_0a&oZDzUR}ueN+~FX+>-eMf!~2CxrSYusVQYtyTItl98`M zF%?wT_!!sscxt@aOIW33>q8h9XcU{xyTIhC!3#zpQ!*qi>SPLwV3%*)0+w4Z^QD>` zs0lw}Ke`-z`9(q$E6VM34h%8KbaQ3#&deVq)sXA9?0S~5##-q=Ll=eX1uW63LMk;z zp@rSXfI+5l;&-k+&^}7KF>Y8wyHCJ9k^`p7P3j|t{&Aa}hXyG$!;9EC5faT`bh>#&Zavo9=xZ7&! zh9pQpG!Wnxr9nFpZ7f#ZU1>KgFtW68JWmEhLV$x&=ySpzgX_?WgNW1(Oz8|lT`fvc z2k=fw&%XzRJS-5Xhgr$YkW#PHcSUI{6~kai9W?;fN?r9JTBfYqJMJS8VY{?UE)`YV zFZ<>XMv5n<-VRL7DV3TSUoi#XMI}0RXwH;d^fDF(gTpdU#u>QL!lSy}$lgc`$WvWI z!l?aZiu~gjk3dP$oS^n6U-j|U9f%%qhbe*7knIT`~p7p10$Dm8jf-Nj>D|5{v zd6xW!7#~6^1oB2a2iOih}$ep-pIhfw!xNx{M6QYT+!!C>}XwvSw^ zkY)MI$YYCAqlBEwdzf?j#Bv>PXPFSm0pCDf)85}tPJEnLFdGon2^J$xuRERFi;tUb zjIwcMZKcneH`EW?s3m-BhebYmAt2@dF~(tVuejCnp%d%<4x0Wn*Z#ML}kl5 z?qJyF2ib%DsVPg;U$Ku$mz#Ra0`6snt46%G+FxwcT7mA~C*1)??yJqGOEId+r2;jN z7O$G2eA6q5yi_PQA>~`^B%oVQZ6HVAh=Iw3LMIPlH>q<`xjsox$=f7_*NHrHzYN@PKUF=N))dEd_GF?*u10fF&NAur4h(7-Yzj}d8RNn;JbjoTQLtCg zOnGk6mI$WoR;IU!kLlqWPpzM-Pmlr-l(wverbI;XL4+Lm>0|8+=uoK|cQe$XE;Jkr ztz$|E5BJDcLp!QLp1&!-{g5`+`OOB&g8abe0~I|q3&>Lm4qmXhiG;tmZ65BqcPC1O zM3YdHyeoId-s}sDawgN;{W2W@nn^X(>_1a=a{)UCaYdM<6ztG)NcC{;GR&@)vrfWD zfAbO&PzW)*zx+fVtDF*+V6Q!eAV}m~QU~*wxmV5n%_o0#@EiW{p5%SCoIrxN)PKeq z;1T?d8UO(}mwa3ku1iOaejW!^4=?9IP7`;Yr2}U~Tr-Owd6k0b6Y`_x17{ErDK7Ev z&M`k2cNubkhY+47=swUL&c$<4bmwqqNR3>Ri*Y@}@Aq)^je3@Pn0n2bpe_GU=mOR|_+5R55K)}fqM-GF< zqDqnw!b_fns5^q~9(O#bT+;U0YOXg1S4JBf{{mJ2G}tDSSDzaVbL4#CsKAM?h zHvl!jMMOhb3+n#KD1rTPN1ACh!TE7bOQ6r)-+4uU9+wn@_O_UcFYa-Ga%tN{bOhUD z)Y43A6Qj)r9HKJ*v5@usm6d6j~oC`Lf8 zQv%#xOhTP030f*JGAi~F>(*~j?AmuxnWKwAa=D3i`p%^68iKNeu;E#}nd5|5xn~jI z9ez9R6?v}AjfA$$gtXpA_m=D||LRA1m?y&&8WR#eehh@T&$<(L zXqU@!g2J-O_0|bghGHng9o?Gy3*$naR2(W0o!)ZfH#7#(C@_e|H*wma#Oax0>`*s# z(?Q4{L>%_BAY_;`I+H`{_BKJ7WdtiBieLA}iYdV;5qG$pYNehpb8%DkN)vSGgvp^j zO-89;)OGNMKC|r1A#6LLi`TAlrY+h4s8sD8AGh`uBy==tD7ZtT`r=d*hMC$>Z*Ur_79(1J3iHp%eD3(pK9?jXraj}6wsm+&QA<+!7APW&-uxq$sFv+D za`wV-FHXOZOUM6y!Z<7l>5yNNjTEg(l8 zX$^UmMKLP=U4~s4Y!KrZg(}rpD3bd=JYm(<^D~LnE#6G2Ja)Ry7wKcxPXce_(Sk7T zItpt3@hg!O<)Klg1v(7iPdF~`c}k+#UAF?*g+TH~b+>B#qagu(wdzI!FTe96MOVxz z@{*#!Scb2C(_ zlb;URZw38lt6oiaPO@!NjYmRX@P2B4YxGUAlDw*1(q+=OlwH6(%#yh33;yP-O%&SL zf!V`6ym}$U;_V^w?5^d<2Ax5ipl0c#ypHH6*3m9gqPdyJ^5aL);$BZ7`r!urF=T2B zL)@#~Y;}tB!HMf7Ak4g}vgO*GuR!S(G2Ev3&*$xBgV<>Ju8c9MvL! zAAb;A-mo0yYyd%)nt_%YJ?sj|y?VCf8mPu&e{$~7VMWP%%TJCMqm4?yCeBqhejnr+@7D*UTKv zL)Z4@uQ6Y`T#~2nd@LZ%v_T-H{~aZhr8A&fI>PtlVxYcHlJ=LspehU;Yz-|!I-~5s zVR9X;r6^kDX|bKT&sMQ4)@g5!^Xa(h117H{g%UuaUnfir=osEq0|Eg}80k$-;mNG( zkBmJ{pY}h$enoB@RtQI?FdjmBnv4OcTP?fTXpv{buth{vGc;2LRYnIVLdNm{1U6yS zg;p-wiw;|JV-wlcgf3KbeJ}?ES{R})=K?{}XTBbh1dYoYTXVRsy31!Td%es+o{lQI z+Wa~&!#oEwaJfKoc?(NRd~Kg*q%Zpt5)DVuy&4VKK+VzAz!q4%1%PsO=Ht^}-#&6% zM6I}d;7%320D&GvKuvBT$)f;rk=P>jrT|C})9r0$*eb~aVHo305(R_^Tw{aGbV(9y zPC!{zxbw)hspTM=?I(M<(pz=RNpvmk6;_G?7zM8%6;|;wEfv}`Bt>u{-@V8Xu_&$r zcP_#yYry=RWiOgFENkBYi$=`Yk;P{`h2T#K59b*8ASfO*OW^>3@tD)^)KYMN_R909 z8_;_5ydt7jnmJ5pCT!s;uVP}VpxO`W!W;?NC6&sBs-JxC6fW+kS;AD0!dp49_1FkLo^jr_>(vp^ja1+z8nXXoYqP) zw5H6cMZrXPM)VdLxedvn2(*PX7D;m9|q`Cu$1-5sjSP~g*#Hf#piMS-I=m^QNql&2xU$xhpN6(iT<^;VR&D`RpW;9-1 zJOf1~B<0vRgMWO$g*nV_zHr5s#zVis7A+F&VbV(`Pt}IG5~=@ReyJ+HP%F!&t*&%a zLa^`znVdL%R6i3F=VGcu6~U_?o$x>Xk_TmCL({mbklt_-yTICCG_vbqA>kTR<@jCv z32aiwN5D}=rfj@;*g8NaB`nN3Mtw5|9=w;lA1>Cde#V$5)RArfIiu|~5J`2DpIy7@ zBTKQvt3&yQ&ll>O%CglnMstYW+#A=TyH=$nhq7r?ca2BoUHqCT6RO7V;`({nE%xT> zp>D!nA%gELEaUkE39BM_^h)1Txu>1q)k~&#F)iJyka6o9xO|;b&?H43`eW!FM1p75 zqyKa-MeAmcisEt=Mbd{v{~i1clgXa5q!%5pKh`|?)0_Iuy=AFWcw+`5AMQ`FLoZ?S z#m9T2*`qAGsUE90-Iw}kq({(pVEfCe8G%RaNL;TZJ7vxIti`M41j=6GvbCn9LA|X8 zFQquM`wLziald_pk3phn75S$e7UKlTsrFBR$<#s8fkrte@W?{}F{6hg6Ql6q(L!93 zT!T`g)XW&6PYK2E-@<(d_58i2xpyMkAB&7bkULX^8es_?i4(6AMm!x}KmGYl+&{#V zt|+2YS`!?Vf+B`Z+mP3&8?f=!SE)8obIb33A#5MV2Mp3wkn)?bgHb>Hxn3ljK9l9G zr>}8nqV#y88ErXrN4OZ&+bipqH$6N?thnv=JGF>!0^Z+eS|;Bj(c++$xQAg6@z0T< ztqJv<)al1lUnO60cncukpuJ>b8I4I36yf-K^<2YFkwtHvF`~UJ3Om9(N_|hqCBT>( z7}^r@RP`xLYEC?Q8%B*t&2hNKbn9e7^!1I<^`^R(#NM7j39_wF5OQ`n^1XA8_H;^8k_J?WtK z-}lc!Fs=w5FcT1KDAuzjTsZ6TfLQH?nIX37QD+gMN@a%?JsdF#g-RKG7^e(n>uU4e znPrexRs*r-G82(h;zfWH#ANhFpMad!o#gA`)uvD7i>Jre7wqx!8bnn{Iu&>f7q#ua z27vhW#CiszpFS18!L}-|DItbEzc1;Z;5-U*@~eGA-Am;bL#u;k1gE(#Y0zpW3Q0t^cR*RG}c!=y>co-PDh%%#nh=4 z&R^PVq+uW$Gtl7$=|hv*8^$=D)^x)}T?9KE9Hzhg*4h_3Z;wbU8;?v_52ra!Y$?rK2unc#xP`#mnPGI!&3s7+5 zWhU?86j(b)lS*XiI95ch-gt+7+u=f2+r^%E6twF8d6h8x`7@vJ z7XAT7p6r5d*8VqO8gYFbo`bv_&^S~~N1sf|A10Ucq$Y!qWRIVk-BzUmQ zY!|z@NQgjv$m|>ZlS6n^E9$=UCcPUGnAcvIsZ^SM`N`%p8cHnFD1mnj7qOMT^M{h6D3t^MW# zG!kYsZJ=|~BOw3i4Juu+&3AY6R6Nga#=)zWWPZ7LLJKgm;0Aut>e6Ef-=`yq!=k3> ze?hAvxN|Y_z+JxPB3Hk24!1rR%Ao^e*Y&?~w~)2m7Z||x)8U5maPu%EGoQpL5bd$J zX_BgauqjZvgX&CxZ$gB@QO)wH-~49afy_0{YI$9gy{VP7{vnVbV^S0Oq`Bk2xP9^k zbJU^5Ao|^#s*^rmZB6_xQ2-w)4ahOXQS`2v`cSs)!{~R-aW2g%W2$CE{S={s?~1Z@-0pfsr|Z;>-*+0}vXib?x;noMQ{HeNgEuaI39UU%&=dCN4I0s}pfvDtu0Q zTiHMPj%Wn06$Xp4Rm~oFX<*gT#_1o*T=sAejPPXiotwU=Td#mImLI_r&@A&@{X_~-t^@OWf@?D- zM7uieg$Iirk{;U@ZW4u2?hMmZiboZoT8!{QZu)^n2hOr8toYEnu+9z!Eo5FFpVtV&=#Ff~FD9 zw*kY9RK3Lj{K81m;LVkG1i}0em^E8$6(Lge;e=4TB*Iz{gw4UVJytiliB=iBk1u87!sz=0v zQCE$Wo(11!5#(U=+!VK;v{_gtV$j78XZGKeO>1VA2x@q+wgPmaz@rh<7=kc(0tJ@=i8WPs8=miv{|UNLe3f{?-@5ub2RLdcz8~{Un-QegxxYm#dtRs5S|%l1 znj*;|I#u>__$L+k^g&+Sdq$lwY0F5zmNy%7a5Se#@$!l~P1Xs!4g2qIMXO)2o77)> zeLrnM#*^hZN&T>@az9dOfjc44EmJDzRCwm>xk*hbKJJ;t?-LC`L* z%ePXfs&4_#IWpThYoR4%KnWCLB1Loj5Z9&)L63+>295=ki-D|YVaIrk>k^_p)jnmf zg{F}KeQKYEeeqZuqE%j(#=}+$l*#uWL=ystQKe7mfBQZ(k+nJm6K`bXaRw_b7!HiD zmG3@vNS#Op6xJ6{&p}T8v|iC^Waa&5E6Kn0)~yS`UzP)gG}@bk`U331&PxHp>O9+O zK-c;4sd%u%w>?EXwJ`a3AR2|0kmA=MG%&hc0uTHQPrvCc+UmC-R{7|3RR!rvj|{C!4Myz+L@ou_We+T6+=X6Ta?0xVC=45>M0NR}>qHYpYhn zuQAX1j^0)^SGy?~Q;_2J!Wd>uI#hgCBq_|ecpGv1KZqgj3}LkYClVjzQhf!e8AU5JK3Cv_dNArm|&+vxe#)q{z!Cu7Jmw*_IT8K#Wx+c_bK zT9~<12KF|DR3?N}^dNhPSyqUa)~Q=RW8OdH_LESbJ{mol^`7?${E37lI+ckyc!160 z@br@%{OduN+Fo%*p$NUNvCYQ+*)`57QVnIv2t7+wA;ojNWRS7Vp$G_4l3Z& zOI5qgGDbKZG7eCqP11swKQ%eo6-#}NC++R^lr9ggGzI;Q@Z4RO`Il8W_%C;Kl1!*k zn5n(+U)F5lz?=u0$93I$dTP_*@cj-k%-$*?C2eBpDfC(4u>pP9I2B?h`1*3$4etE< z4Md+dD2Nv;hV)Z>@nSdV4Uy)FIzG|#;A7j_zZ}>87V=K7PTW$A5T&mF*x(h)oYrT* zjo99M=0*2V+h*sqs4;#!m;?`(0=6Lb>aD6&3gS#q6=RFIVi}3MnSW3ofF_ zAhnmr)5I_gU*MB3f@o@nHB60M=O+tAeGfJLt?Y1I`=bFtM?^umY0LR;L!_Qdz{@HJ zIy|GkS6N!~$5#C?C5wTpDV&@x$5Vyy>#P`y#HR4 zs%5!@X00KRmXW1-uC$eF`*Hu=>I9!wxo>8js@8T76uambh??v3;AnNgo*!0UnM~dK zLf7g%pwCPC%~`Qbn01uP^k*q6p#Y)qTXfQM+I zB}vB^kaU=WhYR^p(4C%gLv$?ID+F_Lz(y+V`tHFA1-=W=Q!ceI)i_|Gl5pf-V(Tu4 zAbo4OJ*o4}fT#{DG8hV3^)@TTjaizi~RS#@eBFO{MmhYR^Qk=SGbHc$) zxC&S{f&Ag|;A3mIEp5ot?-TT`A0E9iBb@53t_su|S>On3VbA%O80$5nBlV`DgBF~d zHVu3walB}OHnqH=DZ4JK|NXhn8|r~K=Hlygf~g@juf7h3>i11bG#~T|MCKHIeR-k@ zB7ZT}NEwgAKTzXz-|!f2ZXJ-CmzNd-tEqS+I?oz?Do5;NYr58_k+`l)RX1Gb@vmwQ%WnG%y@oO-Lh8SI@_#zp29Lp2dv?)NCv&Ku>8L>CoTU-r2(44E+!}gRl9Hgd}hqg z0U~1jmWSRxvh(cUv!;Vvf4hy#QZAd{Iup=nREn-ov4DBX<1$`M;rszbb9J4!yn zYZ&CgNX*~EPD~0@*F&&0ixcBOIhOnMy^g{9Fy1X;-peR_?g1R#=bBV~En69}#XV|! z_drR?pla-a=X0S!U$DP=1)-s0q3nCW>aR2H_Y;D3-|l>uEmfwhX0p^AuI4Je9_|{jsR}g69xGmM zGlulYsg?comf@p5VAJ;JMGLP#ca%(MNf&B2h5#AgX{{cye#SiN@Y|nCmk58Td#7Uz zG6eGrZQR~N>&A=*V8(Yn16=$SDXMwVbMtbYI&<8j=^o|$=6Mc-M+0$^yUCJ!4tTeP zq+=o-cOY_%w~Y`S%JI-9=KC@`{^G8f|8l_GHl}J!p!ya%WsvWvFB|PKRpy2H5uI+n z^Q^AKV`QZ7z2v-qg@>{8L!gI$Cc?`Q{enkA8fp>4MY^nES3g(q~KIcr+g>xP9+1a%2oZ=S!K(#2My2r3cl+Snm`6R z`hVI>&)qwRj+~GTAF`j%n8>^b$iqGP6yYsD46lGxoYx2P49I>Y^MRnL(ZaWd;h*ii zGYa^ig-Cb;+~ed)IYD7+7rXu$mo$`*J(7uw0i$*;FiC5^M!Ozo=OC{zhCr(}<_fj5 zVq8;Wt97R@Kh6S>H)rWgcBH*qf}9pMOe=-wJdP>H z9*gG*wN`AO5WM_0x$M+u68;9Vu;P1h35a$7Gky@m5ce-ec?T!ibP4HTxXWu+;6UU= z(h9TwavZ+z`}bXJ$E1+Sk&HGKUJGrFa33%Ch^2S`qx5EXw#X!RppQs1abkyTcq918 zrhA@B`r}SZ_!M7z{T`VyY3BI&`9J&kzasJ76<5#ww-Q?f?p`aaBR1TzwtZ}@mqemDQPYBe|&!6X5xq#H#d`$^mN#kMwl~FCc#2d8Up_ayr zHyw2wPth(b-U)zvw1rzZha!f!UhN!{$F*>xW<5I&eDeSXmC4uXzqxx{RQNv4Q{mf+ zD6w+MwyL^a!?#`1qS1#0Pe9tfziO-9G`-*N1z`pL>Fe?yvAJjRbr5<=N+N0ZiXUw{ zw&v-BQMw93;-i^5I(r z($*Kr6}Ikg!%QL!fCX{Tmy`p;#s95u=AH9Yg8-j3 z18cI}+oaU`1HC^A_|`_dMoDdVvYE$xA#&Ik=<~|s4OcIlnYuW(f+-WYd?5rLZuGeU0 zt|?@Et45%$^*PJS@XMGk^Pxp)Wx)=24#Jq7oDgKLzx@6m(b@ZZLh$WJmI9fJi-nQN z>WZkd4#1uz)w6YRvp+uy7a@doIw_q#4q(BTH???2r8a6lm0xf59b|Tx@|fF}9;>@} z{PmyaVAf6u$ju@|;x;S8s?KHaI6QO145p@4jQM>xCe+8BbL-kYVv)j98yA;pf zt`R!iBi?8fm03icpM$ay=hTi*$_9N6ekS=EJ3j#y8ogt(;Vxza$yMzC=(CIme(eV@ z3$J%xyZ}mH(8Hu4f4R7#dQR-TOP5gk`gC>s8br*4y2boWychpA7;slzSFKdVD&+qF D#&8dG literal 0 HcmV?d00001 diff --git a/content/images/surfacebr.png b/content/images/surfacebr.png new file mode 100644 index 0000000000000000000000000000000000000000..6c41c967a97d41a08649294477e71ff455c5876e GIT binary patch literal 14307 zcmeIZXH-+sw>^3i5(zy4snP-p2qH!4Ep#k2k*-vw_uh#Rst8y>>Ag#nt~7&!bd*p; zq(})Jq<7x&ci*`Gd&hfU-?ukLGIFxA&pG?-J=a`wue}nZqoqzo&O#0V0M#80l?UJ_ z1^}Q~#3k_P278Dy_yMz3)Kmn3>I8~YOE~zQ%uU1C69B03|K1RKzPnh^$n2$RGITz^Y%^Qo1!9rIqj1GK*HjVisC~*v-RJk39{-VVs4?{x!(e! zxwt>1N01m@a_VIY7q;N0Q%x2bPmaNpK~By?&pb?g9UOmXEoEe|FBb=vmaR?(t{ALM z{rq))*ri~We#?M-t4QI@9wOAdg@>-xO`UzpO{R&O*(4u&)pEMs%P7=(_{Zc+vB~Jp zphDYLFdggbi&p@7H01hj!CSMBhpXln0e|1Nojw)5bbd-y5W=JeZN#9yU2H`uPi;Gqmjo z@?BWyi&5eD zd%`7Q1n!S0q;Q4`C6 zdBS`C29C({-693HN&#*i3T?SP!qV7th7|tcfJYy{QC`XGa_(^XS;T_k z(;E+7HJ$!=IN;mr`4@by&_fp|>P^CFI53gbN0vb;rlhOb!jc_CHJk}?P)rNl{jRRg zO$ZZ_x^%xk^bR(W$!EL87IUqy$QEZwOq)Jk{K}mmE6Rjs-TNW}jz=}wlQr+%@6;$m zk8iemB)BWvQ5+$D#WAknpevW-d>zh3pk7MSRBX5e`$FixC9qu?vR9_8DSLi6r@Z+{ zCinVL7s3LkGCP}hw&yToesMhJ7OY2dUtzQD;v7OFw>$LJIzdkSzD6maw@m{*RJuNo zC+QX?2|D;$OD9V5X=gx2sC7H3lCqAIa-kf0zgq#J)2(@#5Q$u4#(bYDvc)EzZ}_$a z{*4d{n*Fo!X|vUD>oaN8{y4etwF^GXw}>dp-id5SIfCpn(an#m70(Al&v!c9lm0X6 zrz?hSEYhTOa6L7#T%;v|p_x)lD2zAL@6R8)tivxlBqA6@eQ^7mQwr1!l%y{$^ss}2 z+PYZDwD!rsi#aKBxu-$L!&&T9$T0JhiLuD)MmBiid|N*mmvb45#RP(~m#KwPV?nWx zxu$#�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%0ATCa^&wT4QxaQrB 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 ZQo&ZKb%Mq|_=h~;j;fYQg_1?s{{@otj%@${ literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 21aacc9..dabb245 100644 --- a/main.cpp +++ b/main.cpp @@ -1428,6 +1428,8 @@ void Demo::run() { // Load objects here= cursor = Texture::fromFile(GetFileInPath("/content/cursor2.png")); + Globals::surface = Texture::fromFile(GetFileInPath("/content/images/surfacebr.png")); + Globals::surfaceId = Globals::surface->getOpenGLID(); fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt")); fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt")); cameraSound = GetFileInPath("/content/sounds/SWITCH3.wav"); From 5c902585467a42518249da6e0c37eeca277fdd66 Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Tue, 12 Jun 2018 14:24:14 -0400 Subject: [PATCH 013/105] Quick initialization fix. Small mouse bug fixed too. --- Demo.h | 2 +- main.cpp | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Demo.h b/Demo.h index a1b67bc..1227a4e 100644 --- a/Demo.h +++ b/Demo.h @@ -22,7 +22,7 @@ class Demo { // : public GApp { void onCreate(HWND parentWindow); void onKeyPressed(int key); void onKeyUp(int key); - void onMouseLeftPressed(int x, int y); + void onMouseLeftPressed(HWND hwnd,int x, int y); void onMouseLeftUp(int x, int y); void onMouseRightPressed(int x, int y); void onMouseRightUp(int x, int y); diff --git a/main.cpp b/main.cpp index dabb245..cf6d0cc 100644 --- a/main.cpp +++ b/main.cpp @@ -118,9 +118,6 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w Win32Window* window = Win32Window::create(settings.window,_hwndRenderer); ShowWindow(_hwndRenderer, SW_SHOW); - SetWindowLongPtr(_hWndMain,GWL_USERDATA,(LONG)this); - SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); - SetWindowLongPtr(_hwndToolbox,GWL_USERDATA,(LONG)this); ShowWindow(_hWndMain, SW_SHOW); quit=false; rightButtonHolding=false; @@ -138,6 +135,9 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w _window = renderDevice->window(); _window->makeCurrent(); + SetWindowLongPtr(_hWndMain,GWL_USERDATA,(LONG)this); + SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); + SetWindowLongPtr(_hwndToolbox,GWL_USERDATA,(LONG)this); } void clearInstances() @@ -1200,8 +1200,10 @@ void Demo::onKeyUp(int key) } -void Demo::onMouseLeftPressed(int x,int y) +void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) { + SetFocus(hwnd); + std::cout << "Click: " << x << "," << y << std::endl; bool onGUI = false; @@ -1379,7 +1381,7 @@ LRESULT CALLBACK G3DProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) app->QuitApp(); break; case WM_LBUTTONDOWN: - app->onMouseLeftPressed(LOWORD(lParam),HIWORD(lParam)); + app->onMouseLeftPressed(hwnd,LOWORD(lParam),HIWORD(lParam)); break; case WM_LBUTTONUP: app->onMouseLeftUp(LOWORD(lParam),HIWORD(lParam)); From 2a2d6a777bbf19e0a6932b7d08f4f0acdfc2e38f Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Thu, 5 Jul 2018 18:06:27 -0700 Subject: [PATCH 014/105] Keyboard camera controls. Comma: Pan Left Period: Pan Right I: Zoom in O: Zoom out --- main.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/main.cpp b/main.cpp index cf6d0cc..e78c5df 100644 --- a/main.cpp +++ b/main.cpp @@ -890,15 +890,24 @@ void Demo::onUserInput(UserInput* ui) { Sleep(10); } } - + // Camera KB Handling { + if (GetKPBool(VK_OEM_COMMA)) //Left + usableApp->cameraController.panLeft(); + else if (GetKPBool(VK_OEM_PERIOD)) // Right + usableApp->cameraController.panRight(); + else if (GetKPBool(0x49)) // Zoom In (I) + usableApp->cameraController.Zoom(1); + else if (GetKPBool(0x4F)) // Zoom Out (O) + usableApp->cameraController.Zoom(-1); + // } //readMouseGUIInput(); // Add other key handling here } - - - +bool GetKPBool(int VK) { + return (GetKeyState(VK) & 0x8000); +} void makeFlag(Vector3 &vec, RenderDevice* &rd) { From bf946ead5454235b01ba0e340863f5bbbeca61e5 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Thu, 5 Jul 2018 20:02:51 -0700 Subject: [PATCH 015/105] Changed placeholder name to another placeholder name --- main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index cf6d0cc..f3b4bc1 100644 --- a/main.cpp +++ b/main.cpp @@ -151,7 +151,7 @@ void OnError(int err, std::string msg = "") //usableApp->window()->setMouseVisible(true); std::string emsg = "An unexpected error has occured and DUOM 5 has to quit. We're sorry!" + msg; clearInstances(); - MessageBox(NULL, emsg.c_str(),"Dynamica Crash", MB_OK); + MessageBox(NULL, emsg.c_str(),"Hypercube Crash", MB_OK); exit(err); } @@ -1541,7 +1541,7 @@ void Demo::onCreate(HWND parentWindow) int main(int argc, char** argv) { try{ - tempPath = ((std::string)getenv("temp")) + "/Dynamica"; + tempPath = ((std::string)getenv("temp")) + "/Hypercube"; CreateDirectory(tempPath.c_str(), NULL); message = tempPath; @@ -1578,7 +1578,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND","Hypercube Crash", MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From 838f69944e6d324c13d441e77cbdf86041b9c356 Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Thu, 5 Jul 2018 21:02:37 -0700 Subject: [PATCH 016/105] un-break my commit, make a easy way to change placeholder name --- main.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/main.cpp b/main.cpp index 5300ea8..9be63e9 100644 --- a/main.cpp +++ b/main.cpp @@ -62,6 +62,7 @@ bool dragging = false; Vector2 oldMouse = Vector2(0,0); float moveRate = 0.5; Instance* selectedInstance = NULL; +static const std::string PlaceholderName = "Dynamica"; Demo *usableApp = NULL; @@ -149,9 +150,10 @@ void OnError(int err, std::string msg = "") { //usableApp->window()->setInputCaptureCount(0); //usableApp->window()->setMouseVisible(true); - std::string emsg = "An unexpected error has occured and DUOM 5 has to quit. We're sorry!" + msg; + std::string emsg = "An unexpected error has occured and "+PlaceholderName+" has to quit. We're sorry!" + msg; + std::string title = PlaceholderName+"Crash"; clearInstances(); - MessageBox(NULL, emsg.c_str(),"Hypercube Crash", MB_OK); + MessageBox(NULL, emsg.c_str(), title.c_str(), MB_OK); exit(err); } @@ -836,6 +838,10 @@ bool IsHolding(int button) return (GetKeyState(button) >> 1)>0; } +bool GetKPBool(int VK) { + return (GetKeyState(VK) & 0x8000); +} + void Demo::onUserInput(UserInput* ui) { /* @@ -905,10 +911,6 @@ void Demo::onUserInput(UserInput* ui) { // Add other key handling here } -bool GetKPBool(int VK) { - return (GetKeyState(VK) & 0x8000); -} - void makeFlag(Vector3 &vec, RenderDevice* &rd) { @@ -1550,7 +1552,7 @@ void Demo::onCreate(HWND parentWindow) int main(int argc, char** argv) { try{ - tempPath = ((std::string)getenv("temp")) + "/Hypercube"; + tempPath = ((std::string)getenv("temp")) + "/"+PlaceholderName; CreateDirectory(tempPath.c_str(), NULL); message = tempPath; From a47268830b131c5204c173261e657e0a58ce5cd3 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Fri, 6 Jul 2018 11:48:25 -0700 Subject: [PATCH 017/105] Added web browser variable --- G3DTest.vcproj | 2 ++ main.cpp | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 7cf57bf..e8f6828 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -21,6 +21,7 @@ ConfigurationType="1" InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" UseOfMFC="0" + UseOfATL="2" ATLMinimizesCRunTimeLibraryUsage="false" CharacterSet="2" > @@ -73,6 +74,7 @@ /> +#include +#include +#include +#include @@ -38,6 +42,7 @@ #endif HWND hwnd; +IWebBrowser2* test; static std::string title = ""; static DataModelInstance* dataModel; GFontRef fntdominant = NULL; @@ -66,6 +71,8 @@ static const std::string PlaceholderName = "Dynamica"; Demo *usableApp = NULL; + + Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,window) { _hWndMain = parentWindow; @@ -838,7 +845,7 @@ bool IsHolding(int button) return (GetKeyState(button) >> 1)>0; } -bool GetKPBool(int VK) { +BOOL GetKPBool(int VK) { return (GetKeyState(VK) & 0x8000); } From f99d18f6ae2f2d1ca9bf4a55a75c05cf65abdf7f Mon Sep 17 00:00:00 2001 From: andreja6 Date: Fri, 6 Jul 2018 12:42:03 -0700 Subject: [PATCH 018/105] Added AX --- G3DTest.vcproj | 8 + ax.cpp | 639 +++++++++++++++++++++++++++++++++++++++++++++++++ ax.h | 142 +++++++++++ main.cpp | 10 +- 4 files changed, 795 insertions(+), 4 deletions(-) create mode 100644 ax.cpp create mode 100644 ax.h diff --git a/G3DTest.vcproj b/G3DTest.vcproj index e8f6828..c2dff5b 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -236,6 +236,10 @@ RelativePath=".\AudioPlayer.cpp" > + + @@ -317,6 +321,10 @@ RelativePath=".\AudioPlayer.h" > + + diff --git a/ax.cpp b/ax.cpp new file mode 100644 index 0000000..f636501 --- /dev/null +++ b/ax.cpp @@ -0,0 +1,639 @@ +// AX.CPP +#include +#include +#include +#include +#include "ax.h" + + +#pragma warning (disable: 4311) +#pragma warning (disable: 4312) +#pragma warning (disable: 4244) +#pragma warning (disable: 4800) + + +// AXClientSite class +// ------- Implement member functions +AXClientSite :: AXClientSite() + { + refNum = 0; + CalledCanInPlace = 0; + InPlace = 0; + } + +AXClientSite :: ~AXClientSite() + { + } + + +// IUnknown methods +STDMETHODIMP AXClientSite :: QueryInterface(REFIID iid,void**ppvObject) + { + *ppvObject = 0; + if (iid == IID_IOleClientSite) + *ppvObject = (IOleClientSite*)this; + if (iid == IID_IUnknown) + *ppvObject = this; + if (iid == IID_IAdviseSink) + *ppvObject = (IAdviseSink*)this; + if (iid == IID_IDispatch) + *ppvObject = (IDispatch*)this; + if (ExternalPlace == false) + { + if (iid == IID_IOleInPlaceSite) + *ppvObject = (IOleInPlaceSite*)this; + if (iid == IID_IOleInPlaceFrame) + *ppvObject = (IOleInPlaceFrame*)this; + if (iid == IID_IOleInPlaceUIWindow) + *ppvObject = (IOleInPlaceUIWindow*)this; + } + + //* Log Call + if (*ppvObject) + { + AddRef(); + return S_OK; + } + return E_NOINTERFACE; + } + +STDMETHODIMP_(ULONG) AXClientSite :: AddRef() + { + refNum++; + return refNum; + } + +STDMETHODIMP_(ULONG) AXClientSite :: Release() + { + refNum--; + return refNum; + } + + +// IOleClientSite methods +STDMETHODIMP AXClientSite :: SaveObject() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: GetMoniker(DWORD dwA,DWORD dwW,IMoniker**pm) + { + *pm = 0; + return E_NOTIMPL; + } + +STDMETHODIMP AXClientSite :: GetContainer(IOleContainer**pc) + { + *pc = 0; + return E_FAIL; + } + +STDMETHODIMP AXClientSite :: ShowObject() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: OnShowWindow(BOOL f) + { + InvalidateRect(Window, 0, TRUE); + InvalidateRect(Parent, 0, TRUE); + return S_OK; + } + +STDMETHODIMP AXClientSite :: RequestNewObjectLayout() + { + return S_OK; + } + +STDMETHODIMP_(void) AXClientSite :: OnViewChange(DWORD dwAspect,LONG lIndex) + { + } + +STDMETHODIMP_(void) AXClientSite :: OnRename(IMoniker * pmk) + { + } + +STDMETHODIMP_(void) AXClientSite :: OnSave() + { + } + +STDMETHODIMP_(void) AXClientSite :: OnClose() + { + } + + + // IOleInPlaceSite methods +STDMETHODIMP AXClientSite :: GetWindow(HWND *p) + { + *p = Window; + return S_OK; + } + +STDMETHODIMP AXClientSite :: ContextSensitiveHelp(BOOL) + { + return E_NOTIMPL; + } + + +STDMETHODIMP AXClientSite :: CanInPlaceActivate() + { + if (InPlace) + { + CalledCanInPlace = true; + return S_OK; + } + return S_FALSE; + } + +STDMETHODIMP AXClientSite :: OnInPlaceActivate() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: OnUIActivate() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: GetWindowContext(IOleInPlaceFrame** ppFrame,IOleInPlaceUIWindow **ppDoc,LPRECT r1,LPRECT r2,LPOLEINPLACEFRAMEINFO o) + { + *ppFrame = (IOleInPlaceFrame*)this; + AddRef(); + + *ppDoc = NULL; + GetClientRect(Window,r1); + GetClientRect(Window,r2); + o->cb = sizeof(OLEINPLACEFRAMEINFO); + o->fMDIApp = false; + o->hwndFrame = Parent; + o->haccel = 0; + o->cAccelEntries = 0; + + return S_OK; + } + +STDMETHODIMP AXClientSite :: Scroll(SIZE s) + { + return E_NOTIMPL; + } + +STDMETHODIMP AXClientSite :: OnUIDeactivate(int) + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: OnInPlaceDeactivate() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: DiscardUndoState() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: DeactivateAndUndo() + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: OnPosRectChange(LPCRECT) + { + return S_OK; + } + + +// IOleInPlaceFrame methods + STDMETHODIMP AXClientSite :: GetBorder(LPRECT l) + { + GetClientRect(Window,l); + return S_OK; + } + +STDMETHODIMP AXClientSite :: RequestBorderSpace(LPCBORDERWIDTHS b) + { + //return S_OK; + return E_NOTIMPL; + } + +STDMETHODIMP AXClientSite :: SetBorderSpace(LPCBORDERWIDTHS b) + { + return S_OK; + } + +STDMETHODIMP AXClientSite :: SetActiveObject(IOleInPlaceActiveObject*pV,LPCOLESTR s) + { + ax->Pao = pV; + return S_OK; + } + + +STDMETHODIMP AXClientSite :: SetStatusText(LPCOLESTR t) + { + return E_NOTIMPL; + } + +STDMETHODIMP AXClientSite :: EnableModeless(BOOL f) + { + return E_NOTIMPL; + } + +STDMETHODIMP AXClientSite :: TranslateAccelerator(LPMSG,WORD) + { + return E_NOTIMPL; + } + + +// IDispatch Methods +HRESULT _stdcall AXClientSite :: GetTypeInfoCount( + unsigned int * pctinfo) {return E_NOTIMPL;} + +HRESULT _stdcall AXClientSite :: GetTypeInfo( + unsigned int iTInfo, + LCID lcid, + ITypeInfo FAR* FAR* ppTInfo) {return E_NOTIMPL;} + +HRESULT _stdcall AXClientSite :: GetIDsOfNames( + REFIID riid, + OLECHAR FAR* FAR*, + unsigned int cNames, + LCID lcid, + DISPID FAR* ) {return E_NOTIMPL;} + + +// Other Methods +void AX :: Init(char* cls) + { + wchar_t x[1000] = {0}; + MultiByteToWideChar(CP_ACP,0,cls,-1,x,1000); + CLSIDFromString(x,&clsid); + iid = (IID*)&IID_IOleObject; + OleObject = 0; + Storage = 0; + View = 0; + Data = 0; + Unk = 0; + Pao = 0; + AdviseToken = 0; + memset(DAdviseToken,0,sizeof(DAdviseToken)); + Site.ax = this; + } + +AX :: AX(char* cls) + { + Init(cls); + } + + + +void AX :: Clean() + { + if (Site.InPlace == true) + { + Site.InPlace = false; + IOleInPlaceObject* iib = 0; + if (OleObject) + OleObject->QueryInterface(IID_IOleInPlaceObject,(void**)&iib); + if (iib) + { + iib->UIDeactivate(); + iib->InPlaceDeactivate(); + iib->Release(); + } + } + + if (AdviseToken && OleObject) + { + OleObject->Unadvise(AdviseToken); + AdviseToken = 0; + } + if (Data) + { + for(int i = 0 ; i < 100 ; i++) + if (DAdviseToken[i]) + Data->DUnadvise(DAdviseToken[i]); + memset(DAdviseToken,0,sizeof(DAdviseToken)); + } + + + if (Pao) Pao->Release(); + if (Unk) Unk->Release(); + if (Data) Data->Release(); + if (View) View->Release(); + if (Storage) Storage->Release(); + if (OleObject) OleObject->Release(); + Unk = 0; + Data = 0; + View = 0; + Storage = 0; + OleObject = 0; + + } + +AX :: ~AX() + { + Clean(); + } + +CLSID AX :: GetCLSID() + { + return clsid; + } + +HRESULT _stdcall AXClientSite :: InsertMenus(HMENU h,LPOLEMENUGROUPWIDTHS x) + { +/* AX * t = (AX*)ax; + if (t->AddMenu) + { + x->width[0] = 0; + x->width[2] = 0; + x->width[4] = 0; + //InsertMenu(h,0,MF_BYPOSITION | MF_POPUP,(int)Menu,"test"); + return S_OK; + } +*/ + return E_NOTIMPL; + } +HRESULT _stdcall AXClientSite :: SetMenu(HMENU h,HOLEMENU hO,HWND hw) + { + AX * t = (AX*)ax; +/* if (t->AddMenu) + { + if (!h && !hO) + { + //::SetMenu(Window,Menu); + //DrawMenuBar(Window); + ::SetMenu(Parent,Menu); + DrawMenuBar(Parent); + return S_OK; + } + + //::SetMenu(Window,h); + //DrawMenuBar(Window); + + //HMENU hm = GetMenu(Parent); + //AppendMenu(hm,MF_POPUP | MF_MENUBREAK,(int)h,0); + //::SetMenu(Parent,hm); + ::SetMenu(Parent,h); + DrawMenuBar(Parent); + + //hOleWindow = hw; + //OleSetMenuDescriptor(hO,Window,hw,0,0); + OleSetMenuDescriptor(hO,Parent,hw,0,0); + + return S_OK; + } +*/ + return E_NOTIMPL; + } + +HRESULT _stdcall AXClientSite :: RemoveMenus(HMENU h) + { + AX * t = (AX*)ax; + if (t->AddMenu) + { + if (!h) + return S_OK; + + int c = GetMenuItemCount(h); + for (int i = c ; i >= 0 ; i--) + { + HMENU hh = GetSubMenu(h,i); + if (hh == Menu) + RemoveMenu(h,i,MF_BYPOSITION); + } + if (h == Menu) + DestroyMenu(h); + + //DrawMenuBar(Window); + DrawMenuBar(Parent); + return S_OK; + } + return E_NOTIMPL; + } + + +HRESULT _stdcall AXClientSite :: Invoke( + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS FAR* pDispParams, + VARIANT FAR* pVarResult, + EXCEPINFO FAR* pExcepInfo, + unsigned int FAR* puArgErr) + { + return E_NOTIMPL; + } + + +void _stdcall AXClientSite :: OnDataChange(FORMATETC *pFormatEtc,STGMEDIUM *pStgmed) + { + // Notify our app that a change is being requested + return; + } + + + + + + + + +// Window Procedure for AX control +LRESULT CALLBACK AXWndProc(HWND hh,UINT mm,WPARAM ww,LPARAM ll) + { + if (mm == WM_CREATE) + { + char tit[1000] = {0}; + HRESULT hr; + + GetWindowTextA(hh,tit,1000); + + AX* ax; + ax = new AX(tit); + + SetWindowLong(hh,GWL_USERDATA,(LONG)ax); + ax->Site.Window = hh; + ax->Site.Parent = GetParent(hh); + + hr = StgCreateDocfile(0,STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_DIRECT | STGM_CREATE,0,&ax->Storage); + ax->Site.Window = hh; + + REFIID rid = *ax->iid; + hr = OleCreate(ax->GetCLSID(),rid,OLERENDER_DRAW,0,&ax->Site,ax->Storage,(void**)&ax->OleObject); + + + + if (!ax->OleObject) + { + delete ax; + SetWindowLong(hh,GWL_USERDATA,0); + return -1; + } + + hr = OleSetContainedObject(ax->OleObject, TRUE); + hr = ax->OleObject->Advise(&ax->Site,&ax->AdviseToken); + hr = ax->OleObject->QueryInterface(IID_IViewObject,(void**)&ax->View); + hr = ax->OleObject->QueryInterface(IID_IDataObject,(void**)&ax->Data); + if (ax->View) + hr = ax->View->SetAdvise(DVASPECT_CONTENT,0,&ax->Site); + + + + return 0; + } + + + + if (mm == WM_DESTROY) + { + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + if (!ax) + return 0; + ax->Clean(); + return true; + } + + if (mm == AX_SETDATAADVISE) + { + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + if (!ax) + return 0; + + // 1.Enum available FORMATETC structures + // 2.Set Data Advise specified to index ww + if (!ax->Data) + return 0; + + IEnumFORMATETC* ief = 0; + int i = 0; + + FORMATETC fe; + ax->Data->EnumFormatEtc((LPARAM)ll,&ief); + if (!ief) + return 0; + for(;;) + { + HRESULT hr = ief->Next(1,&fe,0); + if (hr != S_OK) + break; + if (ww == i) + break; + i++; + } + ief->Release(); + if (ww == -1) + return i; + + if (ax->Data) + ax->Data->DAdvise(&fe,0,&ax->Site,&ax->DAdviseToken[ww]); + + return true; + } + + if (mm == AX_GETAXINTERFACE) + { + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + return (LONG)ax; + } + + if (mm == AX_QUERYINTERFACE) + { + char* p = (char*)ww; + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + if (!ax) + return 0; + return ax->OleObject->QueryInterface((REFIID)*p,(void**)ll); + } + + if (mm == WM_LBUTTONDBLCLK) + { + PostMessage(hh,AX_INPLACE,1,0); + return 0; + } + + + if (mm == AX_INPLACE) + { + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + if (!ax) + return 0; + if (!ax->OleObject) + return 0; + RECT rect; + HRESULT hr; + ::GetClientRect(hh,&rect); + + if (ax->Site.InPlace == false && ww == 1) // Activate In Place + { + ax->Site.InPlace = true; + ax->Site.ExternalPlace = ll; + hr = ax->OleObject->DoVerb(OLEIVERB_INPLACEACTIVATE,0,&ax->Site,0,hh,&rect); + InvalidateRect(hh,0,true); + return 1; + } + + if (ax->Site.InPlace == true && ww == 0) // Deactivate + { + ax->Site.InPlace = false; + + IOleInPlaceObject* iib; + ax->OleObject->QueryInterface(IID_IOleInPlaceObject,(void**)&iib); + if (iib) + { + iib->UIDeactivate(); + iib->InPlaceDeactivate(); + iib->Release(); + InvalidateRect(hh,0,true); + return 1; + } + } + return 0; + } + + if (mm == WM_SIZE) + { + AX* ax = (AX*)GetWindowLong(hh,GWL_USERDATA); + if (!ax) + return 0; + if (!ax->OleObject) + return 0; + + DefWindowProc(hh,mm,ww,ll); + + if (ax->Site.InPlace == true) + { + SendMessage(hh,AX_INPLACE,0,0); + InvalidateRect(hh,0,true); + SendMessage(hh,AX_INPLACE,1,0); + } + + IOleInPlaceObject* pl; + ax->OleObject->QueryInterface(IID_IOleInPlaceObject,(void**)&pl); + if (!pl) + return 0; + RECT r; + GetClientRect(ax->Site.Window,&r); + pl->SetObjectRects(&r,&r); + pl->Release(); + return 0; + } + + return DefWindowProc(hh,mm,ww,ll); + } + +// Registration function +ATOM AXRegister() + { + WNDCLASSEXA wC = {0}; + + wC.cbSize = sizeof(wC); + wC.style = CS_GLOBALCLASS | CS_DBLCLKS; + wC.lpfnWndProc = AXWndProc; + wC.cbWndExtra = 4; + wC.hInstance = GetModuleHandle(0); + wC.lpszClassName = "AX"; + return RegisterClassExA(&wC); + } + diff --git a/ax.h b/ax.h new file mode 100644 index 0000000..e935a9b --- /dev/null +++ b/ax.h @@ -0,0 +1,142 @@ +// AX.H + +// messages +#define AX_QUERYINTERFACE (WM_USER + 1) +#define AX_INPLACE (WM_USER + 2) +#define AX_GETAXINTERFACE (WM_USER + 3) +#define AX_CONNECTOBJECT (WM_USER + 4) +#define AX_DISCONNECTOBJECT (WM_USER + 5) +#define AX_SETDATAADVISE (WM_USER + 6) +#define AX_DOVERB (WM_USER + 7) + + +// Registration function +ATOM AXRegister(); + + +// Class AXClientSide +class AXClientSite : + public IOleClientSite, + public IDispatch, + public IAdviseSink, + public IOleInPlaceSite, + public IOleInPlaceFrame + { + protected: + + int refNum; + + public: + + + HWND Window; + HWND Parent; + HMENU Menu; + bool InPlace; + bool ExternalPlace; + bool CalledCanInPlace; + + class AX* ax; + + // MyClientSite Methods + AXClientSite(); + virtual ~AXClientSite(); + STDMETHODIMP_(void) OnDataChange2(FORMATETC*); + + // IUnknown methods + STDMETHODIMP QueryInterface(REFIID iid,void**ppvObject); + STDMETHODIMP_(ULONG) AddRef(); + STDMETHODIMP_(ULONG) Release(); + + // IOleClientSite methods + STDMETHODIMP SaveObject(); + STDMETHODIMP GetMoniker(DWORD dwA,DWORD dwW,IMoniker**pm); + STDMETHODIMP GetContainer(IOleContainer**pc); + STDMETHODIMP ShowObject(); + STDMETHODIMP OnShowWindow(BOOL f); + STDMETHODIMP RequestNewObjectLayout(); + + // IAdviseSink methods + STDMETHODIMP_(void) OnDataChange(FORMATETC *pFormatEtc,STGMEDIUM *pStgmed); + + STDMETHODIMP_(void) OnViewChange(DWORD dwAspect,LONG lIndex); + STDMETHODIMP_(void) OnRename(IMoniker * pmk); + STDMETHODIMP_(void) OnSave(); + STDMETHODIMP_(void) OnClose(); + + // IOleInPlaceSite methods + STDMETHODIMP GetWindow(HWND *p); + STDMETHODIMP ContextSensitiveHelp(BOOL); + STDMETHODIMP CanInPlaceActivate(); + STDMETHODIMP OnInPlaceActivate(); + STDMETHODIMP OnUIActivate(); + STDMETHODIMP GetWindowContext(IOleInPlaceFrame** ppFrame,IOleInPlaceUIWindow **ppDoc,LPRECT r1,LPRECT r2,LPOLEINPLACEFRAMEINFO o); + STDMETHODIMP Scroll(SIZE s); + STDMETHODIMP OnUIDeactivate(int); + STDMETHODIMP OnInPlaceDeactivate(); + STDMETHODIMP DiscardUndoState(); + STDMETHODIMP DeactivateAndUndo(); + STDMETHODIMP OnPosRectChange(LPCRECT); + + // IOleInPlaceFrame methods + STDMETHODIMP GetBorder(LPRECT l); + STDMETHODIMP RequestBorderSpace(LPCBORDERWIDTHS); + STDMETHODIMP SetBorderSpace(LPCBORDERWIDTHS w); + STDMETHODIMP SetActiveObject(IOleInPlaceActiveObject*pV,LPCOLESTR s); + STDMETHODIMP InsertMenus(HMENU h,LPOLEMENUGROUPWIDTHS x); + STDMETHODIMP SetMenu(HMENU h,HOLEMENU hO,HWND hw); + STDMETHODIMP RemoveMenus(HMENU h); + STDMETHODIMP SetStatusText(LPCOLESTR t); + STDMETHODIMP EnableModeless(BOOL f); + STDMETHODIMP TranslateAccelerator(LPMSG,WORD); + + + // IDispatch Methods + HRESULT _stdcall GetTypeInfoCount(unsigned int * pctinfo); + HRESULT _stdcall GetTypeInfo(unsigned int iTInfo,LCID lcid,ITypeInfo FAR* FAR* ppTInfo); + HRESULT _stdcall GetIDsOfNames(REFIID riid,OLECHAR FAR* FAR*,unsigned int cNames,LCID lcid,DISPID FAR* ); + HRESULT _stdcall Invoke(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS FAR* pDispParams,VARIANT FAR* pVarResult,EXCEPINFO FAR* pExcepInfo,unsigned int FAR* puArgErr); + + // IOleControlSite Methods + }; + + + + +// Class AX +class AX + { + public: + + AX(char* clsid); + CLSID GetCLSID(); + ~AX(); + + + void Init(char* clsid); + void Clean(); + + AXClientSite Site; + IID* iid; + IOleObject* OleObject; + IStorage* Storage; + IViewObject* View; + IDataObject* Data; + IUnknown* Unk; + IOleInPlaceActiveObject* Pao; + //AX_CONNECTSTRUCT* tcs; + bool AddMenu; + DWORD AdviseToken; + DWORD DAdviseToken[100]; + + + + + private: + + CLSID clsid; + + + }; + + diff --git a/main.cpp b/main.cpp index a9a70c3..e2e262c 100644 --- a/main.cpp +++ b/main.cpp @@ -34,7 +34,9 @@ #include #include #include - +#include +#include +#include "ax.h" #if G3D_VER < 61000 @@ -71,8 +73,6 @@ static const std::string PlaceholderName = "Dynamica"; Demo *usableApp = NULL; - - Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,window) { _hWndMain = parentWindow; @@ -1559,6 +1559,9 @@ void Demo::onCreate(HWND parentWindow) int main(int argc, char** argv) { try{ + OleInitialize(0); + if (!AXRegister()) + return 0; tempPath = ((std::string)getenv("temp")) + "/"+PlaceholderName; CreateDirectory(tempPath.c_str(), NULL); @@ -1571,7 +1574,6 @@ int main(int argc, char** argv) { settings.logFilename = tempPath + "/g3dlog.txt"; settings.window.center = true; HMODULE hThisInstance = GetModuleHandle(NULL); - if (!createWindowClass("mainHWND",WndProc,hThisInstance)) return false; if (!createWindowClass("toolboxHWND",ToolboxProc,hThisInstance)) From 03fd38aaa74af53daca8e2d8e5a91c17c08eefea Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Fri, 6 Jul 2018 19:23:52 -0400 Subject: [PATCH 019/105] IWebBrowser2 added and is functional. --- main.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/main.cpp b/main.cpp index e2e262c..aa2e5b0 100644 --- a/main.cpp +++ b/main.cpp @@ -77,11 +77,11 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w _hWndMain = parentWindow; HMODULE hThisInstance = GetModuleHandle(NULL); - + IWebBrowser2* wb = 0; _hwndToolbox = CreateWindowEx( WS_EX_ACCEPTFILES, - "toolboxHWND", - "Main test", + "AX", + "{8856F961-340A-11D0-A96B-00C04FD705A2}", WS_CHILD | WS_VISIBLE, 0, 560, @@ -92,6 +92,15 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w hThisInstance, NULL ); + + SendMessage(_hwndToolbox,AX_INPLACE,1,0); + SendMessage(_hwndToolbox,AX_QUERYINTERFACE,(WPARAM)&IID_IWebBrowser2,(LPARAM)&wb); + if (wb) + { + wb->Navigate(L"https://scottbeebiwan.tk/g3d/toolbox/",0,0,0,0); + wb->Release(); + } + _buttonTest = CreateWindow( "COMBOBOX", "", @@ -1562,6 +1571,7 @@ int main(int argc, char** argv) { OleInitialize(0); if (!AXRegister()) return 0; + tempPath = ((std::string)getenv("temp")) + "/"+PlaceholderName; CreateDirectory(tempPath.c_str(), NULL); From dae6dd53907520cb9ee976e97b6731eccc53194f Mon Sep 17 00:00:00 2001 From: andreja6 Date: Fri, 6 Jul 2018 22:38:27 -0700 Subject: [PATCH 020/105] Failed miserably at external functions --- Demo.h | 1 + G3DTest.vcproj | 8 ++++++++ IEDispatcher.cpp | 9 +++++++++ IEDispatcher.h | 13 +++++++++++++ main.cpp | 34 ++++++++++++++++++++++++++++++---- 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 IEDispatcher.cpp create mode 100644 IEDispatcher.h diff --git a/Demo.h b/Demo.h index 1227a4e..7496586 100644 --- a/Demo.h +++ b/Demo.h @@ -5,6 +5,7 @@ class Demo { // : public GApp { public: Demo(const GAppSettings& settings,HWND parentWindow); + void Boop(); virtual ~Demo() {} virtual void exitApplication(); virtual void onInit(); diff --git a/G3DTest.vcproj b/G3DTest.vcproj index c2dff5b..277651e 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -256,6 +256,10 @@ RelativePath=".\Globals.cpp" > + + @@ -341,6 +345,10 @@ RelativePath=".\Globals.h" > + + diff --git a/IEDispatcher.cpp b/IEDispatcher.cpp new file mode 100644 index 0000000..bb2069c --- /dev/null +++ b/IEDispatcher.cpp @@ -0,0 +1,9 @@ +#include "IEDispatcher.h" + +IEDispatcher::IEDispatcher(void) +{ +} + +IEDispatcher::~IEDispatcher(void) +{ +} diff --git a/IEDispatcher.h b/IEDispatcher.h new file mode 100644 index 0000000..b736138 --- /dev/null +++ b/IEDispatcher.h @@ -0,0 +1,13 @@ +#pragma once +#include "oaidl.h" + +class IEDispatcher : public IDispatch +{ +public: + IEDispatcher(void); + ~IEDispatcher(void); + int IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); + ULONG IEDispatcher::AddRef(); + HRESULT IEDispatcher::GetIDsOfNames(const IID &rrid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); + ULONG IEDispatcher::Release(); +}; diff --git a/main.cpp b/main.cpp index aa2e5b0..fba380d 100644 --- a/main.cpp +++ b/main.cpp @@ -16,6 +16,7 @@ #define _WIN32_WINNT 0x0400 #include +#include #include #include "Instance.h" #include "resource.h" @@ -37,6 +38,7 @@ #include #include #include "ax.h" +#include "IEDispatcher.h" #if G3D_VER < 61000 @@ -44,6 +46,18 @@ #endif HWND hwnd; +DEFINE_GUID(CLSID_G3d, 0xB323F8E0L, 0x2E68, 0x11D0, 0x90, 0xEA, 0x00, 0xAA, 0x00, 0x60, 0xF8, 0x6F); +HRESULT hresult; +IUnknown * punk; +IDispatch * pdisp = new IEDispatcher(); +OLECHAR dat = ((OLECHAR)"SayHello"); +OLECHAR * szMember = &dat; +DISPID dispid; +DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; +EXCEPINFO excepinfo; +UINT nArgErr; + + IWebBrowser2* test; static std::string title = ""; static DataModelInstance* dataModel; @@ -86,7 +100,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w 0, 560, 800, - 50, + 60, _hWndMain, // parent NULL, // menu hThisInstance, @@ -1340,6 +1354,14 @@ App::~App() { } */ +void Boop() +{ + OnError(1, "Test"); +} + + + + LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); @@ -1377,6 +1399,7 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK ToolboxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); + MessageBox(NULL, (LPCSTR)wParam, (LPCSTR)lParam, 1); if (app==NULL) { return DefWindowProc(hwnd, msg, wParam, lParam); @@ -1392,6 +1415,7 @@ LRESULT CALLBACK ToolboxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } return 0; } + LRESULT CALLBACK G3DProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); @@ -1543,8 +1567,8 @@ void Demo::resizeWithParent(HWND parentWindow) { RECT rect; GetClientRect(parentWindow,&rect); - SetWindowPos(_hwndRenderer,NULL,0,0,rect.right,rect.bottom-50,SWP_NOMOVE); - SetWindowPos(_hwndToolbox,NULL,0,rect.bottom-50,rect.right,50,SWP_NOACTIVATE | SWP_SHOWWINDOW); + SetWindowPos(_hwndRenderer,NULL,0,0,rect.right,rect.bottom-60,SWP_NOMOVE); + SetWindowPos(_hwndToolbox,NULL,0,rect.bottom-60,rect.right,60,SWP_NOACTIVATE | SWP_SHOWWINDOW); GetClientRect(_hwndRenderer,&rect); int viewWidth=rect.right; int viewHeight=rect.bottom; @@ -1568,7 +1592,9 @@ void Demo::onCreate(HWND parentWindow) int main(int argc, char** argv) { try{ - OleInitialize(0); + hresult = OleInitialize(NULL); + hresult = CoCreateInstance(CLSID_G3d, NULL, CLSCTX_SERVER, IID_IUnknown, (void **)&punk); + hresult = punk->QueryInterface(IID_IDispatch, &pdisp); if (!AXRegister()) return 0; From 341866b8bb902b571a10c54cf3bd47a5cf503990 Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 01:01:51 -0700 Subject: [PATCH 021/105] placeholderName now shows on failed to create hwnd screen instead of "Hypercube" --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index fba380d..9d753fa 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,7 +1634,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND","Hypercube Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From ee1258b177daa3327ef262b0139c966bc43c6eee Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:07:32 -0700 Subject: [PATCH 022/105] help --- IEDispatcher.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/IEDispatcher.h b/IEDispatcher.h index b736138..72c7349 100644 --- a/IEDispatcher.h +++ b/IEDispatcher.h @@ -6,8 +6,6 @@ class IEDispatcher : public IDispatch public: IEDispatcher(void); ~IEDispatcher(void); - int IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); - ULONG IEDispatcher::AddRef(); - HRESULT IEDispatcher::GetIDsOfNames(const IID &rrid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); - ULONG IEDispatcher::Release(); + HRESULT IEDispatcher::QueryInterface(); + HRESULT IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); }; From 4bb2098fe178b17163004dc92f888bd2641ff43e Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 12:11:45 -0700 Subject: [PATCH 023/105] ignore desktop.ini --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8de655f..6c0f1e3 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ log.txt G3DTest.suo G3DTest.suo stderr.txt +desktop.ini From 4401fb8773458008fd3cfa443a9c3d6854ad969f Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:39:31 -0700 Subject: [PATCH 024/105] Thing that sorta kinda works --- IEDispatcher.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/IEDispatcher.h b/IEDispatcher.h index 72c7349..c3dfb77 100644 --- a/IEDispatcher.h +++ b/IEDispatcher.h @@ -6,6 +6,13 @@ class IEDispatcher : public IDispatch public: IEDispatcher(void); ~IEDispatcher(void); - HRESULT IEDispatcher::QueryInterface(); - HRESULT IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); + HRESULT STDMETHODCALLTYPE IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); + ULONG STDMETHODCALLTYPE IEDispatcher::AddRef(); + ULONG STDMETHODCALLTYPE IEDispatcher::Release(); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfoCount(UINT *pctinfo); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfo(UINT, LCID, ITypeInfo **); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetIDsOfNames(const IID &, LPOLESTR *, UINT, LCID, DISPID *); + HRESULT STDMETHODCALLTYPE IEDispatcher::Invoke(DISPID, const IID &, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); + + }; From bbab248209a562eb84a3d691b8c8dd3c9cfa1a92 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:41:08 -0700 Subject: [PATCH 025/105] l i n k e r e r r o r s --- IEDispatcher.h | 1 - main.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/IEDispatcher.h b/IEDispatcher.h index c3dfb77..9cc1e41 100644 --- a/IEDispatcher.h +++ b/IEDispatcher.h @@ -14,5 +14,4 @@ public: HRESULT STDMETHODCALLTYPE IEDispatcher::GetIDsOfNames(const IID &, LPOLESTR *, UINT, LCID, DISPID *); HRESULT STDMETHODCALLTYPE IEDispatcher::Invoke(DISPID, const IID &, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); - }; diff --git a/main.cpp b/main.cpp index 9d753fa..ae5545f 100644 --- a/main.cpp +++ b/main.cpp @@ -1594,7 +1594,7 @@ int main(int argc, char** argv) { try{ hresult = OleInitialize(NULL); hresult = CoCreateInstance(CLSID_G3d, NULL, CLSCTX_SERVER, IID_IUnknown, (void **)&punk); - hresult = punk->QueryInterface(IID_IDispatch, &pdisp); + hresult = punk->QueryInterface(IID_IDispatch, (void **)&pdisp); if (!AXRegister()) return 0; @@ -1634,7 +1634,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND","HyperCube Crash", MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From e7ea4c4b729b06f142129f7a6c1738ce651f9b3e Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:46:28 -0700 Subject: [PATCH 026/105] It compiles :+1: --- IEDispatcher.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/IEDispatcher.cpp b/IEDispatcher.cpp index bb2069c..10330f6 100644 --- a/IEDispatcher.cpp +++ b/IEDispatcher.cpp @@ -7,3 +7,34 @@ IEDispatcher::IEDispatcher(void) IEDispatcher::~IEDispatcher(void) { } + +HRESULT STDMETHODCALLTYPE IEDispatcher::QueryInterface(const IID &riid, void **ppvObject) +{ + return NULL; +} +ULONG STDMETHODCALLTYPE IEDispatcher::AddRef() +{ + return NULL; +} +ULONG STDMETHODCALLTYPE IEDispatcher::Release() +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfoCount(UINT *pctinfo) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfo(UINT, LCID, ITypeInfo **) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetIDsOfNames(const IID &, LPOLESTR *, UINT, LCID, DISPID *) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::Invoke(DISPID, const IID &, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *) + +{ + return NULL; +} + \ No newline at end of file From 0417060c1b16f490111d1ef7a10c1f11ddc9d50a Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 12:50:05 -0700 Subject: [PATCH 027/105] *someone somehow undid commit 341866b god dman it* --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index ae5545f..03d9604 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,7 +1634,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND","HyperCube Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From 89d2d0b981a1400447d432ddb38ff7fe84b5b7ca Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 12:53:50 -0700 Subject: [PATCH 028/105] did you know im fucking stupid --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 03d9604..aed855b 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,7 +1634,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND",(PlaceholderName+" Crash").c_str(), MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From 95d041bf5e7e23d97f3da69ea07a8fc86626f5ff Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:54:27 -0700 Subject: [PATCH 029/105] Fixed string --- main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 03d9604..7c54637 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,7 +1634,8 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); + std::string val = PlaceholderName + " Crash"; + MessageBox(NULL, "Failed to create HWND", val.c_str() , MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From c00e52a9e228a6ca307a40965db6f67098d67755 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sat, 7 Jul 2018 12:57:00 -0700 Subject: [PATCH 030/105] Fixed message --- main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 5f6f082..7c54637 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,7 +1634,8 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND", PlaceholderName + " Crash", MB_OK); + std::string val = PlaceholderName + " Crash"; + MessageBox(NULL, "Failed to create HWND", val.c_str() , MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From db4c46cf20d280b99ab13d892c809de8108d4862 Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 13:09:20 -0700 Subject: [PATCH 031/105] WHAT ARE YOU DOING IM TAKING A PIIIIISSS IM AN ENEMY YOUR SUPPOSED TO JUMP AT ME MOTHERFOCKUR --- main.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 7c54637..d6c4073 100644 --- a/main.cpp +++ b/main.cpp @@ -1634,8 +1634,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - std::string val = PlaceholderName + " Crash"; - MessageBox(NULL, "Failed to create HWND", val.c_str() , MB_OK); + MessageBox(NULL, "Failed to create HWND", (PlaceholderName + " Crash").c_str() , MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From fe65f8945c189467e0d6211762ebd9c7fcc0aaf3 Mon Sep 17 00:00:00 2001 From: MusicalProgrammer <38636805+MusicalProgrammer@users.noreply.github.com> Date: Sat, 7 Jul 2018 20:55:18 -0400 Subject: [PATCH 032/105] IEBrowser class added --- .gitignore | 1 + Demo.h | 1 + Globals.cpp | 4 +++ Globals.h | 3 ++- IEBrowser.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ IEBrowser.h | 15 +++++++++++ IEDispatcher.cpp | 31 +++++++++++++++++++++++ IEDispatcher.h | 10 ++++++-- main.cpp | 64 +++++++++++++++-------------------------------- 9 files changed, 147 insertions(+), 47 deletions(-) create mode 100644 IEBrowser.cpp create mode 100644 IEBrowser.h diff --git a/.gitignore b/.gitignore index 8de655f..6c0f1e3 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ log.txt G3DTest.suo G3DTest.suo stderr.txt +desktop.ini diff --git a/Demo.h b/Demo.h index 7496586..2e76d84 100644 --- a/Demo.h +++ b/Demo.h @@ -29,6 +29,7 @@ class Demo { // : public GApp { void onMouseRightUp(int x, int y); void onMouseMoved(int x, int y); void onMouseWheel(int x, int y, short delta); + CameraController cameraController; RenderDevice* renderDevice; UserInput* userInput; diff --git a/Globals.cpp b/Globals.cpp index 914660c..dddef2f 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -8,6 +8,10 @@ int const Globals::patch = 2; int Globals::surfaceId = 2; bool Globals::showMouse = true; bool Globals::useMousePoint = false; + +const std::string Globals::PlaceholderName = "Dynamica"; + + G3D::TextureRef Globals::surface; POINT Globals::mousepoint; Globals::Globals(void){} diff --git a/Globals.h b/Globals.h index f0052d2..07d4fd0 100644 --- a/Globals.h +++ b/Globals.h @@ -17,4 +17,5 @@ public: static const int patch; static G3D::TextureRef surface; static int surfaceId; -}; \ No newline at end of file + static const std::string PlaceholderName; +}; diff --git a/IEBrowser.cpp b/IEBrowser.cpp new file mode 100644 index 0000000..1a15626 --- /dev/null +++ b/IEBrowser.cpp @@ -0,0 +1,65 @@ +#ifndef WIN32_LEAN_AND_MEAN + #define WIN32_LEAN_AND_MEAN +#endif + +#include + +#include "IEBrowser.h" +#include "Globals.h" +#include "ax.h" + + +IEBrowser::IEBrowser(HWND attachHWnd) { + MSG messages; + while (PeekMessage (&messages, NULL, 0, 0,PM_REMOVE)) + { + if (IsDialogMessage(hwnd, &messages) == 0) + { + TranslateMessage(&messages); + DispatchMessage(&messages); + } + } + hwnd = attachHWnd; + spDocument = 0; + webBrowser = 0; + SendMessage(hwnd,AX_INPLACE,1,0); + SendMessage(hwnd,AX_QUERYINTERFACE,(WPARAM)&IID_IWebBrowser2,(LPARAM)&webBrowser); +} + +IEBrowser::~IEBrowser(void) { + if (webBrowser) + { + webBrowser->Release(); + } +} + +bool IEBrowser::navigateSyncURL(wchar_t* url) +{ + MSG messages; + if (webBrowser) + { + webBrowser->Navigate(url,0,0,0,0); + for (int i=1;i<1000;i++) + { + while (PeekMessage (&messages, NULL, 0, 0,PM_REMOVE)) + { + if (IsDialogMessage(hwnd, &messages) == 0) + { + TranslateMessage(&messages); + DispatchMessage(&messages); + } + } + Sleep(30); + HRESULT hresult = webBrowser->get_Document(&spDocument); + if (&spDocument!=0) + { + return true; + } + } + } + else + { + MessageBox(NULL,"Cannot read IWebBrowser2...",Globals::PlaceholderName.c_str(),MB_OK); + } + return false; +} \ No newline at end of file diff --git a/IEBrowser.h b/IEBrowser.h new file mode 100644 index 0000000..4762122 --- /dev/null +++ b/IEBrowser.h @@ -0,0 +1,15 @@ +//#include "WindowFunctions.h" +#include +#include +//#include + +class IEBrowser { + public: + IEBrowser(HWND attachHWnd); + ~IEBrowser(void); + bool navigateSyncURL(wchar_t* url); + private: + IWebBrowser2* webBrowser; + HWND hwnd; + IDispatch* spDocument; +}; diff --git a/IEDispatcher.cpp b/IEDispatcher.cpp index bb2069c..10330f6 100644 --- a/IEDispatcher.cpp +++ b/IEDispatcher.cpp @@ -7,3 +7,34 @@ IEDispatcher::IEDispatcher(void) IEDispatcher::~IEDispatcher(void) { } + +HRESULT STDMETHODCALLTYPE IEDispatcher::QueryInterface(const IID &riid, void **ppvObject) +{ + return NULL; +} +ULONG STDMETHODCALLTYPE IEDispatcher::AddRef() +{ + return NULL; +} +ULONG STDMETHODCALLTYPE IEDispatcher::Release() +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfoCount(UINT *pctinfo) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfo(UINT, LCID, ITypeInfo **) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::GetIDsOfNames(const IID &, LPOLESTR *, UINT, LCID, DISPID *) +{ + return NULL; +} +HRESULT STDMETHODCALLTYPE IEDispatcher::Invoke(DISPID, const IID &, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *) + +{ + return NULL; +} + \ No newline at end of file diff --git a/IEDispatcher.h b/IEDispatcher.h index 72c7349..9cc1e41 100644 --- a/IEDispatcher.h +++ b/IEDispatcher.h @@ -6,6 +6,12 @@ class IEDispatcher : public IDispatch public: IEDispatcher(void); ~IEDispatcher(void); - HRESULT IEDispatcher::QueryInterface(); - HRESULT IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); + HRESULT STDMETHODCALLTYPE IEDispatcher::QueryInterface(const IID &riid, void **ppvObject); + ULONG STDMETHODCALLTYPE IEDispatcher::AddRef(); + ULONG STDMETHODCALLTYPE IEDispatcher::Release(); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfoCount(UINT *pctinfo); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetTypeInfo(UINT, LCID, ITypeInfo **); + HRESULT STDMETHODCALLTYPE IEDispatcher::GetIDsOfNames(const IID &, LPOLESTR *, UINT, LCID, DISPID *); + HRESULT STDMETHODCALLTYPE IEDispatcher::Invoke(DISPID, const IID &, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); + }; diff --git a/main.cpp b/main.cpp index 9d753fa..5a78cfa 100644 --- a/main.cpp +++ b/main.cpp @@ -35,11 +35,9 @@ #include #include #include -#include -#include #include "ax.h" -#include "IEDispatcher.h" - +#include +#include "IEBrowser.h" #if G3D_VER < 61000 #error Requires G3D 6.10 @@ -48,8 +46,6 @@ HWND hwnd; DEFINE_GUID(CLSID_G3d, 0xB323F8E0L, 0x2E68, 0x11D0, 0x90, 0xEA, 0x00, 0xAA, 0x00, 0x60, 0xF8, 0x6F); HRESULT hresult; -IUnknown * punk; -IDispatch * pdisp = new IEDispatcher(); OLECHAR dat = ((OLECHAR)"SayHello"); OLECHAR * szMember = &dat; DISPID dispid; @@ -57,8 +53,6 @@ DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; EXCEPINFO excepinfo; UINT nArgErr; - -IWebBrowser2* test; static std::string title = ""; static DataModelInstance* dataModel; GFontRef fntdominant = NULL; @@ -91,7 +85,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w _hWndMain = parentWindow; HMODULE hThisInstance = GetModuleHandle(NULL); - IWebBrowser2* wb = 0; + _hwndToolbox = CreateWindowEx( WS_EX_ACCEPTFILES, "AX", @@ -106,31 +100,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w hThisInstance, NULL ); - - SendMessage(_hwndToolbox,AX_INPLACE,1,0); - SendMessage(_hwndToolbox,AX_QUERYINTERFACE,(WPARAM)&IID_IWebBrowser2,(LPARAM)&wb); - if (wb) - { - wb->Navigate(L"https://scottbeebiwan.tk/g3d/toolbox/",0,0,0,0); - wb->Release(); - } - - _buttonTest = CreateWindow( - "COMBOBOX", - "", - CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE , - 20, - 10, - 80, - 120, - _hwndToolbox, // parent - NULL, // menu - hThisInstance, - NULL - ); - SendMessage(_buttonTest,(UINT) CB_ADDSTRING,(WPARAM) 0,(LPARAM) "TEST"); - SendMessage(_buttonTest,(UINT) CB_ADDSTRING,(WPARAM) 0,(LPARAM) "TEST2"); - SendMessage(_buttonTest, CB_SETCURSEL, (WPARAM)1, (LPARAM)0); + _hwndRenderer = CreateWindowEx( WS_EX_ACCEPTFILES, "G3DWindow", @@ -146,10 +116,10 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w NULL ); - Win32Window* window = Win32Window::create(settings.window,_hwndRenderer); ShowWindow(_hwndRenderer, SW_SHOW); ShowWindow(_hWndMain, SW_SHOW); + quit=false; rightButtonHolding=false; mouseOnScreen=false; @@ -163,12 +133,15 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w MessageBox(NULL,"Window not found!","Error",MB_OK); return; } + _window = renderDevice->window(); _window->makeCurrent(); SetWindowLongPtr(_hWndMain,GWL_USERDATA,(LONG)this); SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); - SetWindowLongPtr(_hwndToolbox,GWL_USERDATA,(LONG)this); + + IEBrowser* webBrowser = new IEBrowser(_hwndToolbox); + webBrowser->navigateSyncURL(L"https://scottbeebiwan.tk/g3d/toolbox/"); } void clearInstances() @@ -1398,13 +1371,13 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) LRESULT CALLBACK ToolboxProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); + //Demo *app = (Demo *)GetWindowLongPtr(hwnd, GWL_USERDATA); MessageBox(NULL, (LPCSTR)wParam, (LPCSTR)lParam, 1); - if (app==NULL) - { - return DefWindowProc(hwnd, msg, wParam, lParam); - } - switch(msg) + //if (app==NULL) + //{ + //return DefWindowProc(hwnd, msg, wParam, lParam); + //} + switch(msg) { case WM_SIZE: break; @@ -1593,8 +1566,11 @@ void Demo::onCreate(HWND parentWindow) int main(int argc, char** argv) { try{ hresult = OleInitialize(NULL); +<<<<<<< HEAD +======= hresult = CoCreateInstance(CLSID_G3d, NULL, CLSCTX_SERVER, IID_IUnknown, (void **)&punk); - hresult = punk->QueryInterface(IID_IDispatch, &pdisp); + hresult = punk->QueryInterface(IID_IDispatch, (void **)&pdisp); +>>>>>>> db4c46cf20d280b99ab13d892c809de8108d4862 if (!AXRegister()) return 0; @@ -1634,7 +1610,7 @@ int main(int argc, char** argv) { if(hwndMain == NULL) { - MessageBox(NULL, "Failed to create HWND",placeholderName+" Crash", MB_OK); + MessageBox(NULL, "Failed to create HWND", (PlaceholderName + " Crash").c_str() , MB_OK); return 0; } SendMessage(hwndMain, WM_SETICON, ICON_BIG,(LPARAM)LoadImage(GetModuleHandle(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); From c4df4131dfbcd894b72b86dcc93a60371439396d Mon Sep 17 00:00:00 2001 From: scottbeebiwan <38970930+scottbeebiwan@users.noreply.github.com> Date: Sat, 7 Jul 2018 18:23:01 -0700 Subject: [PATCH 033/105] hopefully fixed navigation canceled problems on xp, added all files to vcproj/sln, webbrowser error shows "placeholder crash" as title instead of just the name --- G3DTest.vcproj | 8 ++++++++ IEBrowser.cpp | 2 +- main.cpp | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 277651e..fb4f16f 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -256,6 +256,14 @@ RelativePath=".\Globals.cpp" > + + + + diff --git a/IEBrowser.cpp b/IEBrowser.cpp index 1a15626..8df0a50 100644 --- a/IEBrowser.cpp +++ b/IEBrowser.cpp @@ -59,7 +59,7 @@ bool IEBrowser::navigateSyncURL(wchar_t* url) } else { - MessageBox(NULL,"Cannot read IWebBrowser2...",Globals::PlaceholderName.c_str(),MB_OK); + MessageBox(NULL,"Cannot read IWebBrowser2...",(Globals::PlaceholderName+" Crash").c_str(),MB_OK); } return false; } \ No newline at end of file diff --git a/main.cpp b/main.cpp index 1e8eeb5..1fd8191 100644 --- a/main.cpp +++ b/main.cpp @@ -141,7 +141,7 @@ Demo::Demo(const GAppSettings& settings,HWND parentWindow) { //: GApp(settings,w SetWindowLongPtr(_hwndRenderer,GWL_USERDATA,(LONG)this); IEBrowser* webBrowser = new IEBrowser(_hwndToolbox); - webBrowser->navigateSyncURL(L"https://scottbeebiwan.tk/g3d/toolbox/"); + webBrowser->navigateSyncURL(L"http://scottbeebiwan.tk/g3d/toolbox/"); } void clearInstances() From 9193dfcabbb36e08ca51bfa4f1ca09db2f5ce060 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Wed, 8 Aug 2018 17:35:24 -0700 Subject: [PATCH 034/105] Disabled textures --- PhysicalInstance.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PhysicalInstance.cpp b/PhysicalInstance.cpp index 7c97dce..8c72fad 100644 --- a/PhysicalInstance.cpp +++ b/PhysicalInstance.cpp @@ -167,10 +167,10 @@ void PhysicalInstance::render(RenderDevice* rd) face = bottom; } - if(face == Snaps) + /*if(face == Snaps) add = 0.0; else if(face == Inlets) - add = 0.2; + add = 0.2;*/ Vector3 v0 = Vector3(vertecies[i], vertecies[i+1], vertecies[i+2]), v1 = Vector3(vertecies[i+3], vertecies[i+4], vertecies[i+5]), v3 = Vector3(vertecies[i+9], vertecies[i+10], vertecies[i+11]); /*glNormal3fv((v1 - v0).cross(v3 - v0).direction()); From c03160c3fd0124fb7dfdb8a9577eb5a15e8738b1 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 18 Sep 2018 18:43:23 -0700 Subject: [PATCH 035/105] Did a test and failed, removed reference to ATL --- G3DTest.vcproj | 7 ++----- IEBrowser.cpp | 3 +++ IEBrowser.h | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/G3DTest.vcproj b/G3DTest.vcproj index fb4f16f..932a338 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -74,7 +74,7 @@ /> - - diff --git a/IEBrowser.cpp b/IEBrowser.cpp index 8df0a50..9e6b557 100644 --- a/IEBrowser.cpp +++ b/IEBrowser.cpp @@ -8,6 +8,9 @@ #include "Globals.h" #include "ax.h" +void IEBrowser::Boop(char* test) +{ +} IEBrowser::IEBrowser(HWND attachHWnd) { MSG messages; diff --git a/IEBrowser.h b/IEBrowser.h index 4762122..b03e523 100644 --- a/IEBrowser.h +++ b/IEBrowser.h @@ -8,6 +8,7 @@ class IEBrowser { IEBrowser(HWND attachHWnd); ~IEBrowser(void); bool navigateSyncURL(wchar_t* url); + void Boop(char* test); private: IWebBrowser2* webBrowser; HWND hwnd; From 8985579159a3d3f9de9f1ceba914af43d3dc7429 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 18 Sep 2018 19:24:12 -0700 Subject: [PATCH 036/105] Made selected a vector --- Demo.h | 2 +- main.cpp | 59 +++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/Demo.h b/Demo.h index 2e76d84..59b8388 100644 --- a/Demo.h +++ b/Demo.h @@ -16,7 +16,7 @@ class Demo { // : public GApp { virtual void onUserInput(UserInput* ui); virtual void onCleanup(); - Instance* getSelection(); + std::vector getSelection(); void run(); void QuitApp(); void resizeWithParent(HWND parentWindow); diff --git a/main.cpp b/main.cpp index 1fd8191..635e1de 100644 --- a/main.cpp +++ b/main.cpp @@ -76,7 +76,7 @@ static int mode = CURSOR; bool dragging = false; Vector2 oldMouse = Vector2(0,0); float moveRate = 0.5; -Instance* selectedInstance = NULL; +std::vector selectedInstances = std::vector(); static const std::string PlaceholderName = "Dynamica"; Demo *usableApp = NULL; @@ -221,8 +221,8 @@ void CameraButtonListener::onButton1MouseClick(BaseButtonInstance* button) { AudioPlayer::playSound(cameraSound); CoordinateFrame frame = usableApp->cameraController.getCamera()->getCoordinateFrame(); - if(button->name == "CenterCam") - usableApp->cameraController.centerCamera(selectedInstance); + if(button->name == "CenterCam" && selectedInstances.size() > 0) + usableApp->cameraController.centerCamera(selectedInstances.at(0)); else if(button->name == "ZoomIn") usableApp->cameraController.Zoom(1); else if(button->name == "ZoomOut") @@ -244,7 +244,7 @@ public: void GUDButtonListener::onButton1MouseClick(BaseButtonInstance* button) { - if(selectedInstance != NULL) + if(selectedInstances.size() > 0) { AudioPlayer::playSound(dingSound); if(button->name == "Duplicate") @@ -262,8 +262,9 @@ public: void RotateButtonListener::onButton1MouseClick(BaseButtonInstance* button) { - if(selectedInstance != NULL) + if(selectedInstances.size() > 0) { + Instance* selectedInstance = selectedInstances.at(0); AudioPlayer::playSound(clickSound); if(selectedInstance->getClassName() == "Part") { @@ -273,6 +274,7 @@ void RotateButtonListener::onButton1MouseClick(BaseButtonInstance* button) else if(button->name == "Rotate") part->setCFrame(part->getCFrame()*Matrix3::fromEulerAnglesXYZ(0,toRadians(90),0)); } + selectedInstances.erase(selectedInstances.begin()); } } @@ -280,13 +282,18 @@ void RotateButtonListener::onButton1MouseClick(BaseButtonInstance* button) void deleteInstance() { - if(selectedInstance != NULL) + if(selectedInstances.size() > 0) { - if(selectedInstance->getParent() != NULL) - selectedInstance->getParent()->removeChild(selectedInstance); - delete selectedInstance; - selectedInstance = NULL; - AudioPlayer::playSound(GetFileInPath("/content/sounds/pageturn.wav")); + while(selectedInstances.size() > 0) + { + Instance* selectedInstance = selectedInstances.at(0); + if(selectedInstance->getParent() != NULL) + selectedInstance->getParent()->removeChild(selectedInstance); + delete selectedInstance; + selectedInstance = NULL; + selectedInstances.erase(selectedInstances.begin()); + AudioPlayer::playSound(GetFileInPath("/content/sounds/pageturn.wav")); + } } } @@ -788,7 +795,7 @@ void Demo::onLogic() { if(obj != NULL) { ImageButtonInstance* button = (ImageButtonInstance*)obj; - if(selectedInstance == NULL) + if(selectedInstances.size() > 0) button->disabled = true; else button->disabled = false; @@ -808,9 +815,9 @@ void Demo::onNetwork() { // return pow(pow((double)vector1.x - (double)vector2.x, 2) + pow((double)vector1.y - (double)vector2.y, 2) + pow((double)vector1.z - (double)vector2.z, 2), 0.5); //} -Instance* Demo::getSelection() +std::vector Demo::getSelection() { - return selectedInstance; + return selectedInstances; } void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { if(dataModel->name != title) @@ -875,7 +882,9 @@ void Demo::onUserInput(UserInput* ui) { if (GetHoldKeyState(VK_LBUTTON)) { if (dragging) { - PhysicalInstance* part = (PhysicalInstance*) selectedInstance; + PhysicalInstance* part = NULL; + if(selectedInstances.size() > 0) + part = (PhysicalInstance*) selectedInstances.at(0); Ray dragRay = cameraController.getCamera()->worldRay(dataModel->mousex, dataModel->mousey, renderDevice->getViewport()); std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances.size(); i++) @@ -1117,12 +1126,15 @@ void Demo::onGraphics(RenderDevice* rd) { dataModel->getWorkspace()->render(rd); rd->afterPrimitive(); - if(selectedInstance != NULL) + if(selectedInstances.size() > 0) { - PhysicalInstance* part = (PhysicalInstance*)selectedInstance; - Vector3 size = part->getSize(); - Vector3 pos = part->getPosition(); - 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), part->getCFrameRenderBased()); + for(size_t i = 0; i < selectedInstances.size(); i++) + { + PhysicalInstance* part = (PhysicalInstance*)selectedInstances.at(i); + Vector3 size = part->getSize(); + Vector3 pos = part->getPosition(); + 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), part->getCFrameRenderBased()); + } } @@ -1236,7 +1248,8 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) } if(!onGUI) { - selectedInstance = NULL; + while(selectedInstances.size() > 0) + selectedInstances.erase(selectedInstances.begin()); testRay = cameraController.getCamera()->worldRay(dataModel->mousex, dataModel->mousey, renderDevice->getViewport()); float nearest=std::numeric_limits::infinity(); Vector3 camPos = cameraController.getCamera()->getCoordinateFrame().translation; @@ -1252,7 +1265,9 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) if (nearest>time) { nearest=time; - selectedInstance = test; + while(selectedInstances.size() > 0) + selectedInstances.erase(selectedInstances.begin()); + selectedInstances.push_back(test); //message = "Dragging = true."; //messageTime = System::time(); //dragging = true; From 2725f6da5896f1a9932220d314c278c98b8c639c Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 13:44:53 -0700 Subject: [PATCH 037/105] Removed terrible instance type check, added dynamic casting --- main.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/main.cpp b/main.cpp index 635e1de..15cddff 100644 --- a/main.cpp +++ b/main.cpp @@ -266,9 +266,8 @@ void RotateButtonListener::onButton1MouseClick(BaseButtonInstance* button) { Instance* selectedInstance = selectedInstances.at(0); AudioPlayer::playSound(clickSound); - if(selectedInstance->getClassName() == "Part") + if(PhysicalInstance* part = dynamic_cast(selectedInstance)) { - PhysicalInstance* part = (PhysicalInstance*) selectedInstance; if(button->name == "Tilt") part->setCFrame(part->getCFrame()*Matrix3::fromEulerAnglesXYZ(0,0,toRadians(90))); else if(button->name == "Rotate") @@ -889,9 +888,8 @@ void Demo::onUserInput(UserInput* ui) { std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances.size(); i++) { - if(instances.at(i)->getClassName() == "Part") + if(PhysicalInstance* moveTo = dynamic_cast(instances.at(i))) { - PhysicalInstance* moveTo = (PhysicalInstance*)instances.at(i); float __time = testRay.intersectionTime(moveTo->getBox()); float __nearest=std::numeric_limits::infinity(); if (__time != inf()) @@ -1236,9 +1234,8 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) std::vector instances_2D = dataModel->getGuiRoot()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { - if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") + if(BaseButtonInstance* button = dynamic_cast(instances_2D.at(i))) { - BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); if(button->mouseInButton(x,y, renderDevice)) { onGUI = true; @@ -1256,9 +1253,8 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances.size(); i++) { - if(instances.at(i)->getClassName() == "Part") + if(PhysicalInstance* test = dynamic_cast(instances.at(i))) { - PhysicalInstance* test = (PhysicalInstance*)instances.at(i); float time = testRay.intersectionTime(test->getBox()); if (time != inf()) { @@ -1288,9 +1284,8 @@ void Demo::onMouseLeftUp(int x,int y) std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { - if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") + if(BaseButtonInstance* button = dynamic_cast(instances_2D[i])) { - BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); if(button->mouseInButton(x, y, renderDevice)) { button->onMouseClick(); From e0ba49a03cd64f69e9b039f0058bc711f621a652 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 15:36:17 -0700 Subject: [PATCH 038/105] Attempted to make duplicate --- G3DTest.vcproj | 1 - Instance.cpp | 7 +++++ Instance.h | 2 ++ PhysicalInstance.cpp | 70 +++++++++++++++++++++----------------------- PhysicalInstance.h | 7 ++++- Surface.h | 2 +- main.cpp | 10 +++++-- 7 files changed, 58 insertions(+), 41 deletions(-) diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 932a338..6804e0b 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -169,7 +169,6 @@ /> name == "Duplicate") { - + std::vector newinst; + for(size_t i = 0; i < selectedInstances.size(); i++) + { + Instance* inst = selectedInstances.at(i)->clone(); + newinst.push_back(inst); + inst->setParent(selectedInstances.at(i)->getParent()); + } + selectedInstances = newinst; } } - } class RotateButtonListener : public ButtonListener { From 5eafaa401a0f5a358914773b39c5cdd72e0bdab9 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 16:05:14 -0700 Subject: [PATCH 039/105] NOT a good solution --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 2734dcb..41a161d 100644 --- a/main.cpp +++ b/main.cpp @@ -252,7 +252,7 @@ void GUDButtonListener::onButton1MouseClick(BaseButtonInstance* button) std::vector newinst; for(size_t i = 0; i < selectedInstances.size(); i++) { - Instance* inst = selectedInstances.at(i)->clone(); + Instance* inst = ((PhysicalInstance*)selectedInstances.at(i))->clone(); newinst.push_back(inst); inst->setParent(selectedInstances.at(i)->getParent()); } From 1c9b93d6ab5760d95462d39e8f2e9096aa28e00a Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 16:07:47 -0700 Subject: [PATCH 040/105] Hm --- main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cpp b/main.cpp index 41a161d..2734dcb 100644 --- a/main.cpp +++ b/main.cpp @@ -252,7 +252,7 @@ void GUDButtonListener::onButton1MouseClick(BaseButtonInstance* button) std::vector newinst; for(size_t i = 0; i < selectedInstances.size(); i++) { - Instance* inst = ((PhysicalInstance*)selectedInstances.at(i))->clone(); + Instance* inst = selectedInstances.at(i)->clone(); newinst.push_back(inst); inst->setParent(selectedInstances.at(i)->getParent()); } From 90e74e513393e0dfef11cbc0496b3bb9dc3d6c8a Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 16:11:31 -0700 Subject: [PATCH 041/105] Duplicate works! --- Instance.cpp | 4 ++-- Instance.h | 2 +- PhysicalInstance.cpp | 2 +- main.cpp | 4 +--- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Instance.cpp b/Instance.cpp index e7d400f..e7f3c39 100644 --- a/Instance.cpp +++ b/Instance.cpp @@ -16,9 +16,9 @@ Instance::Instance(void) Instance::Instance(const Instance &oinst) { - parent = oinst.parent; + setParent(oinst.parent); name = oinst.name; - className = "BaseInstance"; + className = oinst.className; } void Instance::render(RenderDevice* rd) diff --git a/Instance.h b/Instance.h index 09dff67..b8aea00 100644 --- a/Instance.h +++ b/Instance.h @@ -18,7 +18,7 @@ public: void addChild(Instance*); void removeChild(Instance*); Instance* getParent(); - Instance* clone() const { return new Instance(*this); } + virtual Instance* clone() const { return new Instance(*this); } protected: std::string className; Instance* parent; // Another pointer. diff --git a/PhysicalInstance.cpp b/PhysicalInstance.cpp index 85ceb6e..542cef3 100644 --- a/PhysicalInstance.cpp +++ b/PhysicalInstance.cpp @@ -28,7 +28,7 @@ PhysicalInstance::PhysicalInstance(const PhysicalInstance &oinst) name = oinst.name; className = "Part"; canCollide = oinst.canCollide; - + setParent(oinst.parent); anchored = oinst.anchored; size = oinst.size; setCFrame(oinst.cFrame); diff --git a/main.cpp b/main.cpp index 2734dcb..485c953 100644 --- a/main.cpp +++ b/main.cpp @@ -252,9 +252,7 @@ void GUDButtonListener::onButton1MouseClick(BaseButtonInstance* button) std::vector newinst; for(size_t i = 0; i < selectedInstances.size(); i++) { - Instance* inst = selectedInstances.at(i)->clone(); - newinst.push_back(inst); - inst->setParent(selectedInstances.at(i)->getParent()); + newinst.push_back(selectedInstances.at(i)->clone()); } selectedInstances = newinst; } From 4f766d861741861e5f5d8086cf4f25fb1dccd19b Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 17:00:00 -0700 Subject: [PATCH 042/105] wat --- PhysicalInstance.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/PhysicalInstance.cpp b/PhysicalInstance.cpp index 542cef3..566ab70 100644 --- a/PhysicalInstance.cpp +++ b/PhysicalInstance.cpp @@ -15,12 +15,12 @@ PhysicalInstance::PhysicalInstance(void) color = Color3::gray(); velocity = Vector3(0,0,0); rotVelocity = Vector3(0,0,0); - top = Surface::Smooth; - front = Surface::Smooth; - right = Surface::Smooth; - back = Surface::Smooth; - left = Surface::Smooth; - bottom = Surface::Smooth; + top = Smooth; + front = Smooth; + right = Smooth; + back = Smooth; + left = Smooth; + bottom = Smooth; } PhysicalInstance::PhysicalInstance(const PhysicalInstance &oinst) From 679dbe69b87acd6519307b7cf39d5b7051c4b899 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 17:30:38 -0700 Subject: [PATCH 043/105] Attempted a thing --- BrowserCallHandler.cpp | 9 +++++++++ BrowserCallHandler.h | 8 ++++++++ G3DTest.vcproj | 8 ++++++++ 3 files changed, 25 insertions(+) create mode 100644 BrowserCallHandler.cpp create mode 100644 BrowserCallHandler.h diff --git a/BrowserCallHandler.cpp b/BrowserCallHandler.cpp new file mode 100644 index 0000000..25162df --- /dev/null +++ b/BrowserCallHandler.cpp @@ -0,0 +1,9 @@ +#include "BrowserCallHandler.h" + +BrowserCallHandler::BrowserCallHandler(void) +{ +} + +BrowserCallHandler::~BrowserCallHandler(void) +{ +} diff --git a/BrowserCallHandler.h b/BrowserCallHandler.h new file mode 100644 index 0000000..f411102 --- /dev/null +++ b/BrowserCallHandler.h @@ -0,0 +1,8 @@ +#pragma once +#include +class BrowserCallHandler : IDocHostUIHandler +{ +public: + BrowserCallHandler(void); + ~BrowserCallHandler(void); +}; diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 6804e0b..2940520 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -240,6 +240,10 @@ RelativePath=".\ax.cpp" > + + @@ -333,6 +337,10 @@ RelativePath=".\ax.h" > + + From 507b0a9ace42616d1a6242b8780827dc8f64efad Mon Sep 17 00:00:00 2001 From: DirtPiper Date: Sun, 21 Oct 2018 21:09:49 -0400 Subject: [PATCH 044/105] New Enums All 05-era enums added (might be more, idk tbh) --- ActionType.h | 4 ++++ AffectType.h | 4 ++++ BinType.h | 4 ++++ ControllerType.h | 4 ++++ G3DTest.vcproj | 1 + InputType.h | 4 ++++ JointType.h | 4 ++++ KeywordFilterType.h | 4 ++++ PartType.h | 4 ++++ SoundType.h | 4 ++++ SurfaceConstraint.h | 4 ++++ SurfaceType.h | 4 ++++ main.cpp | 2 +- 13 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 ActionType.h create mode 100644 AffectType.h create mode 100644 BinType.h create mode 100644 ControllerType.h create mode 100644 InputType.h create mode 100644 JointType.h create mode 100644 KeywordFilterType.h create mode 100644 PartType.h create mode 100644 SoundType.h create mode 100644 SurfaceConstraint.h create mode 100644 SurfaceType.h diff --git a/ActionType.h b/ActionType.h new file mode 100644 index 0000000..6ec748b --- /dev/null +++ b/ActionType.h @@ -0,0 +1,4 @@ +#ifndef ACTIONTYPE_H +#define ACTIONTYPE_H +static enum ActionType {Nothing, Pause, Lose, Draw, Win}; +#endif diff --git a/AffectType.h b/AffectType.h new file mode 100644 index 0000000..cee3834 --- /dev/null +++ b/AffectType.h @@ -0,0 +1,4 @@ +#ifndef AFFECTTYPE_H +#define AFFECTTYPE_H +static enum AffectType {NoChange, Increase, Decrease}; +#endif diff --git a/BinType.h b/BinType.h new file mode 100644 index 0000000..15ef898 --- /dev/null +++ b/BinType.h @@ -0,0 +1,4 @@ +#ifndef BINTYPE_H +#define BINTYPE_H +static enum ActionType {GameTool, Grab, Clone, Hammer}; +#endif diff --git a/ControllerType.h b/ControllerType.h new file mode 100644 index 0000000..77a6d7f --- /dev/null +++ b/ControllerType.h @@ -0,0 +1,4 @@ +#ifndef CONTROLLERTYPE_H +#define CONTROLLERTYPE_H +static enum ControllerType {None, KeyboardRight, KeyboardLeft, Joypad1, Joypad2, Chase, Flee}; +#endif diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 6804e0b..e2539b2 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -169,6 +169,7 @@ /> color = Color3(0.2F,0.3F,1); test->setSize(Vector3(24,1,24)); test->setPosition(Vector3(0,0,0)); - test->setCFrame(test->getCFrame() * Matrix3::fromEulerAnglesXYZ(0,toRadians(40),toRadians(40))); + test->setCFrame(test->getCFrame() * Matrix3::fromEulerAnglesXYZ(0,toRadians(0),toRadians(0))); From 2134c6612403a2fdad98a5c0efcfb43f53d0c153 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 18:25:42 -0700 Subject: [PATCH 045/105] Tried to add property grid --- G3DTest.vcproj | 8 + propertyGrid.c | 4403 ++++++++++++++++++++++++++++++++++++++++++++++++ propertyGrid.h | 392 +++++ 3 files changed, 4803 insertions(+) create mode 100644 propertyGrid.c create mode 100644 propertyGrid.h diff --git a/G3DTest.vcproj b/G3DTest.vcproj index ce75f8b..64430cf 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -289,6 +289,10 @@ /> + + @@ -362,6 +366,10 @@ RelativePath=".\IEDispatcher.h" > + + diff --git a/propertyGrid.c b/propertyGrid.c new file mode 100644 index 0000000..af40ebd --- /dev/null +++ b/propertyGrid.c @@ -0,0 +1,4403 @@ +////////////////////////////////////////////////////////////////////////////// +/// +/// @file propertyGrid.c +/// +/// @brief A property grid control in Win32 SDK C. +/// +/// @author David MacDermot +/// +/// @par Comments: +/// This source is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +/// +/// @date 2-27-16 +/// +/// @todo +/// +/// @bug +/// +////////////////////////////////////////////////////////////////////////////// + +//DWM 1.1: Version 1.1 changes labelled thus. +//DWM 1.2: Version 1.2 changes labelled thus. +//DWM 1.3: Version 1.3 changes labelled thus. +//DWM 1.4: Version 1.4 changes labelled thus. +//DWM 1.5: Version 1.5 changes labelled thus. +//DWM 1.6: Version 1.6 changes labelled thus. +//DWM 1.7: Version 1.7 changes labelled thus. +//DWM 1.8: Version 1.8 changes labelled thus. +//DWM 1.9: Version 1.9 changes labelled thus. + +//DWM 1.9: Suppress POCC Warning "Argument x to 'sscanf' does not match the format string; +// expected 'unsigned char *' but found 'unsigned long'" +#ifdef __POCC__ +#pragma warn(disable:2234) +#endif + +#ifndef _WIN32_WINNT // Necessary for WM_MOUSEWHEEL support +#define _WIN32_WINNT 0x0500 +#endif + +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "propertyGrid.h" + +#define ID_LISTBOX 2000 ///