public void DestroyAllUnitsAndAssets() { for (int i = 0; i < m_units.Length; ++i) { IMatchUnitController unit = m_units[i]; if (!unit.IsAlive) { continue; } Coordinate c = unit.DataController.Coordinate; MapCell cell = m_engine.Map.Get(c.Row, c.Col, c.Weight); cell.RemoveVoxelDataAndDecreaseHeight(unit.Data); RemoveUnitController(true, unit); } m_units = new IMatchUnitController[0]; long[] assetIds = m_idToAsset.Keys.ToArray(); for (int i = 0; i < assetIds.Length; ++i) { long assetId = assetIds[i]; MatchAsset asset = m_idToAsset[assetId]; asset.Cell.RemoveVoxelDataAndDecreaseHeight(asset.VoxelData); RemoveAsset(asset.VoxelData); } }
private void CreateAsset(VoxelData data, MapCell cell) { if (data.IsNeutral) { return; } data.UnitOrAssetIndex = m_identity; MatchAsset asset = new MatchAsset(data, cell); m_voxelDataToId.Add(data, m_identity); m_idToAsset.Add(m_identity, asset); unchecked { m_identity++; } if (AssetCreated != null) { AssetCreated(asset); } }