Ejemplo n.º 1
0
        /// <summary>
        /// 更新模型位置大小,选择状态
        /// </summary>
        /// <param name="node">所需更新的节点</param>
        /// <param name="q">节点饶那个轴旋转旋转,只能更新一个角度的旋转,如“x,y,z”</param>
        /// <param name="angle">旋转的角度</param>
        public void UpdateModelState(SceneNode node, char q, float angle)
        {
            Entity en = node.GetAttachedObject(0) as Entity;

            for (int i = 0; i < modelEntry.模型链表.Count; i++)
            {
                if (modelEntry.模型链表[i].实体名 == en.Name)
                {
                    ModelEntryStruct modelentry = modelEntry.模型链表[i];
                    modelentry.缩放比例 = node.GetScale();
                    modelentry.位置   = node.Position;
                    //更新旋转角度
                    if (q.Equals('x'))
                    {
                        modelentry.旋转角度.x = angle;
                    }
                    else if (q.Equals('y'))
                    {
                        modelentry.旋转角度.y = angle;
                    }
                    else if (q.Equals('z'))
                    {
                        modelentry.旋转角度.z = angle;
                    }
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 将当前结点状态与之同步
        /// operateflag说明
        /// 1增加结点 
        /// 2删除结点
        /// 3更新位置和缩放,旋转
        /// </summary>
        /// <param name="node"></param>
        /// <param name="operateflat"></param>
        public ModelEntryStruct AddRemoveState(SceneNode node, int operateflag)
        {
            if (node == null)
                return null;
            switch (operateflag)
            {
                case 1://增加操作
                    {
                        ModelEntryStruct modelentry = new ModelEntryStruct();

                        Entity en = node.GetAttachedObject(0) as Entity;
                        if (en != null)
                        {
                            //得到模型的相关信息,
                            modelentry.模型名 = en.GetMesh().Name;
                            modelentry.材质 = "";
                            modelentry.实体名 = en.Name;
                            modelentry.缩放比例 = node.GetScale();
                            modelentry.位置 = node.Position;
                            modelentry.旋转角度 = new Vector3();
                            modelEntry.模型链表.Add(modelentry);
                            //modelentry.名称 = MainOgreForm.GetDateName();

                            //更新树节点
                            if (this.AddNode != null)
                                this.AddNode(modelentry);
                            //MainOgreForm.Singleton.AddNodeTree(modelentry);

                            return modelentry;
                        }
                    }
                    break;
                case 2://删除
                    {
                        Entity en = node.GetAttachedObject(0) as Entity;
                        if (en == null)
                            return null;
                        for (int i = 0; i < modelEntry.模型链表.Count; i++)
                        {
                            if (modelEntry.模型链表[i].实体名 == en.Name)
                            {
                                if (this.RemoveNode != null)
                                    this.RemoveNode(modelEntry.模型链表[i]);
                                //MainOgreForm.Singleton.RemoveNodeTree(modelEntry.模型链表[i]);
                                modelEntry.模型链表.RemoveAt(i);
                                break;
                            }
                        }
                    }
                    break;
                default:
                    break;
            }
            return null;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 将当前结点状态与之同步
        /// operateflag说明
        /// 1增加结点
        /// 2删除结点
        /// 3更新位置和缩放,旋转
        /// </summary>
        /// <param name="node"></param>
        /// <param name="operateflat"></param>
        public ModelEntryStruct AddRemoveState(SceneNode node, int operateflag)
        {
            if (node == null)
            {
                return(null);
            }
            switch (operateflag)
            {
            case 1:    //增加操作
            {
                ModelEntryStruct modelentry = new ModelEntryStruct();


                Entity en = node.GetAttachedObject(0) as Entity;
                if (en != null)
                {
                    //得到模型的相关信息,
                    modelentry.模型名  = en.GetMesh().Name;
                    modelentry.材质   = "";
                    modelentry.实体名  = en.Name;
                    modelentry.缩放比例 = node.GetScale();
                    modelentry.位置   = node.Position;
                    modelentry.旋转角度 = new Vector3();
                    modelEntry.模型链表.Add(modelentry);
                    //modelentry.名称 = MainOgreForm.GetDateName();

                    //更新树节点
                    if (this.AddNode != null)
                    {
                        this.AddNode(modelentry);
                    }
                    //MainOgreForm.Singleton.AddNodeTree(modelentry);

                    return(modelentry);
                }
            }
            break;

            case 2:    //删除
            {
                Entity en = node.GetAttachedObject(0) as Entity;
                if (en == null)
                {
                    return(null);
                }
                for (int i = 0; i < modelEntry.模型链表.Count; i++)
                {
                    if (modelEntry.模型链表[i].实体名 == en.Name)
                    {
                        if (this.RemoveNode != null)
                        {
                            this.RemoveNode(modelEntry.模型链表[i]);
                        }
                        //MainOgreForm.Singleton.RemoveNodeTree(modelEntry.模型链表[i]);
                        modelEntry.模型链表.RemoveAt(i);
                        break;
                    }
                }
            }
            break;

            default:
                break;
            }
            return(null);
        }