Example #1
0
        private void OnInitialLoadDone()
        {
            float height;

            if (GetLandHeight(mEntryPoint.X, 64.0f * Metrics.TileSize - mEntryPoint.Y, out height))
            {
                height += 50.0f;
                SkyManager.Instance.UpdatePosition(new Vector3(mEntryPoint, height));

                var entryPoint = new Vector3(mEntryPoint, height);
                if (FileManager.Instance.Version > FileDataVersion.Mists)
                {
                    entryPoint.Y = 64.0f * Metrics.TileSize - mEntryPoint.Y;
                }

                SkyManager.Instance.AsyncUpdate();
                EditorWindowController.Instance.OnEnterWorld();
                WorldFrame.Instance.OnEnterWorld(entryPoint);
                WorldFrame.Instance.Dispatcher.BeginInvoke(
                    () =>
                {
                    SkySphere.UpdatePosition(new Vector3(mEntryPoint, height));
                    SkyManager.Instance.SyncUpdate();
                    WorldFrame.Instance.CamControl.ForceUpdate(WorldFrame.Instance.ActiveCamera.Position);
                    WorldFrame.Instance.M2Manager.ViewChanged();
                });
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
Example #2
0
        public void OnFrame(Camera camera)
        {
            ProcessLoadedTiles();

            if (WorldFrame.Instance.State == AppState.World)
            {
                SkyManager.Instance.SyncUpdate();
                SkySphere.Render();
                mAreaLowManager.OnFrame();
            }

            if (!HideTerrain)
            {
                MapChunkRender.ChunkMesh.BeginDraw();
                MapChunkRender.ChunkMesh.Program.SetPixelSampler(0, MapChunkRender.ColorSampler);
                MapChunkRender.ChunkMesh.Program.SetPixelSampler(1, MapChunkRender.AlphaSampler);

                if (WorldFrame.Instance.LastMouseIntersection.ChunkHit != null)
                {
                    EditorWindowController.Instance.OnUpdateChunkIndex(WorldFrame.Instance.LastMouseIntersection.ChunkHit.IndexX, WorldFrame.Instance.LastMouseIntersection.ChunkHit.IndexY);
                }
                else
                {
                    EditorWindowController.Instance.OnUpdateChunkIndex(0, 0);
                }

                foreach (var pair in mAreas)
                {
                    pair.Value.OnFrame();
                }
            }
        }
Example #3
0
        public void UpdatePosition(Vector3 position, bool updateTerrain)
        {
            WorldFrame.Instance.UpdatePosition(position);
            SkySphere.UpdatePosition(position);

            if (updateTerrain)
            {
                SkyManager.Instance.UpdatePosition(position);
                var pos2D = new Vector2(position.X, position.Y);
                mAreaLowManager.UpdatePosition(ref pos2D);
                UpdateVisibility(ref position);
            }

            EditorWindowController.Instance.OnUpdatePosition(position);

            var x = position.X;
            var y = position.Y;

            if (FileManager.Instance.Version <= FileDataVersion.Warlords)
            {
                y = 64.0f * Metrics.TileSize - y;
            }

            var tilex = (int)Math.Floor(x / Metrics.TileSize);
            var tiley = (int)Math.Floor(y / Metrics.TileSize);

            EditorWindowController.Instance.OnUpdateTileIndex(tilex, tiley);
        }
Example #4
0
 public void Initialize()
 {
     SkySphere   = new SkySphere(999.0f, 25, 25, WorldFrame.Instance.GraphicsContext);
     mIsRunning  = true;
     mLoadThread = new Thread(LoadProc);
     mLoadThread.Start();
     mLightUpdateThread = new Thread(LightUpdateProc);
     mLightUpdateThread.Start();
     mUnloadThread = new Thread(UnloadProc);
     mUnloadThread.Start();
 }
Example #5
0
 public void Initialize()
 {
     SkySphere = new SkySphere(999.0f, 25, 25, WorldFrame.Instance.GraphicsContext);
     mIsRunning = true;
     mLoadThread = new Thread(LoadProc);
     mLoadThread.Start();
     mLightUpdateThread = new Thread(LightUpdateProc);
     mLightUpdateThread.Start();
     mUnloadThread = new Thread(UnloadProc);
     mUnloadThread.Start();
 }