/***************************************************************************
vim:tabstop=4
glsolid.h - description
-------------------
begin : Wed Jul 4 2001
copyright : (C) 2001 by Francois Biot
email : fbiot@mail.dotcom.fr
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef GLSOLID_H
#define GLSOLID_H
#include
/**
* A glsolid is a class that must be entirely closed if the
* collision dection mechanism has to be used.
*/
class glsolid : public glsurface
{
public:
glsolid(const CString& sName) : glsurface(sName) {};
virtual ~glsolid();
// from glsurface
virtual void Translate (const vect&);
virtual void Render () const;
virtual glsurface* Duplicate ()const=0;
virtual planesurf* Collision (
const point &poStart,
const vect &vPath,
point* pptInter,
glsolid* &pSolid);
virtual void SetColor (const couleur&);
virtual point GPoint () const;
// new methods
virtual bool UpdatePosition (float dt,zone* p=0);
virtual bool UpdatePosition (float dt,zone &p)
{ return UpdatePosition(dt,&p); };
void Clear ();
// Check if a point is inside the glsolid
// The check is made inside the border
//bool IsInsideFast(point &p);
virtual bool IsInside (const point &p) const=0;
const vitesse& GetSpeed () const { return mv; };
const acceleration& GetAcceleration () const { return ma; };
void SetSpeed (const vitesse &v) { mv=v; };
void SetAcceleration (const acceleration &a) { ma=a; };
void AddBorder (glsurface *p) { mlborder.push_back(p); };
void AddSurface (glsurface *p) { mlist.push_back(p); };
protected:
vitesse mv;
acceleration ma;
CList mlborder;
CList mlist;
float mdt;
// This method is used to duplicate both mlborder & mlist into a glsolid
void FillSolid(glsolid*) const;
private:
glsolid& operator=(const glsolid&);
glsolid(const glsolid&);
};
#endif
| Generated by: saturn on FrancoisLinux on Sun Feb 3 20:01:44 2002, using kdoc 2.0a53. |