Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
 void Start()
 {
     player       = GameObject.FindGameObjectWithTag("Player");
     navGenerator = GameObject.FindGameObjectWithTag("navmeshgen");
     navmeshbuild = navGenerator.GetComponent <LocalNavMeshBuilder>();
     floorObject  = UnityEngine.Random.Range(5, 21);
     GenerateMap();
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKey(KeyCode.A))
     {
         LocalNavMeshBuilder localNavMesh = GetComponent <LocalNavMeshBuilder>();
         localNavMesh.enabled = false;
         localNavMesh.enabled = true;
     }
 }
Exemplo n.º 5
0
 public static void Init()
 {
     if (instance == null)
     {
         GameObject go = new GameObject("LocalNavMeshBuilder");
         instance           = go.AddComponent <LocalNavMeshBuilder>();
         instance.m_Tracked = PlayerController.instance.transform;
     }
 }
Exemplo n.º 6
0
 private void Awake()
 {
     if (_instance != null && _instance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         _instance = this;
     }
 }
Exemplo n.º 7
0
 // 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));
 }
Exemplo n.º 8
0
    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>();
    }
Exemplo n.º 9
0
    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();
    }
Exemplo n.º 10
0
        /// <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);
    }
Exemplo n.º 12
0
 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));
 }
Exemplo n.º 13
0
 void Awake()
 {
     Instance = this;
 }
Exemplo n.º 14
0
    // 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);
    }
Exemplo n.º 15
0
 LocalNavMeshBuilder()
 {
     Instance = this;
 }