/// <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)); } }