view src/PlayerEyePoint.cpp @ 10:5727d511a13a

add src in Martial Project Xcode.
author tokumoritaichirou@nw0743.st.ie.u-ryukyu.ac.jp
date Wed, 03 Feb 2010 03:39:04 +0900
parents
children
line wrap: on
line source

/*
 *  PlayerEyePoint.cpp
 *  Martial
 *
 *  Created by ryoma on 10/01/28.
 *  Copyright 2010 琉球大学. All rights reserved.
 *
 */

#include "PlayerEyePoint.h"

PlayerEyePoint::PlayerEyePoint(MovableObject *owner):
	EyePoint(owner->getName()), owner(owner){
	position = osg::Vec3(-10,0,2);
	direction = osg::Vec3(0, 0, 0);
	target = NULL;
	relativeRotate = true;
}

void PlayerEyePoint::setRelativeRotate(bool rr) {
	relativeRotate = rr;
}

void PlayerEyePoint::setTarget(MovableObject* _target) {
	target = _target;
}

void PlayerEyePoint::setOwner(MovableObject* _owner) {
	owner = _owner;
}

void PlayerEyePoint::frame() {
	osg::Matrixd myCameraMatrix;
	osg::Matrixd rotation;
	osg::Matrixd cameraTrans;
	osg::Matrixd ownerTrans;

	cameraTrans.makeTranslate(position);
    ownerTrans.makeTranslate(owner->getPos());

	/* if relativeRotate is false, relativeRoate * target->getDir().z() always equals 0 */
	rotation.makeRotate(relativeRotate*owner->getDir().z()+direction.z(), osg::Vec3(0,0,1));

	myCameraMatrix = cameraTrans * rotation * ownerTrans;

	myCameraMatrix.makeLookAt(myCameraMatrix.getTrans(), owner->getPos(), osg::Vec3(0,0,1) * rotation);
	Tman->setByInverseMatrix(myCameraMatrix);
}