summaryrefslogtreecommitdiff
path: root/rotord/rotor.h
diff options
context:
space:
mode:
Diffstat (limited to 'rotord/rotor.h')
-rwxr-xr-xrotord/rotor.h30
1 files changed, 25 insertions, 5 deletions
diff --git a/rotord/rotor.h b/rotord/rotor.h
index 96db4f7..c4f5c38 100755
--- a/rotord/rotor.h
+++ b/rotord/rotor.h
@@ -140,7 +140,7 @@ namespace Rotor {
};
class Signal_node: public Node{
public:
- virtual float get_output(const float &time) {};
+ virtual float get_output(const float &time) { return 0.0f; };
/*{ //default is to pass through first input, if disconnected returns 0
cerr << "getting output for " << type << "," << ID << endl;
@@ -179,6 +179,23 @@ namespace Rotor {
return t;
}
};
+ class Signal_divide: public Signal_node {
+ //divides incoming signal by a fixed amount
+ public:
+ Signal_divide(){};
+ Signal_divide(map<string,string> &settings) {
+ base_settings(settings);
+ divide_amount=ofToFloat(check(settings,"amount"));
+ };
+ Signal_divide* clone(map<string,string> &_settings) { return new Signal_divide(_settings);};
+ float get_output(const float &time) {
+ if (inputs[0]->connection) {
+ return (((Signal_node*)inputs[0]->connection)->get_output(time))/divide_amount;
+ }
+ return 0.0f;
+ }
+ float divide_amount;
+ };
class Is_new_integer: public Signal_node {
//does this require knowing what the framerate is?
//for now, assume 25
@@ -191,10 +208,13 @@ namespace Rotor {
Is_new_integer* clone(map<string,string> &_settings) { return new Is_new_integer(_settings);};
float get_output(const float &time) {
if (inputs[0]->connection) {
- //cerr << "== checking: " << ((int)(((Signal_node*)(inputs[0]->connection))->get_output(time))) << ">" <<((int)(((Signal_node*)(inputs[0]->connection))->get_output(time-.04))) << " ?" << endl;
- if (((int)(((Signal_node*)(inputs[0]->connection))->get_output(time)))>((int)(((Signal_node*)(inputs[0]->connection)))->get_output(time-.04))) return 1.0f;
+ float s1=(((Signal_node*)(inputs[0]->connection))->get_output(time));
+ float s2=(((Signal_node*)(inputs[0]->connection))->get_output(time-.04));
+ if (((int)s1)>((int)s2)) {
+ return 1.0f;
+ }
}
- else return 0.0f;
+ return 0.0f;
}
};
class Signal_output: public Signal_node {
@@ -225,7 +245,7 @@ namespace Rotor {
return type_map[settings["type"]]->clone(settings);
}
}
- else return NULL;
+ return NULL;
};
private:
unordered_map<string,Node*> type_map;