#include "TimeSeriesExample.h" #include "../CommonInterfaces/CommonGraphicsAppInterface.h" #include "../CommonInterfaces/CommonRenderInterface.h" #include "../CommonInterfaces/Common2dCanvasInterface.h" #include "../CommonInterfaces/CommonExampleInterface.h" #include "LinearMath/btAlignedObjectArray.h" #include "btBulletCollisionCommon.h" #include "../CommonInterfaces/CommonGUIHelperInterface.h" #include "TimeSeriesCanvas.h" struct TimeSeriesExample : public CommonExampleInterface { struct CommonGraphicsApp* m_app; struct TimeSeriesExampleInternalData* m_internalData; TimeSeriesExample(struct CommonGraphicsApp* app); virtual ~TimeSeriesExample(); virtual void initPhysics(); virtual void exitPhysics(); virtual void stepSimulation(float deltaTime); virtual void physicsDebugDraw(int debugFlags); virtual void syncPhysicsToGraphics(struct GraphicsPhysicsBridge& gfxBridge); virtual bool mouseMoveCallback(float x, float y); virtual bool mouseButtonCallback(int button, int state, float x, float y); virtual bool keyboardCallback(int key, int state); virtual void renderScene() { } }; struct TimeSeriesExampleInternalData { TimeSeriesCanvas* m_timeSeriesCanvas; TimeSeriesExampleInternalData() : m_timeSeriesCanvas(0) { } }; TimeSeriesExample::TimeSeriesExample(struct CommonGraphicsApp* app) { m_app = app; m_internalData = new TimeSeriesExampleInternalData; } TimeSeriesExample::~TimeSeriesExample() { delete m_internalData->m_timeSeriesCanvas; delete m_internalData; } void TimeSeriesExample::initPhysics() { //request a visual bitma/texture we can render to m_internalData->m_timeSeriesCanvas = new TimeSeriesCanvas(m_app->m_2dCanvasInterface, 512, 512, "Test"); m_internalData->m_timeSeriesCanvas->setupTimeSeries(3, 100, 0); m_internalData->m_timeSeriesCanvas->addDataSource("Some sine wave", 255, 0, 0); m_internalData->m_timeSeriesCanvas->addDataSource("Some cosine wave", 0, 255, 0); m_internalData->m_timeSeriesCanvas->addDataSource("Delta Time (*10)", 0, 0, 255); m_internalData->m_timeSeriesCanvas->addDataSource("Tan", 255, 0, 255); m_internalData->m_timeSeriesCanvas->addDataSource("Some cosine wave2", 255, 255, 0); m_internalData->m_timeSeriesCanvas->addDataSource("Empty source2", 255, 0, 255); } void TimeSeriesExample::exitPhysics() { } void TimeSeriesExample::stepSimulation(float deltaTime) { float time = m_internalData->m_timeSeriesCanvas->getCurrentTime(); float v = sinf(time); m_internalData->m_timeSeriesCanvas->insertDataAtCurrentTime(v, 0, true); v = cosf(time); m_internalData->m_timeSeriesCanvas->insertDataAtCurrentTime(v, 1, true); v = tanf(time); m_internalData->m_timeSeriesCanvas->insertDataAtCurrentTime(v, 3, true); m_internalData->m_timeSeriesCanvas->insertDataAtCurrentTime(deltaTime * 10, 2, true); m_internalData->m_timeSeriesCanvas->nextTick(); } void TimeSeriesExample::physicsDebugDraw(int debugDrawFlags) { } bool TimeSeriesExample::mouseMoveCallback(float x, float y) { return false; } bool TimeSeriesExample::mouseButtonCallback(int button, int state, float x, float y) { return false; } bool TimeSeriesExample::keyboardCallback(int key, int state) { return false; } void TimeSeriesExample::syncPhysicsToGraphics(GraphicsPhysicsBridge& gfxBridge) { } CommonExampleInterface* TimeSeriesCreateFunc(struct CommonExampleOptions& options) { return new TimeSeriesExample(options.m_guiHelper->getAppInterface()); }