mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
some more optimizations
This commit is contained in:
parent
13c9c8d99e
commit
b6679f7b87
6 changed files with 17 additions and 11 deletions
|
|
@ -84,7 +84,7 @@ class DtsObject extends GameObject {
|
|||
var materialInfos:Map<Material, Array<String>> = new Map();
|
||||
var matNameOverride:Map<String, String> = new Map();
|
||||
|
||||
var sequenceKeyframeOverride:Map<Sequence, Float> = new Map();
|
||||
var sequenceKeyframeOverride:Array<Float> = [];
|
||||
var lastSequenceKeyframes:Array<Float> = [];
|
||||
|
||||
var graphNodes:Array<Object> = [];
|
||||
|
|
@ -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<Vector> = null;
|
||||
var scales:Array<Vector> = 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;
|
||||
|
|
|
|||
|
|
@ -96,8 +96,14 @@ class ReusableList<T> {
|
|||
}
|
||||
}
|
||||
|
||||
@:publicFields
|
||||
@:structInit
|
||||
class InstancedMesh {
|
||||
var batches:Array<MeshBatchInfo>;
|
||||
}
|
||||
|
||||
class InstanceManager {
|
||||
var objects:Array<Array<MeshBatchInfo>> = [];
|
||||
var objects:Array<InstancedMesh> = [];
|
||||
|
||||
var objectMap:Map<String, Int> = [];
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue