Files
ProjectOnrinto_Godot/Scripts/Core/MusicClock.cs
CrbnsCat10n 0e6bf1dcad new file: .editorconfig
new file:   .gitattributes
	new file:   Charts/track.json
	new file:   ProjectOnrinto.csproj
	new file:   ProjectOnrinto.sln
	new file:   Scenes/Audio/audio_stream_player.tscn
	new file:   Scenes/Game/level.tscn
	new file:   Scenes/Prefabs/beat.tscn
	new file:   Scripts/Core/GameManager.cs
	new file:   Scripts/Core/GameManager.cs.uid
	new file:   Scripts/Core/MusicClock.cs
	new file:   Scripts/Core/MusicClock.cs.uid
	new file:   Scripts/Core/TrackGenerator.cs
	new file:   Scripts/Core/TrackGenerator.cs.uid
	new file:   Scripts/Data/ChartEvent.cs
	new file:   Scripts/Data/ChartEvent.cs.uid
	new file:   Scripts/Data/JsonConverter.cs
	new file:   Scripts/Data/JsonConverter.cs.uid
	new file:   Scripts/Data/TrackData.cs
	new file:   Scripts/Data/TrackData.cs.uid
	new file:   Scripts/GameObjects/NoteObject.cs
	new file:   Scripts/GameObjects/NoteObject.cs.uid
	new file:   icon.svg
	new file:   icon.svg.import
	new file:   project.godot
2026-04-05 00:07:28 +08:00

27 lines
593 B
C#

using Godot;
public partial class MusicClock : AudioStreamPlayer
{
public static MusicClock Instance {get; private set; }
private double currentTime;
public double CurrentTime { get; private set; }
public override void _Ready()
{
Instance = this;
if (Stream == null) GD.PrintErr("MusicClock: No Audio File?");
}
public override void _Process(double delta)
{
if(!Playing) return;
double rawTime = GetPlaybackPosition();
double delay = AudioServer.GetTimeSinceLastMix();
double latency = AudioServer.GetOutputLatency();
CurrentTime = rawTime + delay - latency;
}
}