public ChunksEndlessHolder(Vector3Int position, ChunkTracker chunkTracker, GeometryManager geometryManager)
 {
     Position        = position;
     HierarchySize   = Chunk.Settings.MaxHierarchySize;
     ChunkTracker    = chunkTracker;
     GeometryManager = geometryManager;
 }
        /// <summary> Constructor. </summary>
        /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception>
        /// <param name="worldGrid"> The world grid which should provide the grid data to be watched. </param>
        /// <param name="numUnitsWide"> How many units wide the area that should be watched. </param>
        /// <param name="numUnitsHigh"> How many units high the area that should be watched. </param>
        public WorldGridSlice(WorldGrid worldGrid, int numUnitsWide, int numUnitsHigh)
        {
            if (worldGrid == null)
            {
                throw new ArgumentNullException(nameof(worldGrid));
            }

            numUnitsWide *= GridCoordinate.WorldToGridMultiplier;
            numUnitsHigh *= GridCoordinate.WorldToGridMultiplier;

            // we always need to be odd (isn't that a statement of life)
            MathUtil.MakeOdd(ref numUnitsWide);
            MathUtil.MakeOdd(ref numUnitsHigh);

            // let's make sure we always have valid values
            numUnitsWide = Math.Max(numUnitsWide, 5);
            numUnitsHigh = Math.Max(numUnitsHigh, 5);

            _worldGrid        = worldGrid;
            _visibleGridItems = new Array2D <SliceUnitData <T> >(numUnitsWide, numUnitsHigh);
            _chunkTracker     = new ChunkTracker();

            // these are used for converting an array index back into a world coordinate
            _numUnitsWideHalfThreshold = (_visibleGridItems.Width - 1) / 2;
            _numUnitsHighHalfThreshold = (_visibleGridItems.Height - 1) / 2;
        }
Exemple #3
0
 public Player(Point3D Position, ChunkTracker chunkTracker)
 {
     ChunkTracker    = chunkTracker;
     ModelPosition   = Position;
     CameraPosition  = new Point3D(ModelPosition.X + cameraOffsetX, ModelPosition.Y + cameraOffsetY, ModelPosition.Z + cameraOffsetZ);
     CameraDirection = new Vector3D(0, -10, -1);
 }
Exemple #4
0
 protected internal Chunk(Vector3Int position, int hierarchySize, IChunkHolder parent, ChunkTracker chunkTracker, GeometryManager geometryManager)
 {
     Position        = position;
     HierarchySize   = hierarchySize;
     Parent          = parent;
     ChunkTracker    = chunkTracker;
     GeometryManager = geometryManager;
 }
Exemple #5
0
 protected internal static Chunk CreateByDistanceToTrigger(
     Vector3Int position, int hierarchySize, ChunkWithChunks parent, ChunkTracker chunkTracker, GeometryManager geometryManager, Vector3Int triggerPosition)
 {
     if (IsChunkTooLarge(position, hierarchySize, triggerPosition))
     {
         return(new ChunkWithChunks(position, hierarchySize, parent, chunkTracker, geometryManager));
     }
     return(new ChunkWithGeometry(position, hierarchySize, parent, chunkTracker, geometryManager));
 }
Exemple #6
0
        public void initialize(MainWindow mainWindow)
        {
            VoxelModels.VoxelModels.LoadModels();
            MainWindow    = mainWindow;
            Input         = MainWindow.Input;
            ChunkTracker  = new ChunkTracker(ApplicationSettings.SX, ApplicationSettings.SY);
            Player        = new Player(new Point3D(ApplicationSettings.worldSize * ApplicationSettings.chunkSize / 2, 20.5f, ApplicationSettings.worldSize * ApplicationSettings.chunkSize / 2), ChunkTracker);
            RenderManager = mainWindow.RenderManager;
            MobManager    = new MobManager(RenderManager, ChunkTracker, Player);
            SkyDome       = new SkyDomeAppState();

            MainWindow.appStateManager.addAppState("Player", Player);
            MainWindow.appStateManager.addAppState("SkyDome", SkyDome);
            MainWindow.appStateManager.addAppState("ChunkTracker", ChunkTracker);
            MainWindow.appStateManager.addAppState("MobManager", MobManager);
        }
Exemple #7
0
 public MobManager(RenderManager renderManager, ChunkTracker chunktracker, Player player)
 {
     RenderManager = renderManager;
     ChunkTracker  = chunktracker;
     Player        = player;
 }
Exemple #8
0
 protected internal ChunkWithGeometry(Vector3Int position, int hierarchySize, IChunkHolder parent, ChunkTracker chunkTracker, GeometryManager geometryManager)
     : base(position, hierarchySize, parent, chunkTracker, geometryManager)
 {
 }
Exemple #9
0
 protected void Show() => ChunkTracker.TrackChunk(this);
Exemple #10
0
 protected internal void Hide() => ChunkTracker.UnTrackChunk(this);
Exemple #11
0
 public ChunksSingleHolder(Vector3Int position, ChunkTracker chunkTracker, GeometryManager geometryManager)
 {
     Position        = position;
     ChunkTracker    = chunkTracker;
     GeometryManager = geometryManager;
 }