WoW Model Viewer
Your premiere tool for viewing, equipping and animating World of Warcraft models.
Loading...
Searching...
No Matches
ModelCamera.cpp
Go to the documentation of this file.
1#include "ModelCamera.h"
2#include "database.h"
3#include "video.h" // video global var
4#include "Logger.h"
5#include <glad/gl.h>
6
7void ModelCamera::init(GameFile* f, ModelCameraDef& mcd, std::vector<uint32>& global, std::string modelname)
8{
9 LOG_INFO << "Using original Camera Model Definitions.";
10 ok = true;
11 nearclip = mcd.nearclip;
12 farclip = mcd.farclip;
13 fov = mcd.fov;
14 pos = mcd.pos;
15 target = mcd.target;
16 tPos.init(mcd.transPos, f, global);
17 tTarget.init(mcd.transTarget, f, global);
18 rot.init(mcd.rot, f, global);
19}
20
21void ModelCamera::initv10(GameFile* f, ModelCameraDefV10& mcd, std::vector<uint32>& global, std::string modelname)
22{
23 LOG_INFO << "Using version 10 Camera Model Definitions.";
24 ok = true;
25 nearclip = mcd.nearclip;
26 farclip = mcd.farclip;
27 pos = mcd.pos;
28 target = mcd.target;
29 tPos.init(mcd.transPos, f, global);
30 tTarget.init(mcd.transTarget, f, global);
31 rot.init(mcd.rot, f, global);
32 fov = 0.95f;
33}
34
35void ModelCamera::setup(size_t time)
36{
37 if (!ok) return;
38
39 glMatrixMode(GL_PROJECTION);
40 glLoadIdentity();
41 gluPerspective(fov * 34.5f, static_cast<GLfloat>(video.xRes) / static_cast<GLfloat>(video.yRes), nearclip, farclip * 5);
42
43 const glm::vec3 p = pos + tPos.getValue(0, time);
44 const glm::vec3 t = target + tTarget.getValue(0, time);
45
46 const glm::vec3 u(0, 1, 0);
47
48 glMatrixMode(GL_MODELVIEW);
49 glLoadIdentity();
50 gluLookAt(p.x, p.y, p.z, t.x, t.y, t.z, u.x, u.y, u.z);
51 //float roll = rot.getValue(0, time) / PI * 180.0f;
52 //glRotatef(roll, 0, 0, 1);
53}
#define LOG_INFO
Definition Logger.h:10
T getValue(ssize_t anim, size_t time)
Definition animated.h:178
void init(AnimationBlock &b, GameFile *f, std::vector< uint32 > &gs)
Definition animated.h:264
Abstract base class representing a file within the game data archive.
Definition GameFile.h:12
AnimationBlock rot
AnimationBlock transPos
AnimationBlock transTarget
glm::vec3 target
AnimationBlock rot
AnimationBlock transPos
AnimationBlock transTarget
bool ok
Whether this camera was successfully initialised.
Definition ModelCamera.h:18
void initv10(GameFile *f, ModelCameraDefV10 &mcd, std::vector< uint32 > &global, std::string modelname)
Initialise from a v10 camera definition block.
Animated< glm::vec3 > tTarget
Animated position and target tracks.
Definition ModelCamera.h:22
glm::vec3 pos
Definition ModelCamera.h:20
void setup(size_t time=0)
Apply the camera transform at the given time.
void init(GameFile *f, ModelCameraDef &mcd, std::vector< uint32 > &global, std::string modelname)
Initialise from an M2 camera definition block.
float farclip
Definition ModelCamera.h:21
float nearclip
Definition ModelCamera.h:21
Animated< glm::vec3 > tPos
Definition ModelCamera.h:22
float fov
Clipping planes and field of view.
Definition ModelCamera.h:21
Animated< float > rot
Animated roll track.
Definition ModelCamera.h:23
glm::vec3 target
Camera position and look-at target.
Definition ModelCamera.h:20
VideoSettings video
Definition video.cpp:38