public override bool Execute(EntityPool pool, ExecutionContext ctx) { if (!ctx.CheckM("Insert", Origin.Position, TargetLocation)) { return(false); } if (!ctx.LocalSpace.Contains(TargetLocation)) { return(false); } pool.ConflictFreeInsert(Origin, new Entity(new EntityID(Guid.NewGuid(), TargetLocation), Vec3.Zero, directState, SerialLogic #if STATE_ADV , Appearances #endif )); directState = null; return(true); }
public override bool Execute(EntityPool pool, ExecutionContext ctx) { Int3 opCoords = TargetLocation.FloorInt3; if (ctx.LocalSpace.Contains(Origin.Position)) { Entity e; if (!pool.Find(Origin.Guid, out e)) { return(false); } if (!ctx.CheckM("Motion", TargetLocation, e)) { return(false); } if (ctx.LocalSpace.Contains(TargetLocation)) { pool.ConflictFreeUpdateEntity(Origin, Entity); } else { pool.ConflictFreeFindAndRemove(e.ID); } return(true); } else { if (!ctx.LocalSpace.Contains(TargetLocation)) { ctx.LogMessage("Motion: Shard coordinate mismatch. Local=" + ctx.LocalSpace + ", target=" + TargetLocation); return(false); } if (!ctx.CheckM("Motion", Origin.Position, TargetLocation)) { return(false); } pool.ConflictFreeInsert(Origin, Entity); return(true); } }