-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathSimViewer.h
More file actions
101 lines (93 loc) · 3.06 KB
/
Copy pathSimViewer.h
File metadata and controls
101 lines (93 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#pragma once
#include <GL\glew.h>
#include <QtOpenGL>
#include "Camera\camera.h"
#include "event_handles\AbstractSimEventHandle.h"
namespace arcsim
{
class SimulationManager;
}
class SimViewer : public QGLWidget
{
Q_OBJECT
public:
enum {
TrackBallIndex_X = 1,
TrackBallIndex_Y,
TrackBallIndex_Z,
};
enum TrackBallMode{
TrackBall_None,
TrackBall_Rot,
TrackBall_Trans
};
public:
SimViewer(QWidget *parent);
~SimViewer();
void initCloth(arcsim::SimulationManager* sim);
void getModelBound(ldp::Float3& bmin, ldp::Float3& bmax);
float getFps()const{ return m_fps; }
bool isEdgeMode()const{ return m_isEdgeMode; }
void setEdgeMode(bool b){ m_isEdgeMode = b; }
const ldp::Camera& camera()const{ return m_camera; }
ldp::Camera& camera(){ return m_camera; }
void resetCamera();
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
Qt::MouseButtons buttons()const{ return m_buttons; }
QPoint lastMousePos()const{ return m_lastPos; }
const QImage& fboImage()const{ return m_fboImage; }
AbstractSimEventHandle::ProcessorType getEventHandleType()const;
void setEventHandleType(AbstractSimEventHandle::ProcessorType type);
const AbstractSimEventHandle* getEventHandle(AbstractSimEventHandle::ProcessorType type)const;
AbstractSimEventHandle* getEventHandle(AbstractSimEventHandle::ProcessorType type);
void beginDragBox(QPoint p);
void rotateTrackBall(ldp::Mat3d R);
void translateTrackBall(ldp::Double3 t);
void endDragBox();
void beginTrackBall(TrackBallMode mode, ldp::Float3 p, ldp::Mat3f R, float scale);
void endTrackBall();
TrackBallMode getTrackBallMode()const{ return m_trackBallMode; }
void setActiveTrackBallAxis(int i){ m_activeTrackBallAxis = i; }
int getActiveTrackBallAxis()const{ return m_activeTrackBallAxis; }
void setHoverTrackBallAxis(int i){ m_hoverTrackBallAxis = i; }
int getHoverTrackBallAxis()const{ return m_hoverTrackBallAxis; }
int fboRenderedIndex(QPoint p)const;
protected:
void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent*);
void mouseDoubleClickEvent(QMouseEvent *ev);
void wheelEvent(QWheelEvent*);
void keyPressEvent(QKeyEvent*);
void keyReleaseEvent(QKeyEvent*);
void renderSelectionOnFbo();
void renderDragBox();
void renderTrackBall(bool idxMode);
void timerEvent(QTimerEvent* ev);
void renderCloth(int idxMode);
void renderBody(int idxMode);
protected:
ldp::Camera m_camera;
QPoint m_lastPos;
int m_showType;
Qt::MouseButtons m_buttons;
QGLFramebufferObject* m_fbo;
QImage m_fboImage;
bool m_isDragBox;
QPoint m_dragBoxBegin;
TrackBallMode m_trackBallMode;
ldp::Float3 m_trackBallPos;
ldp::Mat3f m_trackBallR;
float m_trackBallScale;
int m_activeTrackBallAxis;
int m_hoverTrackBallAxis;
AbstractSimEventHandle* m_currentEventHandle;
std::vector<std::shared_ptr<AbstractSimEventHandle>> m_eventHandles;
arcsim::SimulationManager* m_simManager;
ldp::Float3 m_modelBound[2];
int m_computeTimer, m_renderTimer;
float m_fps;
bool m_isEdgeMode;
};