11#include <QGuiApplication> 
   26#define STB_IMAGE_WRITE_IMPLEMENTATION 
   27#include <stb/stb_image_write.h> 
   31    std::map<int, PKeyboardType> 
KeyMap =
 
 
  126        , QOpenGLWidget(parent)
 
  128        QSurfaceFormat format;
 
  129        format.setDepthBufferSize(24);
 
  130        format.setMajorVersion(4);
 
  131        format.setMinorVersion(6);
 
  132        format.setSamples(4);
 
  133        format.setSwapInterval(1);
 
  134        format.setProfile(QSurfaceFormat::CoreProfile);
 
  138        QObject::connect(&
timer, SIGNAL(timeout()), 
this, SLOT(update()));
 
  141        setFocusPolicy(Qt::StrongFocus);
 
 
  163        initializeOpenGLFunctions();
 
  174        float scale = QGuiApplication::primaryScreen()->logicalDotsPerInchX() / 96.0;
 
  182            scn->updateGraphicsContext();
 
 
  220        qreal ratio = devicePixelRatio();
 
 
  227        if (event->buttons().testFlag(Qt::LeftButton))
 
  231        else if (event->buttons().testFlag(Qt::MiddleButton))
 
  235        else if (event->buttons().testFlag(Qt::RightButton))
 
 
  243        if (mods == Qt::ControlModifier)
 
  247        else if (mods == Qt::ShiftModifier)
 
  251        else if (mods == Qt::AltModifier)
 
 
  267        camera->registerPoint(event->x(), event->y());
 
  273            mouseEvent.
ray = camera->castRayInWorldSpace((
float)event->x(), (
float)event->y());
 
  277            mouseEvent.
camera = camera;
 
  278            mouseEvent.
x = (float)event->x();
 
  279            mouseEvent.
y = (float)event->y();
 
  288                activeScene->onMouseEvent(mouseEvent);
 
  293        if (event->button() == Qt::RightButton)
 
 
  306            if ((event->modifiers() == 0 || event->modifiers() == Qt::ShiftModifier)
 
  307                && event->button() == Qt::LeftButton
 
  309                && !ImGui::GetIO().WantCaptureMouse)
 
  319                y = this->height() - y - 1;
 
  322                const auto& selection = this->
select(x, y, w, h);
 
  335            mouseEvent.
ray = camera->castRayInWorldSpace((
float)event->x(), (
float)event->y());
 
  339            mouseEvent.
camera = camera;
 
  340            mouseEvent.
x = (float)event->x();
 
  341            mouseEvent.
y = (float)event->y();
 
 
  358        if (event->buttons().testFlag(Qt::LeftButton) &&
 
  360            event->modifiers() == Qt::AltModifier &&
 
  363            camera->rotateToPoint(event->x(), event->y()); 
 
  365        else if (event->buttons().testFlag(Qt::RightButton) &&
 
  367            event->modifiers() == Qt::AltModifier &&
 
  373        else if (event->buttons().testFlag(Qt::MiddleButton) &&
 
  375            event->modifiers() == Qt::AltModifier &&
 
  378            camera->translateToPoint(event->x(), event->y());
 
  384            mouseEvent.
ray = camera->castRayInWorldSpace((
float)event->x(), (
float)event->y());
 
  388            mouseEvent.
camera = camera;
 
  389            mouseEvent.
x = (float)event->x();
 
  390            mouseEvent.
y = (float)event->y();
 
 
  406            this->
getCamera()->zoom(-0.001*event->angleDelta().x());
 
 
  420        activeScene->onKeyboardEvent(keyEvent);
 
  422        switch (event->key())
 
 
  441        activeScene->onKeyboardEvent(keyEvent);
 
 
  494        QImage image = QOpenGLWidget::grabFramebuffer();
 
  496        image.save(filename.c_str());
 
 
std::shared_ptr< GraphicsPipeline > graphicsPipeline()
 
void startUpdatingGraphicsContext()
 
static PSimulationThread * instance()
 
void stopUpdatingGraphicsContext()
 
virtual std::shared_ptr< Camera > getCamera()
 
void saveScreen(unsigned int frame)
 
virtual std::shared_ptr< RenderEngine > getRenderEngine()
 
SelectionMode getSelectionMode()
 
std::shared_ptr< Camera > mCamera
 
bool & isScreenRecordingOn()
 
RenderParams mRenderParams
 
std::shared_ptr< RenderEngine > mRenderEngine
 
virtual const Selection & select(int x, int y, int w, int h)
 
virtual void setRenderEngine(std::shared_ptr< RenderEngine > engine)
 
virtual std::shared_ptr< Node > getCurrentSelectedNode()
 
virtual void setWindowSize(int w, int h)
 
static SceneGraphFactory * instance()
 
std::shared_ptr< SceneGraph > active()
 
void render(RenderRef ref)
 
void newFrame(RenderRef ref)
 
RenderRef initialize(QWindow *window, bool defaultRender)
 
This is an implementation of AdditiveCCD based on peridyno.
 
PButtonType mappingMouseButton(QMouseEvent *event)
 
PModifierBits mappingModifierBits(Qt::KeyboardModifiers mods)
 
std::map< int, PKeyboardType > KeyMap
 
std::shared_ptr< Camera > camera
 
std::vector< Item > items