51 lines
900 B
C++
51 lines
900 B
C++
#ifndef _PROTO_GEOMETRY_HPP_
|
|
#define _PROTO_GEOMETRY_HPP_
|
|
#ifndef _PROTO_FIXEDPOINT_HPP_
|
|
#include <proto/fixed.hpp>
|
|
#endif
|
|
|
|
class Geometry
|
|
{
|
|
public:
|
|
enum {Magic=64,HeightFieldWidth=512,HeightFieldHeight=512,HeightFieldBitShift=9,TerrainScalex2=3,
|
|
MaxSteps=200};
|
|
Geometry(void);
|
|
virtual ~Geometry();
|
|
int viewPlaneDistance(void)const;
|
|
int deltaSlope(void)const;
|
|
void screenWidth(int screenWidth);
|
|
private:
|
|
int mDeltaSlope;
|
|
int mViewPlaneDistance;
|
|
};
|
|
|
|
inline
|
|
Geometry::Geometry(void)
|
|
: mDeltaSlope(0), mViewPlaneDistance(0)
|
|
{
|
|
}
|
|
|
|
inline
|
|
Geometry::~Geometry()
|
|
{
|
|
}
|
|
|
|
inline
|
|
int Geometry::viewPlaneDistance(void)const
|
|
{
|
|
return mViewPlaneDistance;
|
|
}
|
|
|
|
inline
|
|
int Geometry::deltaSlope(void)const
|
|
{
|
|
return mDeltaSlope;
|
|
}
|
|
|
|
inline
|
|
void Geometry::screenWidth(int screenWidth)
|
|
{
|
|
mViewPlaneDistance=screenWidth/Magic;
|
|
mDeltaSlope=(1.00/(double)mViewPlaneDistance)*FixedPoint::FPMul;
|
|
}
|
|
#endif |