91 lines
2.8 KiB
C++
91 lines
2.8 KiB
C++
#ifndef _ENGINE_VIEWSYSTEM_HPP_
|
|
#define _ENGINE_VIEWSYSTEM_HPP_
|
|
#ifndef _ENGINE_PUREVIEWSYSTEM_HPP_
|
|
#include <engine/purevsys.hpp>
|
|
#endif
|
|
#ifndef _ENGINE_TRIANGLE3D_HPP_
|
|
#include <engine/angle3d.hpp>
|
|
#endif
|
|
#ifndef _ENGINE_TRIANGLE_HPP_
|
|
#include <engine/angle.hpp>
|
|
#endif
|
|
|
|
class ViewSystem : public PureViewSystem
|
|
{
|
|
public:
|
|
ViewSystem(void);
|
|
virtual ~ViewSystem();
|
|
void translatePoint(const Vector3D &vector3D,Vector2D &vector2D,PureViewSystem::MapMode mapMode=CartesianSystem);
|
|
void translatePoint(Polygon3D &polygon,PureViewSystem::MapMode mapMode=CartesianSystem);
|
|
void translatePoint(Point &dimensionPoint,Point &screenPoint,const Point3D &initialPoint,PureViewSystem::MapMode mapMode=CartesianSystem);
|
|
void mapCoordinates(Point3D &firstPoint3D,Point &firstPoint,bool useCartesian=true);
|
|
void mapCoordinates(Triangle3D &triangle3D,Triangle &triangle);
|
|
WORD isInView(const Point &somePoint)const;
|
|
WORD isInView(const Vector3D &vector3D);
|
|
protected:
|
|
virtual WORD viewPortWidth(void)const=0;
|
|
virtual WORD viewPortHeight(void)const=0;
|
|
private:
|
|
};
|
|
|
|
inline
|
|
ViewSystem::ViewSystem(void)
|
|
{
|
|
}
|
|
|
|
inline
|
|
ViewSystem::~ViewSystem()
|
|
{
|
|
}
|
|
|
|
inline
|
|
WORD ViewSystem::isInView(const Point &somePoint)const
|
|
{
|
|
if(somePoint.x()>viewPortWidth()||somePoint.x()<0)return FALSE;
|
|
if(somePoint.y()>viewPortHeight()||somePoint.y()<0)return FALSE;
|
|
return TRUE;
|
|
}
|
|
|
|
inline
|
|
void ViewSystem::translatePoint(const Vector3D &vector3D,Vector2D &vector2D,PureViewSystem::MapMode mapMode)
|
|
{
|
|
PureViewSystem::viewPortWidth(viewPortWidth());
|
|
PureViewSystem::viewPortHeight(viewPortHeight());
|
|
PureViewSystem::translatePoint(vector3D,vector2D,mapMode);
|
|
}
|
|
|
|
inline
|
|
void ViewSystem::translatePoint(Polygon3D &polygon,PureViewSystem::MapMode mapMode)
|
|
{
|
|
PureViewSystem::viewPortWidth(viewPortWidth());
|
|
PureViewSystem::viewPortHeight(viewPortHeight());
|
|
PureViewSystem::translatePoint(polygon,mapMode);
|
|
}
|
|
|
|
inline
|
|
void ViewSystem::translatePoint(Point &dimensionPoint,Point &screenPoint,const Point3D &initialPoint,PureViewSystem::MapMode mapMode)
|
|
{
|
|
PureViewSystem::viewPortWidth(viewPortWidth());
|
|
PureViewSystem::viewPortHeight(viewPortHeight());
|
|
PureViewSystem::translatePoint(dimensionPoint,screenPoint,initialPoint,mapMode);
|
|
}
|
|
|
|
inline
|
|
void ViewSystem::mapCoordinates(Point3D &firstPoint3D,Point &firstPoint,bool useCartesian)
|
|
{
|
|
PureViewSystem::viewPortWidth(viewPortWidth());
|
|
PureViewSystem::viewPortHeight(viewPortHeight());
|
|
PureViewSystem::mapCoordinates(firstPoint3D,firstPoint,useCartesian);
|
|
}
|
|
|
|
inline
|
|
void ViewSystem::mapCoordinates(Triangle3D &triangle3D,Triangle &triangle)
|
|
{
|
|
PureViewSystem::viewPortWidth(viewPortWidth());
|
|
PureViewSystem::viewPortHeight(viewPortHeight());
|
|
PureViewSystem::mapCoordinates(triangle3D[0],triangle[0]);
|
|
PureViewSystem::mapCoordinates(triangle3D[1],triangle[1]);
|
|
PureViewSystem::mapCoordinates(triangle3D[2],triangle[2]);
|
|
}
|
|
#endif
|