Subversion Repositories DIN Is Noise

Rev

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
}