#ifndef COLLISION_BOX_H
#define COLLISION_BOX_H

// -----------------------------------------------------------------------------
//
// FILE:	CollisionBox.h
// ----		
//			Header du fichier de stockage des paramètres des boites de collision
//
// Author:	Olivier Lamotte
// ------	Copyright(c) Cryo-Networks
//
// Histo:	- Version 0
// -----		Début: 02 / 02 / 2001
//
// -----------------------------------------------------------------------------
//
// Methods:	
//	- CollisionBox
//	- ~CollisionBox
//
// -----------------------------------------------------------------------------
//
#include "Max.h"

/* MS : $ Include to use INode */
#include "IGame.h"
#include "IGameControl.h"
#include "IGameError.h"
#include "IGameModifier.h"
#include "IGameObject.h"


class CollisionBox
{

public:

	/**
	 * Constructeur / Destructeur
	 */
	CollisionBox();
	~CollisionBox();

TSTR name;


	/**
	 * Fixe le numéro de la boite
	 */
	virtual void SetNum(const int num);
	/**
	 * Retourne le numéro de la boite
	 */
	virtual int GetNum();

	/**
	 * Fixe le rayon maximum de la boule inscrite dans la boite
	 */
	virtual void SetRayonMax(const int rayonMax);
	/**
	 * Retourne le rayon maximum de la boule inscrite dans la boite
	 */
	virtual int GetRayonMax();

	/**
	 * Fixe les coordonnées du centre de la boite
	 */
	virtual void SetBoxCenter(const Point3 boxCenter);
	/**
	 * Retourne le centre de la boite
	 */
	virtual Point3 GetBoxCenter();

	/**
	 * Remplit la liste des vertices
	 */
	virtual void SetBoxVert(const int i, const Point3 pt);
	/**
	 * Retourne les vertices de la boite
	 */
	virtual Point3 GetBoxVert(const int i);

	/**
	 * Fixe l'équation de la face dont l'index est passé en paramètre
	 * Return: true si ok
	 */
	virtual BOOL SetFaceEq(const int idx,const float a, const float b, const float c, const float d);
	/**
	 * Retourne l'équation de la face dont l'index est passé en paramètre
	 */
	virtual BOOL GetFaceEq(const int idx, float *a, float *b, float *c, float *d);
	virtual float GetFaceEqA(const int idx);
	virtual float GetFaceEqB(const int idx);
	virtual float GetFaceEqC(const int idx);
	virtual float GetFaceEqD(const int idx);

private:

	// Status de la boite
	int status;

	// Numéro de la boite
	int num;

	// Centre de la boite
	Point3 boxCenter;

	// Rayon maximum
	int rayonMax;

	// Equation des faces (ax+by+cz+d=0)
	float a[6];
	float b[6];
	float c[6];
	float d[6];

	// Liste des vertices
	Point3 vertList[8];
};

#endif