summaryrefslogtreecommitdiff
path: root/tools/camera/viewer.cpp
blob: b9732d3cfde9f74e2365cacfdfbd0fcb332ce714 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <rw.h>
#include <skeleton.h>

rw::Camera*
ViewerCreate(rw::World *world)
{
	rw::Camera *camera = sk::CameraCreate(sk::globals.width, sk::globals.height, 1);
	assert(camera);
	camera->setNearPlane(0.1f);
	camera->setFarPlane(500.0f);
	world->addCamera(camera);
	return camera;
}

void
ViewerDestroy(rw::Camera *camera, rw::World *world)
{
	if(camera && world){
		world->removeCamera(camera);
		sk::CameraDestroy(camera);
	}
}

void
ViewerMove(rw::Camera *camera, rw::V3d *offset)
{
	sk::CameraMove(camera, offset);
}

void
ViewerRotate(rw::Camera *camera, float deltaX, float deltaY)
{
	sk::CameraTilt(camera, nil, deltaY);
	sk::CameraPan(camera, nil, deltaX);
}

void
ViewerTranslate(rw::Camera *camera, float deltaX, float deltaY)
{
	rw::V3d offset;
	offset.x = deltaX;
	offset.y = deltaY;
	offset.z = 0.0f;
	sk::CameraMove(camera, &offset);
}

void
ViewerSetPosition(rw::Camera *camera, rw::V3d *position)
{
	camera->getFrame()->translate(position, rw::COMBINEREPLACE);
}