protected void DropItem(int itemIndex) { try { Item itemToDrop = FindItem(CorrectIndex(itemIndex)); _location.AddItem(itemToDrop); _inventory.Remove(itemToDrop); } catch (System.ArgumentOutOfRangeException e) { Console.WriteLine(e.Message); } }
private void BuildItemsForArea(Area area, XmlNode areaNode) { if (areaNode != null) { XmlNodeList itemNodeList = areaNode.SelectNodes("child::Item"); foreach (XmlNode itemNode in itemNodeList) { area.AddItem(BuildItemObject(itemNode)); } } }
private void DistributeItems(MyEnvironmentItems envItem, ref Vector3D sectorPosition) { envItem.GetItemsInSector(ref sectorPosition, m_tmpItemInfos); var envItemId = envItem.EntityId; foreach (var itemInfo in m_tmpItemInfos) { bool included = false; var worldBox = GetWorldBox(itemInfo.SubtypeId, itemInfo.Transform.TransformMatrix); var extended = worldBox.GetInflated(DEFAULT_INFLATE_VALUE); m_aabbTree.OverlapAllBoundingBox(ref extended, m_tmpAreas); for (int i = 0; i < m_tmpAreas.Count; i++) { var forestBox = m_tmpAreas[i].ForestBox; if ((forestBox.Center - worldBox.Center).LengthSquared() <= BOX_INCLUDE_DIST_SQ) { forestBox.Include(ref worldBox); m_tmpAreas[i].ForestBox = forestBox; m_tmpAreas[i].AddItem(envItemId, itemInfo.LocalId); included = true; m_aabbTree.MoveProxy(m_tmpAreas[i].ProxyId, ref worldBox, Vector3D.Zero); } } m_tmpAreas.Clear(); if (!included) { var newForestBox = new Area(); newForestBox.ForestBox = worldBox; newForestBox.AddItem(envItemId, itemInfo.LocalId); newForestBox.ProxyId = m_aabbTree.AddProxy(ref worldBox, newForestBox, 0); m_forestAreas.Add(newForestBox); } } m_tmpItemInfos.Clear(); }
private void item_ItemAdded(MyEnvironmentItems envItems, ItemInfo itemInfo) { m_checkedSectors.Add(envItems.GetSectorId(ref itemInfo.Transform.Position)); var itemBox = GetWorldBox(itemInfo.SubtypeId, itemInfo.Transform.TransformMatrix); var checkBox = itemBox.GetInflated(DEFAULT_INFLATE_VALUE); m_aabbTree.OverlapAllBoundingBox(ref checkBox, m_tmpAreas); var newForestBox = new Area(); newForestBox.ForestBox = itemBox; newForestBox.AddItem(envItems.EntityId, itemInfo.LocalId); newForestBox.ProxyId = m_aabbTree.AddProxy(ref itemBox, newForestBox, 0); m_tmpAreas.Add(newForestBox); MergeAreas(m_tmpAreas); if (newForestBox.IsValid) m_forestAreas.Add(newForestBox); m_tmpAreas.Clear(); }