本文整理汇总了C#中Route.GetNumPaths方法的典型用法代码示例。如果您正苦于以下问题:C# Route.GetNumPaths方法的具体用法?C# Route.GetNumPaths怎么用?C# Route.GetNumPaths使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Route
的用法示例。
在下文中一共展示了Route.GetNumPaths方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Contains
public static bool Contains(Route route, PathType type)
{
for (uint i = 0x0; i < route.GetNumPaths(); i++)
{
PathData pathData = route.GetPathData(i);
if (pathData.PathType == type) return true;
}
return false;
}
示例2: RouteToString
public static string RouteToString(Route route)
{
string result = "NumPaths: " + route.GetNumPaths();
for (uint i = 0x0; i < route.GetNumPaths(); i++)
{
PathData pathData = route.GetPathData(i);
result += Common.NewLine + "PathType: " + pathData.PathType;
result += Common.NewLine + "PortalStartPos: " + pathData.PortalStartPos;
result += Common.NewLine + "ObjectId: " + pathData.ObjectId;
GameObject obj = GameObject.GetObject<GameObject>(pathData.ObjectId);
if (obj != null)
{
result += Common.NewLine + "Object Type: " + obj.GetType();
}
}
return result;
}
示例3: 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;
//.........这里部分代码省略.........
示例4: DoRoute
//.........这里部分代码省略.........
actionResult = RouteAction.ActionResult.ContinueAndFollowPath;
}
msg.Append(Common.NewLine + actionResult + Common.NewLine);
if (GoHere.Settings.mDetailedRouting)
{
if (Sim.ActiveActor == owner)
{
Common.DebugNotify(msg);
}
}
if (ths.mRouteActions.Count == 0x0)
{
explanation |= RouteAction.FailureExplanation.InternalPlanFailure;
success = false;
break;
}
msg.Append("D");
ths.mPreviousRouteAction = ths.mRouteActions[0x0];
switch(actionResult)
{
case RouteAction.ActionResult.Continue:
case RouteAction.ActionResult.ContinueAndPopPath:
case RouteAction.ActionResult.ContinueAndPopPathAndReplan:
case RouteAction.ActionResult.ContinueAndPopPathAndRestart:
case RouteAction.ActionResult.ContinueAndFollowPath:
msg.Append("E");
ths.mRouteActions.RemoveAt(0x0);
bool flag3 = (processedPath.GetNumPaths() > 0x1) || (processedPath.IsLoop());
if (((actionResult == RouteAction.ActionResult.ContinueAndPopPath) && flag3) || ((actionResult == RouteAction.ActionResult.ContinueAndPopPathAndRestart) || (actionResult == RouteAction.ActionResult.ContinueAndPopPathAndReplan)))
{
if (flag3)
{
processedPath.PopPath();
}
msg.Append("F");
if (actionResult == RouteAction.ActionResult.ContinueAndPopPathAndReplan)
{
Vector3 outPosition = new Vector3();
if ((ths.RoutingParent != null) && (ths.RoutingParent is IBoat))
{
outPosition = ths.RoutingParent.PositionOnFloor;
}
else if (ths.Owner != null)
{
if ((owner != null) && (owner.Posture is SwimmingInPool))
{
outPosition = ths.Owner.Position;
}
else
{
outPosition = ths.Owner.PositionOnFloor;
}
}
else
{
processedPath.GetPathStartPoint(0x0, ref outPosition);
}
processedPath.ReplanFromPoint(outPosition);