private void IconTextBtn_SubmenuOpened(object sender, RoutedEventArgs e) { mProperties.Clear(); //如果不是macrossType return Null var rname = EngineNS.Rtti.RttiHelper.GetRNameFromType(ClassType, true); var newType = EngineNS.CEngine.Instance.MacrossDataManager.MacrossScripAssembly.GetType(ClassType.FullName); if (newType == null) { newType = ClassType; } var properties = newType.GetProperties(); for (int i = 0; i < properties.Length; ++i) { for (int j = 0; j < FilterTypes.Length; ++j) { if (properties[i].PropertyType == FilterTypes[j]) { mProperties.Add(properties[i].Name); } } } ListBox_Container.ItemsSource = mProperties; SearchBoxCtrl.FocusInput(); }
private void IconTextBtn_SubmenuOpened(object sender, RoutedEventArgs e) { BoneList.Clear(); var enumrableInterface = BindInstance.GetType().GetInterface(typeof(System.Collections.IEnumerable).FullName, false); if (enumrableInterface != null) { // 显示多个对象 int count = 0; foreach (var objIns in (System.Collections.IEnumerable)BindInstance) { if (objIns == null) { continue; } count++; } if (count == 0) { } else if (count == 1) { foreach (var objIns in (System.Collections.IEnumerable)BindInstance) { if (objIns == null) { continue; } RefreshBoneList(objIns); } } else { string skeletonName = null; bool haveSameSkeleton = true; foreach (var objIns in (System.Collections.IEnumerable)BindInstance) { if (objIns == null) { continue; } var comp = objIns as EngineNS.GamePlay.Component.GComponent; if (comp == null) { continue; } var hostMesh = comp.HostContainer as EngineNS.GamePlay.Component.GMeshComponent; if (hostMesh != null) { var modifier = hostMesh.SceneMesh.MdfQueue.FindModifier <EngineNS.Graphics.Mesh.CGfxSkinModifier>(); if (modifier != null) { if (skeletonName == null) { skeletonName = modifier.SkeletonAsset; } if (skeletonName != modifier.SkeletonAsset) { haveSameSkeleton = false; return; } } } } if (haveSameSkeleton && !string.IsNullOrEmpty(skeletonName)) { var skeleton = EngineNS.CEngine.Instance.SkeletonAssetManager.GetSkeleton(EngineNS.CEngine.Instance.RenderContext, EngineNS.RName.GetRName(skeletonName)); var skeletonPose = skeleton.CreateSkeletonPose(); BoneList.Add("None"); for (uint i = 0; i < skeletonPose.BoneNumber; ++i) { BoneList.Add(skeletonPose.GetBonePose(i).ReferenceBone.BoneDesc.Name); } } } } else { RefreshBoneList(BindInstance); } SearchBoxCtrl.FocusInput(); }