Add lights demo
+ Semi-dynamic main menu buttons
This commit is contained in:
parent
b67f0d9263
commit
30d2636fdb
7
NOTES.md
7
NOTES.md
@ -22,3 +22,10 @@ venkovního úhlu. Protože reálně jsem od něj mega daleko, takže portálov
|
|||||||
že on má Y-up a Blender používá Z-up. V portal repu je k tomu poznámka ale nepochopil jsem to asi.
|
že on má Y-up a Blender používá Z-up. V portal repu je k tomu poznámka ale nepochopil jsem to asi.
|
||||||
- Divně se na ten mesh pak projektuje ta textura kamery??
|
- Divně se na ten mesh pak projektuje ta textura kamery??
|
||||||
- Možná by stálo za to udělat procedurální mesh. Nejběžnější tvar portálu bude asi obdélník
|
- Možná by stálo za to udělat procedurální mesh. Nejběžnější tvar portálu bude asi obdélník
|
||||||
|
- `OnScreenNotifier3D` nemůže specifikovat _která_ kamera ten objekt vidí, takže je asi k ničemu.
|
||||||
|
Portály se vidí různě navzájem, s tolika kamerama ve scéně je to nepředvídatelné trochu.
|
||||||
|
- **I když** možná by to šlo pofejkovat s culling vrstvama. Vzdáváme se tím rekurzivních portálů, ale kdyby portály **ne**renderovaly ostatní portály, tak by se daly vypnout v momentě kdy nejsou vidět (stonks?)
|
||||||
|
- **Fejkování světel** (OmniLight) by možná šlo!!! S rendering layerama bys nastavil aby některé světla byly vidět JEN skrz portály a NE tou kamerou co má hráč na sobě.
|
||||||
|
- Tohle platí hlavně u ~~free-standing~~ portálů na které jde koukat z obou stran. *Bylo by divné kdyby byl zezadu portálu ve vzduchu light source jenom proto, že na druhé straně portálu (bůh ví kde) takový source někde je*
|
||||||
|
- Free-standing portál neni uplně dobrý příklad, protože by to světlo mělo házet _výseč_ ven. To ničím fajné, to jsme zpátky u raytracingu. Leda by to člověk oblbnul nějakým shadow meshem nebo něco.. hm. Velmi specifické. Ale u těch dveří jako v semaforovém levelu by to fungovalo asi v pohodě, protože kolem futer je stěna.
|
||||||
|
- Spotlight..?
|
||||||
|
7
hud.tscn
7
hud.tscn
@ -1,8 +1,10 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://b5x7fmpwck335"]
|
[gd_scene load_steps=3 format=3 uid="uid://b5x7fmpwck335"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dys441ih752an" path="res://hud.gd" id="1_37p78"]
|
[ext_resource type="Script" uid="uid://dys441ih752an" path="res://hud.gd" id="1_37p78"]
|
||||||
|
[ext_resource type="Theme" uid="uid://h8lwapw6q4pv" path="res://menu_theme.tres" id="1_64ctp"]
|
||||||
|
|
||||||
[node name="HUD" type="VBoxContainer"]
|
[node name="HUD" type="VBoxContainer"]
|
||||||
|
theme = ExtResource("1_64ctp")
|
||||||
script = ExtResource("1_37p78")
|
script = ExtResource("1_37p78")
|
||||||
|
|
||||||
[node name="MenuButton" type="Button" parent="."]
|
[node name="MenuButton" type="Button" parent="."]
|
||||||
@ -10,4 +12,7 @@ unique_name_in_owner = true
|
|||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Back to Menu"
|
text = "Back to Menu"
|
||||||
|
|
||||||
|
[node name="HSeparator" type="HSeparator" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
[connection signal="pressed" from="MenuButton" to="." method="_on_menu_button_pressed"]
|
[connection signal="pressed" from="MenuButton" to="." method="_on_menu_button_pressed"]
|
||||||
|
113
levels/level_semaphore_lights.tscn
Normal file
113
levels/level_semaphore_lights.tscn
Normal file
File diff suppressed because one or more lines are too long
20
menu.gd
20
menu.gd
@ -3,12 +3,20 @@ extends Control
|
|||||||
const LEVEL_5_ROOMS = preload("res://levels/level_5rooms.tscn")
|
const LEVEL_5_ROOMS = preload("res://levels/level_5rooms.tscn")
|
||||||
const LEVEL_3_ROOMS = preload("res://levels/level_3_rooms.tscn")
|
const LEVEL_3_ROOMS = preload("res://levels/level_3_rooms.tscn")
|
||||||
const LEVEL_PLATFORMER = preload("res://levels/level_platformer.tscn")
|
const LEVEL_PLATFORMER = preload("res://levels/level_platformer.tscn")
|
||||||
|
const LEVEL_SEMAPHORE_LIGHTS = preload("res://levels/level_semaphore_lights.tscn")
|
||||||
|
|
||||||
func _on_level_button_1_pressed() -> void:
|
@onready var items_container: VBoxContainer = $CenterContainer/ItemsContainer
|
||||||
get_tree().change_scene_to_packed(LEVEL_5_ROOMS)
|
|
||||||
|
|
||||||
func _on_level_button_2_pressed() -> void:
|
var levels = {
|
||||||
get_tree().change_scene_to_packed(LEVEL_3_ROOMS)
|
"Semaphore": LEVEL_3_ROOMS,
|
||||||
|
"Semaphore - Lights": LEVEL_SEMAPHORE_LIGHTS,
|
||||||
|
"5 rooms": LEVEL_5_ROOMS,
|
||||||
|
"Infinite fall": LEVEL_PLATFORMER
|
||||||
|
}
|
||||||
|
|
||||||
func _on_level_button_3_pressed() -> void:
|
func _ready() -> void:
|
||||||
get_tree().change_scene_to_packed(LEVEL_PLATFORMER)
|
for key in levels:
|
||||||
|
var b = Button.new()
|
||||||
|
items_container.add_child(b)
|
||||||
|
b.text = key
|
||||||
|
b.pressed.connect(func(): get_tree().change_scene_to_packed(levels[key]))
|
||||||
|
16
menu.tscn
16
menu.tscn
@ -31,19 +31,3 @@ horizontal_alignment = 1
|
|||||||
|
|
||||||
[node name="HSeparator" type="HSeparator" parent="CenterContainer/ItemsContainer"]
|
[node name="HSeparator" type="HSeparator" parent="CenterContainer/ItemsContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="LevelButton_1" type="Button" parent="CenterContainer/ItemsContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Square rooms"
|
|
||||||
|
|
||||||
[node name="LevelButton_2" type="Button" parent="CenterContainer/ItemsContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Semafor"
|
|
||||||
|
|
||||||
[node name="LevelButton_3" type="Button" parent="CenterContainer/ItemsContainer"]
|
|
||||||
layout_mode = 2
|
|
||||||
text = "Platformer"
|
|
||||||
|
|
||||||
[connection signal="pressed" from="CenterContainer/ItemsContainer/LevelButton_1" to="." method="_on_level_button_1_pressed"]
|
|
||||||
[connection signal="pressed" from="CenterContainer/ItemsContainer/LevelButton_2" to="." method="_on_level_button_2_pressed"]
|
|
||||||
[connection signal="pressed" from="CenterContainer/ItemsContainer/LevelButton_3" to="." method="_on_level_button_3_pressed"]
|
|
||||||
|
@ -19,6 +19,7 @@ metadata/teleportable = false
|
|||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32153, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.32153, 0)
|
||||||
|
cull_mask = 1048571
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0)
|
||||||
|
@ -47,3 +47,5 @@ move_back={
|
|||||||
|
|
||||||
3d_render/layer_1="World"
|
3d_render/layer_1="World"
|
||||||
3d_render/layer_2="Portals"
|
3d_render/layer_2="Portals"
|
||||||
|
3d_render/layer_3="Visible only in portals"
|
||||||
|
3d_render/layer_4="Visible only in person"
|
||||||
|
Loading…
Reference in New Issue
Block a user