本文整理汇总了C#中Route.GetCurrentStartPoint方法的典型用法代码示例。如果您正苦于以下问题:C# Route.GetCurrentStartPoint方法的具体用法?C# Route.GetCurrentStartPoint怎么用?C# Route.GetCurrentStartPoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Route
的用法示例。
在下文中一共展示了Route.GetCurrentStartPoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CheckAndUpdateRouteForPortals
private static void CheckAndUpdateRouteForPortals(Route r)
{
if (r.PlanResult.Succeeded())
{
Sim target = r.Follower.Target as Sim;
if (target != null)
{
// Subways and Ancient portals do not work for ghosts
if (target.SimDescription.DeathStyle != SimDescription.DeathType.None) return;
bool usingHoverTrain = target.CurrentInteraction is IHoverTrainStationInteraction;
if (!usingHoverTrain)
{
if (Routes.Contains(r, PathType.VehiclePath))
{
Vehicle ownedAndUsableVehicle = SimEx.GetOwnedAndUsableVehicle(target, target.LotCurrent);
if (ownedAndUsableVehicle != null)
{
if (ownedAndUsableVehicle.DestroyOnRelease)
{
ownedAndUsableVehicle.Destroy();
ownedAndUsableVehicle = null;
}
return;
}
}
}
if (target.IsSelectable || RandomUtil.RandomChance01(SimRoutingComponent.kNPCSubwayUseChance) || usingHoverTrain)
{
bool found = false;
for (uint i = 0; i < r.GetNumPaths(); i++)
{
PathData data = r.GetPathData(i);
if (data.PathType != PathType.PortalPath) continue;
AncientPortal portal = GameObject.GetObject<AncientPortal>(data.ObjectId);
if (portal != null)
{
found = true;
break;
}
else
{
IStation station = GameObject.GetObject<IStation>(data.ObjectId);
if (station != null)
{
found = true;
break;
}
}
}
if (found) return;
LotLocation startLotLocation = LotLocation.Invalid;
LotLocation endLotLocation = LotLocation.Invalid;
Vector3 currentStartPoint = r.GetCurrentStartPoint();
Vector3 destPoint = r.GetDestPoint();
ulong startLot = World.GetLotLocation(currentStartPoint, ref startLotLocation);
ulong endLot = World.GetLotLocation(destPoint, ref endLotLocation);
if (((startLot != ulong.MaxValue) && (endLot != ulong.MaxValue)) && ((startLot != endLot) || (startLot == 0x0L)))
{
AncientPortal closestAP = null;
float closestDistAP = float.MaxValue;
AncientPortal destinationAP = null;
float destDistanceAP = float.MaxValue;
if (target.IsHuman)
{
foreach (AncientPortal choice in Sims3.Gameplay.Queries.GetObjects<AncientPortal>())
{
Vector3 vector3 = choice.Position - currentStartPoint;
if (vector3.Length() < closestDistAP)
{
closestDistAP = vector3.Length();
closestAP = choice;
}
Vector3 vector4 = choice.Position - destPoint;
if (vector4.Length() < destDistanceAP)
{
destDistanceAP = vector4.Length();
destinationAP = choice;
}
}
}
IStation closestSW = null;
float closestDistSW = float.MaxValue;
IStation destinationSW = null;
float destDistanceSW = float.MaxValue;
foreach (IStation subway3 in Sims3.Gameplay.Queries.GetObjects<IStation>())
{
Vector3 vector3 = subway3.Position - currentStartPoint;
if (vector3.Length() < closestDistSW)
{
closestDistSW = vector3.Length();
closestSW = subway3;
//.........这里部分代码省略.........
示例2: Reroute
private static void Reroute(Route r, IStation closest, IStation destination)
{
Sim target = r.Follower.Target as Sim;
Vector3 currentStartPoint = r.GetCurrentStartPoint();
float distanceRemaining = r.GetDistanceRemaining();
Route route = target.CreateRoute();
route.SetOption(Route.RouteOption.EnableSubwayPlanning, false);
route.SetOption2(Route.RouteOption2.EnableHoverTrainPlanning, false);
route.SetOption(Route.RouteOption.EnablePlanningAsCar, r.GetOption(Route.RouteOption.EnablePlanningAsCar));
route.SetOption(Route.RouteOption.PlanUsingStroller, r.GetOption(Route.RouteOption.PlanUsingStroller));
route.SetOption(Route.RouteOption.ReplanUsingStroller, r.GetOption(Route.RouteOption.ReplanUsingStroller));
route.SetOption(Route.RouteOption.BeginAsStroller, r.GetOption(Route.RouteOption.BeginAsStroller));
Slot routeEnterEndSlot = closest.RouteEnterEndSlot;
if (routeEnterEndSlot != Slot.None)
{
GameObject routingSlotEnterFootprint = closest.RoutingSlotEnterFootprint;
if (routingSlotEnterFootprint != null)
{
route.AddObjectToIgnoreForRoute(routingSlotEnterFootprint.ObjectId);
}
if (route.PlanToSlot(closest, routeEnterEndSlot).Succeeded())
{
Slot routeExitBeginSlot = destination.RouteExitBeginSlot;
Vector3 slotPosition = destination.GetSlotPosition(routeExitBeginSlot);
GameObject routingSlotExitFootprint = destination.RoutingSlotExitFootprint;
if (routingSlotExitFootprint != null)
{
r.AddObjectToIgnoreForRoute(routingSlotExitFootprint.ObjectId);
}
r.SetOption(Route.RouteOption.EnableSubwayPlanning, false);
r.SetOption2(Route.RouteOption2.EnableHoverTrainPlanning, false);
if (!r.ReplanFromPoint(slotPosition).Succeeded())
{
r.ReplanFromPoint(currentStartPoint);
}
else if ((route.GetDistanceRemaining() + r.GetDistanceRemaining()) < (distanceRemaining + SimRoutingComponent.kDistanceMustSaveInOrderToUseSubway))
{
if (closest is IHoverTrainStation)
{
r.ReplanAllowed = false;
Route route2 = target.CreateRoute();
PathType elevatedTrainPath = PathType.ElevatedTrainPath;
List<Vector3> list = new List<Vector3>();
list.Add(closest.GetSlotPosition(closest.RouteEnterEndSlot));
list.Add(destination.GetSlotPosition(destination.RouteExitBeginSlot));
if (list.Count > 0)
{
route2.InsertCustomPathAtIndex(0, list.ToArray(), false, true, elevatedTrainPath);
route2.ReplanAllowed = false;
RoutePlanResult planResult = route2.PlanResult;
planResult.mType = RoutePlanResultType.Succeeded;
route2.PlanResult = planResult;
PathData pathData = route2.GetPathData(0);
pathData.ObjectId = destination.ObjectId;
pathData.PathType = PathType.ElevatedTrainPath;
route2.SetPathData(ref pathData);
r.InsertRouteSubPathsAtIndex(0, route2);
}
}
r.InsertRouteSubPathsAtIndex(0x0, route);
r.SetOption(Route.RouteOption.EnableSubwayPlanning, true);
r.SetOption2(Route.RouteOption2.EnableHoverTrainPlanning, true);
}
else
{
r.ReplanFromPoint(currentStartPoint);
}
}
}
}