diff options
| author | Comment <tim@gray.(none)> | 2013-03-11 17:22:48 +0000 |
|---|---|---|
| committer | Comment <tim@gray.(none)> | 2013-03-11 17:22:48 +0000 |
| commit | b8d793ccd8c98dfb5edb7808f6e67cb913d7967a (patch) | |
| tree | 962389c9e506565b65352fb775854feb680a7357 /rotord/rotor.h | |
| parent | e0b956174a509b2fb3698383017a264e92665347 (diff) | |
signal graph rendering
Diffstat (limited to 'rotord/rotor.h')
| -rwxr-xr-x | rotord/rotor.h | 30 |
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; |
