/// <summary> /// Sets initial values. /// </summary> public void Init() { capiPaused = new SimCapiBoolean(Sim.Settings.Paused); capiPaused.expose("Speed.Pause", false, false); capiPaused.setChangeDelegate( delegate(Boolean value, ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Sim.Settings.Paused = value; } } ); capiSpeedTime = new SimCapiNumber((float)Sim.Settings.Speed); capiSpeedTime.expose("Speed.Time", false, false); capiSpeedTime.setChangeDelegate( delegate(float value, ChangedBy changedBy) { // Debug.Log("Speed.Time " + value + " " + changedBy); // Any changes done by the SIM go through the Body system first, which updates the Exposed Data. if (changedBy == ChangedBy.AELP) { Sim.Settings.Speed = value * (int)capiSpeedRatio.getValue(); } } ); capiSpeedRatio = new SimCapiEnum <SpeedRatio>(SpeedRatio.Second); capiSpeedRatio.expose("Speed.Ratio", false, false); capiSpeedRatio.setChangeDelegate( delegate(SpeedRatio value, ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Sim.Settings.Speed = capiSpeedTime.getValue() * (int)value; } } ); }
public void should_call_on_change_delegate() { SimCapiNumber simCapiNumber = new SimCapiNumber(2); string exposedName = "exposeName"; simCapiNumber.expose(exposedName, true, true); bool changeDelegateCalled = false; bool correctValue = false; simCapiNumber.setChangeDelegate( delegate(float value, ChangedBy changedBy) { changeDelegateCalled = true; if (value == 10) { correctValue = true; } }); // Create the VALUE_CHANGE message SimCapiValue simCapiValue = new SimCapiValue(exposedName, SimCapiValueType.STRING, false, false, false, new StringData("10")); Dictionary <string, SimCapiValue> valueDictionary = new Dictionary <string, SimCapiValue>(); valueDictionary.Add(exposedName, simCapiValue); string valueChangedJson = SimCapiJsonMaker.create_VALUE_CHANGE(_transporter.getHandshake(), valueDictionary); _transporter.reciveJsonMessage(valueChangedJson); Assert.AreEqual(true, changeDelegateCalled); Assert.AreEqual(true, correctValue); }
public void Init(int id) { Id = id; string baseName = "Body." + id; capiName = new SimCapiString(name); capiName.expose(baseName + ".Name", false, false); capiName.setChangeDelegate( delegate(string value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Name = value; } } ); capiActive = new SimCapiBoolean(active); capiActive.expose(baseName + ".Active", false, false); capiActive.setChangeDelegate( delegate(bool value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Active = value; } } ); capiType = new SimCapiEnum <BodyType>(type); capiType.expose(baseName + ".Type", false, false); capiType.setChangeDelegate( delegate(BodyType value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Type = value; } } ); capiMaterial = new SimCapiEnum <BodyMaterial>(material); capiMaterial.expose(baseName + ".Material", false, false); capiMaterial.setChangeDelegate( delegate(BodyMaterial value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Material = value; } } ); capiMass = new SimCapiNumber((float)mass); capiMass.expose(baseName + ".Mass", false, false); capiMass.setChangeDelegate( delegate(float value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Mass = value; } } ); capiDiameter = new SimCapiNumber((float)diameter); capiDiameter.expose(baseName + ".Diameter", false, false); capiDiameter.setChangeDelegate( delegate(float value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Diameter = value; } } ); capiRotation = new SimCapiNumber((float)rotation); capiRotation.expose(baseName + ".Rotation", false, false); capiRotation.setChangeDelegate( delegate(float value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { Rotation = value; } } ); // Set Capi Vectors. Exposure and Delegation are handled interally. capiPosition = new SimCapiVector(baseName + ".Position", Position); capiVelocity = new SimCapiVector(baseName + ".Velocity", Velocity); //Auto velocity capiAutoVelocity = new SimCapiBoolean(!initialVelocity); capiAutoVelocity.expose(baseName + ".Velocity.Auto", false, false); capiAutoVelocity.setChangeDelegate( delegate(bool value, SimCapi.ChangedBy changedBy) { if (changedBy == ChangedBy.AELP) { InitialVelocity = !value; } } ); }