public void OnAddedToGroup(MyGridPhysicalGroupData group) { this.ControlSystem = group.ControlSystem; foreach (MyShipController controller in this.m_cubeGrid.GetFatBlocks <MyShipController>()) { if (controller != null) { if (controller.ControllerInfo.Controller == null) { if (controller.Pilot == null) { continue; } if (!MySessionComponentReplay.Static.HasEntityReplayData(this.CubeGrid.EntityId)) { continue; } } if (controller.EnableShipControl && ((!(controller is MyCockpit) || controller.IsMainCockpit) || !controller.CubeGrid.HasMainCockpit())) { this.ControlSystem.AddControllerBlock(controller); } } } this.ControlSystem.AddGrid(this.CubeGrid); }
public void OnAddedToGroup(MyGridPhysicalGroupData group) { ControlSystem = group.ControlSystem; foreach (var block in m_cubeGrid.GetFatBlocks <MyShipController>()) { if (block != null && block.ControllerInfo.Controller != null && block.EnableShipControl) { ControlSystem.AddControllerBlock(block); } } ControlSystem.AddGrid(CubeGrid); }
public void OnRemovedFromGroup(MyGridPhysicalGroupData group) { ControlSystem.RemoveGrid(CubeGrid); if (m_blocksRegistered) { foreach (var controllerBlock in m_cubeGrid.GetFatBlocks <MyShipController>()) { if (controllerBlock != null && controllerBlock.ControllerInfo.Controller != null && controllerBlock.EnableShipControl) { ControlSystem.RemoveControllerBlock(controllerBlock); } } } ControlSystem = null; }
public void OnRemovedFromGroup(MyGridPhysicalGroupData group) { this.ControlSystem.RemoveGrid(this.CubeGrid); if (this.m_blocksRegistered) { foreach (MyShipController controller in this.m_cubeGrid.GetFatBlocks <MyShipController>()) { if (controller == null) { continue; } if ((controller.ControllerInfo.Controller != null) && (controller.EnableShipControl && ((!(controller is MyCockpit) || controller.IsMainCockpit) || !controller.CubeGrid.HasMainCockpit()))) { this.ControlSystem.RemoveControllerBlock(controller); } } } this.ControlSystem = null; }
public void OnAddedToGroup(MyGridPhysicalGroupData group) { ControlSystem = group.ControlSystem; foreach (var block in m_cubeGrid.GetBlocks()) { if (block.FatBlock == null) { continue; } var controllerBlock = block.FatBlock as MyShipController; if (controllerBlock != null && controllerBlock.ControllerInfo.Controller != null && controllerBlock.EnableShipControl) { ControlSystem.AddControllerBlock(controllerBlock); } } ControlSystem.AddGrid(CubeGrid); }
public override void UpdateBeforeSimulation() { try { if (!RealisticMode || !Block.IsWorking) { return; } var grid = Block.CubeGrid; if (grid.IsPreview || grid.Physics == null || !grid.Physics.Enabled || grid.Physics.IsStatic) { return; } float strength = Block.BlockDefinition.ForceMagnitude * Block.CurrentStrength; if (Math.Abs(strength) < 0.00001f) { return; } Vector3D force = Block.WorldMatrix.Backward * strength; var groupProperties = MyGridPhysicalGroupData.GetGroupSharedProperties(grid); // cancel the thruster's force at grid-group center of mass grid.Physics.AddForce(MyPhysicsForceType.APPLY_WORLD_FORCE, -force, groupProperties.CoMWorld, null); // apply the thruster's force at its position grid.Physics.AddForce(MyPhysicsForceType.APPLY_WORLD_FORCE, force, Block.PositionComp.WorldVolume.Center, null); } catch (Exception e) { Log.Error(e); } }
public void OnRemovedFromGroup(MyGridPhysicalGroupData group) { ControlSystem.RemoveGrid(CubeGrid); if (m_blocksRegistered) { foreach (var controllerBlock in m_cubeGrid.GetFatBlocks<MyShipController>()) { if (controllerBlock != null && controllerBlock.ControllerInfo.Controller != null && controllerBlock.EnableShipControl) { ControlSystem.RemoveControllerBlock(controllerBlock); } } } ControlSystem = null; }
public void OnAddedToGroup(MyGridPhysicalGroupData group) { ControlSystem = group.ControlSystem; foreach (var block in m_cubeGrid.GetFatBlocks<MyShipController>()) { if (block != null && block.ControllerInfo.Controller != null && block.EnableShipControl) { ControlSystem.AddControllerBlock(block); } } ControlSystem.AddGrid(CubeGrid); }
public void OnAddedToGroup(MyGridPhysicalGroupData group) { ControlSystem = group.ControlSystem; foreach (var block in m_cubeGrid.GetBlocks()) { if (block.FatBlock == null) continue; var controllerBlock = block.FatBlock as MyShipController; if (controllerBlock != null && controllerBlock.ControllerInfo.Controller != null && controllerBlock.EnableShipControl) { ControlSystem.AddControllerBlock(controllerBlock); } } ControlSystem.AddGrid(CubeGrid); }