[remap] | |||||
importer="texture" | |||||
type="StreamTexture" | |||||
path="res://.import/road.png-ba2e03c5623fd0c007ce17d39a38addd.stex" | |||||
metadata={ | |||||
"vram_texture": false | |||||
} | |||||
[deps] | |||||
source_file="res://Assets/Graphics/road.png" | |||||
dest_files=[ "res://.import/road.png-ba2e03c5623fd0c007ce17d39a38addd.stex" ] | |||||
[params] | |||||
compress/mode=0 | |||||
compress/lossy_quality=0.7 | |||||
compress/hdr_mode=0 | |||||
compress/bptc_ldr=0 | |||||
compress/normal_map=0 | |||||
flags/repeat=1 | |||||
flags/filter=false | |||||
flags/mipmaps=false | |||||
flags/anisotropic=false | |||||
flags/srgb=2 | |||||
process/fix_alpha_border=true | |||||
process/premult_alpha=false | |||||
process/HDR_as_SRGB=false | |||||
process/invert_color=false | |||||
stream=false | |||||
size_limit=0 | |||||
detect_3d=false | |||||
svg/scale=1.0 |
var steering_angle = 0.0 | var steering_angle = 0.0 | ||||
var engine_power = 0.0 | var engine_power = 0.0 | ||||
var breaking_power = 0.0 | var breaking_power = 0.0 | ||||
var reverse = true | |||||
var reverse = false | |||||
onready var camera = $Camera2D | onready var camera = $Camera2D | ||||
if speed >= traction_fast_speed: | if speed >= traction_fast_speed: | ||||
traction = traction_fast | traction = traction_fast | ||||
elif speed >= traction_slow_speed: | elif speed >= traction_slow_speed: | ||||
var d = speed / (traction_fast_speed - traction_slow_speed) | |||||
var d = (speed - traction_slow_speed) / (traction_fast_speed - traction_slow_speed) | |||||
traction = traction_slow + ((traction_fast - traction_slow) * d) | traction = traction_slow + ((traction_fast - traction_slow) * d) | ||||
return traction | return traction | ||||
var heading = (fore_wheel - rear_wheel).normalized() | var heading = (fore_wheel - rear_wheel).normalized() | ||||
var traction = _generate_traction() | var traction = _generate_traction() | ||||
var d = heading.dot(velocity.normalized()) | var d = heading.dot(velocity.normalized()) | ||||
if d > 0: | |||||
if d > 0 and not (reverse or breaking_power > 0): | |||||
velocity = velocity.linear_interpolate(heading * velocity.length(), traction) | velocity = velocity.linear_interpolate(heading * velocity.length(), traction) | ||||
if d < 0: | |||||
if d < 0 and (reverse or breaking_power > 0): | |||||
velocity = velocity.linear_interpolate(-heading * velocity.length(), traction) | velocity = velocity.linear_interpolate(-heading * velocity.length(), traction) | ||||
#velocity = heading * velocity.length() | #velocity = heading * velocity.length() | ||||
rotation = (heading.angle() + deg2rad(90)) | rotation = (heading.angle() + deg2rad(90)) |
extends Node | |||||
signal message(msg) | |||||
signal value_passed(name, v) | |||||
const EMIT_RATE = 0.1 | |||||
var _timer_message : float = 0.0 | |||||
var _timer_pass_val : float = 0.0 | |||||
var _msg_buffer = [] | |||||
var _pass_val_buffer = [] | |||||
func _msgformat(msg : String, args : Array) -> String: | |||||
for i in range(0, args.size()): | |||||
msg = msg.format(args[i], "$" + String(i)) | |||||
return msg | |||||
func message(msg : String, args : Array = []) -> void: | |||||
if _timer_message <= 0.0: | |||||
emit_signal("message", _msgformat(msg, args)) | |||||
_timer_message = EMIT_RATE | |||||
else: | |||||
_msg_buffer.append(_msgformat(msg, args)) | |||||
func pass_value(name : String, val) -> void: | |||||
emit_signal("value_passed", name, val) | |||||
func _process(delta : float) -> void: | |||||
if _timer_message > 0.0: | |||||
_timer_message = max(0.0, _timer_message - delta) | |||||
if _timer_message == 0.0 and _msg_buffer.size() > 0: | |||||
emit_signal("message", _msg_buffer) | |||||
_msg_buffer = [] | |||||
[gd_scene format=2] | |||||
[node name="Console" type="CanvasLayer"] | |||||
[node name="ScreenSplit" type="VBoxContainer" parent="."] | |||||
anchor_right = 1.0 | |||||
anchor_bottom = 1.0 | |||||
__meta__ = { | |||||
"_edit_use_anchors_": false | |||||
} | |||||
[node name="Messages" type="ScrollContainer" parent="ScreenSplit"] | |||||
margin_right = 1920.0 | |||||
margin_bottom = 538.0 | |||||
size_flags_vertical = 3 | |||||
[node name="Label" type="Label" parent="ScreenSplit/Messages"] | |||||
margin_bottom = 14.0 | |||||
[node name="Control" type="Control" parent="ScreenSplit"] | |||||
margin_top = 542.0 | |||||
margin_right = 1920.0 | |||||
margin_bottom = 1080.0 | |||||
size_flags_vertical = 3 |
run/main_scene="res://World.tscn" | run/main_scene="res://World.tscn" | ||||
config/icon="res://icon.png" | config/icon="res://icon.png" | ||||
[autoload] | |||||
ConsoleCTRL="*res://Scripts/Autoloads/consolectrl.gd" | |||||
[display] | [display] | ||||
window/size/width=1920 | window/size/width=1920 |