本文整理汇总了C#中Route.GetDestPoint方法的典型用法代码示例。如果您正苦于以下问题:C# Route.GetDestPoint方法的具体用法?C# Route.GetDestPoint怎么用?C# Route.GetDestPoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Route
的用法示例。
在下文中一共展示了Route.GetDestPoint方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateGoHereWithInteractionInstance
private static InteractionInstance CreateGoHereWithInteractionInstance(SimRoutingComponent ths, Route r, List<Sim> followers, InteractionPriority priority, bool cancellableByPlayer, out InteractionInstance ownerInteraction, GoHereWithSituation.OnFailBehavior failureBehavior, Vector3 teleportLocation)
{
Sim properLeader = ths.GetProperLeader(ths.OwnerSim, followers);
InteractionInstanceParameters parameters = new InteractionInstanceParameters(new InteractionObjectPair(LeaderGoHereWith.Singleton, Terrain.Singleton), properLeader, priority, false, cancellableByPlayer);
LeaderGoHereWith with = LeaderGoHereWith.Singleton.CreateInstanceFromParameters(ref parameters) as LeaderGoHereWith;
with.SetOwner(ths.OwnerSim);
with.OnFailBehavior = failureBehavior;
if (teleportLocation != Vector3.Invalid)
{
with.TeleportDestination = teleportLocation;
}
else if (failureBehavior == GoHereWithSituation.OnFailBehavior.Teleport)
{
with.TeleportDestination = r.GetDestPoint();
}
if (properLeader != ths.OwnerSim)
{
followers = new List<Sim>(followers);
followers.Remove(properLeader);
Route route = r.ShallowCopy();
route.ExitReasonsInterrupt = r.ExitReasonsInterrupt;
ths.UpdateRoutingOptionsFromLeader(properLeader, route);
route.Follower = properLeader.Proxy;
route.Replan();
with.SetRouteToFollow(route);
}
else
{
with.SetRouteToFollow(r);
}
with.SetFollowers(followers);
GoHereWithSituationEx.CreateSituation(with);
if (properLeader != ths.OwnerSim)
{
ownerInteraction = new SlaveLeaderGoHereWith.Definition(with.Situation).CreateInstance(Terrain.Singleton, ths.OwnerSim, priority, false, cancellableByPlayer);
}
else
{
ownerInteraction = null;
}
return with;
}
示例2: 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;
//.........这里部分代码省略.........
示例3: OnPostPlan
protected static void OnPostPlan(Route r, string routeType, string result)
{
Sim sim = null;
try
{
if (!Overwatch.Settings.mStuckCheckV2) return;
if ((r != null) && (r.Follower != null))
{
sim = r.Follower.Target as Sim;
if ((sim != null) && (sim.SimDescription != null))
{
StuckSimData other;
if (!sRouteData.TryGetValue(sim.SimDescription.SimDescriptionId, out other))
{
other = new StuckSimData();
sRouteData.Add(sim.SimDescription.SimDescriptionId, other);
}
if (other.mInReset) return;
if (other.mLastPosition != sim.Position)
{
other.mLastPosition = sim.Position;
other.mChecks = 0;
}
else if (!r.PlanResult.Succeeded())
{
if (other.mChecks == 0)
{
other.mLastPositionTicks = SimClock.CurrentTicks;
}
other.mChecks++;
if (other.mChecks > Overwatch.Settings.mMinimumRouteFail)
{
if ((SimClock.CurrentTicks - other.mLastPositionTicks) > (SimClock.kSimulatorTicksPerSimMinute * Overwatch.Settings.mRouteFailTestMinutesV2))
{
sTracer.Perform();
if (!sTracer.mIgnore)
{
if (Common.kDebugging)
{
Common.DebugStackLog("OnPostPlan" + Common.NewLine + sim.FullName + Common.NewLine + r.PlanResult + Common.NewLine + other.mChecks);
Common.DebugNotify("OnPostPlan" + Common.NewLine + sim.FullName + Common.NewLine + r.PlanResult + Common.NewLine + other.mChecks, sim);
}
}
other.mChecks = 0;
if (!sTracer.mIgnore)
{
other.mInReset = true;
ResetTask.Perform(sim, r.GetDestPoint(), "Unroutable");
}
}
}
}
}
}
}
catch (Exception e)
{
Common.Exception(sim, null, "OnPostPlan", e);
}
}