public grid_logic(IMyCubeGrid new_grid) { _grid = new_grid; _grid.OnBlockAdded += on_block_added; _grid.OnBlockRemoved += on_block_removed; sync_helper.register_logic_object(this, _grid.EntityId); _ID_on = ((MyObjectBuilder_CubeGrid)_grid.GetObjectBuilder()).DampenersEnabled; var block_list = new List <IMySlimBlock>(); _grid.GetBlocks(block_list, delegate(IMySlimBlock block) { return(block.FatBlock is IMyThrust || block.FatBlock is IMyGyro); } ); if (block_list.Count > 0) { _ECU = new engine_control_unit(_grid); foreach (var cur_block in block_list) { var thruster = cur_block.FatBlock as IMyThrust; var gyro = cur_block.FatBlock as IMyGyro; if (thruster != null) { _ECU.assign_thruster(thruster); ++_num_thrusters; } if (gyro != null) { _ECU.assign_gyroscope(gyro); } } } block_list.Clear(); _grid.GetBlocks(block_list, delegate(IMySlimBlock block) { return(block.FatBlock is IMyCockpit || block.FatBlock is IMyRemoteControl); } ); foreach (var cur_controller in block_list) { _ship_controllers.Add((IMyControllableEntity)cur_controller.FatBlock); var RC_block = cur_controller.FatBlock as IMyRemoteControl; if (RC_block != null) { _RC_blocks.Add(RC_block); } } }
private void on_block_added(IMySlimBlock block) { check_disposed(); IMyCubeBlock entity = block.FatBlock; if (entity != null) { var controller = entity as IMyControllableEntity; if (controller != null) { _ship_controllers.Add(controller); } var RC_block = entity as IMyRemoteControl; if (RC_block != null) { _RC_blocks.Add(RC_block); } var thruster = entity as IMyThrust; if (thruster != null) { if (_ECU == null) { _ECU = new engine_control_unit(_grid); } _ECU.assign_thruster(thruster); ++_num_thrusters; } var gyro = entity as IMyGyro; if (gyro != null) { if (_ECU == null) { _ECU = new engine_control_unit(_grid); } _ECU.assign_gyroscope(gyro); } } }