55 lines
1 KiB
C++
55 lines
1 KiB
C++
// -*- C++ -*-
|
|
|
|
#ifndef MBOSTOCK_FAN_H
|
|
#define MBOSTOCK_FAN_H
|
|
|
|
#include "model.h"
|
|
#include "physics/shape.h"
|
|
#include "room_object.h"
|
|
|
|
namespace mbostock {
|
|
|
|
class Fan;
|
|
class StaticFanModel;
|
|
|
|
class FanModel : public Model {
|
|
public:
|
|
FanModel(const Fan& fan);
|
|
virtual ~FanModel();
|
|
|
|
virtual void initialize();
|
|
virtual void display();
|
|
|
|
void setMaterial(const Material& m);
|
|
|
|
private:
|
|
float* orientation();
|
|
|
|
const Fan& fan_;
|
|
StaticFanModel* staticModel_;
|
|
Model* compiledModel_;
|
|
float orientation_[16];
|
|
};
|
|
|
|
class Fan : public DynamicRoomObject {
|
|
public:
|
|
Fan(const Vector& x, const Vector& v, float r, float s);
|
|
|
|
virtual Model& model();
|
|
virtual const Shape& shape() const;
|
|
virtual void step(const ParticleSimulator& s);
|
|
virtual void reset();
|
|
|
|
inline void setMaterial(const Material& m) { model_.setMaterial(m); }
|
|
|
|
private:
|
|
const Cylinder cylinder_;
|
|
const float s_;
|
|
float a_;
|
|
FanModel model_;
|
|
|
|
friend class FanModel;
|
|
};
|
|
}
|
|
|
|
#endif
|