// Start is called before the first frame update void Start() { EntityManager entityManager = World.Active.EntityManager; EntityArchetype harvestableComponent = entityManager.CreateArchetype( typeof(HarvestableComponent), typeof(Translation), typeof(RenderMesh), typeof(LocalToWorld) ); Tilemap tilemap = GetComponent <Tilemap>(); foreach (var pos in tilemap.cellBounds.allPositionsWithin) { Vector3Int localPlace = new Vector3Int(pos.x, pos.y, pos.z); Vector3 place = tilemap.CellToWorld(localPlace); if (tilemap.HasTile(localPlace)) { TileBase tile = tilemap.GetTile(localPlace); Material tileMat = new Material(Shader.Find("Unlit/Transparent")); Sprite tileSprite = Resources.Load <Sprite>("Sprites/TileSprites/" + tile.name); tileMat.mainTexture = tileSprite.texture; int width = 1; int height = 1; Mesh tileMesh = new Mesh(); // Setup vertices Vector3[] newVertices = new Vector3[4]; float halfHeight = height * 0.5f; float halfWidth = width * 0.5f; newVertices [0] = new Vector3(-halfWidth, -halfHeight, 0); newVertices [1] = new Vector3(-halfWidth, halfHeight, 0); newVertices [2] = new Vector3(halfWidth, -halfHeight, 0); newVertices [3] = new Vector3(halfWidth, halfHeight, 0); // Setup UVs Vector2[] newUVs = new Vector2[newVertices.Length]; newUVs [0] = new Vector2(0, 0); newUVs [1] = new Vector2(0, 1); newUVs [2] = new Vector2(1, 0); newUVs [3] = new Vector2(1, 1); // Setup triangles int[] newTriangles = new int[] { 0, 1, 2, 3, 2, 1 }; // Setup normals Vector3[] newNormals = new Vector3[newVertices.Length]; for (int i = 0; i < newNormals.Length; i++) { newNormals [i] = Vector3.forward; } // Create quad tileMesh.vertices = newVertices; tileMesh.uv = newUVs; tileMesh.triangles = newTriangles; tileMesh.normals = newNormals; Entity entity = entityManager.CreateEntity(harvestableComponent); entityManager.SetSharedComponentData(entity, new RenderMesh { material = tileMat, mesh = tileMesh }); // pivot of the sprite is center so we have to add 0.5 to x and y entityManager.SetComponentData(entity, new Translation { Value = new float3(place.x + 0.5f, place.y + 0.5f, -1) }); int tileNo = int.Parse(tile.name.Substring(tile.name.LastIndexOf('_') + 1)); HarvestableType type = HarvestableData.getHarvestableType(tileNo); entityManager.SetComponentData(entity, new HarvestableComponent { type = type, ressourceAmount = type.Equals(HarvestableType.WOOD) ? 50 : 20000 }); } } // delete all tiles because we replaced them with entities tilemap.ClearAllTiles(); }
public static bool IsInHarvestable(HarvestableType ht) { return(harvestable.Contains(ht)); }
public static string getMapStringInfo(HarvestableType type) { switch (type) { case HarvestableType.WOOD: case HarvestableType.WOOD_GIANTTREE: case HarvestableType.WOOD_CRITTER_GREEN: case HarvestableType.WOOD_CRITTER_RED: case HarvestableType.WOOD_CRITTER_DEAD: case HarvestableType.WOOD_GUARDIAN_RED: return("W"); case HarvestableType.ROCK: case HarvestableType.ROCK_CRITTER_GREEN: case HarvestableType.ROCK_CRITTER_RED: case HarvestableType.ROCK_CRITTER_DEAD: case HarvestableType.ROCK_GUARDIAN_RED: return("R"); case HarvestableType.FIBER: case HarvestableType.FIBER_CRITTER: case HarvestableType.FIBER_GUARDIAN_RED: case HarvestableType.FIBER_GUARDIAN_DEAD: return("F"); case HarvestableType.HIDE: case HarvestableType.HIDE_FOREST: case HarvestableType.HIDE_STEPPE: case HarvestableType.HIDE_SWAMP: case HarvestableType.HIDE_MOUNTAIN: case HarvestableType.HIDE_HIGHLAND: case HarvestableType.HIDE_CRITTER: case HarvestableType.HIDE_GUARDIAN: return("H"); case HarvestableType.ORE: case HarvestableType.ORE_CRITTER_GREEN: case HarvestableType.ORE_CRITTER_RED: case HarvestableType.ORE_CRITTER_DEAD: case HarvestableType.ORE_GUARDIAN_RED: return("O"); case HarvestableType.DEADRAT: return("DEAD_RAT"); case HarvestableType.SILVERCOINS_NODE: case HarvestableType.SILVERCOINS_LOOT_STANDARD_TRASH: case HarvestableType.SILVERCOINS_LOOT_VETERAN_TRASH: case HarvestableType.SILVERCOINS_LOOT_ELITE_TRASH: case HarvestableType.SILVERCOINS_LOOT_ROAMING: case HarvestableType.SILVERCOINS_LOOT_ROAMING_MINIBOSS: case HarvestableType.SILVERCOINS_LOOT_ROAMING_BOSS: case HarvestableType.SILVERCOINS_LOOT_STANDARD: case HarvestableType.SILVERCOINS_LOOT_VETERAN: case HarvestableType.SILVERCOINS_LOOT_ELITE: case HarvestableType.SILVERCOINS_LOOT_STANDARD_MINIBOSS: case HarvestableType.SILVERCOINS_LOOT_VETERAN_MINIBOSS: case HarvestableType.SILVERCOINS_LOOT_ELITE_MINIBOSS: case HarvestableType.SILVERCOINS_LOOT_STANDARD_BOSS: case HarvestableType.SILVERCOINS_LOOT_VETERAN_BOSS: case HarvestableType.SILVERCOINS_LOOT_ELITE_BOSS: case HarvestableType.SILVERCOINS_LOOT_CHEST_STANDARD: case HarvestableType.SILVERCOINS_LOOT_CHEST_STANDARD_TRASH: case HarvestableType.SILVERCOINS_LOOT_CHEST_VETERAN: case HarvestableType.SILVERCOINS_LOOT_CHEST_DEMON: case HarvestableType.SILVERCOINS_LOOT_SARCOPHAGUS_STANDARD_MINIBOSS: return("SILVER"); case HarvestableType.CHEST_EXP_SILVERCOINS_LOOT_STANDARD: case HarvestableType.CHEST_EXP_SILVERCOINS_LOOT_VETERAN: return("CHEST"); default: return("ERR" + type); } }