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
27 lines
593 B
C#
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;
|
|
}
|
|
}
|