void OnEnable() { width = serializedObject.FindProperty("width"); height = serializedObject.FindProperty("height"); chunkWidth = serializedObject.FindProperty("chunkWidth"); chunkHeight = serializedObject.FindProperty("chunkHeight"); otherPlatforms = serializedObject.FindProperty("otherPlatforms"); pathHeight = serializedObject.FindProperty("pathHeight"); pathThickness = serializedObject.FindProperty("pathThickness"); solutionDistance = serializedObject.FindProperty("solutionDistance"); entryObjOffset = serializedObject.FindProperty("entryObjOffset"); exitObjOffset = serializedObject.FindProperty("exitObjOffset"); scale = serializedObject.FindProperty("scale"); floorChance = serializedObject.FindProperty("floorChance"); backgroundChance = serializedObject.FindProperty("backgroundChance"); randomAtGameStart = serializedObject.FindProperty("randomAtGameStart"); addBorder = serializedObject.FindProperty("addBorder"); updateColliders = serializedObject.FindProperty("updateColliders"); floorObjects = serializedObject.FindProperty("floorObjects"); ladderLayer = serializedObject.FindProperty("ladderLayer"); backgroundZOffset = serializedObject.FindProperty("backgroundZOffset"); parallaxDistance = serializedObject.FindProperty("parallaxDistance"); randomPlatform = (RandomPlatformer)serializedObject.targetObject; randomPlatform.wallLayer = randomPlatform.GetComponent <TileInfo>(); if (randomPlatform.transform.childCount > 0) { randomPlatform.backgroundLayer = randomPlatform.transform.GetChild(0).GetComponent <TileInfo>(); } tileTex = randomPlatform.GetComponent <MeshRenderer>().sharedMaterial.mainTexture; }
TileInfo CloneLayer(int newIndex, TileInfo layerToClone, bool fromEditor) { // GameObject result = (GameObject)Instantiate( layerToClone.gameObject ); // if( fromEditor ) // DestroyImmediate( result.GetComponent<PolygonCollider2D>() ); // else // Destroy( result.GetComponent<PolygonCollider2D>() ); GameObject result = new GameObject(layerToClone.name + "_" + newIndex); // result.hideFlags = HideFlags.HideInHierarchy; result.AddComponent <MeshFilter>().sharedMesh = new Mesh(); result.AddComponent <MeshRenderer>().material = layerToClone.GetComponent <MeshRenderer>().sharedMaterial; TileInfo ti = result.AddComponent <TileInfo>(); ti.collisions = (TileInfo.CollisionType[])wallLayer.collisions.Clone(); ti.tileSize = wallLayer.tileSize; ti.spacing = wallLayer.spacing; //result.GetComponent<TileInfo>().positionAtLastEdit = pos; ti.mapWidth = chunkWidth; ti.mapHeight = chunkHeight; ti.tiles = new Tile[chunkWidth * chunkHeight]; ti.autoTileData = new List <Tile>(wallLayer.autoTileData); ti.autoTileEdgeMode = new List <TileInfo.AutoTileEdgeMode>(wallLayer.autoTileEdgeMode); ti.autoTileLinkMask = new List <int>(wallLayer.autoTileLinkMask); ti.autoTileNames = new List <string>(wallLayer.autoTileNames); ti.autoTileType = new List <TileInfo.AutoTileType>(wallLayer.autoTileType); ti.numberOfAutotiles = wallLayer.numberOfAutotiles; ti.showAutoTile = new List <bool>(wallLayer.showAutoTile); ti.pixelColliders = layerToClone.pixelColliders; for (int i = 0; i < ti.tiles.Length; i++) { ti.tiles[i] = Tile.empty; } if (layerToClone.GetComponent <MeshCollider>() != null) { result.AddComponent <MeshCollider>().sharedMesh = new Mesh(); } RandomPlatformer rp = CopyComponent <RandomPlatformer>(layerToClone.GetComponent <RandomPlatformer>(), result); if (layerToClone.GetComponent <TilePrefabs>() != null) { CopyComponent <TilePrefabs>(layerToClone.GetComponent <TilePrefabs>(), result); } rp.mainLayer = mainLayer; rp.wallLayer = ti; rp._backgroundLayers = null; rp._wallLayers = null; rp.randomAtGameStart = false; Vector3 newPos = mainLayer.transform.position; if (newIndex >= 0) { int x = newIndex % width; int y = newIndex / width; newPos.x += chunkWidth * x; newPos.y += chunkHeight * y; ti.update3DWalls = layerToClone.update3DWalls; } else { //else is a background layer newPos = layerToClone.transform.position; newPos.z += backgroundZOffset; result.transform.parent = layerToClone.transform; ti.update3DWalls = layerToClone.update3DWalls; if (parallaxDistance != 0) { ParallaxBackground pb = result.AddComponent <ParallaxBackground>(); pb.distance = parallaxDistance; pb.cam = Camera.main; Vector2 midPoint = new Vector2((width * chunkWidth) / 2 - chunkWidth / 2, (height * chunkHeight) / 2 - chunkHeight / 2) + (Vector2)mainLayer.transform.position; float ratio = parallaxDistance / 10; pb.startPosition = new Vector3(newPos.x + ratio * (newPos.x - midPoint.x), newPos.y + ratio * (newPos.y - midPoint.y), parallaxDistance); if (FindObjectOfType <PixelPerfectCamera>() != null) { pb.pixelSnap = true; } } } result.transform.position = newPos; MeshCollider mc = result.GetComponent <MeshCollider>(); if (mc != null) { mc.sharedMesh = result.GetComponent <MeshFilter>().sharedMesh; } return(ti); }