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;
|
public bool Clear = false;
|
||||||
[Export]
|
[Export]
|
||||||
public bool Dump = false;
|
public bool Dump = false;
|
||||||
|
public int LightmapLayers = 33;
|
||||||
|
|
||||||
string _campaignName;
|
string _campaignName;
|
||||||
string _missionName;
|
string _missionName;
|
||||||
|
@ -55,6 +56,10 @@ public partial class Mission : Node3D
|
||||||
_modelLoader = new ModelLoader(_installPaths);
|
_modelLoader = new ModelLoader(_installPaths);
|
||||||
_materials = new List<ShaderMaterial>();
|
_materials = new List<ShaderMaterial>();
|
||||||
_lmLayerMask = new Vector2I(~0, ~0);
|
_lmLayerMask = new Vector2I(~0, ~0);
|
||||||
|
|
||||||
|
var lightmapToggler = GetNode<Control>("%LightmapToggler") as LightmapLayerToggler;
|
||||||
|
lightmapToggler.Setup(this);
|
||||||
|
|
||||||
var missionSelector = GetNode<Control>("%MissionSelector") as MissionSelector;
|
var missionSelector = GetNode<Control>("%MissionSelector") as MissionSelector;
|
||||||
missionSelector.pathManager = _installPaths;
|
missionSelector.pathManager = _installPaths;
|
||||||
missionSelector.MissionSelected += (string campaign, string mission) =>
|
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})");
|
GD.Print($"Creating lightmap with bounds: ({bounds.Width}, {bounds.Height})");
|
||||||
|
|
||||||
var lightmapFormat = Image.Format.Rgba8;
|
var lightmapFormat = Image.Format.Rgba8;
|
||||||
var lmLayerCount = 33;
|
var lmLayerCount = 33; // TODO: Use LightmapLayers
|
||||||
var lmImages = new Godot.Collections.Array<Image>();
|
var lmImages = new Godot.Collections.Array<Image>();
|
||||||
lmImages.Resize(lmLayerCount);
|
lmImages.Resize(lmLayerCount);
|
||||||
for (var i = 0; i < lmLayerCount; i++)
|
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/TMV/Mission.cs" id="1_3gnqe"]
|
||||||
[ext_resource type="Script" path="res://project/code/camera.gd" id="2_w5otl"]
|
[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://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"]
|
[sub_resource type="Environment" id="Environment_cckyk"]
|
||||||
ambient_light_source = 2
|
ambient_light_source = 2
|
||||||
|
@ -23,5 +24,10 @@ script = ExtResource("2_w5otl")
|
||||||
[node name="MissionSelector" parent="UI" instance=ExtResource("3_hwfcj")]
|
[node name="MissionSelector" parent="UI" instance=ExtResource("3_hwfcj")]
|
||||||
unique_name_in_owner = true
|
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="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_cckyk")
|
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