public void Paint(int col, int row) { //out of bounds don't paint if (!targetLevel.IsInsideGridBounds(col, row)) { return; } //paint over a piece DestroyLevelPiece(col, row); //paint new one //TODO mark dirty when change done. EditorGUI.BeginChangeCheck(); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "obj.name Added"); } GameObject obj = PrefabUtility.InstantiatePrefab(paletteItemSelected.transform.gameObject) as GameObject; //set the new prefab as a child to the level obj.transform.parent = targetLevel.transform; obj.name = string.Format("[{0},{1}][{2}]", col, row, obj.name); obj.transform.position = targetLevel.GridToWorldCoordinates(col, row); obj.hideFlags = HideFlags.HideInHierarchy; var gamepiece = obj.GetComponent <LevelPiece> (); //add new prefab to level pieces array //targetLevel.setLevelPiece(col,row,gamepiece); prefabList.Add(gamepiece); renderedLevelGrid[col][row] = prefabList.IndexOf(gamepiece); }