Class Waypoint
A discoverable fast-travel point. Interacting with it unlocks it for the character; once unlocked it appears on that character's world map and can be travelled to.
public class Waypoint : Interactable, ISpawnable, IWaypoint, IInteractable, ISceneObject
- Inheritance
-
ObjectComponentBehaviourMonoBehaviourNetworkBehaviourWaypoint
- Implements
- Inherited Members
-
NetworkBehaviour.IsSpawnedNetworkBehaviour.ComponentIndexNetworkBehaviour.NetworkObjectNetworkBehaviour.MAXIMUM_NETWORKBEHAVIOURSNetworkBehaviour.UNSET_NETWORKBEHAVIOUR_IDNetworkBehaviour.ToString()NetworkBehaviour.Reset()NetworkBehaviour.OnValidate()NetworkBehaviour.IsBehaviourReconcilingNetworkBehaviour.ClearReplicateCache()NetworkBehaviour.CreateReconcile()NetworkBehaviour.Reconcile_Reader<T>(PooledReader, ref T)NetworkBehaviour.OnStartServerCalledNetworkBehaviour.OnStartClientCalledNetworkBehaviour.OnStartNetwork()NetworkBehaviour.OnStopNetwork()NetworkBehaviour.OnOwnershipServer(NetworkConnection)NetworkBehaviour.OnSpawnServer(NetworkConnection)NetworkBehaviour.OnDespawnServer(NetworkConnection)NetworkBehaviour.OnStartClient()NetworkBehaviour.OnStopClient()NetworkBehaviour.OnOwnershipClient(NetworkConnection)NetworkBehaviour.ClearBuffedRpcs()NetworkBehaviour.ExcludeOwnerFromUnbufferedObserversRpcsNetworkBehaviour.IsClientOnlyNetworkBehaviour.IsServerOnlyNetworkBehaviour.IsHostNetworkBehaviour.IsClientNetworkBehaviour.IsServerNetworkBehaviour.IsDeinitializingNetworkBehaviour.NetworkManagerNetworkBehaviour.ServerManagerNetworkBehaviour.ClientManagerNetworkBehaviour.ObserverManagerNetworkBehaviour.TransportManagerNetworkBehaviour.TimeManagerNetworkBehaviour.SceneManagerNetworkBehaviour.PredictionManagerNetworkBehaviour.RollbackManagerNetworkBehaviour.NetworkObserverNetworkBehaviour.IsClientInitializedNetworkBehaviour.IsClientStartedNetworkBehaviour.IsClientOnlyInitializedNetworkBehaviour.IsClientOnlyStartedNetworkBehaviour.IsServerInitializedNetworkBehaviour.IsServerStartedNetworkBehaviour.IsServerOnlyInitializedNetworkBehaviour.IsServerOnlyStartedNetworkBehaviour.IsHostInitializedNetworkBehaviour.IsHostStartedNetworkBehaviour.IsOfflineNetworkBehaviour.IsNetworkedNetworkBehaviour.GetIsNetworked()NetworkBehaviour.IsManagerReconcilingNetworkBehaviour.ObserversNetworkBehaviour.IsOwnerNetworkBehaviour.IsControllerNetworkBehaviour.HasAuthorityNetworkBehaviour.OwnerNetworkBehaviour.OwnerIdNetworkBehaviour.ObjectIdNetworkBehaviour.LocalConnectionNetworkBehaviour.OwnerMatches(NetworkConnection)NetworkBehaviour.Despawn(GameObject, DespawnType?)NetworkBehaviour.Despawn(NetworkObject, DespawnType?)NetworkBehaviour.Despawn(DespawnType?)NetworkBehaviour.Spawn(GameObject, NetworkConnection, Scene)NetworkBehaviour.Spawn(NetworkObject, NetworkConnection, Scene)NetworkBehaviour.RemoveOwnership()NetworkBehaviour.GiveOwnership(NetworkConnection)NetworkBehaviour.GetInstance<T>()NetworkBehaviour.TryRegisterInstance<T>(T)NetworkBehaviour.UnregisterInstance<T>()NetworkBehaviour.CanLog(LoggingType)MonoBehaviour.IsInvoking()MonoBehaviour.CancelInvoke()MonoBehaviour.StopCoroutine(Coroutine)MonoBehaviour.StopAllCoroutines()MonoBehaviour.destroyCancellationTokenMonoBehaviour.useGUILayoutMonoBehaviour.didStartMonoBehaviour.didAwakeMonoBehaviour.runInEditModeBehaviour.enabledBehaviour.isActiveAndEnabledComponent.GetComponent<T>()Component.TryGetComponent<T>(out T)Component.GetComponentInChildren<T>()Component.GetComponentsInChildren<T>()Component.GetComponentInParent<T>()Component.GetComponentsInParent<T>()Component.GetComponents<T>()Component.GetComponentIndex()Component.CompareTag(TagHandle)Component.transformComponent.transformHandleComponent.gameObjectComponent.tagObject.GetEntityId()Object.GetInstanceID()Object.GetHashCode()Object.InstantiateAsync<T>(T)Object.InstantiateAsync<T>(T, Transform)Object.InstantiateAsync<T>(T, Vector3, Quaternion)Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion, Transform)Object.Instantiate(Object)Object.Instantiate(Object, Scene)Object.Instantiate<T>(T, InstantiateParameters)Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)Object.Instantiate(Object, Transform)Object.Instantiate<T>(T)Object.Instantiate<T>(T, Vector3, Quaternion)Object.Instantiate<T>(T, Vector3, Quaternion, Transform)Object.Instantiate<T>(T, Transform)Object.Destroy(Object)Object.DestroyImmediate(Object)Object.DontDestroyOnLoad(Object)Object.DestroyObject(Object)Object.FindObjectsOfType<T>()Object.FindObjectsByType<T>(FindObjectsSortMode)Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)Object.FindObjectOfType<T>()Object.FindFirstObjectByType<T>()Object.FindAnyObjectByType<T>()Object.FindFirstObjectByType<T>(FindObjectsInactive)Object.FindAnyObjectByType<T>(FindObjectsInactive)Object.FindObjectsByType<T>()Object.FindObjectsByType<T>(FindObjectsInactive)Object.nameObject.hideFlags
Remarks
Authoring. Place one in a world scene and give it a WaypointIndex that no other waypoint in that scene uses — the index is the bit the character's unlock record stores, so it must never change once the scene ships; a renumbered waypoint is a waypoint every existing character loses. Adding a new one at the next free index is safe. The world scene details cache rebuild reports duplicates.
Behaviour. Like every interactable, what happens on interaction is the ECA
trigger list: the shipped Waypoint Interact trigger runs UnlockWaypointAction
and then the discovery achievement. Travel is not an interaction — it is requested from
the map, validated by the server, and the arrival runs OnTravelTriggers.
TravelConditions are the designer's gate on that request.
Do not put a MapMarker on the same object. A marker would draw the
waypoint for anyone who streamed it, discovered or not; the map draws waypoints from the
character's unlock record instead, and MapMarkerFilter drops any marker of the
waypoint type to keep that true.
Fields
Icon
[Tooltip("Icon drawn on the map. Uses the waypoint marker style when empty.")]
public Sprite Icon
Field Value
- Sprite
WaypointName
[Tooltip("Player-facing name shown on the map. Uses the GameObject name when empty.")]
public string WaypointName
Field Value
Properties
ArrivalPoint
Where a travelling character lands. Falls back to the waypoint's own transform.
public Transform ArrivalPoint { get; }
Property Value
- Transform
Description
Optional description shown in the map's waypoint panel.
public string Description { get; }
Property Value
OnTravelTriggers
Triggers invoked server-side after a character arrives here by fast travel.
public List<Trigger> OnTravelTriggers { get; }
Property Value
ResolvedName
public string ResolvedName { get; }
Property Value
SceneName
The name of the scene this waypoint stands in.
public string SceneName { get; }
Property Value
Title
The display title for this interactable, shown in the UI.
public override string Title { get; }
Property Value
TitleColor
The color of the title displayed for this interactable in the UI.
public override Color TitleColor { get; }
Property Value
- Color
TravelConditions
Designer-authored conditions a character must meet to travel here. Evaluated on the server against the traveller. Null or empty means no conditions.
public List<BaseCondition> TravelConditions { get; }
Property Value
WaypointIndex
The authored index of this waypoint within its scene, from 0.
public int WaypointIndex { get; }
Property Value
Methods
OnStartServer()
Registers the scene object and the waypoint. See WaypointRegistry.
public override void OnStartServer()
OnStopServer()
Drops the waypoint from the registry when its scene unloads or it is despawned.
public override void OnStopServer()
ToDetails()
Produces the form baked into the world scene details cache.
public SceneWaypointDetails ToDetails()