static bool CanBeDetected(IMyObjectToDetect objectToDetect) { if (objectToDetect is MyVoxelMapOreDepositCell) { MyVoxelMapOreDepositCell oreDeposit = objectToDetect as MyVoxelMapOreDepositCell; return(oreDeposit.GetTotalRareOreContent() > 0); } //return objectToDetect is MyEntity || objectToDetect is MyMwcVoxelMaterialsEnum; return(objectToDetect is MyShip || objectToDetect is MyPrefabFoundationFactory || objectToDetect is MyPrefabHangar || objectToDetect is MyPrefabLargeWeapon || objectToDetect is MyAmmoBase /*|| * objectToDetect is MyVoxelMapOreDepositCell*/); }
private void OnMyVoxelMapOreDepositCellContainsOreChanged(MyVoxelMapOreDepositCell oreDepositCell, bool isEmpty) { using (OreDepositsLock.AcquireExclusiveUsing()) { if (isEmpty) { OreDepositCellsContainsOre.Remove(oreDepositCell); } else { OreDepositCellsContainsOre.Add(oreDepositCell); } } }
private void RecalculateOreDepositCellBoundingBox(ref MyVoxelMapOreDepositCell oreDepositCell, ref Int64 oreDepositCellCoord) { Vector3 minPosition; Vector3 maxPosition; GetMinAndMaxPositionOfOreDepositCell(ref oreDepositCellCoord, out minPosition, out maxPosition); //oreDepositCell.BoundingBox = new BoundingBox(minPosition, maxPosition); oreDepositCell.WorldAABB = new BoundingBox(minPosition, maxPosition); }
private void RemoveOreDepositCell(MyVoxelMapOreDepositCell oreDepositCell, bool lockEntityCloseLock = true) { oreDepositCell.OnVoxelMapOreDepositCellContainsOreChanged -= OnMyVoxelMapOreDepositCellContainsOreChanged; oreDepositCell.Close(lockEntityCloseLock); }
private MyVoxelMapOreDepositCell AddOreDepositCell(ref MyMwcVector3Int oreDepositCellCoord) { // Adding or creating cell can be made only once Int64 key = MyVoxelMaps.GetCellHashCode(VoxelMapId, ref oreDepositCellCoord, MyLodTypeEnum.LOD0); Debug.Assert(!m_oreDepositCells.ContainsKey(key)); MyVoxelMapOreDepositCell ret = new MyVoxelMapOreDepositCell(this, oreDepositCellCoord); ret.OnVoxelMapOreDepositCellContainsOreChanged += OnMyVoxelMapOreDepositCellContainsOreChanged; m_oreDepositCells[key] = ret; RecalculateOreDepositCellBoundingBox(ref ret, ref key); return ret; }
protected override bool IsObjectMeetDetectCriterium(IMyObjectToDetect objectToDetect) { MyVoxelMapOreDepositCell oreDeposit = (MyVoxelMapOreDepositCell)objectToDetect; return(oreDeposit.GetOreContent(m_oreMaterial) > 0); }
static void MyVoxelMaps_OnRemoveOreCell(MyVoxelMapOreDepositCell cell) { RemoveClosedObject(cell); }