Show DopeCamara.cpp syntax highlighted
#include "DopeCamara.h"
#include "DopeEscena.h"
#include "OgreLogManager.h"
namespace Dope {
//-----------------------------------------------------------------------
Camara::Camara(const String& name): Entidad(name)
{
setUp(name);
}
//-----------------------------------------------------------------------
void Camara::setUp(const String& name)
{
// Create visual presence
SceneManager* sm = Escena::getSingleton().getSceneManager();
mSceneNode = sm->getRootSceneNode()->createChildSceneNode(name);
mCamera = sm->createCamera(name);
mSceneNode->attachObject(mCamera);
// Add reverse reference (to self!)
mCamera->setUserObject(this);
// No mass body (considered static)
// Create collision proxy, at near dist
// SpaceID is irrelevant, we're doing our own spacial partitioning
dSphere* odeSphere = new dSphere(0, mCamera->getNearClipDistance());
mCollisionProxies.push_back(odeSphere);
updateCollisionProxies();
}
//-----------------------------------------------------------------------
void Camara::_notifyCollided(SceneQuery::WorldFragment* wf, const CollisionInfo& info)
{
this->translateWorldSpace(info.normal * info.penetrationDepth);
}
//-----------------------------------------------------------------------
void Camara::setOrientation(const Quaternion& orientation)
{
// Set on camera
mCamera->setOrientation(orientation);
}
//-----------------------------------------------------------------------
const Quaternion& Camara::getOrientation(void)
{
return mCamera->getOrientation();
}
//-----------------------------------------------------------------------
void Camara::roll(const Radian& angle)
{
mCamera->roll(angle);
}
//-----------------------------------------------------------------------
void Camara::pitch(const Radian& angle)
{
mCamera->pitch(angle);
}
//-----------------------------------------------------------------------
void Camara::yaw(const Radian& angle)
{
mCamera->yaw(angle);
}
//-----------------------------------------------------------------------
void Camara::rotate(const Vector3& axis, const Radian& angle)
{
mCamera->rotate(axis, angle);
}
//-----------------------------------------------------------------------
void Camara::rotate(const Quaternion& q)
{
mCamera->rotate(q);
}
//-----------------------------------------------------------------------
void Camara::translate(const Vector3& d)
{
// Adjust position by rotation
Vector3 newTrans = mCamera->getOrientation() * d;
translateWorldSpace(newTrans);
}
//-----------------------------------------------------------------------
void Camara::setProjectionType(ProjectionType pt)
{
mCamera->setProjectionType(pt);
}
//-----------------------------------------------------------------------
ProjectionType Camara::getProjectionType(void) const
{
return mCamera->getProjectionType();
}
//-----------------------------------------------------------------------
void Camara::setPolygonMode(PolygonMode sd)
{
mCamera->setPolygonMode(sd);
}
//-----------------------------------------------------------------------
PolygonMode Camara::getPolygonMode(void) const
{
return mCamera->getPolygonMode();
}
//-----------------------------------------------------------------------
void Camara::setDirection(Real x, Real y, Real z)
{
mCamera->setDirection(x, y, z);
}
//-----------------------------------------------------------------------
void Camara::setDirection(const Vector3& vec)
{
mCamera->setDirection(vec);
}
//-----------------------------------------------------------------------
Vector3 Camara::getDirection(void) const
{
return mCamera->getDirection();
}
//-----------------------------------------------------------------------
void Camara::lookAt( const Vector3& targetPoint )
{
mCamera->lookAt(targetPoint);
}
//-----------------------------------------------------------------------
void Camara::lookAt(Real x, Real y, Real z)
{
mCamera->lookAt(x, y, z);
}
//-----------------------------------------------------------------------
void Camara::setFixedYawAxis( bool useFixed, const Vector3& fixedAxis)
{
mCamera->setFixedYawAxis(useFixed, fixedAxis);
}
//-----------------------------------------------------------------------
void Camara::setFOVy(const Radian& fovy)
{
mCamera->setFOVy(fovy);
nearDistChanged();
}
//-----------------------------------------------------------------------
const Radian& Camara::getFOVy(void) const
{
return mCamera->getFOVy();
}
//-----------------------------------------------------------------------
void Camara::setNearClipDistance(Real nearDist)
{
mCamera->setNearClipDistance(nearDist);
nearDistChanged();
}
//-----------------------------------------------------------------------
Real Camara::getNearClipDistance(void) const
{
return mCamera->getNearClipDistance();
}
//-----------------------------------------------------------------------
void Camara::setFarClipDistance(Real farDist)
{
mCamera->setFarClipDistance(farDist);
}
//-----------------------------------------------------------------------
Real Camara::getFarClipDistance(void) const
{
return mCamera->getFarClipDistance();
}
//-----------------------------------------------------------------------
void Camara::setAspectRatio(Real ratio)
{
mCamera->setAspectRatio(ratio);
}
//-----------------------------------------------------------------------
Real Camara::getAspectRatio(void) const
{
return mCamera->getAspectRatio();
}
//-----------------------------------------------------------------------
const Plane& Camara::getFrustumPlane( FrustumPlane plane )
{
return mCamera->getFrustumPlane(plane);
}
//-----------------------------------------------------------------------
bool Camara::isVisible(const AxisAlignedBox& bound, FrustumPlane* culledBy)
{
return mCamera->isVisible(bound, culledBy);
}
//-----------------------------------------------------------------------
bool Camara::isVisible(const Sphere& bound, FrustumPlane* culledBy)
{
return mCamera->isVisible(bound, culledBy);
}
//-----------------------------------------------------------------------
bool Camara::isVisible(const Vector3& vert, FrustumPlane* culledBy)
{
return mCamera->isVisible(vert, culledBy);
}
//-----------------------------------------------------------------------
void Camara::nearDistChanged(void)
{
// Alter the size of the collision proxy to compensate
CollisionProxyList::iterator i = mCollisionProxies.begin();
dSphere* sph = static_cast<dSphere*>(*i);
sph->setRadius(getNearClipDistance());
}
}
See more files for this project here