Skip to content
This repository was archived by the owner on Nov 5, 2023. It is now read-only.

Commit

Permalink
Make OuterMirror fully functional!
Browse files Browse the repository at this point in the history
  • Loading branch information
CodedOre committed Jun 11, 2021
1 parent c0e81d3 commit 8e4d9e4
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 1 deletion.
5 changes: 4 additions & 1 deletion hud/OuterMirror.tscn
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=3 format=2]

[ext_resource path="res://assets/textures/OuterMirror/Background.png" type="Texture" id=1]
[ext_resource path="res://scripts/hud/OuterMirror.gd" type="Script" id=2]

[node name="OuterMirror" type="Control"]
anchor_left = 0.5
Expand All @@ -11,6 +12,7 @@ margin_bottom = 450.0
rect_min_size = Vector2( 1120, 450 )
rect_scale = Vector2( 0.365, 0.365 )
rect_pivot_offset = Vector2( 560, 25 )
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
Expand Down Expand Up @@ -40,3 +42,4 @@ gui_disable_input = true
gui_snap_controls_to_pixels = false

[node name="MirrorCam" type="Camera" parent="Viewport"]
far = 35.0
61 changes: 61 additions & 0 deletions scripts/hud/OuterMirror.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright 2021, Frederick Schenk

# --- OuterMirror Script ---
# The script for a simple mirror.

extends Control

# -- Properties --

# - The vehicle using this mirror -
var DisplayedVehicle : Vehicle setget set_displayed_vehicle, get_displayed_vehicle

# -- Variables --

# - Internal nodes -
onready var _mirror_camera : Camera = $Viewport/MirrorCam
onready var _mirror_viewport : Viewport = $Viewport
onready var _mirror_texture : Polygon2D = $Mirror

# - Runtime variables -
var _mirror_active : bool
var _displayed_vehicle : Vehicle
var _mirror_point : CameraPoint

# -- Functions --

# - Runs at start up -
func _ready() -> void:
GameSettings.connect("setting_changed", self, "_modify_settings")

# - Runs at every frame -
func _process(_delta) -> void:
if _mirror_active:
# Follow the camera point
_mirror_camera.global_transform = _nonrot_transform(_mirror_point)

# - Returns a Transform tha is at a Node's position, but only y rotation -
func _nonrot_transform(base : Spatial) -> Transform:
var position : Vector3 = base.global_transform.origin
var y_rotate : float = base.global_transform.basis.get_euler().y
return Transform(Basis(Vector3.UP, y_rotate), position)

# - Change internal variables when settings were modified -
func _modify_settings() -> void:
_mirror_active = GameSettings.get_setting("Performance", "OuterMirrorActive")
if _mirror_active:
if _displayed_vehicle._outer_mirror_point != null:
_mirror_point = _displayed_vehicle._outer_mirror_point
_mirror_texture.texture = _mirror_viewport.get_texture()
visible = true
else:
_mirror_texture.texture = null
visible = false

# - DisplayedVehicle property -
func set_displayed_vehicle(node : Vehicle) -> void:
_displayed_vehicle = node
_modify_settings()

func get_displayed_vehicle() -> Vehicle:
return _displayed_vehicle

0 comments on commit 8e4d9e4

Please sign in to comment.