private void Update() { //tiles start to generate some time before music starts playing and finish generating sometime before music if (gameIsPlaying) { if (!isCurrentTileDequeued) { if (tileQueue.Count == 0 && createdTiles.Count == 0) { ResetGame(); ChangeTileMode(); InitializeGame(); } else { currentTileInfo = tileQueue.Dequeue(); isCurrentTileDequeued = true; } } if (currentTileInfo.tileTimePosStart <= timeTracked && areTilesMoving) { if (currentTileInfo.tile.tileType == TileBaseContainer.TileType.TAP_TILE) { currentTile = Instantiate(tapTilePrefab, GetRandomLane(), Quaternion.identity); createdTiles.Add(currentTile); } else if (currentTileInfo.tile.tileType == TileBaseContainer.TileType.SLIDE_TILE) { currentTile = Instantiate(slideTilePrefab, GetRandomLane(), Quaternion.identity); createdTiles.Add(currentTile); } TileBase tileBase = currentTile.GetComponent <TileBase>(); tileBase.GetTileMapDataFromMap(currentTileInfo.tile); //lastTile = tileBase; if (currentTileInfo.tile.tileType == TileBaseContainer.TileType.SLIDE_TILE) { currentTile.transform.localScale = new Vector3 { x = currentTile.transform.localScale.x, y = tileBase.tileYSize / 10, z = 1 }; } currentTile.transform.position = new Vector3 { x = currentTile.transform.position.x, y = currentTile.transform.position.y + tileBase.tileYSize / 2, z = -2 }; isCurrentTileDequeued = false; } } }
private void SceneGUI(SceneView sceneView) { // This will have scene events including mouse down on scenes objects Event guiEvent = Event.current; if (isTileCreationOn) { DrawCreatorUI(); Ray mouseRay = HandleUtility.GUIPointToWorldRay(guiEvent.mousePosition); float drawPlaneHeight = 0; float dstToDrawPlane = (drawPlaneHeight - mouseRay.origin.z) / mouseRay.direction.z; Vector3 mousePosition = mouseRay.GetPoint(dstToDrawPlane); if (guiEvent.type == EventType.MouseDown && guiEvent.button == 0) { Debug.Log(switchTile); AddTileToSequence(mousePosition.y); } if (guiEvent.keyCode == KeyCode.K) { window.Close(); isTileCreationOn = false; } } void AddTileToSequence(float mouseYPos) { Vector3 placePos = new Vector3 { x = 0.5f, y = lastYPos, z = 0 }; //Tile info to fill in to the list TileMapData.TileInfo tileInfo = new TileMapData.TileInfo(); TileBaseContainer tile; float tileYOrigin; Debug.Log(isDoubleTapTile); float slideTileSize; GameObject instantiatedTile; Debug.Log(switchTile); switch (switchTile) { case switchTileEnum.SLIDE_TILE: //calculate the size slideTileSize = (float)(Math.Round(Convert.ToDouble(mouseYPos), 2)) - lastYPos; tileYOrigin = lastYPos; lastYPos += slideTileSize; placePos.y += slideTileSize / 2; Debug.Log(slideTilePrefab); instantiatedTile = Instantiate(slideTilePrefab, placePos, Quaternion.identity); lastTile = instantiatedTile; instantiatedTile.transform.localScale = new Vector3 { x = instantiatedTile.transform.localScale.x, y = slideTileSize / 10, z = 1 }; tile = new TileBaseContainer(); tile.tileType = TileBaseContainer.TileType.SLIDE_TILE; tile.yAxisOrigin = tileYOrigin; tile.yAxisEnd = lastYPos; tile.tileYSize = slideTileSize; tileInfo.tile = tile; //I probably need to do some calculations here idfk how tileInfo.tileTimePosStart = tileYOrigin - tileLaneOrigin; break; case switchTileEnum.TAP_TILE: tileYOrigin = lastYPos; lastYPos += TapTile.tileYSize; placePos.y += TapTile.tileYSize / 2; lastTile = Instantiate(tapTilePrefab, placePos, Quaternion.identity); tile = new TileBaseContainer(); tile.tileType = TileBaseContainer.TileType.TAP_TILE; tile.yAxisOrigin = tileYOrigin; tile.yAxisEnd = lastYPos; tile.tileYSize = TapTile.tileYSize; tileInfo.tile = tile; //I probably need to do some calculations here idfk howd tileInfo.tileTimePosStart = tileYOrigin - tileLaneOrigin; break; case switchTileEnum.DOUBLE_TAP_TILE: tileYOrigin = lastYPos; lastYPos += TapTile.tileYSize; placePos.y += TapTile.tileYSize / 2; lastTile = Instantiate(tapTilePrefab, placePos, Quaternion.identity); tile = new TileBaseContainer(); tile.tileType = TileBaseContainer.TileType.TAP_TILE; tile.yAxisOrigin = tileYOrigin; tile.yAxisEnd = lastYPos; tile.tileYSize = TapTile.tileYSize; tileInfo.tile = tile; //I probably need to do some calculations here idfk howd tileInfo.tileTimePosStart = tileYOrigin - tileLaneOrigin; break; case switchTileEnum.DOUBLE_SLIDE_TILE: Debug.Log("Does this shit actually work?"); //calculate the size slideTileSize = (float)(Math.Round(Convert.ToDouble(mouseYPos), 2)) - lastYPos; tileYOrigin = lastYPos; lastYPos += slideTileSize; placePos.y += slideTileSize / 2; Debug.Log(slideTilePrefab); instantiatedTile = Instantiate(slideTilePrefab, placePos, Quaternion.identity); lastTile = instantiatedTile; instantiatedTile.transform.localScale = new Vector3 { x = instantiatedTile.transform.localScale.x, y = slideTileSize / 10, z = 1 }; tile = new TileBaseContainer(); tile.tileType = TileBaseContainer.TileType.SLIDE_TILE; tile.yAxisOrigin = tileYOrigin; tile.yAxisEnd = lastYPos; tile.tileYSize = slideTileSize; tileInfo.tile = tile; //I probably need to do some calculations here idfk how tileInfo.tileTimePosStart = tileYOrigin - tileLaneOrigin; break; default: break; } tileMapData.tileSequence.Add(tileInfo); } void DrawCreatorUI() { Debug.DrawLine(startingLineOrigin, startingLineTo, Color.red); } }