コード例 #1
0
        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;
            }
        }
コード例 #2
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));
        }