// Token: 0x06005AB4 RID: 23220 RVA: 0x001F9958 File Offset: 0x001F7D58 protected override void OnNetworkReady() { base.OnNetworkReady(); if (!VRC_EventHandler.HasEventTrigger(base.gameObject)) { VRC_Trigger orAddComponent = base.gameObject.GetOrAddComponent <VRC_Trigger>(); List <VRC_Trigger.TriggerEvent> triggers = orAddComponent.Triggers; VRC_Trigger.TriggerEvent triggerEvent = new VRC_Trigger.TriggerEvent(); triggerEvent.BroadcastType = VRC_EventHandler.VrcBroadcastType.Local; triggerEvent.TriggerType = VRC_Trigger.TriggerType.OnInteract; triggerEvent.Events = (from evt in this.baseStation.ProvideEvents() where evt.Name == "UseStation" select evt).ToList <VRC_EventHandler.VrcEvent>(); triggers.Add(triggerEvent); } else { VRC_Trigger component = base.GetComponent <VRC_Trigger>(); if (component != null) { foreach (VRC_Trigger.TriggerEvent triggerEvent2 in from t in component.Triggers where t.Events.Any((VRC_EventHandler.VrcEvent e) => e.ParameterString == "UseStation" || e.ParameterString == "ExitStation") select t) { triggerEvent2.BroadcastType = VRC_EventHandler.VrcBroadcastType.Local; } } VRC_UseEvents component2 = base.GetComponent <VRC_UseEvents>(); if (component2 != null) { component2.BroadcastType = VRC_EventHandler.VrcBroadcastType.Local; component2.EventName = "UseStation"; } } Collider component3 = base.gameObject.GetComponent <Collider>(); if (component3 == null) { BoxCollider boxCollider = base.gameObject.AddComponent <BoxCollider>(); boxCollider.isTrigger = true; } VRC_EventHandler component4 = base.GetComponent <VRC_EventHandler>(); if (component4 != null) { VRC_Station component5 = base.GetComponent <VRC_Station>(); using (IEnumerator <VRC_EventHandler.VrcEvent> enumerator2 = component5.ProvideEvents().GetEnumerator()) { while (enumerator2.MoveNext()) { VRC_EventHandler.VrcEvent evt = enumerator2.Current; VRC_StationInternal t = this; if (!component4.Events.Any((VRC_EventHandler.VrcEvent item) => item.Name == evt.Name && item.ParameterObjects != null && item.ParameterObjects.Contains(t.gameObject))) { component4.Events.Add(evt); } } } } }
private void InternalUseStation(VRC.Player player) { bool flag = false; if (player == null || (this.Occupant != null && this.Occupant != player) || player == this.Occupant) { return; } List <VRC_StationInternal> source = VRC_StationInternal.FindActiveStations(player); if (source.FirstOrDefault((VRC_StationInternal s) => s != this) != null) { if (!this.canUseStationFromStation) { return; } if (!VRC_StationInternal.ExitAllStations(player)) { return; } flag = true; } else { VRC_StationInternal.ExitAllStations(player); } if (this.Occupant != null) { return; } VRC_StationInternal.FlagDiscontinuity(player); this.Occupant = player; if (flag) { this._occupant = null; return; } if (VRC_EventHandler.HasEventTrigger(base.gameObject)) { this.AddUseExit(player); } if (this.stationControls != null) { this.stationControls.controllingPlayer = player.GetComponent <VRC_PlayerApi>(); } Vector3 position = Vector3.zero; Quaternion rhs = Quaternion.identity; if (player.isLocal) { VRCPlayer component = player.GetComponent <VRCPlayer>(); component.AlignTrackingToPlayer(); Transform trackingTransform = VRCTrackingManager.GetTrackingTransform(); Vector3 position2 = trackingTransform.position; Quaternion rotation = trackingTransform.rotation; position = player.transform.InverseTransformPoint(trackingTransform.position); rhs = Quaternion.Inverse(player.transform.rotation) * rotation; } if (this.isSeated) { this.ApplySeatedAnimation(player); } this.SetEnterPlayerTransform(player.gameObject); player.currentStation = this; if (player.isLocal) { VRCTrackingManager.SetTrackingWorldOrigin(player.transform.TransformPoint(position), player.transform.rotation * rhs); if (this.isSeated) { VRCTrackingManager.UseAvatarStationViewPoint(true); } if (this.stationEnterPlayerLocation != null) { this.stationEnterInitialRotation = this.stationEnterPlayerLocation.rotation; } else { this.stationEnterInitialRotation = base.transform.rotation; } this.trackingOriginDeltaPosition = VRCTrackingManager.GetTrackingWorldOrigin() - player.transform.position; this.trackingOriginDeltaRotation = Quaternion.FromToRotation(player.transform.TransformDirection(Vector3.forward), VRCTrackingManager.GetTrackingTransform().TransformDirection(Vector3.forward)); player.GetComponent <LocomotionInputController>().immobilize = this.isImmobilized; player.GetComponent <VRCMotionState>().IsSeated = this.isSeated; player.GetComponent <VRCMotionState>().InVehicle = this.inVehicle; } if (this.isImmobilized) { Collider component2 = player.GetComponent <Collider>(); if (component2 != null) { component2.enabled = false; } if (player.isLocal) { this.AttachInputControllerTo(player, "ImmobileInputController"); } } if (this.controlsObject != null) { VRC.Network.SetOwner(player, this.controlsObject.gameObject, VRC.Network.OwnershipModificationType.Request, false); } if (TutorialManager.Instance != null && player.isLocal && this.isImmobilized && !this.disableStationExit) { base.StartCoroutine(this.ShowGetUpInstructions()); } VRC_StationInternal.AddActiveStation(this); base.SendMessage("OnStationEntered", SendMessageOptions.DontRequireReceiver); }