Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/Unity/Farmlanders/Assets/Terrain/Sapling.cs
2022-11-12 13:10:03 +01:00

45 lines
1.8 KiB
C#

using System.Collections.Generic;
using System.Drawing;
using UnityEngine;
namespace Terrain {
public class Sapling : Obstical {
public Sapling(Vector2 position, Chunk chunk) : base(position, chunk) {
GameObject.transform.position = position + new Vector2(-0.5f, 0.0f);
GameObject.name = $"Tree [{position.x}:{position.y}]";
CreateMeshData();
}
public override void CreateMeshData() {
Mesh mesh = new Mesh();
List<Vector3> vertices = new List<Vector3>();
int[] triangles;
List<Vector2> uvs = new List<Vector2>();
vertices.Add(new Vector2(0, 0));
vertices.Add(new Vector2(0, 2));
vertices.Add(new Vector2(2, 0));
vertices.Add(new Vector2(2, 2));
RectangleF texture = World.GetTreeTextureManager().GetTile(0, 1);
uvs.Add(new Vector2(texture.X, texture.Y));
uvs.Add(new Vector2(texture.X, texture.Y + texture.Height));
uvs.Add(new Vector2(texture.X + texture.Width, texture.Y));
uvs.Add(new Vector2(texture.X + texture.Width, texture.Y + texture.Height));
triangles = new[] { 0, 1, 2, 2, 1, 3 };
mesh.vertices = vertices.ToArray();
mesh.triangles = triangles;
mesh.uv = uvs.ToArray();
mesh.RecalculateNormals();
MeshFilter filter = GameObject.AddComponent<MeshFilter>();
MeshRenderer renderer = GameObject.AddComponent<MeshRenderer>();
renderer.material = World.GetTreeTextureManager().Material;
renderer.sortingLayerName = "Vegetation";
renderer.sortingOrder = Mathf.FloorToInt(World.ChunkSize - Position.y - Chunk.Position.y);
filter.mesh = mesh;
}
}
}