public override void Tick() { base.Tick(); tick++; if (tick >= (int)Find.TickManager.CurTimeSpeed) { var things = Map.thingGrid.ThingsAt(Position).Where(x => x.def.category == ThingCategory.Item); foreach (var thing in things) { if (!StartingTicks.ContainsKey(thing)) { StartingTicks[thing] = RemainingTicks[thing] = StartingTicksToMoveThing(thing); } RemainingTicks[thing] -= tick; if (RemainingTicks[thing] <= 0) { thing.Position = NextCell; Map.mapDrawer.MapMeshDirty(NextCell, MapMeshFlag.Things, true, false); StartingTicks.Remove(thing); RemainingTicks.Remove(thing); } } tick = 0; } }
public Vector3 Offset(Thing thing) { if (!StartingTicks.ContainsKey(thing)) { return(Vector3.zero); } float num = (float)RemainingTicks[thing] / StartingTicks[thing]; return((NextCell.ToVector3Shifted() - Position.ToVector3Shifted()) * (1f - num)); }