On this page
Reference

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.

C#
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

C#
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}");
    }
}

Next

(c) 2014 - 2026 BoneCracker Games - City Car Driving Simulator 1.6Back to top ↑
Document details

Generated from: 04_Reference/02_Events_Catalog.md
Date: 2026-09-15 07:52
(c) 2014 - 2026 BoneCracker Games - City Car Driving Simulator 1.6