MegaGlest/source/g3d_viewer/main.h

145 lines
3.0 KiB
C
Raw Normal View History

#ifndef _SHADER_G3DVIEWER_MAIN_H_
#define _SHADER_G3DVIEWER_MAIN_H_
#include <string>
2010-03-13 23:00:01 +01:00
#include <wx/wx.h>
#include <wx/glcanvas.h>
#include "renderer.h"
2010-03-13 23:00:01 +01:00
#include "util.h"
2010-05-25 20:06:42 +02:00
#include "particle_type.h"
#include "unit_particle_type.h"
using std::string;
2010-05-25 20:06:42 +02:00
using namespace Glest::Game;
namespace Shared{ namespace G3dViewer{
class GlCanvas;
// ===============================
// class MainWindow
// ===============================
class MainWindow: public wxFrame{
private:
DECLARE_EVENT_TABLE()
public:
static const string versionString;
static const string winHeader;
enum MenuId{
miFileLoad,
2010-05-25 20:06:42 +02:00
miFileLoadParticleXML,
miModeWireframe,
miModeNormals,
miModeGrid,
miSpeedSlower,
miSpeedFaster,
miColorRed,
miColorBlue,
miColorYellow,
miColorGreen
};
private:
GlCanvas *glCanvas;
Renderer *renderer;
wxTimer *timer;
wxMenuBar *menu;
wxMenu *menuFile;
wxMenu *menuMode;
wxMenu *menuSpeed;
wxMenu *menuCustomColor;
Model *model;
2010-05-25 20:06:42 +02:00
//string modelPath;
//string ParticlePath;
std::vector<string> modelPathList;
std::vector<string> particlePathList;
float speed;
float anim;
float rotX, rotY, zoom;
int lastX, lastY;
Renderer::PlayerColor playerColor;
2010-05-25 20:06:42 +02:00
std::vector<UnitParticleSystemType *> unitParticleSystemTypes;
std::vector<UnitParticleSystem *> unitParticleSystems;
void loadModel(string path);
void loadParticle(string path);
public:
MainWindow(const string &modelPath);
~MainWindow();
void init();
void Notify();
void onPaint(wxPaintEvent &event);
void onClose(wxCloseEvent &event);
void onMenuFileLoad(wxCommandEvent &event);
2010-05-25 20:06:42 +02:00
void onMenuFileLoadParticleXML(wxCommandEvent &event);
void onMenuModeNormals(wxCommandEvent &event);
void onMenuModeWireframe(wxCommandEvent &event);
void onMenuModeGrid(wxCommandEvent &event);
void onMenuSpeedSlower(wxCommandEvent &event);
void onMenuSpeedFaster(wxCommandEvent &event);
void onMenuColorRed(wxCommandEvent &event);
void onMenuColorBlue(wxCommandEvent &event);
void onMenuColorYellow(wxCommandEvent &event);
void onMenuColorGreen(wxCommandEvent &event);
void onMouseMove(wxMouseEvent &event);
void onTimer(wxTimerEvent &event);
2010-05-25 20:06:42 +02:00
void onKeyDown(wxKeyEvent &e);
string getModelInfo();
};
// =====================================================
// class GlCanvas
// =====================================================
class GlCanvas: public wxGLCanvas {
private:
DECLARE_EVENT_TABLE()
public:
GlCanvas(MainWindow *mainWindow);
void onMouseMove(wxMouseEvent &event);
2010-05-25 20:06:42 +02:00
void onPaint(wxPaintEvent &event);
void onKeyDown(wxKeyEvent &event);
private:
MainWindow *mainWindow;
};
// ===============================
// class App
// ===============================
class App: public wxApp{
private:
MainWindow *mainWindow;
public:
virtual bool OnInit();
virtual int MainLoop();
virtual int OnExit();
};
}}//end namespace
DECLARE_APP(Shared::G3dViewer::App)
#endif