nova compatiblity

This commit is contained in:
James Turk 2005-03-01 07:51:23 +00:00
parent 38eaf40d6f
commit 8c75d02356
7 changed files with 161 additions and 17 deletions

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: AudioCore.hpp,v 1.1 2005/02/27 05:55:18 cozman Exp $ // $Id: AudioCore.hpp,v 1.2 2005/03/01 07:51:23 cozman Exp $
#ifndef PHOTON_AUDIO_AUDIOCORE_HPP #ifndef PHOTON_AUDIO_AUDIOCORE_HPP
#define PHOTON_AUDIO_AUDIOCORE_HPP #define PHOTON_AUDIO_AUDIOCORE_HPP
@ -21,18 +21,44 @@ namespace photon
namespace audio namespace audio
{ {
// Class: AudioCore
// Photon's <Singleton> core for audio manipulation/control. Defines the
// interface through which all audio related functions are performed.
//
// Parent:
// <Singleton>
class AudioCore : public util::Singleton<AudioCore> class AudioCore : public util::Singleton<AudioCore>
{ {
// Group: Accessors
public: public:
// Function: getAudioDeviceName
// Get name of active audio device.
//
// Returns:
// Name of audio device currently in use.
std::string getAudioDeviceName() const; std::string getAudioDeviceName() const;
// Group: Initialization
public:
// Function: setDesiredDevice
// Set the name of the desired audio device to use. Static function of
// AudioCore, must be called before AudioCore::initialize() or not at all.
//
// If called, the initialization of the audio library will attempt to
// use the specified audio device, otherwise the default device will be
// used.
//
// Parameters:
// name - Name of audio device to use.
static void setDesiredDevice(const std::string& name);
// OpenAL specifics
private: private:
util::VersionInfo initOpenAL(); util::VersionInfo initOpenAL();
static std::string checkOpenALError(); static std::string checkOpenALError();
public: // data members
static void setDesiredDevice(const std::string& name);
private: private:
static std::string deviceName_; static std::string deviceName_;

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: Vector2.hpp,v 1.1 2005/02/27 09:00:13 cozman Exp $ // $Id: Vector2.hpp,v 1.2 2005/03/01 07:51:23 cozman Exp $
#ifndef PHOTON_MATH_VECTOR2_HPP #ifndef PHOTON_MATH_VECTOR2_HPP
#define PHOTON_MATH_VECTOR2_HPP #define PHOTON_MATH_VECTOR2_HPP
@ -207,8 +207,11 @@ public:
Vector2 operator*(scalar lhs, const Vector2 &rhs); Vector2 operator*(scalar lhs, const Vector2 &rhs);
// Group: External Utilities
// Function: magnitude // Function: magnitude
// Find length of a vector. // Find length of a vector.
// Same as a call to v.getMagnitude() but provided for convinience.
// //
// Parameters: // Parameters:
// v - Vector to calculate magnitude of // v - Vector to calculate magnitude of
@ -217,6 +220,8 @@ Vector2 operator*(scalar lhs, const Vector2 &rhs);
// Length of the vector. // Length of the vector.
scalar magnitude(const Vector2 &v); scalar magnitude(const Vector2 &v);
// Group: Aliases
// Typedef: Point2 // Typedef: Point2
// Alias for Vector2 type. // Alias for Vector2 type.
typedef Vector2 Point2; typedef Vector2 Point2;

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: math.hpp,v 1.1 2005/02/27 09:00:13 cozman Exp $ // $Id: math.hpp,v 1.2 2005/03/01 07:51:23 cozman Exp $
#ifndef PHOTON_MATH_MATH_HPP #ifndef PHOTON_MATH_MATH_HPP
#define PHOTON_MATH_MATH_HPP #define PHOTON_MATH_MATH_HPP
@ -21,6 +21,10 @@ namespace math
class Vector2; class Vector2;
// Title: Math Utilities
// Group: Generic
// Function: clamp // Function: clamp
// Clamp a value between two boundaries. // Clamp a value between two boundaries.
// //
@ -57,6 +61,8 @@ bool scalarCompare(scalar val1, scalar val2, scalar epsilon=0.000001);
// Scalar distance between the two points. // Scalar distance between the two points.
scalar distance(Vector2 v1, Vector2 v2); scalar distance(Vector2 v1, Vector2 v2);
// Group: Degrees/Radians
// Function: degToRad // Function: degToRad
// Convert degrees to radians. // Convert degrees to radians.
// //

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: Singleton.hpp,v 1.3 2005/02/27 07:43:37 cozman Exp $ // $Id: Singleton.hpp,v 1.4 2005/03/01 07:51:23 cozman Exp $
#ifndef PHOTON_UTIL_SINGLETON_HPP #ifndef PHOTON_UTIL_SINGLETON_HPP
#define PHOTON_UTIL_SINGLETON_HPP #define PHOTON_UTIL_SINGLETON_HPP
@ -18,14 +18,52 @@ namespace photon
namespace util namespace util
{ {
// Class: Singleton
// Template class for singleton pattern. Is non-copyable to enforce
// correct behavior.
//
// Defining a Singleton:
// (code)
// YourClass : public Singleton<Class>
// {
// // class specific data
//
// // Singleton-required code
// private:
// // Singleton-required code
// YourClass();
// ~YourClass();
//
// friend class util::Singleton<YourClass>;
// friend class std::auto_ptr<YourClass>;
// };
// (end)
//
// Using The Singleton:
// (code)
// YourClass::initialize();
// YourClass& yc(YourClass::getInstance());
//
// // use yc
//
// YourClass::destroy(); //optional
// (end)
template<class T> template<class T>
class Singleton : public boost::noncopyable class Singleton : public boost::noncopyable
{ {
public: public:
// Function: initialize
// Initialize the instance of the singleton, must be done explicitly.
static void initialize(); static void initialize();
// Function: destroy
// Destroy the instance of the singleton, can be done explicitly if order
// of destruction matters. Will be done automatically if not done.
static void destroy(); static void destroy();
// Function: getInstance
// Get a reference to the instance of the derived class.
static T& getInstance(); static T& getInstance();
protected: protected:

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: VersionInfo.hpp,v 1.3 2005/02/27 05:50:39 cozman Exp $ // $Id: VersionInfo.hpp,v 1.4 2005/03/01 07:51:24 cozman Exp $
#ifndef PHOTON_UTIL_VERSIONINFO_HPP #ifndef PHOTON_UTIL_VERSIONINFO_HPP
#define PHOTON_UTIL_VERSIONINFO_HPP #define PHOTON_UTIL_VERSIONINFO_HPP
@ -78,6 +78,8 @@ public:
friend std::ostream& operator<<(std::ostream &o, const VersionInfo &rhs); friend std::ostream& operator<<(std::ostream &o, const VersionInfo &rhs);
}; };
// Section: VersionInfo Utilities
// Function: ensureVersion // Function: ensureVersion
// Checks a version of a library against the required version, throws // Checks a version of a library against the required version, throws
// an APIError if the version is not met. // an APIError if the version is not met.

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: AppCore.cpp,v 1.1 2005/02/27 07:43:37 cozman Exp $ // $Id: AppCore.cpp,v 1.2 2005/03/01 07:52:20 cozman Exp $
#include "AppCore.hpp" #include "AppCore.hpp"
@ -95,7 +95,71 @@ int AppCore::getMouseWheelPos()
scalar AppCore::getTime() scalar AppCore::getTime()
{ {
return glfwGetTime(); return glfwGetTime() - pausedTime_;
}
void AppCore::update()
{
scalar curTime = getTime();
// keep track of time between frames
secPerFrame_ = curTime-lastUpdate_;
lastUpdate_ = curTime;
// quit on window closing or Alt-F4/Alt-X
if(!glfwGetWindowParam(GLFW_OPENED) ||
( (glfwGetKey(GLFW_KEY_LALT) || glfwGetKey(GLFW_KEY_RALT)) &&
(glfwGetKey(GLFW_KEY_F4) || glfwGetKey('X')) ) )
{
quitRequested_ = true;
}
// hold active-state
active_ = (glfwGetWindowParam(GLFW_ACTIVE) == GL_TRUE);
// automatically pause/unpause app timer on focus
if(!active_ && !timerPaused_)
{
timerPaused_ = true;
lastPause_ = curTime;
unpauseOnActive_ = true;
}
else if(active_ && unpauseOnActive_)
{
timerPaused_ = true;
pausedTime_ += curTime - lastPause_;
unpauseOnActive_ = false;
}
}
void AppCore::setTitle(const std::string& title)
{
glfwSetWindowTitle(title.c_str());
}
void AppCore::requestQuit()
{
quitRequested_ = true;
}
bool AppCore::quitRequested()
{
return quitRequested_;
}
bool AppCore::isActive()
{
return active_;
}
double AppCore::getElapsedTime()
{
return secPerFrame_;
}
double AppCore::getFramerate()
{
return 1/secPerFrame_;
} }
util::VersionInfo AppCore::initGLFW() util::VersionInfo AppCore::initGLFW()
@ -109,7 +173,10 @@ util::VersionInfo AppCore::initGLFW()
return util::VersionInfo(maj,min,patch); return util::VersionInfo(maj,min,patch);
} }
AppCore::AppCore() AppCore::AppCore() :
quitRequested_(true), active_(false), timerPaused_(false),
unpauseOnActive_(false), lastPause_(0), pausedTime_(0),
secPerFrame_(0), lastUpdate_(0)
{ {
util::VersionInfo glfwReq(2,4,2); // requires GLFW 2.4.2 util::VersionInfo glfwReq(2,4,2); // requires GLFW 2.4.2

View File

@ -5,7 +5,7 @@
// James Turk (jpt2433@rit.edu) // James Turk (jpt2433@rit.edu)
// //
// Version: // Version:
// $Id: Log.cpp,v 1.6 2005/02/27 05:53:01 cozman Exp $ // $Id: Log.cpp,v 1.7 2005/03/01 07:52:20 cozman Exp $
#include "Log.hpp" #include "Log.hpp"
@ -22,7 +22,7 @@ Log::Log()
Log::~Log() Log::~Log()
{ {
flush(); flush();
removeSinks(); removeSinks();;
} }
void Log::addSink(LogSinkPtr sink) void Log::addSink(LogSinkPtr sink)