try this:
Code:
public virtual void OnAutopilotOn(AiActor actor, int placeIndex)
{
AiAircraft aircraft = (AiAircraft) actor;
aircraft.hitNamed (part.NamedDamageTypes.ControlsElevatorDisabled); // ... cut down elevators ...
aircraft.hitNamed (part.NamedDamageTypes.ControlsAileronsDisabled); // ... aileron ...
aircraft.hitNamed (part.NamedDamageTypes.ControlsRudderDisabled); // ... rudder.
}
Explanation:
actor, although defined as "AiActor", if the player is in a plane, is a variable of type "AiAircraft". All you have to do is tell the compiler that you want to access the variable as an AiAirplane instead of as the base class that is an AiActor.
If you want to be on the safe side, you can check that it is indeed an AiAircraft like this:
Code:
public virtual void OnAutopilotOn(AiActor actor, int placeIndex)
{
if(actor is AiAircraft)
{
AiAircraft aircraft = (AiAircraft) actor;
aircraft.hitNamed (part.NamedDamageTypes.ControlsElevatorDisabled); // ... cut down elevators ...
aircraft.hitNamed (part.NamedDamageTypes.ControlsAileronsDisabled); // ... aileron ...
aircraft.hitNamed (part.NamedDamageTypes.ControlsRudderDisabled); // ... rudder.
}
}
Edit: corrected variable. Thanks Josef.
Bookmarks