/// <summary>
 ///Deserializes ObstacleAvoidanceDriveState
 ///</summary>
 ///<param name="reader">the reader from which to deserialize</param>
 ///<returns>deserialized ObstacleAvoidanceDriveState</returns>
 public virtual object Deserialize(System.IO.BinaryReader reader)
 {
     this._RobotWidth          = reader.ReadDouble();
     this._MaxPowerPerWheel    = reader.ReadDouble();
     this._MinRotationSpeed    = reader.ReadDouble();
     this._DepthCameraPosition = ((global::Microsoft.Robotics.PhysicalModel.Proxy.Vector3)(((Microsoft.Dss.Core.IDssSerializable)(new global::Microsoft.Robotics.PhysicalModel.Proxy.Vector3())).Deserialize(reader)));
     if ((reader.ReadByte() != 0))
     {
         this._Controller = ((global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController)(((Microsoft.Dss.Core.IDssSerializable)(new global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController())).Deserialize(reader)));
     }
     this._MaxDeltaPower = reader.ReadDouble();
     return(this);
 }
 public static object Microsoft_Robotics_Services_ObstacleAvoidanceDrive_PIDController_TO_Microsoft_Robotics_Services_ObstacleAvoidanceDrive_Proxy_PIDController(object transformFrom)
 {
     global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController target = new global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController();
     global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.PIDController       from   = ((global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.PIDController)(transformFrom));
     target.Ki = from.Ki;
     target.Kp = from.Kp;
     target.Kd = from.Kd;
     return(target);
 }
 /// <summary>
 ///Clones PIDController
 ///</summary>
 ///<returns>cloned value</returns>
 public virtual object Clone()
 {
     global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController target0 = new global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController();
     this.CopyTo(target0);
     return(target0);
 }
 /// <summary>
 ///Copies the data member values of the current PIDController to the specified target object
 ///</summary>
 ///<param name="target">target object (must be an instance of)</param>
 public virtual void CopyTo(Microsoft.Dss.Core.IDssSerializable target)
 {
     global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController typedTarget = ((global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController)(target));
     typedTarget._Ki = this._Ki;
     typedTarget._Kp = this._Kp;
     typedTarget._Kd = this._Kd;
 }
 /// <summary>
 ///Copies the data member values of the current ObstacleAvoidanceDriveState to the specified target object
 ///</summary>
 ///<param name="target">target object (must be an instance of)</param>
 public virtual void CopyTo(Microsoft.Dss.Core.IDssSerializable target)
 {
     global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.ObstacleAvoidanceDriveState typedTarget = ((global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.ObstacleAvoidanceDriveState)(target));
     typedTarget._RobotWidth          = this._RobotWidth;
     typedTarget._MaxPowerPerWheel    = this._MaxPowerPerWheel;
     typedTarget._MinRotationSpeed    = this._MinRotationSpeed;
     typedTarget._DepthCameraPosition = this._DepthCameraPosition;
     if ((this._Controller != null))
     {
         global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController tmp = new global::Microsoft.Robotics.Services.ObstacleAvoidanceDrive.Proxy.PIDController();
         ((Microsoft.Dss.Core.IDssSerializable)(this._Controller)).CopyTo(((Microsoft.Dss.Core.IDssSerializable)(tmp)));
         typedTarget._Controller = tmp;
     }
     typedTarget._MaxDeltaPower = this._MaxDeltaPower;
 }