private bool CheckTile(IntegerCoordinate2D coordinate)
 {
     if (_collisionTileBuffer.TryGetValue(coordinate, out _))
     {
         return(false);
     }
     CreateTile(coordinate);
     return(true);
 }
Esempio n. 2
0
        private void SetLocation(IntegerCoordinate2D location, TerrainCollisionController controller)
        {
            _location = location;
            var currentTransform = transform;

            currentTransform.name     = "Collision Tile (" + _location.x + " " + _location.y + ")";
            _controller               = controller;
            _physicalSize             = (_controller.collisionBlockVertexCount - 1) * controller.terrainController.terrainGeneratorSettings.gridSize;
            currentTransform.position = new Vector3(_physicalSize * _location.x, 0, _physicalSize * _location.y);
            StartCoroutine(Build());
        }
Esempio n. 3
0
        //Create a new collision Tile.
        public static TerrainCollisionTile Instantiate(IntegerCoordinate2D location, TerrainCollisionController controller)
        {
            var gameObject = new GameObject();

            gameObject.transform.parent = controller.child;
            var collider = gameObject.AddComponent <MeshCollider>();

            collider.cookingOptions = MeshColliderCookingOptions.None;
            //collider.convex = true;
            var tile = gameObject.AddComponent <TerrainCollisionTile>();

            tile.SetLocation(location, controller);
            return(tile);
        }
        private void FixedUpdate()
        {
            UpdateLoadingCenters();
            var loadsThisFrame = 0;

            foreach (var loadingState in _currentCenterLoadingStates)
            {
                var center = loadingState.Key;
                for (var i = loadingState.Value.loadingCircleIndex; i < _loadingCircle.Length; i++)
                {
                    if (loadsThisFrame > 2)
                    {
                        break;
                    }
                    loadingState.Value.loadingCircleIndex = i;
                    _intermediateCoordinate2D             = new IntegerCoordinate2D(_loadingCircle[i].x + center.x, _loadingCircle[i].y + center.y);
                    if (CheckTile(_intermediateCoordinate2D))
                    {
                        loadsThisFrame++;
                    }
                }
            }
        }
 private void CreateTile(IntegerCoordinate2D coordinate)
 {
     _collisionTileBuffer.Add(coordinate, TerrainCollisionTile.Instantiate(coordinate, this));
 }