public override void ShowGUIEdit(EditorWindow window) { region = (LevelRegion)EditorGUILayout.ObjectField(Style.LABLE_REGION_FIELD, region, typeof(LevelRegion), false); if (region != null) { prefab = region.terrainGameObject; //prefab.GetComponent<RegionTerrain>().enabled = false; preview = preview = AssetPreview.GetAssetPreview(prefab); cellSize = region.mapSize; pivot = new Vector3((region.mapSize.x * region.mapScale.x) / 2, 0, (region.mapSize.y * region.mapScale.y) / 2); } }
//En un principio Grid terrain tenia toda la lógica del grid. Dado que es un Monobehaviour, no se puede serializar y por lo tanto tiene que estar en Level. public Mesh Init(float xS, float yS, Vector2Int size, LevelRegion o) { xSize = size.x; ySize = size.y; xScale = xS; yScale = yS; Mesh m = new Mesh(); m.name = "Procedular"; m.SetVertices(CreateVertex().ToList()); m.SetTriangles(CreateTris(m), 0, true); m.RecalculateNormals(); gameObject.layer = LayerMask.NameToLayer("Grid"); mesh = GetComponent <MeshFilter>(); meshRenderer = GetComponent <MeshRenderer>(); mesh.mesh = m; SetMaterial(); collider = gameObject.AddComponent <MeshCollider>(); collider.sharedMesh = m; owner = o; return(m); }