/*
	Ninja Library
	
	COPYRIGHT (C) SEGA ENTERPRISES,LTD.

*/
#ifndef	_NJ_CAMERA_H_
#define	_NJ_CAMERA_H_

/* Camera Motion type */
#define NJD_CTYPE_VECTOR		1		/* camera vector */
#define NJD_CTYPE_TARGET		2		/* camera target position */

/*--------------------------------------*/
/*      Camera Structure                */
/*--------------------------------------*/
typedef struct {
	Float px, py, pz;
	Float vx, vy, vz;
	Sangle roll;
	Sangle ang;
	Uint32 type;
} NJS_CAMERA;


/************************/
/*  CameraDataFunctions */
/************************/
void	njInitCamera( NJS_CAMERA *camera );
void	njSetCamera( const NJS_CAMERA *camera );

/************************/
/*	 CameraEx			*/
/************************/
void	njRotateXCameraEx( Angle ang );
void	njRotateYCameraEx( Angle ang );
void	njRotateZCameraEx( Angle ang );
void	njRotateCameraEx( Angle *ang, Sint32 lv );

void	njTranslateCameraEx( Float x, Float y, Float z );

void	njTranslateAbsoluteCameraEx( Float x, Float y, Float z );

void	njGetCameraExPosition( NJS_POINT3 *pos );
void	njSetCameraExPosition( const NJS_POINT3 *pos );

void	njCameraExLookAt( const NJS_POINT3 *eye, const NJS_POINT3 *center, const NJS_VECTOR *up );

/*	Compatible functions for old camera functions	*/
void	njInitCameraEx( void );
void	njPitchCameraInterestEx( Angle ang );
void	njYawCameraInterestEx( Angle ang );
void	njRollCameraInterestEx( Angle ang );
void	njForwardCameraPositionEx( Float x );
void	njTranslateCameraPositionEx( Float x, Float y, Float z );
void	njRotateCameraPositionXEx( Angle ang );
void	njRotateCameraPositionYEx( Angle ang );
void	njRotateCameraPositionZEx( Angle ang );
void	njPointCameraInterestEx( Float x, Float y, Float z );


#endif	/*_NJ_CAMERA_H_*/
