Hi everyone,
I have an issue, when I try to remove an AI aircraft. The creation works perfectly I also retrive the ObjectID to interact with this particular object later and try to remove it. But when I click on my button who trigger the AIRemoveObject method, sometimes my AI aicraft is deleted sometimes not. I don't understand why.
Let's see my code :
AI aicraft creation :
OnRecvAddRemove event :
AI aicraft Removing :
The Tanker class :
Thank you in advance and sorry for my bad english.
I have an issue, when I try to remove an AI aircraft. The creation works perfectly I also retrive the ObjectID to interact with this particular object later and try to remove it. But when I click on my button who trigger the AIRemoveObject method, sometimes my AI aicraft is deleted sometimes not. I don't understand why.
Let's see my code :
AI aicraft creation :
Code:
private void requestTanker(object sender, RoutedEventArgs e)
{
if (gConnected != false && gSimConnect != null)
{
if (gTanker == null)
{
gSimConnect.AICreateEnrouteATCAircraft("Boeing 737-800", "N100", 100, Config.APPLICATION_PATH + "tanker/TANKER_FPLAN", 0.0f, false, RequestIDs.REQUEST_TANKER);
}
}
OnRecvAddRemove event :
Code:
private void SimConnect_OnRecvAddremove(SimConnect sender, SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE data)
{
switch (data.uEventID)
{
case (uint)EventIDs.TANKER_ADDED:
if (data.dwData != 0 && gTanker == null)
{
gTanker = new Tanker(data.dwData);
gSimConnect.Text(SIMCONNECT_TEXT_TYPE.PRINT_BLUE, 0, RequestIDs.REQUEST_TEXT, "TANKER ENROUTE");
gSimConnect.RequestDataOnSimObject(RequestIDs.REQUEST_TANKER,
gTanker.ObjectID,
SIMCONNECT_PERIOD.VISUAL_FRAME,
SIMCONNECT_DATA_REQUEST_FLAG.CHANGED,
gTanker);
}
break;
case (uint)EventIDs.TANKER_REMOVED:
gTanker = null;
break;
}
}
AI aicraft Removing :
Code:
private void releaseTanker(object sender, RoutedEventArgs e)
{
if (gConnected != false && gSimConnect != null)
{
if (gTanker != null)
{
gSimConnect.AIRemoveObject(gTanker.ObjectID, RequestIDs.REQUEST_TANKER);
}
}
}
The Tanker class :
Code:
using BeatlesBlog.SimConnect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace VASF
{
[DataStruct()]
public class Tanker : System.ComponentModel.INotifyPropertyChanged
{
public Double PLANE_LATITUDE;
public Double PLANE_LONGITUDE;
public Int32 PLANE_ALTITUDE;
public Int32 PLANE_ALT_ABOVE_GROUND;
public Int32 VERTICAL_SPEED;
public Int32 GROUND_VELOCITY;
public Boolean SIM_ON_GROUND;
private UInt32 eObjectID;
public Tanker(UInt32 eObjectID)
{
this.eObjectID = eObjectID;
}
public Tanker()
{
}
public UInt32 ObjectID
{
get
{
return eObjectID;
}
set
{
eObjectID = value;
}
}
[DataItem("Plane Latitude", "degrees")]
public Double LatitudeDegrees
{
get
{
return PLANE_LATITUDE;
}
set
{
PLANE_LATITUDE = value;
RaisePropertyChanged("LatitudeDegrees");
}
}
[DataItem("Plane Longitude", "degrees")]
public Double LongitudeDegrees
{
get
{
return PLANE_LONGITUDE;
}
set
{
PLANE_LONGITUDE = value;
RaisePropertyChanged("LongitudeDegrees");
}
}
[DataItem("Plane Altitude", "feet")]
public Double AltitudeFeet
{
get
{
return PLANE_ALTITUDE;
}
set
{
PLANE_ALTITUDE = (Int32)Math.Round(value);
RaisePropertyChanged("AltitudeFeet");
}
}
[DataItem("Plane Alt Above Ground", "feet")]
public Double AltitudeAboveGroundFeet
{
get
{
return PLANE_ALT_ABOVE_GROUND;
}
set
{
PLANE_ALT_ABOVE_GROUND = (Int32)Math.Round(value);
RaisePropertyChanged("AltitudeAboveGroundFeet");
}
}
[DataItem("Vertical Speed", "feet")]
public Double VerticalSpeedFeet
{
get
{
return VERTICAL_SPEED;
}
set
{
VERTICAL_SPEED = (Int32)Math.Round(value);
RaisePropertyChanged("VerticalSpeedFeet");
}
}
[DataItem("Ground Velocity", "knots")]
public Double GroundVelocityKnots
{
get
{
return GROUND_VELOCITY;
}
set
{
GROUND_VELOCITY = (Int32)Math.Round(value);
RaisePropertyChanged("GroundVelocityKnots");
}
}
[DataItem("Sim On Ground", "bool")]
public Boolean SimOnGroundBool
{
get
{
return SIM_ON_GROUND;
}
set
{
SIM_ON_GROUND = value;
RaisePropertyChanged("SimOnGroundBool");
}
}
#region INotifyPropertyChanged Members
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}
Thank you in advance and sorry for my bad english.
