Add initial UI for lightmap layer toggling
This commit is contained in:
parent
4a80ef547b
commit
110c9b8a3c
|
@ -38,6 +38,7 @@ public partial class Mission : Node3D
|
|||
public bool Clear = false;
|
||||
[Export]
|
||||
public bool Dump = false;
|
||||
public int LightmapLayers = 33;
|
||||
|
||||
string _campaignName;
|
||||
string _missionName;
|
||||
|
@ -55,6 +56,10 @@ public partial class Mission : Node3D
|
|||
_modelLoader = new ModelLoader(_installPaths);
|
||||
_materials = new List<ShaderMaterial>();
|
||||
_lmLayerMask = new Vector2I(~0, ~0);
|
||||
|
||||
var lightmapToggler = GetNode<Control>("%LightmapToggler") as LightmapLayerToggler;
|
||||
lightmapToggler.Setup(this);
|
||||
|
||||
var missionSelector = GetNode<Control>("%MissionSelector") as MissionSelector;
|
||||
missionSelector.pathManager = _installPaths;
|
||||
missionSelector.MissionSelected += (string campaign, string mission) =>
|
||||
|
@ -362,7 +367,7 @@ public partial class Mission : Node3D
|
|||
GD.Print($"Creating lightmap with bounds: ({bounds.Width}, {bounds.Height})");
|
||||
|
||||
var lightmapFormat = Image.Format.Rgba8;
|
||||
var lmLayerCount = 33;
|
||||
var lmLayerCount = 33; // TODO: Use LightmapLayers
|
||||
var lmImages = new Godot.Collections.Array<Image>();
|
||||
lmImages.Resize(lmLayerCount);
|
||||
for (var i = 0; i < lmLayerCount; i++)
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
using Godot;
|
||||
|
||||
namespace KeepersCompound.TMV.UI;
|
||||
|
||||
public partial class LightmapLayerToggler : Control
|
||||
{
|
||||
public void Setup(Mission mission)
|
||||
{
|
||||
var layersNode = GetNode<GridContainer>("%Layers");
|
||||
foreach (var node in layersNode.GetChildren())
|
||||
{
|
||||
node.QueueFree();
|
||||
}
|
||||
|
||||
var layerCount = mission.LightmapLayers;
|
||||
for (var i = 0; i < layerCount; i++)
|
||||
{
|
||||
var button = new Button
|
||||
{
|
||||
Text = i.ToString(),
|
||||
ToggleMode = true
|
||||
};
|
||||
button.Pressed += () =>
|
||||
{
|
||||
mission.ToggleLmLayer(uint.Parse(button.Text));
|
||||
};
|
||||
layersNode.AddChild(button);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,9 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://boxi211q3kx6c"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://boxi211q3kx6c"]
|
||||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/Mission.cs" id="1_3gnqe"]
|
||||
[ext_resource type="Script" path="res://project/code/camera.gd" id="2_w5otl"]
|
||||
[ext_resource type="PackedScene" uid="uid://cekg1xb5f0ux1" path="res://project/scenes/ui/mission_selector.tscn" id="3_hwfcj"]
|
||||
[ext_resource type="PackedScene" uid="uid://0h2w7w84vbea" path="res://project/scenes/ui/lightmap_layer_toggler.tscn" id="4_naip8"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_cckyk"]
|
||||
ambient_light_source = 2
|
||||
|
@ -23,5 +24,10 @@ script = ExtResource("2_w5otl")
|
|||
[node name="MissionSelector" parent="UI" instance=ExtResource("3_hwfcj")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="LightmapToggler" parent="UI" instance=ExtResource("4_naip8")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_cckyk")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://0h2w7w84vbea"]
|
||||
|
||||
[ext_resource type="Script" path="res://project/code/TMV/UI/LightmapLayerToggler.cs" id="1_xwjtg"]
|
||||
|
||||
[node name="LightmapToggler" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
script = ExtResource("1_xwjtg")
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="."]
|
||||
layout_mode = 0
|
||||
offset_right = 40.0
|
||||
offset_bottom = 40.0
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 8
|
||||
theme_override_constants/margin_top = 8
|
||||
theme_override_constants/margin_right = 8
|
||||
theme_override_constants/margin_bottom = 8
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Lightmap Layers"
|
||||
|
||||
[node name="Layers" type="GridContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
columns = 8
|
Loading…
Reference in New Issue