Rev 2097 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
964 | jag | 1 | /* |
2 | * mocap.cc |
||
2302 | jag | 3 | * DIN Is Noise is copyright (c) 2006-2025 Jagannathan Sampath |
1713 | jag | 4 | * DIN Is Noise is released under GNU Public License 2.0 |
1479 | jag | 5 | * For more information, please visit https://dinisnoise.org/ |
964 | jag | 6 | */ |
7 | |||
8 | #include "mocap.h" |
||
9 | #include "basic_editor.h" |
||
10 | |||
11 | #include <iostream> |
||
12 | using namespace std; |
||
13 | |||
14 | mocap::mocap () { |
||
15 | clear (); |
||
16 | } |
||
17 | |||
18 | void mocap::clear () { |
||
19 | |||
20 | x.clear (); |
||
21 | y.clear (); |
||
22 | |||
23 | x.reserve (1); |
||
24 | y.reserve (1); |
||
25 | |||
26 | cur = 0; |
||
27 | |||
28 | state = empty; |
||
29 | |||
30 | } |
||
31 | |||
1134 | jag | 32 | int mocap::get (float& gx, float& gy, int dir) { |
964 | jag | 33 | |
1135 | jag | 34 | if (cur >= x.size ()) cur = 0; |
35 | else if (cur < 0) cur = x.size () - 1; |
||
964 | jag | 36 | |
37 | gx = x[cur]; |
||
1134 | jag | 38 | gy = y[cur]; |
39 | |||
40 | cur += dir; |
||
964 | jag | 41 | |
1132 | jag | 42 | return 1; |
964 | jag | 43 | |
44 | } |
||
45 | |||
1132 | jag | 46 | int mocap::add (float wx, float wy) { |
964 | jag | 47 | x.push_back (wx); |
48 | y.push_back (wy); |
||
49 | state = capturing; |
||
1132 | jag | 50 | return 1; |
964 | jag | 51 | } |
52 | |||
53 | void mocap::finish (basic_editor* b) { |
||
54 | |||
55 | for (int i = 0, j = x.size (); i < j; ++i) { |
||
56 | float wx = x[i], wy = y[i]; |
||
57 | b->win2obj (wx, wy, x[i], y[i]); // win to obj space |
||
58 | } |
||
59 | |||
60 | cur = 0; |
||
61 | state = finished; |
||
62 | |||
63 | } |
||
64 | |||
65 | int mocap::operator() () { |
||
66 | return (state == finished); |
||
67 | } |