#include "samplescommon.h"
#ifdef UNICODE
#define tcout std::wcout
#else
#define tcout std::cout
#endif
class CameraAnimator : public bex::SceneUpdater {
public:
m_camera(camera),
m_timer(0.0f),
m_rotation(0.0f)
{
}
virtual void update(float deltaTime) {
const float timerInterval = 8.0f;
const float rotationStep = 0.4f;
const float radius = 48.0f;
m_timer += deltaTime;
if (m_timer >= timerInterval) {
m_timer -= timerInterval;
m_rotation += rotationStep;
bex::Vec3 camPos(radius*sin(m_rotation), 5.0f, radius*cos(m_rotation));
bex::Vec3 lookAt(0.0f, -3.0f, 0.0f);
bex::Matrix4x4 transform = bex::setCameraMatrix(camPos,
normalize(lookAt - camPos),
bex::Vec3(0.0f, 1.0f, 0.0f));
}
}
private:
float m_timer;
float m_rotation;
};
int _tmain(int argc, _TCHAR* argv[])
{
try {
bex::InstanceMap instances;
bex::setupTestScene(bmh, scene, instances);
CameraAnimator cameraAnimator(camera);
int returnCode = 0;
if (!bex::displayLiveJob(job, tcout, cameraTarget, &cameraAnimator)) {
returnCode = 1;
}
return returnCode;
} catch(bex::Exception& ex) {
tcout << "Beast API error" << std::endl;
tcout << "Error: " << bex::convertStringHandle(errorString) << std::endl;
tcout << "Info: " << bex::convertStringHandle(extendedError) << std::endl;
return 1;
} catch(std::exception& ex) {
tcout << "Standard exception" << std::endl;
tcout << "Error: " << ex.what() << std::endl;;
return 1;
}
}