From b6679f7b8737c4fdddf238dd24824afd6a9c9adb Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Tue, 16 Jul 2024 19:38:34 +0530 Subject: [PATCH] some more optimizations --- src/DtsObject.hx | 5 +++-- src/InstanceManager.hx | 16 +++++++++++----- src/MissionList.hx | 1 - src/shapes/AbstractBumper.hx | 2 +- src/shapes/PushButton.hx | 2 +- src/shapes/Trapdoor.hx | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 84c8bf49..56efc73d 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -84,7 +84,7 @@ class DtsObject extends GameObject { var materialInfos:Map> = new Map(); var matNameOverride:Map = new Map(); - var sequenceKeyframeOverride:Map = new Map(); + var sequenceKeyframeOverride:Array = []; var lastSequenceKeyframes:Array = []; var graphNodes:Array = []; @@ -333,6 +333,7 @@ class DtsObject extends GameObject { for (seq in this.dts.sequences) { lastSequenceKeyframes.push(0); + sequenceKeyframeOverride.push(-1); } if (!this.isInstanced) { @@ -843,7 +844,7 @@ class DtsObject extends GameObject { var translations:Array = null; var scales:Array = null; - var actualKeyframe = this.sequenceKeyframeOverride.exists(sequence) ? this.sequenceKeyframeOverride.get(sequence) : ((completion * sequence.numKeyFrames) % sequence.numKeyFrames); + var actualKeyframe = this.sequenceKeyframeOverride[i] != -1 ? this.sequenceKeyframeOverride[i] : ((completion * sequence.numKeyFrames) % sequence.numKeyFrames); if (lastSequenceKeyframes[i] == actualKeyframe) continue; lastSequenceKeyframes[i] = actualKeyframe; diff --git a/src/InstanceManager.hx b/src/InstanceManager.hx index 8ceb41ac..ffc39771 100644 --- a/src/InstanceManager.hx +++ b/src/InstanceManager.hx @@ -96,8 +96,14 @@ class ReusableList { } } +@:publicFields +@:structInit +class InstancedMesh { + var batches:Array; +} + class InstanceManager { - var objects:Array> = []; + var objects:Array = []; var objectMap:Map = []; var scene:Scene; @@ -119,7 +125,7 @@ class InstanceManager { var cameraFrustrums = doFrustumCheck ? MarbleGame.instance.world.marble.cubemapRenderer.getCameraFrustums() : null; for (meshes in objects) { - for (minfo in meshes) { + for (minfo in meshes.batches) { opaqueinstances.clear(); transparentinstances.clear(); // Culling @@ -218,7 +224,7 @@ class InstanceManager { var objs = getAllChildren(object); var minfos = objects[objectMap.get(object.identifier)]; // objects.get(object.identifier); for (i in 0...objs.length) { - minfos[i].instances.push(new MeshInstance(objs[i], object)); + minfos.batches[i].instances.push(new MeshInstance(objs[i], object)); } } else { // First time appending the thing so bruh @@ -329,14 +335,14 @@ class InstanceManager { minfos.push(minfo); } var curidx = objects.length; - objects.push(minfos); + objects.push({batches: minfos}); objectMap.set(object.identifier, curidx); } } public function getObjectBounds(object:GameObject) { if (isInstanced(object)) { - var minfos = objects[objectMap.get(object.identifier)]; + var minfos = objects[objectMap.get(object.identifier)].batches; var invmat = minfos[0].instances[0].gameObject.getInvPos(); var b = minfos[0].instances[0].gameObject.getBounds().clone(); b.transform(invmat); diff --git a/src/MissionList.hx b/src/MissionList.hx index 369fc691..3d8dfa32 100644 --- a/src/MissionList.hx +++ b/src/MissionList.hx @@ -87,7 +87,6 @@ class MissionList { multiplayerMissions.set("beginner", parseDifficulty("multiplayer", "multiplayer/hunt", "beginner")); multiplayerMissions.set("intermediate", parseDifficulty("multiplayer", "multiplayer/hunt", "intermediate")); multiplayerMissions.set("advanced", parseDifficulty("multiplayer", "multiplayer/hunt", "advanced")); - multiplayerMissions.set("custom", parseDifficulty("multiplayer", "multiplayer/hunt", "custom")); customMissions = parseDifficulty("custom", "missions", "custom"); diff --git a/src/shapes/AbstractBumper.hx b/src/shapes/AbstractBumper.hx index 62006ed0..cf716770 100644 --- a/src/shapes/AbstractBumper.hx +++ b/src/shapes/AbstractBumper.hx @@ -16,7 +16,7 @@ class AbstractBumper extends DtsObject { override function update(timeState:src.TimeState) { // Override the keyframe var currentCompletion = getCurrentCompletion(timeState); - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); } diff --git a/src/shapes/PushButton.hx b/src/shapes/PushButton.hx index 983f2024..0ac7dca4 100644 --- a/src/shapes/PushButton.hx +++ b/src/shapes/PushButton.hx @@ -28,7 +28,7 @@ class PushButton extends DtsObject { var currentCompletion = this.getCurrentCompletion(timeState); // Override the keyframe - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); } diff --git a/src/shapes/Trapdoor.hx b/src/shapes/Trapdoor.hx index abd93f02..b7c04c6b 100644 --- a/src/shapes/Trapdoor.hx +++ b/src/shapes/Trapdoor.hx @@ -42,7 +42,7 @@ class Trapdoor extends DtsObject { var currentCompletion = this.getCurrentCompletion(timeState); // Override the keyframe - this.sequenceKeyframeOverride.set(this.dts.sequences[0], currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); + this.sequenceKeyframeOverride[0] = (currentCompletion * (this.dts.sequences[0].numKeyFrames - 1)); super.update(timeState); var diff = (currentCompletion - this.lastCompletion);