Repe [T3DU] and Moises Jpelaez updates

This commit is contained in:
2026-05-12 23:54:06 -07:00
parent 6b404f9da6
commit 39091e8db3
147 changed files with 5539 additions and 1750 deletions

View File

@ -601,8 +601,10 @@ class Keyboard extends VirtualInput {
function downListener(code: KeyCode) {
var s = keyCode(code);
keysFrame.push(s);
keysStarted.set(s, true);
if (!keysDown.get(s)) {
keysFrame.push(s);
keysStarted.set(s, true);
}
keysDown.set(s, true);
repeatTime = kha.Scheduler.time() + 0.4;
@ -618,8 +620,10 @@ class Keyboard extends VirtualInput {
function upListener(code: KeyCode) {
var s = keyCode(code);
keysFrame.push(s);
keysReleased.set(s, true);
if (keysDown.get(s)) {
keysFrame.push(s);
keysReleased.set(s, true);
}
keysDown.set(s, false);
#if kha_android_rmb
@ -746,7 +750,11 @@ class Gamepad extends VirtualInput {
}
else if (axis == 1 || axis == 3) { // Y
stick.lastY = stick.y;
#if (kha_html5 || lnx_debug_html5)
stick.y = -value;
#else
stick.y = value;
#end
stick.movementY = stick.y - stick.lastY;
}
stick.moved = true;
@ -765,13 +773,12 @@ class Gamepad extends VirtualInput {
}
class Sensor {
public var x = 0.0;
public var y = 0.0;
public var z = 0.0;
public function new() {
kha.input.Sensor.get(kha.input.SensorType.Accelerometer).notify(listener);
public function new(sensorType: kha.input.SensorType = kha.input.SensorType.Accelerometer) {
kha.input.Sensor.get(sensorType).notify(listener);
}
function listener(x: Float, y: Float, z: Float) {

View File

@ -111,12 +111,18 @@ class LnxPack {
#if js
var out = {};
#else
var out = Type.createEmptyInstance(getClass(key, parentKey));
var cls = getClass(key, parentKey);
var out: Dynamic = cls != null ? Type.createEmptyInstance(cls) : {};
var fields: Array<String> = cls != null ? Type.getInstanceFields(cls) : null;
#end
for (n in 0...length) {
var k = Std.string(read(i));
var raw = read(i);
var k = Std.string(raw);
var v = read(i, k, key);
Reflect.setField(out, k, v);
#if !js
if (fields == null || fields.indexOf(k) != -1)
#end
Reflect.setField(out, k, v);
}
return out;
}
@ -161,7 +167,9 @@ class LnxPack {
case "tracks": TTrack;
case "morph_target": TMorphTarget;
case "vertex_groups": TVertex_groups;
case _: TSceneFormat;
case "tilesheet": TTilesheetData;
case "events": TTilesheetEvent;
case _: null;
}
}
#end

View File

@ -2,27 +2,19 @@ package iron.system;
class Time {
public static var scale = 1.0;
// TODO: VR Frame Time Override - used to sync physics with VR headset refresh rate
#if lnx_vr
public static var vrFrameTime: Float = -1.0; // VR frame time in seconds (-1 = not in VR)
static var lastVRFrameTime: Float = 0.0;
static var vrFrameCount: Int = 0;
static var normalModeLogged: Bool = false;
#end
static var frequency: Null<Int> = null;
static function initFrequency() {
frequency = kha.Display.primary != null ? kha.Display.primary.frequency : 60;
}
public static var step(get, never): Float;
static function get_step(): Float {
if (frequency == null) initFrequency();
return 1 / frequency;
}
static var _fixedStep: Null<Float> = 1/60;
static var _fixedStep: Null<Float> = 1 / 60;
public static var fixedStep(get, never): Float;
static function get_fixedStep(): Float {
return _fixedStep;
@ -32,31 +24,45 @@ class Time {
_fixedStep = value;
}
static var _fixedStepInterpolation: Float = 0.0;
public static var fixedStepInterpolation(get, never): Float;
static function get_fixedStepInterpolation(): Float {
return _fixedStepInterpolation;
}
// TODO: VR Frame Time Override - used to sync physics with VR headset refresh rate
#if lnx_vr
public static var vrFrameTime: Float = -1.0; // VR frame time in seconds (-1 = not in VR)
static var lastVRFrameTime: Float = 0.0;
static var vrFrameCount: Int = 0;
static var normalModeLogged: Bool = false;
#end
static var lastTime = 0.0;
static var _delta = 0.0;
public static var delta(get, never): Float;
static function get_delta(): Float {
return _delta;
}
static var lastRenderTime = 0.0;
static var _renderDelta = 0.0;
public static var renderDelta(get, never): Float;
static function get_renderDelta(): Float {
return _renderDelta;
}
public static inline function time(): Float {
return kha.Scheduler.time() * scale;
return kha.Scheduler.time();
}
public static inline function realTime(): Float {
return kha.Scheduler.realTime() * scale;
return kha.Scheduler.realTime();
}
public static function update() {
#if lnx_vr
// TODO: use VR frame time when in VR present mode to sync physics with headset refresh
// TODO: use VR frame time when in VR present mode to sync physics with VR headset refresh
if (vrFrameTime >= 0.0) {
if (lastVRFrameTime > 0.0) {
_delta = vrFrameTime - lastVRFrameTime;

View File

@ -255,7 +255,7 @@ typedef TAnim = {
@:optional var _normalize: Array<Bool>;
}
@:enum abstract Ease(Int) from Int to Int {
enum abstract Ease(Int) from Int to Int {
var Linear = 0;
var SineIn = 1;
var SineOut = 2;