void ServerOrSingle_ChangeMainControlledUnit( Unit unit )
{
//Change player controlled unit
mainNotActiveUnit = ControlledObject;
//send mainNotActiveUnit to clients
if( EntitySystemWorld.Instance.IsServer() )
Server_SendMainNotActiveUnitToClients( EntitySystemWorld.Instance.RemoteEntityWorlds );
if( mainNotActiveUnit != null )
{
AddRelationship( mainNotActiveUnit );
mainNotActiveUnit.SetIntellect( null, false );
mainNotActiveUnitRestorePosition = mainNotActiveUnit.Position;
//disable collision for shapes and save contact groups
mainNotActiveUnitShapeContactGroups = new Dictionary<Shape, int>();
foreach( Body body in mainNotActiveUnit.PhysicsModel.Bodies )
{
foreach( Shape shape in body.Shapes )
{
mainNotActiveUnitShapeContactGroups.Add( shape, shape.ContactGroup );
shape.ContactGroup = (int)ContactGroup.NoContact;
}
}
mainNotActiveUnit.Server_EnableSynchronizationPositionsToClients = false;
ControlledObject = unit;
unit.SetIntellect( this, false );
unit.Destroying += AlternativeUnitAllowPlayerControl_Destroying;
}
}