-
Notifications
You must be signed in to change notification settings - Fork 0
Code examples
joreg edited this page May 27, 2018
·
15 revisions
using RCP;
var Rabbit = new RCPServer();
Rabbit.AddTransporter(new WebSocketTransporter(9000));
// create a number parameter
var param = Rabbit.CreateNumberParameter<float>("My FLoat");
//param now is of type NumberParameter<float> in group "Root"
param.Value = 0.5f;
param.Minimum = -1.0f;
param.Maximum = 1.0f;
// listen for value updates on the parameter
param.ValueUpdated = (p) => Log(p.Value);
var mySubGroup = Rabbit.CreateGroup("Group 1");
// move param from root-group to mySubGroup-group
Rabbit.addParameter(param, mySubGroup);
// create a parameter and add it to a group in one go
var param1 = Rabbit.CreateNumberParameter<float>("My Float 2", mySubGroup);
// move param1 to root group
Rabbit.addParameter(param1);
// send all changes to all clients
Rabbit.Update();
//update a parameter value
param.Value = 0.2f;
//update minimum
param.Minimum = 0f;
//update label
param.Label = "My better Float";
// deal with multilanguage label
param.setLanguageLabel("deu", "Ein Szper Float");
param.setLanguageLabel("deu", "Ein Super Float");
param.setLanguageLabel("fra", "Une float superbe");
param.removeLanguageLabel("fra");
// deal with multilanguage Description
param.setLanguageDescription("deu", "Wert zum Verändern der Geschwindigkeit");
param.removeLanguageDescription("deu");
// sends all changes to all clients
Rabbit.Update();
//create a range parameter
var range = Rabbit.CreateRangeParameter<int>("My Range");
range.Minimum = -10;
range.Maximum = 10;
range.Value = new Range(4, 8);
//create a vector parameter
var v2 = Rabbit.CreateNumberParameter<Vector2f>("My float V2");
v2.Minimum = new Vector2f(-4,-5);
//create an array of float
var floatArray = Rabbit.CreateNumberArrayParameter<float[]>("Float Array", 3);
floatArray.Minimum = 3f;
floatArray.Value = new float[3]{5f, 8f, 9f};
floatArray.Structure = new int[1]{5};
floatArray.Value = new float[5]{5f, 8f, 9f, 7f, 4f};
var float2dArray = Rabbit.CreateNumberArrayParameter<float[][]>("Float 2d Array", 2, 2);
float2dArray.Minimum = 3f;
float2dArray.Value = new float[2][2]{{5f, 8f}, {9f, 5f}};
// remove parameter from group
Rabbit.RemoveParameter(param1);
// send all changes to all clients
Rabbit.Update();
// remove group from rabbit (root-group)
// this also removes all children from client
Rabbit.RemoveParameter(mySubGroup);
Rabbit.Update();
// cleanup
Rabbit.Dispose();
using RCP;
var Carrot = new RCPClient(new WebSocketTransporter());
//add ui element
Carrot.ParameterAdded = (p) =>
{
//depending on incoming parameter create respective ui element
//UI-object may hold the parameter internally. parameter-(Value)Update events would be handled inside UI
var uip = new UI(p); // or similar
UIParams.Add(p.Id, uip); // map for demonstration purpose only, not needed if updates are handled inside UI
//listen for any parameter changes (may be done inside UI)
p.Updated = (p) =>
{
var uip = UIParams[p.Id];
uip.Label = p.Label;
//...
};
//listen for any value changes (may be done inside UI)
p.ValueUpdated = (p) =>
{
var uip = UIParams[p.Id];
switch(p.Datatype)
{
case Datatype.Float32: uip.Value = (float)p.Value; break;
//...
}
};
};
Carrot.ParameterRemoved = (p) =>
{
//remove UI matching p
var uip = UIParams.Remove(p.Id);
uip.Dispose();
};
Carrot.StatusChanged = (status, message) =>
{
// e.g.:
switch(status) {
case NO_TRANSPORTER: /*show something*/ break;
case NOT_CONNECTED: /*show something*/ break;
case CONNECTED: Carrot.Initialize(); break;
case VERSION_MISSMATCH: MessageBox.Show(message); break;
case OK: /*nop*/ break;
}
};
// connect to RabbitServer
try {
Carrot.Connect("192.168.0.1", 9000);
} catch (Exception e) {
// handle exceptions
}
// e.g. update a parameter (usually done via UI-Object)
UIParams[0].Parameter().Value = 1234;
Carrot.Update();
// cleanup
Carrot.Dispose();