Esempio n. 1
0
        private void TimerCallback(object sender, EventArgs e)
        {
            // Make sure everything is loaded first.
            if (!LokiPoe.IsBotFullyLoaded)
            {
                return;
            }

            if (!IsEnabledFunc())
            {
                return;
            }

            LokiPoe.BeginDispatchIfNecessary(Dispatcher, () =>
            {
                var data = GetDataFunc();
                if (data.IsValid)
                {
                    foreach (var renderGroup in _renderGroups)
                    {
                        renderGroup.Render(data);
                    }
                    data.IsValid = false;
                }

                _renderNavGrid.Enabled        = ShowNavGrid.IsChecked == true;
                _renderLocalPlayer.Enabled    = ShowLocalPlayer.IsChecked == true;
                _renderLocalPlayer.LockCamera = LockCameraToPlayer.IsChecked == true;
                _renderMesh.Enabled           = ShowNavMesh.IsChecked == true;
            });
        }
Esempio n. 2
0
        private void CreateNavMeshOverlay()
        {
            var vertices = new List <Point3D>();
            var indices  = new List <int>();

            NavMesh navMesh = ExilePather.PolyPathfinder.NavMesh;

            int tcount = navMesh.GetMaxTiles();

            for (int i = 0; i < tcount; i++)
            {
                MeshTile tile = navMesh.GetTile(i);
                if (tile.Header == null)
                {
                    continue;
                }

                AddMeshTile(tile, vertices, indices);
            }

            var b = new MeshBuilder();

            for (int i = 0; i < indices.Count - 3; i += 3)
            {
                b.AddTriangle(vertices[indices[i + 2]], vertices[indices[i + 1]], vertices[indices[i]]);
            }

            _initialSeed = _curData.Seed;

            LokiPoe.BeginDispatchIfNecessary(View.Dispatcher, () =>
                                             (Visual as MeshVisual3D).Content =
                                                 new GeometryModel3D(b.ToMesh(true), MaterialHelper.CreateMaterial(Colors.DeepSkyBlue, 0.35)));
        }
Esempio n. 3
0
        /// <summary> The plugin tick callback. Do any update logic here. </summary>
        public void Tick()
        {
            // Don't update while we are not in the game.
            if (!LokiPoe.IsInGame)
            {
                return;
            }

            // Update the current skillgems once per major event.
            if (!_ranOnce)
            {
                // This can trigger gui code from a non-gui thread, so we need to run it on a gui thread.
                LokiPoe.BeginDispatchIfNecessary(new Action(() => GemLevelerSettings.Instance.RefreshSkillGemsList()));
                _ranOnce = true;
                return;
            }
        }
Esempio n. 4
0
        private void CreateVisual()
        {
            _initialSeed = _curData.Seed;

            if (_curData.IsInGame)
            {
                var builder = new MeshBuilder(true, false);

                List <Tripper.Tools.Math.Vector3> verts;
                List <int> indices;

                if (!RDPathfinder.UseNewGetTris)
                {
                    RDPathfinder.GetTris(_curData.CachedTerrainData, 2, out verts, out indices);                     // 2 is the walkable value used for pathfinding
                }
                else
                {
                    RDPathfinder.GetTris2(_curData.CachedTerrainData, 2, out verts, out indices, out var rects);                     // 2 is the walkaloe value used for pathfinding
                }

                for (int i = 0; i < indices.Count - 3; i += 3)
                {
                    var p0 = verts[indices[i + 2]];
                    var p1 = verts[indices[i + 1]];
                    var p2 = verts[indices[i + 0]];

                    // We need to swap Y/Z for display purposes.
                    builder.AddTriangle(new Point3D(p0.X, p0.Z, p0.Y), new Point3D(p1.X, p1.Z, p1.Y), new Point3D(p2.X, p2.Z, p2.Y));
                }

                LokiPoe.BeginDispatchIfNecessary(View.Dispatcher,
                                                 () => (Visual as MeshVisual3D).Content = new GeometryModel3D(builder.ToMesh(true), Materials.White));
            }
            else
            {
                LokiPoe.BeginDispatchIfNecessary(View.Dispatcher, () => (Visual as MeshVisual3D).Content = null);
            }
        }