private void geoset_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            M2Geoset g = sender as M2Geoset;

            if (e.PropertyName == "Visible")
            {
                M2SceneNode node = ModelSceneService.Instance.MainM2SceneNode;
                if (node != null)
                {
                    node.ShowGeoset(g.Index, g.Visible);
                }
            }
        }
        public void Update()
        {
            M2SceneNode node = ModelSceneService.Instance.MainM2SceneNode;

            Geosets.Clear();

            if (node == null)
            {
                return;
            }

            SGeoset[] geosets = node.Geosets;
            for (int i = 0; i < node.Geosets.Length; ++i)
            {
                M2Geoset g = new M2Geoset(ref geosets[i], i, node.IsGeosetShow(i));
                Geosets.Add(g);

                g.PropertyChanged += new PropertyChangedEventHandler(geoset_PropertyChanged);
            }

            geosetsView = CollectionViewSource.GetDefaultView(Geosets);
        }