/// <summary>
        /// 在Patch中生成删除Entity的Patch
        /// </summary>
        /// <param name="leftEntity"></param>
        /// <param name="rightEntity"></param>
        /// <param name="leftComponent"></param>
        public override void OnRightComponentMissing(IGameEntity leftEntity, IGameEntity rightEntity, IGameComponent leftComponent)
        {
            logger.DebugFormat("DeleteComponentPatch ::{0}, {1}", leftEntity.EntityKey, leftComponent.GetComponentId());
            var componentPatch = DeleteComponentPatch.Allocate(leftComponent);

            currentEntityPatch.AddComponentPatch(componentPatch);
            componentPatch.ReleaseReference();
        }
        private AbstractComponentPatch CreateEmptyComponentPatch(ComponentReplicateOperationType opType)
        {
            switch (opType)
            {
            case ComponentReplicateOperationType.Add:
                return(Patch.AddComponentPatch.Allocate());

            case ComponentReplicateOperationType.Del:
                return(DeleteComponentPatch.Allocate());

            case ComponentReplicateOperationType.Mod:
                return(ModifyComponentPatch.Allocate());

            default:
                throw new Exception(string.Format("invalid ComponentReplicateOperationType {0}", opType));
            }
        }