- editor and g3d viewer work in wxwidgets 3.0.2

This commit is contained in:
SoftCoder
2015-10-26 19:49:25 -07:00
parent 88c536a8c6
commit 952e0a6315
5 changed files with 66 additions and 53 deletions

View File

@@ -469,7 +469,7 @@ IF(NOT DEFINED CPACK_GENERATOR)
libsdl1.2-dev, libsdl1.2-dev,
libvlc-dev, libvlc-dev,
libvorbis-dev, libvorbis-dev,
libwxgtk2.8-dev, libwxgtk2.9-dev,
libxerces-c2-dev, libxerces-c2-dev,
libxml2-dev, libxml2-dev,
libz-dev, libz-dev,

View File

@@ -423,6 +423,7 @@ IF(wxWidgets_FIND_STYLE STREQUAL "win32")
D:/ D:/
$ENV{ProgramFiles} $ENV{ProgramFiles}
PATH_SUFFIXES PATH_SUFFIXES
wxWidgets-3.0.2
wxWidgets-2.9.4 wxWidgets-2.9.4
wxWidgets-2.9.3 wxWidgets-2.9.3
wxWidgets-2.9.2 wxWidgets-2.9.2
@@ -704,7 +705,7 @@ ELSE(wxWidgets_FIND_STYLE STREQUAL "win32")
IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
MESSAGE(STATUS "Searching for wx on FreeBSD") MESSAGE(STATUS "Searching for wx on FreeBSD")
FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE NAMES $ENV{WX_CONFIG} wxgtk2u-2.8-config wxgtk2u-2.6-config wxgtk2-2.6-config FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE NAMES $ENV{WX_CONFIG} wxgtk2u-3.0-config wxgtk2u-2.9-config wxgtk2u-2.8-config wxgtk2u-2.6-config wxgtk2-2.6-config
ONLY_CMAKE_FIND_ROOT_PATH ONLY_CMAKE_FIND_ROOT_PATH
) )
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
@@ -737,7 +738,15 @@ ELSE(wxWidgets_FIND_STYLE STREQUAL "win32")
ERROR_QUIET ERROR_QUIET
) )
MESSAGE(STATUS "${wxWidgets_CONFIG_EXECUTABLE} ${wxWidgets_SELECT_OPTIONS} --cxxflags") MESSAGE(STATUS "${wxWidgets_CONFIG_EXECUTABLE} ${wxWidgets_SELECT_OPTIONS} --cxxflags")
EXECUTE_PROCESS(
COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}"
--version
OUTPUT_VARIABLE wxWidgets_VERSION
ERROR_QUIET
)
MESSAGE(STATUS "${wxWidgets_CONFIG_EXECUTABLE} --version returned: ${wxWidgets_VERSION}")
IF(RET EQUAL 0) IF(RET EQUAL 0)
STRING(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS) STRING(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
SEPARATE_ARGUMENTS(wxWidgets_CXX_FLAGS) SEPARATE_ARGUMENTS(wxWidgets_CXX_FLAGS)

View File

@@ -303,12 +303,8 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
model= NULL; model= NULL;
Config &config = Config::getInstance(); Config &config = Config::getInstance();
//getGlPlatformExtensions();
isControlKeyPressed = false; isControlKeyPressed = false;
int args[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_MIN_ALPHA, 8 }; // to prevent flicker
//int args[] = { WX_GL_RGBA, WX_GL_MIN_ALPHA, 0 }; // to prevent flicker
glCanvas = new GlCanvas(this, args);
#if wxCHECK_VERSION(2, 9, 1) #if wxCHECK_VERSION(2, 9, 1)
@@ -438,10 +434,9 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
fileDialog->SetDirectory(ToUnicode(defaultPath.c_str())); fileDialog->SetDirectory(ToUnicode(defaultPath.c_str()));
glCanvas->SetFocus(); if(glCanvas != NULL) {
glCanvas->SetFocus();
//timer = new wxTimer(this); }
//timer->Start(100);
// For windows register g3d file extension to launch this app // For windows register g3d file extension to launch this app
#if defined(WIN32) && !defined(__MINGW32__) #if defined(WIN32) && !defined(__MINGW32__)
@@ -482,7 +477,13 @@ void MainWindow::setupTimer() {
void MainWindow::setupStartupSettings() { void MainWindow::setupStartupSettings() {
//printf("In setupStartupSettings #1\n");
if(glCanvas == NULL) {
int args[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, WX_GL_MIN_ALPHA, 8 }; // to prevent flicker
glCanvas = new GlCanvas(this, args);
}
glCanvas->setCurrentGLContext(); glCanvas->setCurrentGLContext();
//printf("In setupStartupSettings #2\n");
GLuint err = glewInit(); GLuint err = glewInit();
if (GLEW_OK != err) { if (GLEW_OK != err) {
@@ -563,8 +564,9 @@ MainWindow::~MainWindow(){
delete renderer; delete renderer;
renderer = NULL; renderer = NULL;
//delete glCanvas; if(glCanvas) {
if(glCanvas) glCanvas->Destroy(); glCanvas->Destroy();
}
glCanvas = NULL; glCanvas = NULL;
} }
@@ -572,45 +574,27 @@ MainWindow::~MainWindow(){
void MainWindow::init() { void MainWindow::init() {
#if wxCHECK_VERSION(2, 9, 3) #if wxCHECK_VERSION(2, 9, 3)
//glCanvas->setCurrentGLContext();
//printf("setcurrent #1\n");
#elif wxCHECK_VERSION(2, 9, 1) #elif wxCHECK_VERSION(2, 9, 1)
#else #else
glCanvas->SetCurrent(); glCanvas->SetCurrent();
//printf("setcurrent #2\n"); //printf("setcurrent #2\n");
#endif #endif
//renderer->init();
//wxCommandEvent event;
//onMenuRestart(event);
} }
void MainWindow::onPaint(wxPaintEvent &event) { void MainWindow::onPaint(wxPaintEvent &event) {
if(!IsShown()) return; if(!IsShown()) {
event.Skip();
return;
}
#if wxCHECK_VERSION(2, 9, 4) bool isFirstWindowShownEvent = !startupSettingsInited ;
//glCanvas->setCurrentGLContext();
#elif wxCHECK_VERSION(2, 9, 3)
#elif wxCHECK_VERSION(2, 9, 1)
glCanvas->setCurrentGLContext();
#endif
if(startupSettingsInited == false) { if(startupSettingsInited == false) {
startupSettingsInited = true; startupSettingsInited = true;
setupStartupSettings(); setupStartupSettings();
} }
glCanvas->setCurrentGLContext();
//wxClientDC &dc = event.GetDC();
// wxPaintDC dc(this);
// if(overrideSize.first > 0 && overrideSize.second > 0) {
// wxRect r(0,0,100,100);
// dc.SetDeviceClippingRegion(r);
// // Then I destroy the clipping region
// dc.DestroyClippingRegion();
// }
static float autoScreenshotRender = -1; static float autoScreenshotRender = -1;
if(autoScreenShotAndExit == true && autoScreenshotRender >= 0) { if(autoScreenShotAndExit == true && autoScreenshotRender >= 0) {
@@ -667,6 +651,12 @@ void MainWindow::onPaint(wxPaintEvent &event) {
renderer->renderParticleManager(); renderer->renderParticleManager();
if(isFirstWindowShownEvent) {
this->Refresh();
glCanvas->Refresh();
glCanvas->SetFocus();
}
bool haveLoadedParticles = (particleProjectilePathList.empty() == false || particleSplashPathList.empty() == false); bool haveLoadedParticles = (particleProjectilePathList.empty() == false || particleSplashPathList.empty() == false);
if(autoScreenShotAndExit == true && viewportW > 0 && viewportH > 0) { if(autoScreenShotAndExit == true && viewportW > 0 && viewportH > 0) {
@@ -770,7 +760,9 @@ void MainWindow::onClose(wxCloseEvent &event){
renderer = NULL; renderer = NULL;
//delete glCanvas; //delete glCanvas;
if(glCanvas) glCanvas->Destroy(); if(glCanvas) {
glCanvas->Destroy();
}
glCanvas = NULL; glCanvas = NULL;
this->Destroy(); this->Destroy();
@@ -1257,12 +1249,6 @@ void MainWindow::loadUnit(string path, string skillName) {
this->particleSplashPathList.push_back(skillParticleSplashFile); this->particleSplashPathList.push_back(skillParticleSplashFile);
printf("Added skill splash particle [%s]\n",skillParticleSplashFile.c_str()); printf("Added skill splash particle [%s]\n",skillParticleSplashFile.c_str());
} }
//glCanvas->SetCurrent();
//renderer->init();
//wxCommandEvent event;
//onMenuRestart(event);
} }
SetTitle(ToUnicode(titlestring)); SetTitle(ToUnicode(titlestring));
} }
@@ -1271,7 +1257,6 @@ void MainWindow::loadUnit(string path, string skillName) {
std::cout << e.what() << std::endl; std::cout << e.what() << std::endl;
wxMessageDialog(NULL, ToUnicode(e.what()), ToUnicode("Not a Mega-Glest particle XML file, or broken"), wxOK | wxICON_ERROR).ShowModal(); wxMessageDialog(NULL, ToUnicode(e.what()), ToUnicode("Not a Mega-Glest particle XML file, or broken"), wxOK | wxICON_ERROR).ShowModal();
} }
//timer->Start(100);
} }
void MainWindow::loadModel(string path) { void MainWindow::loadModel(string path) {
@@ -2030,8 +2015,8 @@ void translateCoords(wxWindow *wnd, int &x, int &y) {
// to prevent flicker // to prevent flicker
GlCanvas::GlCanvas(MainWindow * mainWindow, int *args) GlCanvas::GlCanvas(MainWindow * mainWindow, int *args)
#if wxCHECK_VERSION(2, 9, 1) #if wxCHECK_VERSION(2, 9, 1)
: wxGLCanvas(mainWindow, -1, args, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas")) { : wxGLCanvas(mainWindow, wxID_ANY, args, wxDefaultPosition, mainWindow->GetClientSize(), wxFULL_REPAINT_ON_RESIZE, wxT("GLCanvas")) {
this->context = NULL; this->context = new wxGLContext(this);
#else #else
: wxGLCanvas(mainWindow, -1, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas"), args) { : wxGLCanvas(mainWindow, -1, wxDefaultPosition, wxDefaultSize, 0, wxT("GLCanvas"), args) {
this->context = NULL; this->context = NULL;
@@ -2040,14 +2025,28 @@ GlCanvas::GlCanvas(MainWindow * mainWindow, int *args)
} }
GlCanvas::~GlCanvas() { GlCanvas::~GlCanvas() {
if(this->context) delete this->context; if(this->context) {
delete this->context;
}
this->context = NULL; this->context = NULL;
} }
void GlCanvas::setCurrentGLContext() { void GlCanvas::setCurrentGLContext() {
#ifndef __APPLE__ #ifndef __APPLE__
#if wxCHECK_VERSION(2, 9, 1) #if wxCHECK_VERSION(3, 0, 0)
//printf("Setting glcontext 3x!\n");
//if(!IsShown()) {}
if(this->context == NULL) {
//printf("Make new ctx!\n");
this->context = new wxGLContext(this);
//printf("Set ctx [%p]\n",this->context);
}
#elif wxCHECK_VERSION(2, 9, 1)
//printf("Setting glcontext 29x!\n");
//if(!IsShown()) {}
if(this->context == NULL) { if(this->context == NULL) {
this->context = new wxGLContext(this); this->context = new wxGLContext(this);
//printf("Set ctx [%p]\n",this->context); //printf("Set ctx [%p]\n",this->context);
@@ -2080,6 +2079,12 @@ void GlCanvas::onKeyDown(wxKeyEvent &event) {
mainWindow->onKeyDown(event); mainWindow->onKeyDown(event);
} }
void GlCanvas::OnSize(wxSizeEvent&event) {
//printf("OnSize %dx%d\n",event.m_size.GetWidth(),event.m_size.GetHeight());
Update();
}
// EVT_SPIN_DOWN(GlCanvas::onMouseDown) // EVT_SPIN_DOWN(GlCanvas::onMouseDown)
// EVT_SPIN_UP(GlCanvas::onMouseDown) // EVT_SPIN_UP(GlCanvas::onMouseDown)
// EVT_MIDDLE_DOWN(GlCanvas::onMouseWheel) // EVT_MIDDLE_DOWN(GlCanvas::onMouseWheel)
@@ -2089,6 +2094,7 @@ BEGIN_EVENT_TABLE(GlCanvas, wxGLCanvas)
EVT_MOUSEWHEEL(GlCanvas::onMouseWheel) EVT_MOUSEWHEEL(GlCanvas::onMouseWheel)
EVT_MOTION(GlCanvas::onMouseMove) EVT_MOTION(GlCanvas::onMouseMove)
EVT_KEY_DOWN(GlCanvas::onKeyDown) EVT_KEY_DOWN(GlCanvas::onKeyDown)
EVT_SIZE(GlCanvas::OnSize)
END_EVENT_TABLE() END_EVENT_TABLE()
// =============================================== // ===============================================

View File

@@ -199,6 +199,7 @@ public:
void onMouseMove(wxMouseEvent &event); void onMouseMove(wxMouseEvent &event);
void onPaint(wxPaintEvent &event); void onPaint(wxPaintEvent &event);
void onKeyDown(wxKeyEvent &event); void onKeyDown(wxKeyEvent &event);
void OnSize(wxSizeEvent&);
void setCurrentGLContext(); void setCurrentGLContext();
wxGLContext * getCtx() { return context; } wxGLContext * getCtx() { return context; }

View File

@@ -312,9 +312,6 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST
streflop/softfloat) streflop/softfloat)
ENDIF() ENDIF()
#IF(NOT WANT_STATIC_LIBS)
#MESSAGE(STATUS "*** Searching for miniupnpc since WANT_STATIC_LIBS is off ...")
#MESSAGE(STATUS "*** Searching for miniupnpc ...")
IF(NOT FORCE_EMBEDDED_LIBS) IF(NOT FORCE_EMBEDDED_LIBS)
FIND_PACKAGE(Miniupnpc) FIND_PACKAGE(Miniupnpc)
ENDIF() ENDIF()