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: }