private void checkBox_Unchecked(object sender, RoutedEventArgs e) { CheckBox checkbox = sender as CheckBox; StackPanel sp = checkbox.Parent as StackPanel; ActorData ac = sp.DataContext as ActorData; if (ac != null && ac.Actor != null) { ac.Actor.Visible = false; } }
private void SelectionChanged() { if (TreeViewActors.SelectedItem == null) { return; } SelectActors.Clear(); if (TreeViewActors.TreeListItemsSource.Count <= 0) { return; } if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.LeftShift)) { for (int i = 0; i < TreeViewActors.Items.Count; i++) { var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[i]) as TreeListView.TreeListItem; if (item != null && item.IsSelected) { ActorData ad = item.Content as ActorData; if (ad != null) { SelectActors.Add(i, new EditorCommon.ViewPort.ViewPortControl.SelectActorData() { Actor = ad.Actor, StartTransMatrix = ad.Actor.Placement.WorldMatrix, }); } } } vp.SelectActors(SelectActors.Values.ToArray()); } else { var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[TreeViewActors.SelectedIndex]) as TreeListView.TreeListItem; if (item != null) { ActorData ad = item.Content as ActorData; if (ad != null) { SelectActors.Add(TreeViewActors.SelectedIndex, new EditorCommon.ViewPort.ViewPortControl.SelectActorData() { Actor = ad.Actor, StartTransMatrix = ad.Actor.Placement.WorldMatrix, }); vp.SelectActor(ad.Actor); } } } }
private void AddActorToItem(TreeListView.ObservableCollectionAdv <TreeListView.ITreeModel> listads, EngineNS.GamePlay.Actor.GActor actor) { //过滤掉辅助的actor(物理碰撞盒子) if (actor.SpecialName != null && actor.SpecialName.Equals(EngineNS.Bricks.HollowMaker.GeomScene.ActorName)) { return; } bool filter = true; if (!string.IsNullOrEmpty(mFilterString)) { filter = CheckFilter(actor); } if (filter == false) { return; } String typeall = actor.GetType().ToString(); String[] type = typeall.Split('.'); var actorData = new ActorData() { Actor = actor }; BindingOperations.SetBinding(actorData, ActorData.NameProperty, new Binding("SpecialName") { Source = actor }); BindingOperations.SetBinding(actorData, ActorData.HighLightStringProperty, new Binding("FilterString") { Source = this }); BindingOperations.SetBinding(actorData, ActorData.VisibleProperty, new Binding("Visible") { Source = actor }); listads.Add(actorData);//actor.SpecialName if (actor.GetChildrenUnsafe().Count > 0) { addActorsToItems(actorData.Children, actor.GetChildrenUnsafe()); } }
//int prefocusindex = 0; //Focus actor ui form viewport. //public void FocusActorItem(EngineNS.GamePlay.Actor.GActor actor) //{ // if (prefocusindex < TreeViewActors.TreeListItemsSource.Count) // { // ActorData preitemactor = TreeViewActors.TreeListItemsSource[prefocusindex] as ActorData; // if (preitemactor != null) // { // if (preitemactor.Actor == actor) // return; // var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[prefocusindex]) as TreeListView.TreeListItem; // if (item != null) // item.IsSelected = false; // } // } // SelectActors.Clear( ); // for (int i = 0; i < TreeViewActors.TreeListItemsSource.Count; i ++) // { // ActorData itemactor = TreeViewActors.TreeListItemsSource[i] as ActorData; // if (itemactor != null && itemactor.Actor == actor) // { // SelectActors.Add(i, new EditorCommon.ViewPort.ViewPortControl.SelectActorData() // { // Actor = actor, // StartTransMatrix = actor.Placement.WorldMatrix, // }); // //TODO.. // TreeViewActors.Focus(); // var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[i]) as TreeListView.TreeListItem; // if (item != null) // { // item.IsEnabled = true; // item.IsSelected = true; // TreeViewActors.Items.MoveCurrentTo(item); // } // prefocusindex = i; // break; // } // } //} //TODO.. public void FocusActorItems(List <EngineNS.GamePlay.Actor.GActor> selectActors)//, EngineNS.GamePlay.Actor.GActor actor) { if (SelectActors.Count > 0) { int[] skeys = SelectActors.Keys.ToArray(); for (int i = 0; i < skeys.Length; i++) { var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[skeys[i]]) as TreeListView.TreeListItem; if (item != null) { item.IsSelected = false; } } } SelectActors.Clear(); if (TreeViewActors.TreeListItemsSource.Count <= 0) { return; } var lsad = new List <EngineNS.GamePlay.Actor.GActor>(selectActors); for (int i = 0; i < TreeViewActors.Items.Count; i++) { if (lsad.Count == 0) { break; } //TODO.. 有時候拿不到对象 var item = TreeViewActors.ItemContainerGenerator.ContainerFromItem(TreeViewActors.Items[i]) as TreeListView.TreeListItem; if (item != null) { ActorData ad = item.Content as ActorData; item.IsSelected = false; for (int j = 0; j < lsad.Count; j++) { if (lsad[j] == ad.Actor) { //if (ad.Actor == actor) //{ // //TreeViewActors.Items.MoveCurrentTo(TreeViewActors.Items[i]); // //TreeViewActors.Items.MoveCurrentToPosition(i); // //TreeViewActors.SelectedItem = TreeViewActors.Items[i]; // //TreeViewActors.SelectedIndex = i; // //TreeViewActors.Items.Refresh(); //} EditorCommon.ViewPort.ViewPortControl.SelectActorData outdata; if (SelectActors.TryGetValue(i, out outdata) == false) { SelectActors.Add(i, new EditorCommon.ViewPort.ViewPortControl.SelectActorData() { Actor = lsad[j], StartTransMatrix = lsad[j].Placement.WorldMatrix, }); } lsad.RemoveAt(j); item.IsSelected = true; break; } } } else { //TODO.. } } }