Пример #1
0
    public static JointDriverMeta ReadDriverMeta(BinaryReader reader)
    {
        int             type = reader.ReadByte();
        JointDriverMeta meta = (JointDriverMeta)JOINT_DRIVER_META_TYPES[type].GetConstructor(new Type[0]).Invoke(new Object[0]);

        meta.ReadDataInternal(reader);
        return(meta);
    }
Пример #2
0
 /// <summary>
 /// Adds the given joint driver metadata object to this driver, or replaces the existing metadata of the same type.
 /// </summary>
 /// <param name="metaDriver">The metadata</param>
 public void AddInfo(JointDriverMeta metaDriver)
 {
     try
     {
         MetaInfo.Add(metaDriver.GetType(), metaDriver);
     }
     catch
     {
         //Always throws SystemNullReferenceException here when you are exporting pneumatic
         //Go to JointDrivderMeta.cs Line 15 to patch
         MetaInfo[metaDriver.GetType()] = metaDriver;
     }
 }
Пример #3
0
    /// <summary>
    /// Used for writing joint driver meta data.
    /// </summary>
    /// <param name="meta"></param>
    /// <param name="writer"></param>
    private static void WriteJointDriverMeta(JointDriverMeta meta, XmlWriter writer)
    {
        switch (meta.GetType().ToString())
        {
        case "ElevatorDriverMeta":
            WriteElevatorDriverMeta((ElevatorDriverMeta)meta, writer);
            break;

        case "PneumaticDriverMeta":
            WritePneumaticDriverMeta((PneumaticDriverMeta)meta, writer);
            break;

        case "WheelDriverMeta":
            WriteWheelDriverMeta((WheelDriverMeta)meta, writer);
            break;
        }
    }
Пример #4
0
    /// <summary>
    /// Reads the binary representation of this driver from the stream.
    /// </summary>
    /// <param name="reader">Input stream</param>
    public void ReadBinaryData(System.IO.BinaryReader reader)
    {
        type       = (JointDriverType)((int)reader.ReadByte());
        port1      = reader.ReadInt16();
        port2      = reader.ReadInt16();
        lowerLimit = reader.ReadSingle();
        upperLimit = reader.ReadSingle();
        isCan      = reader.ReadBoolean();
        int extensions = reader.ReadInt32();

        MetaInfo.Clear();
        for (int i = 0; i < extensions; i++)
        {
            JointDriverMeta meta = JointDriverMeta.ReadDriverMeta(reader);
            AddInfo(meta);
        }
    }