#pragma once #include "WorldManager.h" void InitWorld(VWorld * world) { world->cameraPos.x = 0.0; world->cameraPos.y = 0.0; world->cameraPos.z = 0.0; world->view.x = 0.0; world->view.y = 0.0; world->view.z = -1.0; world->up.x = 0.0; world->up.y = 1.0; world->up.z = 0.0; } void CleanUpWorld(VWorld * world) { #pragma unused(world) /* Nothing necessary to do here yet */ } void OffsetCamera(VWorld * world, Vector * offset, float interval) { world->cameraPos.x += offset->x / interval; world->cameraPos.y += offset->y / interval; world->cameraPos.z += offset->z / interval; world->view.x += offset->x / interval; world->view.y += offset->y / interval; world->view.z += offset->z / interval; } void RotateCamera(VWorld * world, Vector * rotate, float interval) { Vector Look; Vector NewRotate; NewRotate = *rotate; NewRotate.x /= interval; NewRotate.y /= interval; NewRotate.z /= interval; ForwardsVector(world, 1, &Look); NormalizeVector(&Look); RotateVector(&Look, &NewRotate); AddVector(&world->cameraPos, &Look, &world->view); } void ForwardsVector(VWorld * w, float Distance, Vector * Forwards) { Forwards->x = (w->view.x - w->cameraPos.x) * Distance; Forwards->y = (w->view.y - w->cameraPos.y) * Distance; Forwards->z = (w->view.z - w->cameraPos.z) * Distance; } void ApplyCamera(VWorld * world) { gluLookAt (world->cameraPos.x, world->cameraPos.y, world->cameraPos.z, world->view.x, world->view.y, world->view.z, world->up.x, world->up.y, world->up.z); }