//Landscape chunk Slicing visualization Handling private void SlicingUpdate(GameTime timeSpend) { if (SortedChunks.Count(x => x.State != ChunkState.DisplayInSyncWithMeshes) > 0) { return; } if (_inputsManager.ActionsManager.isTriggered(UtopiaActions.LandscapeSlicerUp)) { if (_sliceValue == -1) { _sliceValue = (int)_camManager.ActiveCamera.WorldPosition.ValueInterp.Y; } _sliceValue++; } if (_inputsManager.ActionsManager.isTriggered(UtopiaActions.LandscapeSlicerDown)) { if (_sliceValue == -1) { _sliceValue = (int)_camManager.ActiveCamera.WorldPosition.ValueInterp.Y; } _sliceValue--; } if (_inputsManager.ActionsManager.isTriggered(UtopiaActions.LandscapeSlicerOff)) { _sliceValue = -1; } }
private void CheckWrapping() { if (SortedChunks.Count(x => x.State != ChunkState.DisplayInSyncWithMeshes) > 0) { return; } // Get World Border line ! => Highest and lowest X et Z chunk components //Compute Player position against WorldRange var resultmin = new Vector3D(PlayerManager.Player.Position.X - VisualWorldParameters.WorldRange.Position.X, PlayerManager.Player.Position.Y - VisualWorldParameters.WorldRange.Position.Y, PlayerManager.Player.Position.Z - VisualWorldParameters.WorldRange.Position.Z); var resultmax = new Vector3D(VisualWorldParameters.WorldRange.Max.X - PlayerManager.Player.Position.X, VisualWorldParameters.WorldRange.Max.Y - PlayerManager.Player.Position.Y, VisualWorldParameters.WorldRange.Max.Z - PlayerManager.Player.Position.Z); float wrapOrder = float.MaxValue; ChunkWrapType operation = ChunkWrapType.Z_Plus1; //FindLowest value ! if (_chunkCreationTrigger > resultmin.X || _chunkCreationTrigger > resultmin.Z || _chunkCreationTrigger > resultmax.X || _chunkCreationTrigger > resultmax.Z) { if (resultmin.X < wrapOrder) { wrapOrder = (float)resultmin.X; operation = ChunkWrapType.X_Minus1; } if (resultmin.Z < wrapOrder) { wrapOrder = (float)resultmin.Z; operation = ChunkWrapType.Z_Minus1; } if (resultmax.X < wrapOrder) { wrapOrder = (float)resultmax.X; operation = ChunkWrapType.X_Plus1; } if (resultmax.Z < wrapOrder) { wrapOrder = (float)resultmax.Z; operation = ChunkWrapType.Z_Plus1; } _chunkWrapper.AddWrapOperation(operation); } }