/*
MainControl.cpp
Written by Matthew Fisher
MainControl includes everything that changes often between applications, such as what meshes to load,
and also determines what is rendered each frame.
*/
//All source files include Main.h
#include "Main.h"
void MainControl::ReInit(GraphicsDevice &GD, WindowManager &WM)
{
if(GD.GetFullScreen())
{
C.Mouse(0.0f); //move the mouse to the middle of the screen
}
MC.Perspective.PerspectiveFov(60.0f * PIf / 180.0f, //the field of view = 60 degrees
float(WM.GetWidth()) / float(WM.GetHeight()), //the aspect ratio
0.1f, //near Z-plane
20.0f); //far Z-plane
}
void MainControl::Init(GraphicsDevice &GD, WindowManager &WM)
{
ReInit(GD, WM);
MC.World.Identity(); //zero the world and view matrices
MC.View.Identity();
SphereMesh.SetGD(GD); //associate the mesh with the graphics device
SphereMesh.CreateSphere(1.0f, 3);
SphereMesh.Translate(eZ * -3.0f);
SphereMesh.GCNormals(); //color the sphere based upon the normals
Time = 0.0f; //reset the time to 0
}
void MainControl::Render(GraphicsDevice &GD, WindowManager &WM)
{
Time += T.SPF(); //advance the current time
if(KeyCheckOnce(KEY_F)) GD.ToggleWireframe(); //toggle wireframe if the user presses "F"
C.WindowKeyboard(1.0f,1.0f); //move based upon the keyboard
if(GD.GetFullScreen()) C.Mouse(0.001f); //move based upon the mouse, if we're in full-screen mode
C.Update(MC, GD); //update the camera and load it into the current graphics device
SphereMesh.Render(); //render the sphere. It will be transformed by the camera matrix.
GD.DrawVector("Camera - > ", C.VecEye, 0, 20); //draw the camera position as text on the screen
}
void MainControl::FreeMemory()
{
}
Top