-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLiquidFunCHOP.h
64 lines (47 loc) · 2.25 KB
/
LiquidFunCHOP.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <memory>
#include <vector>
#include "CHOP_CPlusPlusBase.h"
#include "Box2D/Box2D.h"
#include "SceneBase.h"
#include "Testbed/Framework/ParticleEmitter.h"
using namespace std;
/*
This example file implements a class that does 2 different things depending on
if a CHOP is connected to the CPlusPlus CHOPs input or not.
The example is timesliced, which is the more complex way of working.
If an input is connected the node will output the same number of channels as the
input and divide the first 'N' samples in the input channel by 2. 'N' being the current
timeslice size. This is noteworthy because if the input isn't changing then the output
will look wierd since depending on the timeslice size some number of the first samples
of the input will get used.
If no input is connected then the node will output a smooth sine wave at 120hz.
*/
// To get more help about these functions, look at CHOP_CPlusPlusBase.h
class LiquidFunCHOP : public CHOP_CPlusPlusBase {
public:
LiquidFunCHOP(const OP_NodeInfo* info);
virtual ~LiquidFunCHOP();
virtual void getGeneralInfo(CHOP_GeneralInfo*, const OP_Inputs*, void* ) override;
virtual bool getOutputInfo(CHOP_OutputInfo*, const OP_Inputs*, void*) override;
virtual void getChannelName(int32_t index, OP_String *name, const OP_Inputs*, void* reserved) override;
virtual void execute(CHOP_Output*, const OP_Inputs*, void* reserved) override;
virtual int32_t getNumInfoCHOPChans(void* reserved1) override;
virtual bool getInfoDATSize(OP_InfoDATSize* infoSize, void* resereved1) override;
virtual void getInfoDATEntries(int32_t index, int32_t nEntries, OP_InfoDATEntries* entries, void* reserved1) override;
virtual void setupParameters(OP_ParameterManager* manager, void *reserved1) override;
virtual void pulsePressed(const char* name, void* reserved1) override;
private:
// LiquidFun
b2World* _world;
b2ParticleSystem* _particleSystem;
b2Body* _groundBody;
bool _initialized = false;
void init(const OP_Inputs* inputs);
void restart();
vector<shared_ptr<SceneBase>> _scenes;
int _sceneIndex = -1;
// We don't need to store this pointer, but we do for the example.
// The OP_NodeInfo class store information about the node that's using
// this instance of the class (like its name).
const OP_NodeInfo* myNodeInfo;
};