f@0: /* f@0: XYPad - a haptic xy-pad that uses the jHapticGUI library f@0: f@0: Copyright (C) 2015 Queen Mary University of London (http://depic.eecs.qmul.ac.uk/) f@0: f@0: This program is free software: you can redistribute it and/or modify f@0: it under the terms of the GNU General Public License as published by f@0: the Free Software Foundation, either version 3 of the License, or f@0: (at your option) any later version. f@0: f@0: This program is distributed in the hope that it will be useful, f@0: but WITHOUT ANY WARRANTY; without even the implied warranty of f@0: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the f@0: GNU General Public License for more details. f@0: f@0: You should have received a copy of the GNU General Public License f@0: along with this program. If not, see . f@0: */ f@0: #pragma once f@0: #include "HapticScene.h" f@0: #include f@0: f@0: namespace jhapticgui { f@0: class XYScene : public HapticScene f@0: { f@0: enum class Shape { SQUARE, CIRCLE }; f@0: static const double RADIUS; f@0: f@0: HLuint shapeID; f@0: bool isTouching = false; f@0: Shape shape = Shape::CIRCLE; f@0: f@0: public: f@0: XYScene(void(*messageCallback) (const Message & m)); f@0: ~XYScene(); f@0: f@0: bool initHaptics(void); f@0: f@0: void initGL(void); f@0: f@0: unsigned int processMessage(const Message & m); f@0: f@0: void beginFrame(void); f@0: f@0: void endFrame(void); f@0: f@0: void drawCursor(void); f@0: f@0: void drawScene(unsigned int messageUpdate, unsigned int callbacksUpdate); f@0: f@0: unsigned int checkCallbacks(void); f@0: f@0: static void HLCALLBACK checkContact(HLenum event, HLuint object, HLenum thread, HLcache *cache, void *userdata); f@0: static void HLCALLBACK checkMotion(HLenum event, HLuint object, HLenum thread, HLcache *cache, void *userdata); f@0: f@0: }; f@0: }