#ifndef Var1_Dynamico_H
#define Var1_Dynamico_H
#include <Glasses/Extendio.h>
#include <Stones/GravData.h>
class Statico;
class Dynamico : public Extendio
{
friend class Tringula;
MAC_RNR_FRIENDS(Dynamico);
private:
void _init();
protected:
HTransF mLastTrans;
Opcode::AABB mLastAABB;
Float_t& mV;
Float_t& mW;
HPointF mVVec;
HPointF mWVec;
Float_t mSafety;
Float_t mExtraStep;
GravData mGrav;
UInt_t mOPCRCCache;
public:
Dynamico(const Text_t* n="Dynamico", const Text_t* t=0);
virtual void SetTringula(Tringula* tring);
virtual void TimeTick(Double_t t, Double_t dt) {}
virtual void update_last_data() { mLastTrans = mTrans; mLastAABB = mAABB; }
virtual void update_grav_safeties(Float_t vl, Float_t vt);
using Extendio::height_above_terrain;
Float_t height_above_terrain() { return height_above_terrain(mGrav.Dir()); }
static bool handle_collision(Dynamico * dyno,
Statico * stato,
Opcode::RayCollider & ray_collider,
Opcode::Ray & ray,
Opcode::Point & com_dyno,
CollisionSegments & segments);
static bool handle_collision(Dynamico * dyno0,
Dynamico * dyno1,
Opcode::Point & up_dir,
CollisionSegments & segments);
#include "Dynamico.h7"
ClassDef(Dynamico, 1);
};
#endif