parser sortof-works
[antikythera] / src / machine.h
index f222cd7..097157d 100644 (file)
@@ -2,6 +2,7 @@
 #define MACHINE_H_
 
 #include <vector>
+#include <map>
 #include "gear.h"
 
 struct Motor {
@@ -12,7 +13,9 @@ struct Motor {
 class Machine {
 private:
        std::vector<Gear*> gears;
+       std::map<Gear*, int> gearidx;
        bool **meshing;
+       bool meshing_valid;
        bool *visited;  /* used for update_gear */
 
        std::vector<Motor> motors;
@@ -26,10 +29,15 @@ public:
        void add_gear(Gear *g); /* takes ownership */
        void add_motor(int gearidx, float speed_hz);
 
+       int get_gear_index(Gear *g) const;
+
+       void invalidate_meshing();
        void calc_meshing();
 
        void update(float dt);
        void draw() const;
+
+       Gear *intersect_gear(const Ray &ray, HitPoint *hitp = 0) const;
 };
 
 #endif // MACHINE_H_