public NaniteOreDetector(IMyFunctionalBlock entity) { m_block = entity as IMyOreDetector; m_lastUpdate = DateTime.MinValue; m_scanStart = DateTime.MinValue; m_scanEnd = DateTime.MinValue; m_lock = new FastResourceLock(); m_oreListCache = new StringBuilder(); m_detectorState = DetectorStates.Disabled; m_lastDetectorState = DetectorStates.Disabled; m_block.Components.TryGet(out Sink); ResourceInfo = new MyResourceSinkInfo() { ResourceTypeId = MyResourceDistributorComponent.ElectricityId, MaxRequiredInput = 0f, RequiredInputFunc = () => (m_block.Enabled && m_block.IsFunctional) ? _power : 0f }; Sink.RemoveType(ref ResourceInfo.ResourceTypeId); Sink.Init(MyStringHash.GetOrCompute("Utility"), ResourceInfo); Sink.AddType(ref ResourceInfo); m_effects.Add(new OreDetectorEffect((MyCubeBlock)m_block)); if (!NaniteConstructionManager.OreDetectors.ContainsKey(entity.EntityId)) { NaniteConstructionManager.OreDetectors.Add(entity.EntityId, this); } }
public VoxelData(IMyOreDetector oreDetector, IMyVoxelBase voxel, float maxRange) { this.m_oreDetector = oreDetector; this.m_voxel = voxel; this.m_storage.Resize(new Vector3I(QUERY_STEP, QUERY_STEP, QUERY_STEP)); this.m_maxRange = maxRange; (this.m_voxel as MyVoxelBase).RangeChanged += m_voxel_RangeChanged; this.NeedsUpdate = true; Log.DebugLog("Created for voxel at " + voxel.PositionLeftBottomCorner); }
bool FuncTest(IMyOreDetector block) { //Ore Detector //Interace name: IMyOreDetector //Parent: IMyFunctionalBlock //Fields: float Range = block.Range; bool BroadcastUsingAntennas = block.BroadcastUsingAntennas; return(true); }
public Program() { var detectors = new List <IMyOreDetector>(); GridTerminalSystem.GetBlocksOfType(detectors); detector = detectors.First(); surface = Me.GetSurface(0); surface.ContentType = ContentType.TEXT_AND_IMAGE; surface.FontSize = 3; Runtime.UpdateFrequency = UpdateFrequency.Update100 | UpdateFrequency.Update10 | UpdateFrequency.Update1; Test(); }
/// <summary> /// Create an OreDetector for the given block. /// </summary> /// <param name="oreDetector">The ore detector block.</param> public OreDetector(IMyCubeBlock oreDetector) { this.Block = oreDetector; this.m_oreDetector = oreDetector as IMyOreDetector; this.m_netClient = new RelayClient(oreDetector); float maxrange = ((MyOreDetectorDefinition)((MyCubeBlock)m_oreDetector).BlockDefinition).MaximumRange; m_maxRange = maxrange; Registrar.Add(Block, this); }
public void Main(string argument, UpdateType updateSource) { List <IMyOreDetector> oresList = new List <IMyOreDetector>(); GridTerminalSystem.GetBlocksOfType <IMyOreDetector>(oresList); if (oresList.Count() > 0) { IMyOreDetector detector = oresList[0]; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("Range: ").Append(detector.Range); stringBuilder.Append("\nBroadcastUsingAntennas: ").Append(detector.BroadcastUsingAntennas); // Range: 50 // BroadcastUsingAntennas: True string data = stringBuilder.ToString(); detector.CustomData = data; Me.GetSurface(0).WriteText(data); } else { Me.GetSurface(0).WriteText("ore ZERO"); } }