samples/guiAndGfx: eC port of JFD's Mekano
[sdk] / samples / guiAndGfx / mekano / mekanoobjectpolygonal.ec
1 import "mekanoobject"
2 import "mekanopolygon"
3
4 class MekanoObjectPolygonal : MekanoObject
5 {
6 private:
7    List<MekanoPolygon> m_Polygons { };
8
9 public:
10    property List<MekanoPolygon> polygons { get { return m_Polygons; } }
11
12    void addPolygon(MekanoPolygon polygon)
13    {
14       m_Polygons.Add(polygon);
15    }
16
17    ~MekanoObjectPolygonal()
18    {
19       m_Polygons.Free();
20    }
21
22    void computePoints()
23    {
24       for(poly : m_Polygons)
25       {
26          for(p : poly.points)
27          {
28             p.lastLocalPosition = p.localPosition;
29             p.computeLocalPosition();
30          }
31       }
32    }
33
34    void draw(MekanoDisplay display)
35    {
36       MekanoObject::draw(display);
37       for(p : m_Polygons)
38          display.drawPolygon(m_Position, p);
39    }
40
41    bool isInside(Vector2D v)
42    {
43       Vector2D localposition;
44       float radius = boundingRadius;
45       localposition.subtract(v, position);
46       if(radius)
47          if(localposition.length > radius)
48             return false;
49
50       for(p : m_Polygons; p.isInside(localposition))
51          return true;
52       return false;
53    }
54 }