#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) { Quaternion Temp, QuatView, Result; Temp.v.x = sin(rotate->x / 2); Temp.v.y = sin(rotate->y / 2); Temp.v.z = sin(rotate->z / 2); Temp.w = cos(VectorMagnitude(rotate)); Vector2Quaternion(&world->view, &QuatView); MultiplyQuaternion(&Temp, &QuatView, &Result); ConjugateQuaternion(&Temp); MultiplyQuaternion(&Result, &Temp, &Result); Quaternion2Vector(&Result, &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; }