public void BeginSpreadingTransition(GasCloud parentCloud, IntVec3 targetPosition)
 {
     interpolatedOffsetX.value = parentCloud.Position.x - targetPosition.x;
     interpolatedOffsetY.value = parentCloud.Position.z - targetPosition.z;
     interpolatedOffsetX.StartInterpolation(0, SpreadingAnimationDuration, InterpolationCurves.QuinticEaseOut);
     interpolatedOffsetY.StartInterpolation(0, SpreadingAnimationDuration, InterpolationCurves.QuinticEaseOut);
 }
        private bool TileIsGasTraversible(IntVec3 pos, Map map, GasCloud sourceCloud)
        {
            if (!pos.InBounds(map))
            {
                return(false);
            }
            var edifice  = map.edificeGrid[pos];
            var walkable = map.pathGrid.WalkableFast(pos);
            TraversibilityTest travTest = null;

            if (edifice != null)
            {
                TraversibleBuildings.TryGetValue(edifice.GetType(), out travTest);
            }
            return((walkable && travTest == null) || (travTest != null && travTest(edifice, sourceCloud)));
        }