//
// OpenGLContext.cpp
// AppLauncher
//
// Created by John Ryland on 1/10/17.
// Copyright © 2017 John Ryland. All rights reserved.
//
#include "OpenGLContext.h"
#include <cstdio>
#include <cstring>
#include <chrono>
OpenGLContext::OpenGLContext()
: m_currentDemo(new DemoContext)
{
}
OpenGLContext::~OpenGLContext()
{
delete m_currentDemo;
}
void OpenGLContext::setDemo(const char* a_demoStr)
{
const DemoContextFactoryItem* item = DemoContextFactoryItem::getFactoryHead();
while (item)
{
if (strcmp(a_demoStr, item->m_name) == 0)
{
delete m_currentDemo;
m_currentDemo = item->m_value();
break;
}
item = item->m_next;
}
if (m_currentDemo == nullptr)
{
m_currentDemo = new DemoContext;
}
m_currentDemo->prepare();
}
void OpenGLContext::prepare()
{
m_currentDemo->prepare();
}
void OpenGLContext::update()
{
//std::chrono::milliseconds elapsedTime;
//std::chrono::duration<> elapsedTime;
m_currentDemo->update();
}
void OpenGLContext::draw()
{
m_currentDemo->draw();
}
void OpenGLContext::onClose()
{
m_currentDemo->onClose();
}
void OpenGLContext::onResize(const vec2f& a_size)
{
m_currentDemo->onResize(a_size);
}
void OpenGLContext::onMouseUp(const MouseEvent& a_event)
{
m_currentDemo->onMouseUp(a_event);
}
void OpenGLContext::onMouseDown(const MouseEvent& a_event)
{
m_currentDemo->onMouseDown(a_event);
}
void OpenGLContext::onMouseMove(const MouseEvent& a_event)
{
m_currentDemo->onMouseMove(a_event);
}