static void ChunksEnterLeaveViewRes(object data) { CSChunksEnterLeaveViewRes rsp = NetworkManager.Deserialize <CSChunksEnterLeaveViewRes>(data); //Debug.Log("CSChunksEnterLeaveViewRes," + rsp.EnterViewChunks.Count + "," + rsp.LeaveViewChunks.Count); if (rsp.RetCode == 0) { foreach (CSVector2Int csv in rsp.LeaveViewChunks) { UnloadChunk(csv.x, csv.y); } foreach (CSChunk cschunk in rsp.EnterViewChunks) { LoadChunk(cschunk); } if (!PlayerController.isInitialized) { PlayerController.Init(); LocalNavMeshBuilder.Init(); ChunkRefresher.ForceRefreshAll(); } ChunkChecker.FinishRefresh(); } else { FastTips.Show(rsp.RetCode); } }
void Start() { player = GameObject.FindGameObjectWithTag("Player"); navGenerator = GameObject.FindGameObjectWithTag("navmeshgen"); navmeshbuild = navGenerator.GetComponent <LocalNavMeshBuilder>(); floorObject = UnityEngine.Random.Range(5, 21); GenerateMap(); }
public void Awake() { GameObject floor = GameObject.Find("Floor"); _localNavMeshBuilder = gameObject.AddComponent <LocalNavMeshBuilder>(); _localNavMeshBuilder.m_Size = new Vector3(floor.transform.localScale.x, 100, floor.transform.localScale.z); //Destroy(x); }
// Update is called once per frame void Update() { if (Input.GetKey(KeyCode.A)) { LocalNavMeshBuilder localNavMesh = GetComponent <LocalNavMeshBuilder>(); localNavMesh.enabled = false; localNavMesh.enabled = true; } }
public static void Init() { if (instance == null) { GameObject go = new GameObject("LocalNavMeshBuilder"); instance = go.AddComponent <LocalNavMeshBuilder>(); instance.m_Tracked = PlayerController.instance.transform; } }
private void Awake() { if (_instance != null && _instance != this) { Destroy(this.gameObject); } else { _instance = this; } }
// Start is called before the first frame update void Start() { OrderPie.fillAmount = 0; UnitUI.SetActive(false); _particleSystem = this.gameObject.GetComponentInChildren <ParticleSystem>(); PlayerUnitController.Instance.RegisterUnit(this); this.pathAgent = gameObject.GetComponent <NavMeshAgent>(); this.mapper = GetComponent <LocalNavMeshBuilder>(); this.pathrangebase = mapper.m_Size; StartCoroutine(UpdateClosePathPoint(.5f)); }
private void SetUpNavMeshArea() { NavMeshBoundingBox.transform.position = new Vector3((horizontalLengthOfGrid / 2.0f) * 10, 0f, (verticalLengthOfGrid / 2.0f) * 10); LocalNavMeshBuilder bakeBox = NavMeshBoundingBox.GetComponent <LocalNavMeshBuilder>(); bakeBox.m_Size = new Vector3((horizontalLengthOfGrid + 2f) * 10f, 100f, (verticalLengthOfGrid + 2f) * 10); Vector3 scaleForNavMeshTravelPanel = new Vector3(bakeBox.m_Size.x, 0f, bakeBox.m_Size.z); GameObject navMeshPanel = Instantiate(floorPrefab, NavMeshBoundingBox.transform.position, Quaternion.Euler(0f, 0f, 0f)); navMeshPanel.gameObject.name = "FloorForNavMeshTravel"; navMeshPanel.transform.parent = floorParent.transform; navMeshPanel.transform.localScale = scaleForNavMeshTravelPanel; navMeshPanel.GetComponent <Renderer>().enabled = false; navMeshPanel.AddComponent <NavMeshSourceTag>(); }
void Start() { SettingsPanel.Init(); ChunkRefresher.Init(); ChunkPool.Init(); ItemSelectPanel.Show(); ChatPanel.ShowChatPanel(); InventorySystem.Init(); GameModeManager.Init(); // load chunk here ChunkChecker.Init(); PlayerController.Init(); LocalNavMeshBuilder.Init(); ChunkRefresher.ForceRefreshAll(); }
/// <summary> /// Load in a level from JSON /// </summary> /// <param name="name">JSON file, negate extension</param> /// <param name="isReload">Use if reloading.</param> public void LoadLevel(string name = "Test_Level", bool isReload = false) { if (isReload) { UnloadLevel(); } var levelFile = LoadLevelDataFromFile(name); // load json first _level = JsonConvert.DeserializeObject <LevelFile>(levelFile); // then load actual data GameObject Level = new GameObject("Level"); // Generate level object for walls n stuff // floor GameObject levelFloor = floor; levelFloor.transform.localScale = new Vector3(_level.LevelInformation.sizeX, 1, _level.LevelInformation.sizeY); Instantiate(levelFloor); // player var playerT = _level.sceneData.objectData.playerPosition; var playerR = (new Quaternion(playerT.rotation.x, playerT.rotation.y, playerT.rotation.z, playerT.rotation.w)); var p = Instantiate(player, playerT.position, playerR); p.transform.Rotate(0, 90, 0); // for some reason the player sometimes comes out this way // create all non-enemy objects CreateWalls(_level.sceneData.objectData.walls, Level); CreateInteractableObjects(_level.sceneData.objectData.interactableObjects); CreateMissionTriggers(_level.sceneData.objectData.missionTriggers); // Create navmesh before loading in enemies so they don't crash the game LocalNavMeshBuilder localNavMeshBuilder = gameObject.AddComponent <LocalNavMeshBuilder>(); localNavMeshBuilder.UpdateNavMesh(); // then create enemies CreateEnemies(_level.sceneData.objectData.enemies); }
// Returns the instantiated player object for further use public GameObject GenerateLevel(int levelNumber, GameObject player) { var currentLevel = levels[levelNumber]; var ground = GameObject.FindWithTag("Ground"); int mapWidth = currentLevel.levelMap.GetLength(0); int mapHeight = currentLevel.levelMap.GetLength(1); ground.transform.localScale = new Vector3(mapWidth * 1.5f, 1, mapHeight * 1.5f); localNavMeshBuilder = GameObject.FindWithTag("LocalNavMeshBuilder").GetComponent <LocalNavMeshBuilder>(); localNavMeshBuilder.m_Size.x = mapWidth * 11; localNavMeshBuilder.m_Size.z = mapHeight * 11; var bossPositions = new List <(int x, int y)>(); GameObject playerObject = null; for (int x = 0; x < mapWidth; x++) { for (int y = 0; y < mapHeight; y++) { switch (currentLevel.levelMap[x, y]) { case MapObjectType.Empty: break; case MapObjectType.Wall: var wallRenderer = wall.GetComponent <Renderer>(); wallRenderer.material = currentLevel.wallMaterial; InstantiateObject(wall, x, y, mapWidth, mapHeight); break; case MapObjectType.Player: break; case MapObjectType.RequiredItem: InstantiateObject(requiredItem, x, y, mapWidth, mapHeight); break; case MapObjectType.Boss: bossPositions.Add((x, y)); break; case MapObjectType.Enemy: InstantiateObject(waypoint, x, y, mapWidth, mapHeight); break; case MapObjectType.BossEntry: // Set the tag to entry InstantiateObject(bossExitEntryDoor, x, y, mapWidth, mapHeight).tag = "BossEntranceDoor"; break; case MapObjectType.LevelExit: // Set the tag to exit InstantiateObject(bossExitEntryDoor, x, y, mapWidth, mapHeight).tag = "LevelExitDoor"; InstantiateObject(levelExitTrigger, x, y, mapWidth, mapHeight); break; case MapObjectType.ItemPickup: // This will make sure there are spots without either int index = Random.Range(0, itemPickups.Count * 2); if (index < itemPickups.Count) { InstantiateObject(itemPickups[Random.Range(0, itemPickups.Count)], x, y, mapWidth, mapHeight); } break; case MapObjectType.Lights: InstantiateObject(lights, x, y, mapWidth, mapHeight, 6.8f); break; default: break; } } } int startingPositionIndex = Random.Range(0, currentLevel.playerPositions.Count); var startingPosition = currentLevel.playerPositions[startingPositionIndex]; playerObject = InstantiateObject(player, startingPosition.x, startingPosition.y, mapWidth, mapHeight); // Instantiate boss and enemies after the player has been instantiated GetComponent <GameManagement>().RequiredItemsAmount = currentLevel.numberOfItems - 1; SpawnEnemies(currentLevel); // The boss gets stuck in a wall unless the navmeshagent is disabled and the boss is manually placed back to its position. //InstantiateObject(bosses[0], bossPosition.x, bossPosition.y, mapWidth, mapHeight); foreach (var bossPosition in bossPositions) { var bossCoroutine = BossNavigationPosition(bosses[currentLevel.id - 1], bossPosition, mapWidth, mapHeight); StartCoroutine(bossCoroutine); } return(playerObject); }
private Bounds QuantizedBounds() { return(new Bounds(LocalNavMeshBuilder.Quantize(!Object.op_Implicit((Object)this.m_Tracked) ? ((Component)this).get_transform().get_position() : this.m_Tracked.get_position(), Vector3.op_Multiply(0.1f, this.m_Size)), this.m_Size)); }
void Awake() { Instance = this; }
// Use this for initialization async void Start() { lnmb = GetComponent <LocalNavMeshBuilder>(); //Gather together all refrences you will need later on root = GameObject.Find("MovablePlayfield"); floor = GameObject.Find("DSBasementFloor"); environment = GameObject.Find("Environment"); enemy = GameObject.Find("VirusEnemyMaze"); //Build the values for xExt and zExt from xHalfExt and zHalfExt xExt = 2 * xHalfExt + 1; zExt = 2 * zHalfExt + 1; //Build an offset for the dyn playfield from the BasePlatform e.g. the bigger halfExtent value in unity units Transform maze = GameObject.Find("Maze").transform; float biggerHalf = Mathf.Max(xHalfExt, zHalfExt); //Vector3 f = floor.transform.position; //maze.localPosition = new Vector3(f.x, f.y + biggerHalf, f.z); //Calculate a scale factor for scaling the non-movable environment (and therefore the camera) and the BasePlatform float scaleFactor = Mathf.Max(xExt, zExt); ////Scale Environment //Vector3 oldScaleEnv = environment.transform.localScale; //environment.transform.localScale = new Vector3(oldScaleEnv.x * scaleFactor / 3, oldScaleEnv.y * scaleFactor / 3, oldScaleEnv.z * scaleFactor / 3); //Scale + position BasePlate //Vector3 oldScaleFloor = floor.transform.localScale; //floor.transform.localScale = new Vector3(oldScaleFloor.x * scaleFactor / 3, oldScaleFloor.y, oldScaleFloor.z * scaleFactor / 3); //Create the outer walls for given extXZ outerWallsParent = GameObject.Find("OuterWalls").transform; CreateOuterWalls(); //create a maze CalcMaze(); //Build the maze from the given set of prefabs tilesParent = GameObject.Find("Tiles").transform; innerWallsParent = GameObject.Find("InnerWalls").transform; BuildMaze(); //Set the walls for the maze (place only one wall between two cells, not two!) // already done in CalcMaze() //Place the PlayerBall above the playfield resetPosition = new Vector3(xExt * 2 - 2, 10, -zExt * 2 + 2); placeBallStart(resetPosition); // Make nav mesh lnmb.enabled = true; // Resize field //transform.parent.localScale = new Vector3(0.1f, 0.1f, 0.1f); //await Task.Delay(TimeSpan.FromSeconds(2)); //placeBallStart(FirstPlate.localPosition); }
LocalNavMeshBuilder() { Instance = this; }