public static Vector3 WarObjectCollisionPosOffsetFor(WarObject warObject) { if (!warObject.Spawned) { return(Vector3.zero); } bool flag = warObject.Spawned && warObject.pather.Moving; float d = 0.15f * Verse.Find.WorldGrid.averageTileSize; if (!flag || warObject.pather.nextTile == warObject.pather.Destination) { int num = (!flag) ? warObject.Tile : warObject.pather.nextTile; int warObjectsCount = 0; int warObjectsWithLowerIdCount = 0; GetWarObjectsStandingAtOrAboutToStandAt(num, out warObjectsCount, out warObjectsWithLowerIdCount, warObject); if (warObjectsCount == 0) { return(Vector3.zero); } return(WorldRendererUtility.ProjectOnQuadTangentialToPlanet(Verse.Find.WorldGrid.GetTileCenter(num), GenGeo.RegularPolygonVertexPosition(warObjectsCount, warObjectsWithLowerIdCount) * d)); } if (DrawPosCollides(warObject)) { Rand.PushState(); Rand.Seed = warObject.ID; float f = Rand.Range(0f, 360f); Rand.PopState(); Vector2 point = new Vector2(Mathf.Cos(f), Mathf.Sin(f)) * d; return(WorldRendererUtility.ProjectOnQuadTangentialToPlanet(PatherTweenedPosRoot(warObject), point)); } return(Vector3.zero); }
public static Vector3 CaravanCollisionPosOffsetFor(VehicleCaravan caravan) { if (!caravan.Spawned) { return(Vector3.zero); } bool flag = caravan.Spawned && caravan.vPather.Moving; float d = BaseRadius * Find.WorldGrid.averageTileSize; if (!flag || caravan.vPather.nextTile == caravan.vPather.Destination) { int num; if (flag) { num = caravan.vPather.nextTile; } else { num = caravan.Tile; } GetCaravansStandingAtOrAboutToStandAt(num, out int num2, out int vertexIndex, caravan); if (num2 == 0) { return(Vector3.zero); } return(WorldRendererUtility.ProjectOnQuadTangentialToPlanet(Find.WorldGrid.GetTileCenter(num), GenGeo.RegularPolygonVertexPosition(num2, vertexIndex) * d)); } else { if (DrawPosCollides(caravan)) { Rand.PushState(); Rand.Seed = caravan.ID; float f = Rand.Range(0f, 360f); Rand.PopState(); Vector2 point = new Vector2(Mathf.Cos(f), Mathf.Sin(f)) * d; return(WorldRendererUtility.ProjectOnQuadTangentialToPlanet(PatherTweenedPosRoot(caravan), point)); } return(Vector3.zero); } }