Files
Work/engine/VIEWSYS.HPP
2024-08-07 09:16:27 -04:00

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