Events Catalog
All 35 events on CCDS_Events (Assets/CCDS/Scripts/Base/CCDS_Events.cs), with their signatures.
Subscription pattern
Subscribe in OnEnable, unsubscribe in OnDisable. These are static events — a missed unsubscribe keeps a destroyed object alive and throws when it fires.
using BoneCrackerGames.CCDS;
public class ScoreWatcher : MonoBehaviour {
void OnEnable() {
CCDS_Events.OnMoneyChanged += HandleMoneyChanged;
CCDS_Events.OnMissionCompleted += HandleMissionCompleted;
}
void OnDisable() {
CCDS_Events.OnMoneyChanged -= HandleMoneyChanged;
CCDS_Events.OnMissionCompleted -= HandleMissionCompleted;
}
void HandleMoneyChanged() { /* ... */ }
void HandleMissionCompleted() { /* ... */ }
}
Each event has a paired Event_* raise method that also emits a DebugLog. Raise methods are for CCDS systems; subscribe rather than raise from game code.
Game state
| Event | Signature | Raised when |
|---|---|---|
OnGameStateChanged |
(CCDS_GameStates.GameState gameState) |
State machine changes |
OnPaused |
() |
Game paused |
OnResumed |
() |
Game resumed |
OnMainMenu |
() |
Returning to the main menu |
OnQualityChanged |
() |
Any graphics setting changed |
OnAudioChanged |
() |
Audio or music volume changed |
GameState is Stopped, Countdown, Paused or Started.
Economy and selection
| Event | Signature | Raised when |
|---|---|---|
OnMoneyChanged |
() |
Balance changed via CCDS.ChangeMoney |
OnVehicleChangedMM |
() |
Vehicle selection changed in the main menu |
Missions
| Event | Signature | Raised when |
|---|---|---|
OnMissionStarted |
() |
Mission begins |
OnMissionCountdownStarted |
() |
Pre-mission countdown begins |
OnMissionChanged |
() |
Active mission changes |
OnMissionCompleted |
() |
Mission completes |
Player
| Event | Signature | Raised when |
|---|---|---|
OnLocalPlayerSpawned |
(CCDS_Player player) |
Local player spawns |
OnLocalPlayerWrecked |
(CCDS_Player player) |
Local player wrecked |
OnLocalPlayerBusted |
(CCDS_Player player) |
Local player arrested |
OnLocalPlayerReleased |
(CCDS_Player player) |
Local player released after arrest |
OnCollision |
(float impulse) |
Player collision, with impulse magnitude |
OnLocalPlayerSpawned is the reliable hook for "the player now exists" — the reference is not guaranteed before it fires.
Network — connection
| Event | Signature | Raised when |
|---|---|---|
OnNetworkConnectionStarted |
() |
Connection attempt begins |
OnNetworkConnected |
() |
Connected to Photon |
OnNetworkDisconnected |
(string cause) |
Disconnected, with the reason |
OnNetworkModeChanged |
(bool isMultiplayer) |
Single-player ↔ multiplayer |
OnNetworkLobbyJoined |
() |
Lobby joined |
Network — rooms
| Event | Signature | Raised when |
|---|---|---|
OnNetworkRoomJoined |
(string roomName) |
Room joined |
OnNetworkRoomLeft |
() |
Room left |
OnNetworkRoomCreationFailed |
(string error) |
Room creation failed |
OnNetworkRoomJoinFailed |
(string error) |
Room join failed |
The two failure events carry Photon's error text — surface it rather than showing a generic message.
Network — players
| Event | Signature | Raised when |
|---|---|---|
OnNetworkPlayerJoined |
(string playerName) |
A player joined the room |
OnNetworkPlayerLeft |
(string playerName) |
A player left |
OnNetworkPlayerSpawned |
(GameObject player) |
A player's vehicle spawned |
OnNetworkMasterClientChanged |
(string newMasterName) |
Master client changed |
OnNetworkPlayerReadyStatusChanged |
(string playerName, bool isReady) |
Ready state changed |
OnNetworkMasterClientChanged matters for anything master-authoritative — traffic spawning and mission state both move with it.
Markers
| Event | Signature | Raised when |
|---|---|---|
OnMultiplayerMarkerEntered |
(CCDS_Marker_Multiplayer marker) |
Player entered a marker |
OnMultiplayerMarkerExited |
(CCDS_Marker_Multiplayer marker) |
Player left a marker |
OnMarkerCooldownEnded |
(CCDS_Marker_MultiplayerMission marker) |
Marker cooldown finished |
Debug
| Event | Signature | Raised when |
|---|---|---|
OnDebugLog |
(string message, LogType logType) |
Any CCDS.DebugLog* call |
CCDS_DebugConsole subscribes to this. Subscribe too if you want CCDS logs in your own overlay or telemetry.
Worked example
using UnityEngine;
using BoneCrackerGames.CCDS;
public class SessionTracker : MonoBehaviour {
private int missionsThisSession;
void OnEnable() {
CCDS_Events.OnMissionCompleted += HandleMissionCompleted;
CCDS_Events.OnLocalPlayerBusted += HandleBusted;
CCDS_Events.OnNetworkDisconnected += HandleDisconnected;
}
void OnDisable() {
CCDS_Events.OnMissionCompleted -= HandleMissionCompleted;
CCDS_Events.OnLocalPlayerBusted -= HandleBusted;
CCDS_Events.OnNetworkDisconnected -= HandleDisconnected;
}
void HandleMissionCompleted() {
missionsThisSession++;
CCDS.ChangeMoney(1000);
}
void HandleBusted(CCDS_Player player) {
CCDS.ChangeMoney(-500);
}
void HandleDisconnected(string cause) {
CCDS.DebugLogWarning($"Disconnected: {cause}");
}
}