예제 #1
0
            public void should_error_when_try_to_expose_twice()
            {
                SimCapiEnum <EnumForTest> simCapiEnum = new SimCapiEnum <EnumForTest>(EnumForTest.INITIAL);

                string exposedName = "exposeName";

                simCapiEnum.expose(exposedName, true, true);

                Assert.Catch(
                    delegate()
                {
                    simCapiEnum.expose(exposedName, true, true);
                });
            }
    /// <summary>
    /// Creates and exposes an event.
    /// </summary>
    /// <param name="i"></param>
    private void createEvent()
    {
        int id = typeList.Count;
        SimCapiEnum <SimEvent> type = new SimCapiEnum <SimEvent>(SimEvent.None);

        type.expose("Event." + id + ".Type", false, false);
        typeList.Add(type);

        SimCapiStringArray detail = new SimCapiStringArray();

        detail.expose("Event." + id + ".Details", false, false);
        detailList.Add(detail);
    }
예제 #3
0
            public void should_expose_value()
            {
                SimCapiEnum <EnumForTest> simCapiEnum = new SimCapiEnum <EnumForTest>(EnumForTest.INITIAL);

                string exposedName = "exposeName";

                simCapiEnum.expose(exposedName, true, true);

                Dictionary <string, SimCapiValue> _outGoingMap =
                    TestHelpers.getReferenceField <Dictionary <string, SimCapiValue> >(_transporter, "_outGoingMap");

                Assert.AreNotEqual(null, _outGoingMap);
                Assert.AreEqual(true, _outGoingMap.ContainsKey(exposedName));
            }
예제 #4
0
    /// <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;
            }
        }
            );
    }
예제 #5
0
            public void should_call_on_change_delegate()
            {
                SimCapiEnum <EnumForTest> simCapiEnum = new SimCapiEnum <EnumForTest>(EnumForTest.INITIAL);

                string exposedName = "exposeName";

                simCapiEnum.expose(exposedName, true, true);

                bool changeDelegateCalled = false;
                bool correctValue         = false;


                simCapiEnum.setChangeDelegate(
                    delegate(EnumForTest value, ChangedBy changedBy)
                {
                    changeDelegateCalled = true;

                    if (value == EnumForTest.CHANGED)
                    {
                        correctValue = true;
                    }
                });

                // Create the VALUE_CHANGE message
                SimCapiValue simCapiValue = new SimCapiValue(exposedName, SimCapiValueType.STRING, false, false, false, new StringData("CHANGED"));
                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);
            }
예제 #6
0
    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;
            }
        }
            );
    }