Merge pull request #11 from andreja6/window
Now uses HWND rather than an SDL Window
@@ -4,6 +4,7 @@ bool floatBottom = false;
|
||||
bool floatRight = false;
|
||||
bool floatCenter = false;
|
||||
bool disabled = false;
|
||||
bool selected = false;
|
||||
ButtonListener* listener = NULL;
|
||||
|
||||
BaseButtonInstance::BaseButtonInstance(void)
|
||||
@@ -16,6 +17,11 @@ BaseButtonInstance::~BaseButtonInstance(void)
|
||||
delete listener;
|
||||
}
|
||||
|
||||
void BaseButtonInstance::setButtonListener(ButtonListener* buttonListener)
|
||||
{
|
||||
listener = buttonListener;
|
||||
}
|
||||
|
||||
void BaseButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown){}
|
||||
|
||||
bool BaseButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd){return false;}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "instance.h"
|
||||
#pragma once
|
||||
#include "ButtonListener.h"
|
||||
class ButtonListener;
|
||||
class BaseButtonInstance : public Instance
|
||||
{
|
||||
public:
|
||||
@@ -10,10 +11,12 @@ public:
|
||||
virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown);
|
||||
virtual bool mouseInButton(float, float, RenderDevice* rd);
|
||||
virtual void onMouseClick();
|
||||
void setButtonListener(ButtonListener*);
|
||||
bool floatBottom;
|
||||
bool floatRight;
|
||||
bool floatCenter;
|
||||
bool disabled;
|
||||
bool selected;
|
||||
protected:
|
||||
bool mouseInArea(float, float, float, float, float, float);
|
||||
class ButtonListener* listener;
|
||||
|
||||
BIN
Dialogs.aps
40
Dialogs.rc
@@ -46,6 +46,37 @@ END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_TOOLBOX DIALOGEX 0, 0, 398, 64
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
|
||||
FONT 8, "MS Shell Dlg", 0, 0, 0x0
|
||||
BEGIN
|
||||
CONTROL "",IDC_TOOLBOX_BROWSER,
|
||||
"{A8F8E829-06DA-11D2-8D70-00A0C98B28E2}",WS_TABSTOP,0,0,398,64
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_TOOLBOX DLGINIT
|
||||
BEGIN
|
||||
IDC_TOOLBOX_BROWSER, 0x376, 76, 0
|
||||
0x0000, 0x0000, 0xb293, 0x0000, 0x0048, 0x0000, 0x0003, 0x0008, 0xf20b,
|
||||
0x4757, 0x0020, 0x0000, 0x005f, 0x0065, 0x0078, 0x0074, 0x0065, 0x006e,
|
||||
0x0074, 0x0078, 0x3db4, 0x0000, 0x0003, 0x0008, 0xf20a, 0x4757, 0xffe0,
|
||||
0xffff, 0x005f, 0x0065, 0x0078, 0x0074, 0x0065, 0x006e, 0x0074, 0x0079,
|
||||
0x0ac0, 0x0000,
|
||||
0
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -92,6 +123,15 @@ BEGIN
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON1 ICON "icon1.ico"
|
||||
#endif // English (Canada) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -316,6 +316,10 @@
|
||||
Name="Resource Files"
|
||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\icon1.ico"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
|
||||
@@ -49,6 +49,7 @@ ImageButtonInstance::~ImageButtonInstance(void)
|
||||
image_dn = NULL;
|
||||
delete listener;
|
||||
listener = NULL;
|
||||
selected = false;
|
||||
}
|
||||
|
||||
bool ImageButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* rd)
|
||||
@@ -93,7 +94,11 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse
|
||||
positionRelative = Vector2(rd->getWidth() + position.x, position.y);
|
||||
}
|
||||
int renderimage = openGLID;
|
||||
if(disabled)
|
||||
if(selected == true && !image_dn.isNull())
|
||||
{
|
||||
renderimage = openGLID_dn;
|
||||
}
|
||||
else if(disabled)
|
||||
{
|
||||
if(!image_ds.isNull())
|
||||
renderimage = openGLID_ds;
|
||||
@@ -134,6 +139,6 @@ void ImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouse
|
||||
rd->popState();
|
||||
if(drawDisabledBox)
|
||||
{
|
||||
Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7,0.7,0.7,0.3), Color4::clear());
|
||||
Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7F,0.7F,0.7F,0.3F), Color4::clear());
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ public:
|
||||
void drawObj(RenderDevice*, Vector2, bool);
|
||||
Vector2 size;
|
||||
Vector2 position;
|
||||
|
||||
G3D::TextureRef image;
|
||||
int openGLID;
|
||||
G3D::TextureRef image_ovr;
|
||||
|
||||
|
Before Width: | Height: | Size: 599 B After Width: | Height: | Size: 576 B |
BIN
content/cursor2.png
Normal file
|
After Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 484 B |
|
Before Width: | Height: | Size: 792 B |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
304
main.cpp
@@ -54,6 +54,7 @@ static bool forwards = false;
|
||||
static bool backwards = false;
|
||||
static bool left = false;
|
||||
static bool right = false;
|
||||
static bool centerCam = false;
|
||||
static const int CURSOR = 0;
|
||||
static const int ARROWS = 1;
|
||||
static const int RESIZE = 2;
|
||||
@@ -66,6 +67,11 @@ Instance* selectedInstance = NULL;
|
||||
This simple demo applet uses the debug mode as the regular
|
||||
rendering mode so you can fly around the scene.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class Demo : public GApplet {
|
||||
|
||||
public:
|
||||
@@ -76,6 +82,8 @@ public:
|
||||
|
||||
class App* app;
|
||||
|
||||
virtual void exitApplication();
|
||||
|
||||
Demo(App* app);
|
||||
|
||||
virtual ~Demo() {}
|
||||
@@ -98,7 +106,7 @@ public:
|
||||
|
||||
|
||||
|
||||
class App : public GApp {
|
||||
/*class App : public GApp {
|
||||
protected:
|
||||
void main();
|
||||
public:
|
||||
@@ -109,8 +117,45 @@ public:
|
||||
App(const GAppSettings& settings, GWindow* wnd);
|
||||
|
||||
~App();
|
||||
};*/
|
||||
|
||||
class App : public GApp {
|
||||
protected:
|
||||
void main();
|
||||
public:
|
||||
SkyRef sky;
|
||||
|
||||
Demo* applet;
|
||||
|
||||
App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd, SDLWindow*);
|
||||
|
||||
|
||||
~App();
|
||||
HWND getHWND();
|
||||
HWND getPropertyHWND();
|
||||
HWND getMainHWND();
|
||||
//void addHWND(HWND hwnd);
|
||||
private:
|
||||
HWND hwnd;
|
||||
HWND propertyHWnd;
|
||||
HWND mainHWnd;
|
||||
};
|
||||
|
||||
App *usableApp = NULL;
|
||||
|
||||
HWND App::getHWND()
|
||||
{
|
||||
return hwnd;
|
||||
}
|
||||
HWND App::getPropertyHWND()
|
||||
{
|
||||
return propertyHWnd;
|
||||
}
|
||||
HWND App::getMainHWND()
|
||||
{
|
||||
return mainHWnd;
|
||||
}
|
||||
|
||||
|
||||
Demo::Demo(App* _app) : GApplet(_app), app(_app) {
|
||||
}
|
||||
@@ -188,6 +233,53 @@ ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::Textu
|
||||
}
|
||||
|
||||
|
||||
|
||||
class CameraButtonListener : public ButtonListener {
|
||||
public:
|
||||
void onButton1MouseClick(BaseButtonInstance*);
|
||||
};
|
||||
|
||||
void CameraButtonListener::onButton1MouseClick(BaseButtonInstance* button)
|
||||
{
|
||||
CoordinateFrame frame = usableApp->debugCamera.getCoordinateFrame();
|
||||
if(button->name == "CenterCam")
|
||||
centerCam = true;
|
||||
else if(button->name == "ZoomIn")
|
||||
cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.lookVector()*2;
|
||||
else if(button->name == "ZoomOut")
|
||||
cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) - frame.lookVector()*2;
|
||||
}
|
||||
|
||||
|
||||
class ModeSelectionListener : public ButtonListener {
|
||||
public:
|
||||
void onButton1MouseClick(BaseButtonInstance*);
|
||||
};
|
||||
|
||||
void ModeSelectionListener::onButton1MouseClick(BaseButtonInstance* button)
|
||||
{
|
||||
CoordinateFrame frame = usableApp->debugCamera.getCoordinateFrame();
|
||||
|
||||
|
||||
for(size_t i = 0; i < instances_2D.size(); i++)
|
||||
{
|
||||
if(instances_2D.at(i)->name == "Cursor" || instances_2D.at(i)->name == "Resize" || instances_2D.at(i)->name == "Arrows")
|
||||
{
|
||||
BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i);
|
||||
button->selected = false;
|
||||
}
|
||||
}
|
||||
|
||||
button->selected = true;
|
||||
if(button->name == "Cursor")
|
||||
mode = CURSOR;
|
||||
else if(button->name == "Resize")
|
||||
mode = RESIZE;
|
||||
else if(button->name == "Arrows")
|
||||
mode = ARROWS;
|
||||
}
|
||||
|
||||
|
||||
void initGUI()
|
||||
{
|
||||
TextButtonInstance* button = makeTextButton();
|
||||
@@ -316,6 +408,7 @@ void initGUI()
|
||||
button->setAllColorsSame();
|
||||
|
||||
ImageButtonInstance* instance = makeImageButton(go, go_ovr, go_dn);
|
||||
instance->name = "go";
|
||||
instance->size = Vector2(65,65);
|
||||
instance->position = Vector2(6.5, 25);
|
||||
instance->parent = dataModel;
|
||||
@@ -330,11 +423,15 @@ void initGUI()
|
||||
instance->size = Vector2(50,50);
|
||||
instance->position = Vector2(15, 90);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "Cursor";
|
||||
instance->setButtonListener(new ModeSelectionListener());
|
||||
|
||||
instance = makeImageButton(Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png")));
|
||||
instance->size = Vector2(40,40);
|
||||
instance->position = Vector2(0, 140);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "Resize";
|
||||
instance->setButtonListener(new ModeSelectionListener());
|
||||
|
||||
|
||||
instance = makeImageButton(
|
||||
@@ -345,6 +442,8 @@ void initGUI()
|
||||
instance->size = Vector2(40,40);
|
||||
instance->position = Vector2(40, 140);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "Arrows";
|
||||
instance->setButtonListener(new ModeSelectionListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/SelectionRotate.png")),
|
||||
@@ -392,7 +491,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-77, -90);
|
||||
instance->parent = dataModel;
|
||||
instance->disabled = true;
|
||||
instance->name = "ZoomIn";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraZoomOut.png")),
|
||||
@@ -403,6 +503,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-77, -31);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "ZoomOut";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraPanLeft.png")),
|
||||
@@ -413,6 +515,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-110, -50);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "PanLeft";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraPanRight.png")),
|
||||
@@ -423,6 +527,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-45, -50);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "PanRight";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraCenter.png")),
|
||||
@@ -433,6 +539,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-77, -60);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "CenterCam";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraTiltUp.png")),
|
||||
@@ -443,6 +551,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-105, -75);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "TiltUp";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
|
||||
instance = makeImageButton(
|
||||
Texture::fromFile(GetFileInPath("/content/images/CameraTiltDown.png")),
|
||||
@@ -453,6 +563,8 @@ void initGUI()
|
||||
instance->floatRight = true;
|
||||
instance->position = Vector2(-40, -75);
|
||||
instance->parent = dataModel;
|
||||
instance->name = "TiltDown";
|
||||
instance->setButtonListener(new CameraButtonListener());
|
||||
}
|
||||
|
||||
|
||||
@@ -594,7 +706,8 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) {
|
||||
if(dataModel->name != title)
|
||||
{
|
||||
title = dataModel->name;
|
||||
app->renderDevice->setCaption("Game \"" + title + "\"");
|
||||
std::string text = "Game \"" + title + "\"";
|
||||
SetWindowText(app->getMainHWND(), text.c_str());
|
||||
}
|
||||
|
||||
CoordinateFrame frame = app->debugCamera.getCoordinateFrame();
|
||||
@@ -619,6 +732,17 @@ void Demo::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) {
|
||||
cameraPos = Vector3(cameraPos.x, cameraPos.y, cameraPos.z) + frame.rightVector()*moveRate;
|
||||
}
|
||||
app->debugCamera.setPosition(cameraPos);
|
||||
if(centerCam)
|
||||
{
|
||||
CoordinateFrame frame = CoordinateFrame(app->debugCamera.getCoordinateFrame().translation);
|
||||
if(selectedInstance == NULL)
|
||||
frame.lookAt(Vector3(0,0,0));
|
||||
else
|
||||
frame.lookAt(((PhysicalInstance*)selectedInstance)->getPosition());
|
||||
app->debugController.setCoordinateFrame(frame);
|
||||
centerCam = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -723,7 +847,6 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
mousex = ui->getMouseX();
|
||||
mousey = ui->getMouseY();
|
||||
mouseButton1Down = ui->keyDown(SDL_LEFT_MOUSE_KEY);
|
||||
messageTime = System::time();
|
||||
if(ui->keyDown(SDLK_UP))
|
||||
{
|
||||
forwards = true;
|
||||
@@ -738,11 +861,13 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
}
|
||||
else if(ui->keyDown(SDLK_RIGHT))
|
||||
{
|
||||
|
||||
right = true;
|
||||
}
|
||||
|
||||
if(ui->keyReleased(SDL_LEFT_MOUSE_KEY))
|
||||
{
|
||||
|
||||
for(size_t i = 0; i < instances_2D.size(); i++)
|
||||
{
|
||||
if(instances_2D.at(i)->className == "TextButton" || instances_2D.at(i)->className == "ImageButton")
|
||||
@@ -767,6 +892,7 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
|
||||
void makeFlag(Vector3 &vec, RenderDevice* &rd)
|
||||
{
|
||||
|
||||
Vector3 up = Vector3(vec.x, vec.y+3, vec.z);
|
||||
//Draw::lineSegment(G3D::LineSegment::fromTwoPoints(vec, up), rd, Color3::blue(), 3);
|
||||
rd->setColor(Color3::blue());
|
||||
@@ -822,30 +948,28 @@ void drawButtons(RenderDevice* rd)
|
||||
}
|
||||
}
|
||||
|
||||
void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos)
|
||||
void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters lighting, Vector3 size, Vector3 pos, CoordinateFrame c)
|
||||
{
|
||||
//rd->setLight(0, NULL);
|
||||
//rd->setAmbientLightColor(Color3(1,1,1));
|
||||
Color3 outline = Color3::cyan();//Color3(0.098F,0.6F,1.0F);
|
||||
float offsetSize = 0.05F;
|
||||
//X
|
||||
Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, from.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, to.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, to.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x - offsetSize, from.y + offsetSize, to.z + offsetSize), Vector3(to.x + offsetSize, from.y - offsetSize, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||
//Y
|
||||
Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, from.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(to.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(from.x + offsetSize, from.y - offsetSize, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize, to.z - offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, from.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize - 0.1, from.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(to.x - offsetSize, to.y + offsetSize-0.1, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y - offsetSize + 0.1, to.z + offsetSize), Vector3(from.x - offsetSize, to.y + offsetSize - 0.1, to.z - offsetSize))), rd, outline, Color4::clear());
|
||||
|
||||
//Z
|
||||
Draw::box(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear());
|
||||
Draw::box(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize)), rd, outline, Color4::clear());
|
||||
|
||||
mode = RESIZE;
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(from.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(from.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, from.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, from.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
||||
Draw::box(c.toWorldSpace(Box(Vector3(to.x + offsetSize, to.y + offsetSize, from.z - offsetSize), Vector3(to.x - offsetSize, to.y - offsetSize, to.z + offsetSize))), rd, outline, Color4::clear());
|
||||
|
||||
if(mode == ARROWS)
|
||||
{
|
||||
@@ -894,6 +1018,12 @@ void drawOutline(Vector3 from, Vector3 to, RenderDevice* rd, LightingParameters
|
||||
|
||||
}
|
||||
|
||||
void Demo::exitApplication()
|
||||
{
|
||||
endApplet = true;
|
||||
app->endProgram = true;
|
||||
}
|
||||
|
||||
void Demo::onGraphics(RenderDevice* rd) {
|
||||
|
||||
|
||||
@@ -920,6 +1050,7 @@ void Demo::onGraphics(RenderDevice* rd) {
|
||||
|
||||
|
||||
|
||||
|
||||
// Cyan background
|
||||
app->renderDevice->setColorClearValue(Color3(0.0f, 0.5f, 1.0f));
|
||||
|
||||
@@ -958,7 +1089,7 @@ void Demo::onGraphics(RenderDevice* rd) {
|
||||
Draw::box(c.toWorldSpace(box), app->renderDevice, part->color, Color4::clear());
|
||||
if(selectedInstance == part)
|
||||
{
|
||||
drawOutline(pos2, pos3, rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2));
|
||||
drawOutline(Vector3(0+size.x/4, 0+size.y/4, 0+size.z/4) ,Vector3(0-size.x/4,0-size.y/4,0-size.z/4), rd, lighting, Vector3(size.x/2, size.y/2, size.z/2), Vector3(pos.x/2, pos.y/2, pos.z/2), c);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1083,13 +1214,14 @@ void Demo::onGraphics(RenderDevice* rd) {
|
||||
|
||||
|
||||
void App::main() {
|
||||
usableApp = this;
|
||||
setDebugMode(false);
|
||||
debugController.setActive(false);
|
||||
// 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/cursor.png"));
|
||||
cursor = Texture::fromFile(GetFileInPath("/content/cursor2.png"));
|
||||
fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt"));
|
||||
fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt"));
|
||||
sky = Sky::create(NULL, ExePath() + "/content/sky/");
|
||||
@@ -1099,8 +1231,21 @@ void App::main() {
|
||||
|
||||
|
||||
|
||||
App::App(const GAppSettings& settings, GWindow* wnd) : GApp(settings, wnd) {
|
||||
//App::App(const GAppSettings& settings, GWindow* wnd) : GApp(settings, wnd) {
|
||||
// applet = new Demo(this);
|
||||
//}
|
||||
|
||||
App::App(const GAppSettings& settings, GWindow* wnd,HWND tempMainHWnd, SDLWindow* wndSDL) : GApp(settings, wnd) {
|
||||
applet = new Demo(this);
|
||||
hwnd = wndSDL->win32HWND();
|
||||
mainHWnd = tempMainHWnd;
|
||||
propertyHWnd = CreateWindowEx(
|
||||
WS_EX_TOOLWINDOW,
|
||||
"ToolWindowClass", "ToolWindow",
|
||||
WS_SYSMENU | WS_THICKFRAME | WS_VISIBLE | WS_CHILD,
|
||||
200, 700, 400, 64,
|
||||
mainHWnd, NULL, GetModuleHandle(0), NULL
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1111,16 +1256,41 @@ App::~App() {
|
||||
|
||||
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
App *app = (App *)GetWindowLongPtr(hwnd, GWL_USERDATA);
|
||||
switch(msg)
|
||||
{
|
||||
case WM_CLOSE:
|
||||
DestroyWindow(hwnd);
|
||||
if (app != 0)
|
||||
{
|
||||
|
||||
HWND g3DWind = app->getHWND();
|
||||
app->applet->exitApplication();
|
||||
//DestroyWindow(hwnd);
|
||||
}
|
||||
//DestroyWindow(hwnd);
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
case WM_SIZE:
|
||||
if(app != 0)
|
||||
{
|
||||
HWND g3DWind = app->getHWND();
|
||||
int width = 640;
|
||||
int height = 480;
|
||||
RECT rect;
|
||||
if(GetClientRect(hwnd, &rect))
|
||||
{
|
||||
width = rect.right - rect.left;
|
||||
height = rect.bottom - rect.top;
|
||||
}
|
||||
SetWindowPos(g3DWind, NULL, 0, 0, width, height, NULL);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
return DefWindowProc(hwnd, msg, wParam, lParam);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1130,20 +1300,94 @@ int main(int argc, char** argv) {
|
||||
//_CrtSetBreakAlloc(1279);
|
||||
|
||||
GAppSettings settings;
|
||||
if(getOSVersion() > 5.0)
|
||||
settings.window.defaultIconFilename = GetFileInPath("/content/images/rico.png");
|
||||
else
|
||||
settings.window.defaultIconFilename = GetFileInPath("/content/images/rico256c.png");
|
||||
settings.window.resizable = true;
|
||||
settings.window.fsaaSamples = 8;
|
||||
settings.writeLicenseFile = false;
|
||||
settings.window.width = 841;
|
||||
settings.window.height = 639;
|
||||
settings.window.center = true;
|
||||
//Using the damned SDL window now
|
||||
SDLWindow* wnd = new SDLWindow(settings.window);
|
||||
//wnd->setInputCaptureCount(200);
|
||||
wnd->setMouseVisible(false);
|
||||
App app = App(settings, wnd);
|
||||
|
||||
|
||||
|
||||
WNDCLASSEX wc;
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = 0;
|
||||
wc.lpfnWndProc = WndProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = 0;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = "containerHWND";
|
||||
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
|
||||
|
||||
if (!RegisterClassEx (&wc))
|
||||
return false;
|
||||
|
||||
HMODULE hThisInstance = GetModuleHandle(NULL);
|
||||
HWND hwnd = wnd->win32HWND();
|
||||
HWND hwndMain = CreateWindowEx(
|
||||
WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE,
|
||||
"containerHWND",
|
||||
"Main test",
|
||||
WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
800,
|
||||
600,
|
||||
NULL, // parent
|
||||
NULL, // menu
|
||||
hThisInstance,
|
||||
NULL
|
||||
);
|
||||
ShowWindow(hwndMain, SW_SHOW);
|
||||
if(hwndMain == NULL)
|
||||
{
|
||||
MessageBox(NULL, "Failed to create HWND","Dynamica Crash", MB_OK);
|
||||
return 0;
|
||||
}
|
||||
SetParent(hwnd, hwndMain);
|
||||
App app = App(settings, wnd, hwndMain, wnd);
|
||||
RECT rect;
|
||||
int width = 640;
|
||||
int height = 480;
|
||||
if(GetClientRect(hwndMain, &rect))
|
||||
{
|
||||
width = rect.right - rect.left;
|
||||
height = rect.bottom - rect.top;
|
||||
}
|
||||
SetWindowPos(hwnd, NULL, 0, 0, width, height, NULL);
|
||||
|
||||
LONG lStyle = GetWindowLong(hwnd, GWL_STYLE);
|
||||
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU);
|
||||
SetWindowLong(hwnd, GWL_STYLE, lStyle);
|
||||
|
||||
LONG lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
|
||||
lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE);
|
||||
SetWindowLong(hwnd, GWL_EXSTYLE, lExStyle);
|
||||
|
||||
//SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_CHILD);
|
||||
SetWindowLongPtr(hwndMain, GWL_USERDATA, (LONG)&app);
|
||||
HICON hicon = (HICON)LoadImage(GetModuleHandleW(NULL), (LPCSTR)MAKEINTRESOURCEW(IDI_ICON1), IMAGE_ICON, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE);
|
||||
SendMessage(hwndMain, WM_SETICON, ICON_BIG, (LPARAM)hicon);
|
||||
|
||||
|
||||
|
||||
SetWindowPos(hwndMain, NULL, 0, 0, 800, 600, NULL);
|
||||
HMONITOR monitor = MonitorFromWindow(hwndMain, MONITOR_DEFAULTTONEAREST);
|
||||
MONITORINFO lpmi;
|
||||
GetMonitorInfo( monitor, &lpmi);
|
||||
|
||||
int widthMON = lpmi.rcMonitor.bottom;
|
||||
int heightMON = lpmi.rcMonitor.right;
|
||||
|
||||
//message = Convert(widthMON) + ", " + Convert(heightMON);
|
||||
//messageTime = G3D::System::time();
|
||||
|
||||
app.run();
|
||||
return 0;
|
||||
|
||||
@@ -3,14 +3,17 @@
|
||||
// Used by Dialogs.rc
|
||||
//
|
||||
#define IDD_ABOUT_DIALOG 102
|
||||
#define IDD_TOOLBOX 103
|
||||
#define IDI_ICON1 106
|
||||
#define IDC_TOOLBOX_BROWSER 1001
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 105
|
||||
#define _APS_NEXT_RESOURCE_VALUE 107
|
||||
#define _APS_NEXT_COMMAND_VALUE 40004
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1002
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||