GameEntities.PlayerIntellect.ServerOrSingle_ChangeMainControlledUnit C# (CSharp) Method

ServerOrSingle_ChangeMainControlledUnit() static private method

static private ServerOrSingle_ChangeMainControlledUnit ( Unit unit ) : void
unit Unit
return void
        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;
            }
        }