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();
        }
Esempio n. 2
0
        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();
        }