/// <summary>
        /// 附加子实体。
        /// </summary>
        /// <param name="childEntityId">要附加的子实体的实体编号。</param>
        /// <param name="parentEntityId">被附加的父实体的实体编号。</param>
        /// <param name="userData">用户自定义数据。</param>
        public void AttachEntity(int childEntityId, int parentEntityId, object userData)
        {
            EntityInfo childEntityInfo = GetEntityInfo(childEntityId);

            if (childEntityInfo == null)
            {
                throw new System.Exception(string.Format("Can not find child entity '{0}'.", childEntityId.ToString()));
            }

            if (childEntityInfo.Status >= EntityStatus.WillHide)
            {
                throw new System.Exception(string.Format("Can not attach entity when child entity status is '{0}'.", childEntityInfo.Status.ToString()));
            }

            EntityInfo parentEntityInfo = GetEntityInfo(parentEntityId);

            if (parentEntityInfo == null)
            {
                throw new System.Exception(string.Format("Can not find parent entity '{0}'.", parentEntityId.ToString()));
            }

            if (parentEntityInfo.Status >= EntityStatus.WillHide)
            {
                throw new System.Exception(string.Format("Can not attach entity when parent entity status is '{0}'.", parentEntityInfo.Status.ToString()));
            }

            IEntity childEntity  = childEntityInfo.Entity;
            IEntity parentEntity = parentEntityInfo.Entity;

            DetachEntity(childEntity.Id, userData);
            childEntityInfo.ParentEntity = parentEntity;
            parentEntityInfo.AddChildEntity(childEntity);
            parentEntity.OnAttached(childEntity, userData);
            childEntity.OnAttachTo(parentEntity, userData);
        }
Esempio n. 2
0
        /// <summary>
        /// 附加子实体。
        /// </summary>
        /// <param name="childEntityId">要附加的子实体的实体编号。</param>
        /// <param name="parentEntityId">被附加的父实体的实体编号。</param>
        /// <param name="userData">用户自定义数据。</param>
        public void AttachEntity(int childEntityId, int parentEntityId, object userData)
        {
            if (childEntityId == parentEntityId)
            {
                throw new GameFrameworkException(Utility.Text.Format("Can not attach entity when child entity id equals to parent entity id '{0}'.", parentEntityId));
            }

            EntityInfo childEntityInfo = GetEntityInfo(childEntityId);

            if (childEntityInfo == null)
            {
                throw new GameFrameworkException(Utility.Text.Format("Can not find child entity '{0}'.", childEntityId));
            }

            if (childEntityInfo.Status >= EntityStatus.WillHide)
            {
                throw new GameFrameworkException(Utility.Text.Format("Can not attach entity when child entity status is '{0}'.", childEntityInfo.Status));
            }

            EntityInfo parentEntityInfo = GetEntityInfo(parentEntityId);

            if (parentEntityInfo == null)
            {
                throw new GameFrameworkException(Utility.Text.Format("Can not find parent entity '{0}'.", parentEntityId));
            }

            if (parentEntityInfo.Status >= EntityStatus.WillHide)
            {
                throw new GameFrameworkException(Utility.Text.Format("Can not attach entity when parent entity status is '{0}'.", parentEntityInfo.Status));
            }

            IEntity childEntity  = childEntityInfo.Entity;
            IEntity parentEntity = parentEntityInfo.Entity;

            DetachEntity(childEntity.Id, userData);
            childEntityInfo.ParentEntity = parentEntity;
            parentEntityInfo.AddChildEntity(childEntity);
            parentEntity.OnAttached(childEntity, userData);
            childEntity.OnAttachTo(parentEntity, userData);
        }