forked from LeenkxTeam/Leenkx_Templates
Update
This commit is contained in:
68
race_track/Sources/lnx/SettingsTrait.hx
Normal file
68
race_track/Sources/lnx/SettingsTrait.hx
Normal file
@ -0,0 +1,68 @@
|
||||
package lnx;
|
||||
|
||||
import iron.Scene;
|
||||
import leenkx.system.Event;
|
||||
import leenkx.data.Config;
|
||||
import leenkx.trait.internal.CanvasScript;
|
||||
import leenkx.renderpath.RenderPathCreator;
|
||||
|
||||
class SettingsTrait extends iron.Trait {
|
||||
|
||||
var canvas:CanvasScript;
|
||||
var envStrength = 0.0;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnInit(function() {
|
||||
canvas = Scene.active.getTrait(CanvasScript);
|
||||
|
||||
// Init UI to values loaded from config.lnx file
|
||||
canvas.notifyOnReady(function() {
|
||||
canvas.getElement("MenuContainer").visible = false;
|
||||
canvas.getHandle("SSAO").selected = Config.raw.rp_ssgi;
|
||||
canvas.getHandle("SSR").selected = Config.raw.rp_ssr;
|
||||
canvas.getHandle("Bloom").selected = Config.raw.rp_bloom;
|
||||
canvas.getHandle("Voxels").selected = Config.raw.rp_gi;
|
||||
canvas.getHandle("Shadows").position = getShadowQuality(Config.raw.rp_shadowmap_cascade);
|
||||
});
|
||||
|
||||
// Button events
|
||||
Event.add("toggle_menu", toggleMenu);
|
||||
Event.add("apply_settings", applySettings);
|
||||
});
|
||||
}
|
||||
|
||||
function toggleMenu() {
|
||||
var e = canvas.getElement("MenuContainer");
|
||||
e.visible = !e.visible;
|
||||
}
|
||||
|
||||
function applySettings() {
|
||||
|
||||
// Apply render path settings
|
||||
Config.raw.rp_ssgi = canvas.getHandle("SSAO").selected;
|
||||
Config.raw.rp_ssr = canvas.getHandle("SSR").selected;
|
||||
Config.raw.rp_bloom = canvas.getHandle("Bloom").selected;
|
||||
Config.raw.rp_gi = canvas.getHandle("Voxels").selected;
|
||||
Config.raw.rp_shadowmap_cascade = getShadowMapSize(canvas.getHandle("Shadows").position);
|
||||
RenderPathCreator.applyConfig();
|
||||
|
||||
// Lower envmap strength when voxel ao is disabled
|
||||
var p = iron.Scene.active.world.probe.raw;
|
||||
if (envStrength == 0) envStrength = p.strength;
|
||||
p.strength = Config.raw.rp_gi ? envStrength : envStrength / 3;
|
||||
|
||||
// Save config.lnx file
|
||||
Config.save();
|
||||
}
|
||||
|
||||
inline function getShadowQuality(i:Int):Int {
|
||||
// 0 - High, 1 - Medium, 2 - Low
|
||||
return i == 4096 ? 0 : i == 2048 ? 1 : 2;
|
||||
}
|
||||
|
||||
inline function getShadowMapSize(i:Int):Int {
|
||||
return i == 0 ? 4096 : i == 1 ? 2048 : 1024;
|
||||
}
|
||||
}
|
||||
55
race_track/Sources/lnx/TrackTimer.hx
Normal file
55
race_track/Sources/lnx/TrackTimer.hx
Normal file
@ -0,0 +1,55 @@
|
||||
package lnx;
|
||||
|
||||
import iron.Scene;
|
||||
import iron.object.Transform;
|
||||
using leenkx.object.TransformExtension;
|
||||
|
||||
class TrackTimer extends iron.Trait {
|
||||
|
||||
var time = 0.0;
|
||||
var running = false;
|
||||
var finished = false;
|
||||
var triggers:Array<Transform> = [];
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
|
||||
notifyOnInit(function() {
|
||||
var canvas = Scene.active.getTrait(leenkx.trait.internal.CanvasScript);
|
||||
var t = object.transform;
|
||||
|
||||
// Retrieve triggers
|
||||
var t0 = Scene.active.getChild("Trigger0").transform; // Start line
|
||||
var t1 = Scene.active.getChild("Trigger1").transform;
|
||||
var t2 = Scene.active.getChild("Trigger2").transform;
|
||||
var t3 = Scene.active.getChild("Trigger3").transform;
|
||||
|
||||
notifyOnUpdate(function() {
|
||||
|
||||
if (!running && !finished) {
|
||||
// Start line crossed, begin lap
|
||||
running = t.overlap(t0);
|
||||
}
|
||||
else {
|
||||
// Update timer
|
||||
if (!finished) {
|
||||
time += iron.system.Time.delta;
|
||||
var s = Std.int(time);
|
||||
var ms = Std.int((time - s) * 100);
|
||||
canvas.getElement("Time").text = s + "." + ms;
|
||||
}
|
||||
|
||||
// Mark touched triggers
|
||||
if (t.overlap(t1) && triggers.indexOf(t1) == -1) triggers.push(t1);
|
||||
if (t.overlap(t2) && triggers.indexOf(t2) == -1) triggers.push(t2);
|
||||
if (t.overlap(t3) && triggers.indexOf(t3) == -1) triggers.push(t3);
|
||||
|
||||
// Crossed finish line
|
||||
if (t.overlap(t0) && triggers.length == 3) {
|
||||
finished = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user