diff options
Diffstat (limited to 'LevelEdge.h')
-rw-r--r-- | LevelEdge.h | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/LevelEdge.h b/LevelEdge.h deleted file mode 100644 index b2977f1..0000000 --- a/LevelEdge.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef LEVELEDGE_H_ -#define LEVELEDGE_H_ - -#include "LevelObject.h" -#include "EdgeProvider.h" -#include <math.h> - - -class LevelEdge : public LevelObject { - private: - EdgeProvider *provider; - size_t id; - - static const float width = 1; - - public: - LevelEdge(EdgeProvider *p, size_t i, LevelObject *parent) - : LevelObject(parent), provider(p), id(i) {} - - virtual bool hit(const Vertex &v, float scale) const { - const Edge &edge = **this; - const Vertex &v1 = *edge.getVertex1(), &v2 = *edge.getVertex2(); - - float width = this->width/scale; - - if(v.getX() < fminf(v1.getX(), v2.getX())-width) - return false; - - if(v.getX() > fmaxf(v1.getX(), v2.getX())+width) - return false; - - if(v.getY() < fminf(v1.getY(), v2.getY())-width) - return false; - - if(v.getY() > fmaxf(v1.getY(), v2.getY())+width) - return false; - - Vertex r = v2 - v1, p = v - v1; - r *= (r.getX()*p.getX() + r.getY()*p.getY())/v1.distanceSq(v2); - - return (r.distanceSq(p) <= width*width); - } - - virtual int getPriority() const {return 500;} - - virtual const char* getType() const { - return "LevelEdge"; - } - - virtual bool canMove() const {return true;} - - virtual void move(float x, float y) { - provider->moveEdge(id, x, y); - } - - virtual bool canRotate() const {return true;} - - virtual void rotate(Vertex m, float a) { - provider->rotateEdge(id, m, a); - } - - const EdgeProvider* getProvider() const { - return provider; - } - - size_t getId() const { - return id; - } - - const Edge* operator->() const {return provider->getEdge(id);} - const Edge& operator*() const {return *provider->getEdge(id);} -}; - -#endif /*LEVELEDGE_H_*/ |