ELVE  1
ELVE Logic Visualization Explorer
/home/travis/build/stdgregwar/elve/Core/Point.h
00001 #ifndef MASS_H
00002 #define MASS_H
00003 
00004 #include <QVector2D>
00005 #include <QObject>
00006 #include <set>
00007 #include <Force.h>
00008 #include <Movable.h>
00009 #include <Constraint.h>
00010 #include <Node.h>
00011 
00012 namespace Elve {
00013 
00014 class System;
00015 
00016 class Point
00017 {
00018     friend class Movable;
00019 public:
00020     Point(qreal mass,const NodeID& id, System& sys);
00021     bool moved() const;
00022     const QVector2D& pos() const;
00023     const QVector2D& speed() const;
00024     const qreal& mass() const;
00025     void setPos(const QVector2D& pos);
00026     void setSpeed(const QVector2D& speed);
00027     void setMass(qreal mass);
00028     void clearMovables();
00029     void addMovable(Movable* m);
00030     void removeMovable(Movable* m);
00031     void addForce(Force* force);
00032     void addConstraint(Constraint* c);
00033     void clearContraints();
00034     void removePConstraints();
00035     void resetForce();
00036     void computeForce();
00037     void tick(float dt, bool update = true);
00038     void* containerData() const;
00039     void setContainerData(void* data) const;
00040     bool pinned() const;
00041     void pin();
00042     void unpin();
00043     void notify();
00044     const NodeID& boundID() const;
00045 private:
00046     System& mSys;
00047     std::set<Movable*>& movables() {return mMovables;}
00048     NodeID mID;
00049     QVector2D mPos;
00050     QVector2D mSpeed;
00051     QVector2D mForce;
00052     std::set<Force*> mForces;
00053     std::set<Movable*> mMovables;
00054     std::set<Constraint*> mConstraints;
00055     qreal mM;
00056     mutable void* mContainerData;
00057 };
00058 
00059 }
00060 
00061 #endif // MASS_H
 All Classes Functions