public void spawnLevel() { Vector2Int tPos = new Vector2Int(selectedTiles[0].tileIndex_X, selectedTiles[0].tileIndex_Y); VRAR_Level lvl = GameStateManager.instance.getCurrentLevel(); //VRAR_Level lvl = lvlManager.getLevelObjectFromTilePos(tPos); foreach (VRAR_Tile tile in lvl.vrarTiles) { Transform nodeMarker = Instantiate(hexPREFAB, lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion()); tile.hexObject = nodeMarker; nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain); nodeMarker.localScale = new Vector3(1, tile.height_, 1); //spawn interactable object if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null) { Instantiate(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion()); } //spawn dumb objects foreach (BaseTileObject dumbObject in tile.getDumbObjectsList()) { if (dumbObject.getPrefab() != null) { Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_), new Quaternion()); } } } }
public void updateTile(VRAR_Tile newTile) { if (GameStateManager.instance.getGlobalStateIndex() == 4) { newTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(newTile.terrain); newTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(newTile.terrain); newTile.hexObject.localScale = new Vector3(1, newTile.height_, 1); } else { Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be 4 while the game is in :" + GameStateManager.instance.getGlobalStateIndex()); } }
public void spawnLevelsOverview() { //cleanup any existing gameobjects (old loaded levels or tiles) //place new gameobjects foreach (VRAR_Level lvl in lvlManager.getVRARLevels()) { Transform nodeMarker = Instantiate(hexPREFAB, lvlManager.getWorldPosFromTilePos(lvl.levelTile.tileIndex_X, lvl.levelTile.tileIndex_Y, lvl.levelTile.height_), new Quaternion()); lvl.levelTile.hexObject = nodeMarker; //nodeMarker.gameObject.GetComponent<Renderer>().material = defaultTileMaterial; nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial("Grass"); } }
// Update is called once per frame void Update() { //cursorMove(); switch (GameStateManager.instance.getGlobalStateIndex()) { case GameStateManager.STATE_CAMPAIGN_EDITOR: cursorMarker.position = Vector3.Scale(leftHandCursor.position, (truncY)) + offY; lvl = lvlManager.getLevelObjectFromTilePos(lvlManager.getTilePosFromWorldPos(leftHandCursor.position)); if (lvl != null) { GameStateManager.instance.setCurrentLevel(lvl); //Reset the previous tile back to normal if (previousSelectedTile != null) { // previousSelectedTile.GetComponent<Renderer>().material = previousSelectedTileMaterial; // previousSelectedTileMaterial = lvl.levelTile.hexObject.gameObject.GetComponent<Renderer>().material; previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain()); } //Set material of selected tile lvl.levelTile.hexObject.gameObject.GetComponent <Renderer>().material = selectedTileMaterial; //Add update list of selected tiles selectedTiles.Clear(); selectedTiles.Add(lvl.levelTile); //update debug text of current selected tile selectedLevelText.text = "lvl :" + lvl.levelTile.tileIndex_X + " " + lvl.levelTile.tileIndex_Y; //previousSelectedTile = lvl.levelTile.hexObject.gameObject; previousSelectedTile = lvl.levelTile; } break; case GameStateManager.STATE_LEVEL_EDITOR: lvl = GameStateManager.instance.getCurrentLevel(); //Debug.Log("level state :"+lvl.levelTile.ToString()); cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY; //cursorMarker.position *= 5f; //VRAR_Tile selTile= lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(rightHandCursor.position).x, lvlManager.getTilePosFromWorldPos(rightHandCursor.position).y); VRAR_Tile selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y); if (selTile != null) { //Reset the previous tile back to normal if (previousSelectedTile != null) { //previousSelectedTile.GetComponent<Renderer>().material = previousSelectedTileMaterial; //previousSelectedTileMaterial = selTile.hexObject.gameObject.GetComponent<Renderer>().material; previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain()); } //Set material of selected tile selTile.hexObject.gameObject.GetComponent <Renderer>().material = selectedTileMaterial; //Add update list of selected tiles selectedTiles.Clear(); selectedTiles.Add(selTile); //update debug text of current selected tile selectedLevelText.text = "lvl :" + selTile.tileIndex_X + " " + selTile.tileIndex_Y; //previousSelectedTile = selTile.hexObject.gameObject; previousSelectedTile = selTile; lvl.tileUpdate(0, 0); } break; case GameStateManager.STATE_PLAYING: break; } }
//------------------------------------------------- void Awake() { _instance = this; }
public void updateTile(VRAR_Tile tile) { if (tile != null) { if (GameStateManager.getInstance().getGlobalStateIndex() == GameStateManager.STATE_PLAYING) { if (tile.tileGameObject == null) { /* * tile.tileGameObject = new GameObject(tile.ToString()) * { * tag = "vrar_lvl", * transform = * { * position = LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y), * parent = this.targetTransform * } * }.transform;*/ tile.tileGameObject = new GameObject(tile.ToString()).transform; tile.tileGameObject.tag = "vrar_lvl"; tile.tileGameObject.transform.position = LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y); tile.tileGameObject.transform.parent = this.targetTransform; //tile.tileGameObject.localScale = new Vector3(LevelManager.TILE_SCALE, LevelManager.TILE_SCALE, LevelManager.TILE_SCALE); StartCoroutine(ScaleIn(tile.tileGameObject, new Vector3(LevelManager.TILE_SCALE, LevelManager.TILE_SCALE, LevelManager.TILE_SCALE), 0.5f, true, null)); } else { //THIS GOT ADDED BY ME (RONALD) TO PREVENT DUPLICATE OBJECTS I DONT THINK IT BREAKS ANYTHING return; } Transform tileGameObject = tile.tileGameObject; IEnumerator enumerator = tileGameObject.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform = (Transform)obj; } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } Transform transform2 = UnityEngine.Object.Instantiate <Transform>(TileObjectManger.STATIC_HEX_PREFAB); transform2.parent = tileGameObject; transform2.localPosition = new Vector3(0f, 0f, 0f); tile.hexObject = transform2; transform2.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain); StartCoroutine(ScaleIn(tile.hexObject, new Vector3(1f, tile.height_, 1f), 0.5f, true, null)); //transform2.localScale = new Vector3(1f, tile.height_, 1f); //Water gets special treatment, its a bit lower scale if (tile.terrain == "Water") { transform2.gameObject.transform.localScale = new Vector3(1f, tile.height_ * 0.7f, 1f); } if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null) { Transform transform3 = UnityEngine.Object.Instantiate <Transform>(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), LevelManager.Instance.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y), default(Quaternion)); transform3.parent = tileGameObject.transform; transform3.name = tile.getInteractableObject().getObjectID().ToString(); } foreach (BaseTileObject baseTileObject in tile.getDumbObjectsList()) { if (baseTileObject.getPrefab() != null) { int objectID = baseTileObject.getObjectID(); Transform transform4 = UnityEngine.Object.Instantiate <Transform>(baseTileObject.getPrefab()); transform4.localScale = tile.GetScale(objectID); transform4.position = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f); transform4.SetParent(tileGameObject.transform, false); transform4.name = baseTileObject.getObjectID().ToString(); } else { UnityEngine.Debug.Log("Prefab is null"); } } if (tile.getInterior() != null) { Transform interOjbect = Instantiate(tile.getInterior().getPrefab()); interOjbect.position = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f); interOjbect.SetParent(tileGameObject.transform, false); interOjbect.name = tile.getInterior().getName(); } if (tile.getNPC() != null) { //Debug.Log("SPAWNING AN NPC AT: " + tile.tileIndex_X + " " + tile.tileIndex_Y); Transform npcObject = tile.getNPC().SpawnNPC(new Vector2Int(tile.tileIndex_X, tile.tileIndex_Y)).transform; npcObject.position = new Vector3(0f, tile.height_ * 0.1f * 4.47f, 0f); npcObject.SetParent(tileGameObject.transform, false); npcObject.name = tile.getNPC().ToString(); } } else { UnityEngine.Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.getInstance().getGlobalStateIndex()); } } }
// Update is called once per frame void Update() { //cursorMove(); switch (GameStateManager.instance.getGlobalStateIndex()) { case GameStateManager.STATE_CAMPAIGN_EDITOR: cursorMarker.position = Vector3.Scale(leftHandCursor.position, (truncY)) + offY; lvl = lvlManager.getLevelObjectFromTilePos(lvlManager.getTilePosFromWorldPos(leftHandCursor.position)); if (lvl != null) { GameStateManager.instance.setCurrentLevel(lvl); //Reset the previous tile back to normal if (previousSelectedTile != null) { previousSelectedTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain()); } //Set material of selected tile lvl.levelTile.hexObject.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial("Selection"); //Add update list of selected tiles selectedTiles.Clear(); selectedTiles.Add(lvl.levelTile); //update debug text of current selected tile selectedLevelText.text = "lvl :" + lvl.levelTile.tileIndex_X + " " + lvl.levelTile.tileIndex_Y; previousSelectedTile = lvl.levelTile; } break; case GameStateManager.STATE_LEVEL_EDITOR: lvl = GameStateManager.instance.getCurrentLevel(); cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY; selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y); if (selTile != null && selTile.hexObject != null && !Valve.VR.InteractionSystem.VRInputHandler.isInTileObjectEditMenu) { //if selectedHexPrefab is a prefab (so not in any scene) if (selectedHexPrefab.gameObject.scene.name == null) { selectedHexPrefabItem = selectedHexPrefab; //spawn prefab is scene selectedHexPrefab = Instantiate(selectedHexPrefab); } //Reset the previous tile back to normal if (previousSelectedTile != null) { //previousSelectedTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(previousSelectedTile.GetTerrain()); } //Set material of selected tile //selTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial("Selection"); selectedHexPrefab.gameObject.transform.position = selTile.hexObject.position + (new Vector3(0, (float)(selTile.height_ + 0.1), 0)); //Add update list of selected tiles selectedTiles.Clear(); selectedTiles.Add(selTile); //update debug text of current selected tile selectedLevelText.text = "lvl :" + selTile.tileIndex_X + " " + selTile.tileIndex_Y; previousSelectedTile = selTile; lvl.tileUpdate(0, 0); } break; case GameStateManager.STATE_PLAYING: lvl = GameStateManager.instance.getCurrentLevel(); cursorMarker.position = Vector3.Scale(rightHandCursor.position, (truncY)) + offY; selTile = lvl.getTileFromIndexPos(lvlManager.getTilePosFromWorldPos(cursorMarker.position).x, lvlManager.getTilePosFromWorldPos(cursorMarker.position).y); if (selTile != null && selTile.hexObject != null && !Valve.VR.InteractionSystem.VRInputHandler.isInTileObjectEditMenu) { if (prevSelTile != selTile) { //var tileMessage = new TileMessage(selTile); if (prevSelTile != null && prevSelTile.hexObject != null) { foreach (VRAR_Tile tile in GameStateManager.instance.getCurrentLevel().dirtyTiles) { var tileMessage = new TileMessage(tile, false); NetworkServer.SendToAll(CustomNetMsg.Tile, tileMessage); } GameStateManager.instance.getCurrentLevel().dirtyTiles.Clear(); } } //if selectedHexPrefab is a prefab (so not in any scene) if (selectedHexPrefab.gameObject.scene.name == null) { selectedHexPrefabItem = selectedHexPrefab; //spawn prefab is scene selectedHexPrefab = Instantiate(selectedHexPrefab); } //Set material of selected tile selectedHexPrefab.gameObject.transform.position = selTile.hexObject.position + (new Vector3(0, selTile.height_ - 1, 0)); prevSelTile = selTile; } break; } }
/* * public void updateTile(VRAR_Tile newTile) * { * if(GameStateManager.instance.getGlobalStateIndex()==GameStateManager.STATE_LEVEL_EDITOR) * { * //newTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(newTile.terrain); * newTile.hexObject.gameObject.GetComponent<Renderer>().material = TileObjectManger.getMaterial(newTile.terrain); * newTile.hexObject.localScale = new Vector3(1, newTile.height_, 1); * * foreach (Transform child in newTile.hexObject.transform) * { * Destroy(child.gameObject); * } * * * //spawn interactable object * if (TileObjectManger.TILE_OBJECTS[newTile.getInteractableObject().getObjectID()].getPrefab() != null) * { * Transform dumbObject = Instantiate(TileObjectManger.TILE_OBJECTS[newTile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(newTile.tileIndex_X, newTile.tileIndex_Y, newTile.height_), new Quaternion()); * dumbObject.parent = newTile.hexObject; * } * * //spawn dumb objects * foreach (BaseTileObject dumbObject in newTile.getDumbObjectsList()) * { * if (dumbObject.getPrefab() != null) * { * Transform interOjbect = Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(newTile.tileIndex_X, newTile.tileIndex_Y, newTile.height_ + 2), new Quaternion()); * interOjbect.parent = newTile.hexObject; * } * } * } * else * { * Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.instance.getGlobalStateIndex()); * } * }*/ public void updateTile(VRAR_Tile tile) { if (tile != null) { if (GameStateManager.instance.getGlobalStateIndex() == GameStateManager.STATE_LEVEL_EDITOR || GameStateManager.instance.getGlobalStateIndex() == GameStateManager.STATE_PLAYING) { if (!tile.isPhantom) {//spawn/update tile if (tile.tileGameObject == null) { GameObject tileObject = new GameObject(tile.ToString()); tileObject.tag = "vrar_lvl"; tileObject.transform.position = lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, 1); tileObject.transform.parent = tilesParent; tile.tileGameObject = tileObject.transform; } Transform tileGameObjectTransform = tile.tileGameObject; foreach (Transform child in tileGameObjectTransform) { Destroy(child.gameObject); } //create the tile itself Transform nodeMarker = Instantiate(hexPREFAB); nodeMarker.parent = tileGameObjectTransform; nodeMarker.localPosition = new Vector3(0, 0, 0); tile.hexObject = nodeMarker; //Transform nodeMarker = tileGameObjectTransform.Find(hexPREFAB.name+"(Clone)"); nodeMarker.gameObject.GetComponent <Renderer>().material = TileObjectManger.getMaterial(tile.terrain); nodeMarker.localScale = new Vector3(1, tile.height_, 1); //spawn interactable object if (TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab() != null) { Transform dumbObject = Instantiate(TileObjectManger.TILE_OBJECTS[tile.getInteractableObject().getObjectID()].getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion()); dumbObject.parent = tileGameObjectTransform.transform; dumbObject.name = tile.getInteractableObject().getObjectID().ToString(); } //spawn dumb objects foreach (BaseTileObject dumbObject in tile.getDumbObjectsList()) { if (dumbObject.getPrefab() != null) { int id = dumbObject.getObjectID(); Transform interOjbect = Instantiate(dumbObject.getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion()); Vector3 pos = tile.GetObjectPosition(id); interOjbect.position = new Vector3(pos.x, tile.height_ + 1, pos.z); interOjbect.localScale = tile.GetScale(id); interOjbect.parent = tileGameObjectTransform.transform; interOjbect.name = dumbObject.getObjectID().ToString(); interOjbect.localRotation = tile.GetRotation(id); } else { Debug.Log("Prefab is null"); } } //tile.addNPCTileObject(); if (tile.getNPC() != null) { Transform interOjbect = tile.getNPC().SpawnNPC(new Vector2Int(tile.tileIndex_X, tile.tileIndex_Y)).transform; interOjbect.position = lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1); //Transform interOjbect = Instantiate(tile.getNPCTileObject().getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion()); //interOjbect.position = new Vector3(pos.x, tile.height_ + 1, pos.z); //interOjbect.localScale = tile.GetScale(id); interOjbect.parent = tileGameObjectTransform.transform; interOjbect.name = tile.getNPC().ToString(); //interOjbect.localRotation = tile.GetRotation(id); } if (tile.getInterior() != null) { Transform interOjbect = Instantiate(tile.getInterior().getPrefab(), lvlManager.getWorldPosFromTilePos(tile.tileIndex_X, tile.tileIndex_Y, tile.height_ + 1), new Quaternion()); //interOjbect.position = new Vector3(pos.x, tile.height_ + 1, pos.z); //interOjbect.localScale = tile.GetScale(id); interOjbect.parent = tileGameObjectTransform.transform; interOjbect.name = tile.getInterior().getName(); //interOjbect.localRotation = tile.GetRotation(id); } } else {//delete tile from world if (tile.tileGameObject != null) { Destroy(tile.tileGameObject.gameObject); } } } else { Debug.LogError("TileRenderer.updateTile() called while game is in invalid state. State should be GameStateManager.STATE_LEVEL_EDITOR while the game is in :" + GameStateManager.instance.getGlobalStateIndex()); } } }