From 9d040c371cc2526b7915014a479e6bf63e6b549b Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Mon, 15 Aug 2022 22:27:33 +0530 Subject: [PATCH] speed up a little and fix camera bug --- src/DtsObject.hx | 4 ++-- src/MarbleWorld.hx | 3 +++ src/octree/Octree.hx | 10 +++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 66354d56..08c0acf4 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -893,11 +893,11 @@ class DtsObject extends GameObject { if (mountPoint < 32) { var ni = mountPointNodes[mountPoint]; if (ni != -1) { - var mtransform = this.graphNodes[ni].getAbsPos().clone(); + var mtransform = this.graphNodes[ni].getAbsPos(); return mtransform; } } - return this.getTransform().clone(); + return this.getTransform(); } public function setOpacity(opacity:Float) { diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 7c491418..324f10cb 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -288,6 +288,8 @@ class MarbleWorld extends Scheduler { this.marble.camera.init(cast this); this.marble.camera.CameraYaw = euler.z + Math.PI / 2; this.marble.camera.CameraPitch = 0.45; + this.marble.camera.nextCameraPitch = 0.45; + this.marble.camera.nextCameraYaw = euler.z + Math.PI / 2; this.marble.camera.oob = false; this.marble.camera.finish = false; this.marble.mode = Start; @@ -693,6 +695,7 @@ class MarbleWorld extends Scheduler { this.forceObjects.push(cast obj); } obj.init(cast this); + obj.update(this.timeState); if (obj.useInstancing) { this.instanceManager.addObject(obj); } else diff --git a/src/octree/Octree.hx b/src/octree/Octree.hx index 2e8ec247..d1387dfb 100644 --- a/src/octree/Octree.hx +++ b/src/octree/Octree.hx @@ -13,7 +13,8 @@ class Octree { /** A map of each object in the octree to the node that it's in. This accelerates removal drastically, as the lookup step can be skipped. */ public var objectToNode:Map; - public var tempBox = new Bounds(); + var prevBoundSearch:Bounds; + var boundSearchCache:Array; public function new() { this.root = new OctreeNode(this, 0); @@ -140,7 +141,14 @@ class Octree { public function boundingSearch(bounds:Bounds) { var intersections = []; + if (this.prevBoundSearch != null) { + if (this.prevBoundSearch.containsBounds(bounds)) { + return boundSearchCache; + } + } this.root.boundingSearch(bounds, intersections); + prevBoundSearch = bounds; + boundSearchCache = intersections; return intersections; }