public PathDisplay3D(EQEmu.Path.Path path)
        {
            //Model.Content = new Model3DGroup();
            //Model3DGroup group = new Model3DGroup();
            Options = new PathDisplayOptions()
            {
                ShowTextLabels = false
            };
            //_clipping = new ViewClipping();

            _path = path;
            InitMapping();
            MeshBuild();

            foreach (EQEmu.Path.Node node in path.Nodes)
            {
                CreateNode(node);
                node.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(node_PropertyChanged);
            }

            path.NodeAdded += new EQEmu.Path.Path.NodeModifiedHandler(path_NodeAdded);
            path.NodeRemoved += new EQEmu.Path.Path.NodeModifiedHandler(path_NodeRemoved);

            //Model.Content = group;
        }
        public GridsDisplay3D(EQEmu.Grids.ZoneGrids zonegrid)
        {
            _zoneGrid = zonegrid;

            if (_zoneGrid.Grids.Count > 0)
            {
                ShowGrid(_zoneGrid.Grids.ElementAt(0));
            }

            foreach ( Grid grid in _zoneGrid.Grids ) {
                grid.Waypoints.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler( Waypoints_CollectionChanged );
            }
            _zoneGrid.Grids.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler( Grids_CollectionChanged );

            //UpdateAll();
        }
        private MySqlConnection GetDatabaseConnection(ref EQEmu.Database.Configuration configuration)
        {
            XmlSerializer serializer =
                new XmlSerializer(typeof(EQEmu.Database.Configuration));
            MySql.Data.MySqlClient.MySqlConnection conn = null;

            var confPath = System.IO.Path.Combine(
                System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData),
                "EQEmu/connection.xml");

            //check for a configuration file in the user directory first
            if (!File.Exists(confPath))
            {
                confPath = "./connection.xml";
                if (!File.Exists(confPath))
                {
                    return null;
                }
            }

            EQEmu.Database.Configuration conf;

            using (XmlReader reader = XmlReader.Create(confPath))
            {
                conf = (EQEmu.Database.Configuration)serializer.Deserialize(reader);
                string connStr = string.Format("server={0};user={1};database={2};port={3};password={4};ConnectionTimeout={5};",
                    conf.Host, conf.User, conf.Database, conf.Port, conf.Password, conf.ConnectionTimeout);
                conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);
                try
                {
                    conn.Open();
                }
                catch (System.Exception e)
                {
                    conn.Close();

                    System.Windows.MessageBox.Show(confPath + "\nCould not open database connection\n" + e.Message);
                }
            }

            if (configuration != null && conf != null)
            {
                configuration = conf;
            }

            return conn;
        }
        public NpcTypeEditViewModel(MySqlConnection connection, EQEmu.Database.QueryConfig config, NpcPropertyTemplateManager templates)
        {
            _connection = connection;
            _config = config;
            _templates = templates;

            _modelMappings = Npc.LoadModelMappings("modelmapping.xml");

            if (connection != null && connection.State == System.Data.ConnectionState.Open)
            {
                _npcs = new NpcAggregatorDatabase(connection, config);
            }
            else
            {
                _npcs = new NpcAggregatorLocal(config);
            }
            _npcs.Created();

            _npcs.NPCs.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(NPCs_CollectionChanged);
            Models.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Models_CollectionChanged);
        }
Example #5
0
        private static MySqlConnection GetDatabaseConnection(ref EQEmu.Database.Configuration configuration)
        {
            XmlSerializer serializer =
                new XmlSerializer(typeof(EQEmu.Database.Configuration));
            MySql.Data.MySqlClient.MySqlConnection conn = null;

            if (!File.Exists("./connection.xml")) return null;
            EQEmu.Database.Configuration conf;

            using (XmlReader reader = XmlReader.Create("./connection.xml"))
            {
                conf = (EQEmu.Database.Configuration)serializer.Deserialize(reader);
                string connStr = string.Format("server={0};user={1};database={2};port={3};password={4};",
                    conf.Host, conf.User, conf.Database, conf.Port, conf.Password);
                conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);
            }

            if (configuration != null && conf != null)
            {
                configuration = conf;
            }

            return conn;
        }
 void _selectedSpawn_PositionChanged(object sender, EQEmu.GroundSpawns.PositionChangedEventArgs args)
 {
     //when the spawn's position changes the cursor position needs to be updated
         var spawn = sender as EQEmu.GroundSpawns.GroundSpawn;
         if (spawn != null)
         {
             if (spawn == _selectedSpawn)
             {
                 _groundSpawns3d.ShowSpawn(_selectedSpawn, EQEmuDisplay3D.GroundSpawnDisplay3D.DisplayFlags.GreenAura);
             }
             else
             {
                 _groundSpawns3d.ShowSpawn(spawn, EQEmuDisplay3D.GroundSpawnDisplay3D.DisplayFlags.DarkGrayAura);
             }
         }
 }
 void _zonePoints_DataLoaded(object sender, EQEmu.Zone.ZonePointDataLoadedEventArgs e)
 {
     _zone = e.ZoneName;
     NotifyPropertyChanged("Zone");
 }
        private void CreateSpawn(EQEmu.Spawns.Spawn2 spawn,DisplayFlags flags)
        {
            Model3DGroup group = Model as Model3DGroup;

            Model3DCollection collection = new Model3DCollection();

            if (_mapping.ContainsKey(spawn))
            {
                foreach (Model3D model in _mapping[spawn])
                {
                    group.Children.Remove(model);
                }
            }

            MeshBuilder builder = new MeshBuilder();
            Point3D p = new Point3D(spawn.X,spawn.Y,spawn.Z);

            if( !Clipping.DrawPoint(p) ) return;

            builder.AddBox(p,2,2,2);

            Transform3D headingRotate = new RotateTransform3D()
            {
                CenterX = p.X,
                CenterY = p.Y,
                CenterZ = p.Z,
                Rotation = new AxisAngleRotation3D(
                    new Vector3D(0,0,-1),spawn.HeadingDegrees)
            };

            GeometryModel3D box;
            Material mat = Materials.White;

            if (flags == DisplayFlags.None)
            {
                if (spawn.RoamAreaId > 0)
                {
                    mat = Materials.Red;
                }
                else if (spawn.GridId > 0)
                {
                    mat = Materials.Yellow;
                }
            }
            else if (flags == DisplayFlags.Green)
            {
                mat = Materials.Green;
            }
            else if (flags == DisplayFlags.DarkGray)
            {
                mat = Materials.DarkGray;
            }
            else if (flags == DisplayFlags.Rainbow)
            {
                mat = Materials.Rainbow;
            }
            else if (flags == DisplayFlags.Blue)
            {
                mat = Materials.Blue;
            }

            box = new GeometryModel3D(builder.ToMesh(), mat);
            box.Transform = headingRotate;
            collection.Add(box);

            builder = new MeshBuilder();
            float radius = 3.0f;
            double hx = spawn.X + Math.Cos((spawn.HeadingDegrees - 90) / 180 * Math.PI) * radius;
            double hy = spawn.Y + Math.Sin((spawn.HeadingDegrees + 90) / 180 * Math.PI) * radius;

            builder.AddArrow(new Point3D(spawn.X, spawn.Y, spawn.Z), new Point3D(hx, hy, spawn.Z), 0.5, 1);
            collection.Add(new GeometryModel3D(builder.ToMesh(), mat));

            _mapping[spawn] = collection;
            foreach (Model3D model in collection)
            {
                group.Children.Add(model);
            }
        }
        public void RemoveSpawn(EQEmu.Spawns.Spawn2 spawn)
        {
            Model3DGroup group = Model as Model3DGroup;

            foreach (Model3D model in _mapping[spawn])
            {
                group.Children.Remove(model);
            }

            _mapping[spawn] = null;
        }
Example #10
0
        private void RemoveNode(EQEmu.Path.Node node,List<EQEmu.Path.Node> neighbors=null)
        {
            Model3DGroup group = Model as Model3DGroup;
            node.PropertyChanged -= node_PropertyChanged;

            foreach (Model3D model in _mapping[node])
            {
                group.Children.Remove(model);
            }

            if (neighbors != null && neighbors.Count > 0)
            {
                foreach (EQEmu.Path.Node n in neighbors)
                {
                    CreateNode(n);
                }
            }

            _mapping[node] = null;
        }
Example #11
0
 void path_NodeRemoved(object sender, EQEmu.Path.PathModifiedEventArgs e)
 {
     RemoveNode(e.NodeReference, e.Neighbors);
 }
Example #12
0
 void path_NodeAdded(object sender, EQEmu.Path.PathModifiedEventArgs e)
 {
     _mapping[e.NodeReference] = null;
     CreateNode(e.NodeReference);
     e.NodeReference.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(node_PropertyChanged);
 }
Example #13
0
        private void CreateNode(EQEmu.Path.Node node)
        {
            Model3DGroup group = Model as Model3DGroup;
            MeshBuilder builder;

            Model3DCollection collection = new Model3DCollection();

            if (_mapping[node] != null)
            {
                foreach (Model3D model in _mapping[node])
                {
                    group.Children.Remove(model);
                }
            }

            if (Clipping != null && !Clipping.DrawPoint(node.Location)) return;

            //builder.AddBox(node.Location, 2, 2, 2);

            _mapping[node] = collection;

            GeometryModel3D box = GetNodeModel();
            box.Transform = new TranslateTransform3D(node.X,node.Y,node.Z);
            collection.Add(box);
            //collection.Add(new GeometryModel3D(builder.ToMesh(), Materials.Green));
            //_mapping[node] = new GeometryModel3D(builder.ToMesh(), Materials.Green);

            if (Options.ShowTextLabels)
            {
                GeometryModel3D text = TextCreator.CreateTextLabelModel3D(node.Id.ToString(), BrushHelper.CreateGrayBrush(5), true, 2,
                                                                            new Point3D(node.X, node.Y, node.Z + 5), new Vector3D(1, 0, 0), new Vector3D(0, 0, 1));
                text.Transform = new ScaleTransform3D(new Vector3D(-1, 1, 1), new Point3D(node.X, node.Y, node.Z));
                collection.Add(text);
            }

            foreach (EQEmu.Path.Neighbor neighbor in node.Neighbors)
            {
                if (neighbor.Node == null) continue;

                builder = new MeshBuilder();
                builder.AddArrow(new Point3D(node.X, node.Y, node.Z), new Point3D(neighbor.Node.X, neighbor.Node.Y, neighbor.Node.Z), 0.5);
                //builder.AddPipe(new Point3D(n.X, n.Y, n.Z), new Point3D(neighbor.Node.X, neighbor.Node.Y, neighbor.Node.Z), 0.5, 0.5, 50);
                collection.Add(new GeometryModel3D(builder.ToMesh(), Materials.Yellow));
            }

            foreach (Model3D model in collection)
            {
                group.Children.Add(model);
            }

            //group.Children.Add(_mapping[node]);
        }
Example #14
0
 public MapDisplay3D(EQEmu.Map.Map map)
 {
     _map = map;
     UpdateAll();
 }
 public void RenderMesh(EQEmu.Files.WLD.Fragments.Mesh mesh)
 {
     if (mesh == null) return;
     _display3d.RenderMesh(new List<Mesh>() { mesh });
 }
Example #16
0
 public Spawn2(EQEmu.Database.QueryConfig config)
     : base(config)
 {
 }
Example #17
0
        private void UpdateNode(EQEmu.Path.Node node)
        {
            Model3DGroup group = Model as Model3DGroup;

            if (Clipping != null && !Clipping.DrawPoint(node.Location))
            {
                if (_mapping[node] != null)
                {
                    foreach (Model3D model in _mapping[node])
                    {
                        group.Children.Remove(model);
                    }
                }
            }
            else
            {
                if (_mapping[node] != null)
                {
                    foreach (Model3D model in _mapping[node])
                    {
                        if (group.Children.Contains(model))
                        {
                            continue;
                        }
                        group.Children.Add(model);
                    }
                }
            }
        }
 public void ShowSpawn(EQEmu.Spawns.Spawn2 spawn,DisplayFlags flags=DisplayFlags.None)
 {
     if (spawn == null || !_zoneSpawns.Spawns.Contains(spawn))
     {
         //UpdateAll();
         return;
     }
     else
     {
         //Model3DGroup group = Model as Model3DGroup;
         //group.Children.Clear();
         CreateSpawn(spawn,flags);
     }
 }
 void path_NodeRemoved(object sender, EQEmu.Path.PathModifiedEventArgs e)
 {
     NotifyPropertyChanged("Pathing");
 }
 public Spawn2Display3D( EQEmu.Spawns.ZoneSpawns zoneSpawns)
 {
     _zoneSpawns = zoneSpawns;
     _zoneSpawns.Spawns.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Spawns_CollectionChanged);
     ShowAllSpawns();
 }
        public SpawnExtractorTabViewModel(MySqlConnection connection,EQEmu.Database.QueryConfig config,NpcPropertyTemplateManager templates)
        {
            _connection = connection;
            _config = config;
            _templates = templates;
            _startId = 0;
            Zone = "";
            ZoneVersion = 0;

            if (connection != null && connection.State == System.Data.ConnectionState.Open)
            {
                _npcs = new NpcAggregatorDatabase(connection, config);
            }
            else
            {
                _npcs = new NpcAggregatorLocal(config);
            }
            _npcs.Created();

            if (connection != null && connection.State == System.Data.ConnectionState.Open)
            {
                _spawngroups = new SpawnGroupAggregatorDatabase(connection, config);
            }
            else
            {
                _spawngroups = new SpawnGroupAggregatorLocal(config);
            }
            _spawngroups.Created();
        }
        void _zoneSpawns_DataLoaded(object sender, EQEmu.Spawns.SpawnsLoadedEventArgs e)
        {
            _zone = e.ZoneName;
            _version = e.Version;

            NotifyPropertyChanged("Zone");
            NotifyPropertyChanged("Version");
        }
 void _zoneGrids_GridDataLoaded(object sender, EQEmu.Grids.GridDataLoadedEventArgs e)
 {
     _zone = e.ZoneName;
     NotifyPropertyChanged("Zone");
 }