small racing game im working on
Diffstat (limited to 'classes/trackdata.gd')
-rw-r--r--classes/trackdata.gd52
1 files changed, 31 insertions, 21 deletions
diff --git a/classes/trackdata.gd b/classes/trackdata.gd
index d516097..e8a3914 100644
--- a/classes/trackdata.gd
+++ b/classes/trackdata.gd
@@ -6,36 +6,46 @@ const SaveLoad := preload("res://addons/@bendn/remap/private/SaveLoadUtils.gd")
var time: float
var checkpoints: PackedFloat32Array
var positional := {
- origins = PackedVector3Array(),
- rotations = PackedVector3Array()
+ origins = PackedVector3Array(),
+ rotations = PackedVector3Array(),
+ steering = PackedFloat32Array(),
+ snaps = 0,
}
func data() -> Dictionary:
- return ({time = time, checkpoints = checkpoints, positional = positional})
+ return ({time = time, checkpoints = checkpoints, positional = positional})
func _init(num_checkpoints: int) -> void:
- checkpoints.resize(num_checkpoints)
- checkpoints.fill(-1)
+ checkpoints.resize(num_checkpoints)
+ checkpoints.fill(-1)
func collect(cp: int, now: float) -> void:
- if cp == -1: # fin
- time = now
- else:
- checkpoints[cp] = now
+ if cp == -1: # fin
+ time = now
+ else:
+ checkpoints[cp] = now
-func snapshot(obj: Node3D) -> void:
- positional.origins.append(obj.global_position)
- positional.rotations.append(obj.global_rotation)
+func snapshot(obj: Car) -> void:
+ positional.origins.append(obj.car_mesh.global_position)
+ positional.rotations.append(obj.car_mesh.global_rotation)
+ positional.steering.append(obj._steering)
+ positional.snaps += 1
+
+func loadshot(frame: int) -> Array:
+ return [positional.origins[frame], positional.rotations[frame], positional.steering[frame]]
+
+func snaps() -> int:
+ return positional.snaps
static func from_d(d: Dictionary) -> TrackSaveableData:
- var obj := TrackSaveableData.new(0)
- obj.checkpoints = d.get("checkpoints", [])
- obj.time = d.get("time", -1)
- obj.positional = d.get("positional", {origins = null, rotations = null})
- return obj
+ var obj := TrackSaveableData.new(0)
+ obj.checkpoints = d.get("checkpoints", [])
+ obj.time = d.get("time", -1)
+ obj.positional = d.get("positional", {origins = [], rotations = [], steering = [], snaps = 0})
+ return obj
static func _load(path: String) -> TrackSaveableData:
- var res := SaveLoad.load_file(path)
- if res.is_empty():
- return null
- return TrackSaveableData.from_d(res)
+ var res := SaveLoad.load_file(path)
+ if res.is_empty():
+ return null
+ return TrackSaveableData.from_d(res)