From 9f777dd741a3130b58466ecd69f170bbd5434f15 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sat, 12 Feb 2022 19:50:52 +0530 Subject: [PATCH] make compatible with latest heaps repo --- src/DtsObject.hx | 4 +-- src/DynamicPolygon.hx | 2 +- src/Main.hx | 4 ++- src/MarbleGame.hx | 26 ++++++++++++++++ src/MarbleWorld.hx | 3 +- src/ResourceLoader.hx | 4 ++- src/fs/ManifestFileSystem.hx | 57 +++++++----------------------------- src/shaders/DirLight.hx | 2 +- 8 files changed, 49 insertions(+), 53 deletions(-) diff --git a/src/DtsObject.hx b/src/DtsObject.hx index 0a929336..b5048aba 100644 --- a/src/DtsObject.hx +++ b/src/DtsObject.hx @@ -808,7 +808,7 @@ class DtsObject extends GameObject { var prim:DynamicPolygon = cast mesh.primitive; var vbuffer:FloatBuffer = null; if (prim.buffer != null) { - vbuffer = prim.getBuffer(prim.points.length); + vbuffer = prim.getDrawBuffer(prim.points.length); } var pos = 0; for (i in info.indices) { @@ -825,7 +825,7 @@ class DtsObject extends GameObject { prim = cast mesh.primitive; pos = 0; if (prim.buffer != null) { - vbuffer = prim.getBuffer(prim.points.length); + vbuffer = prim.getDrawBuffer(prim.points.length); } } var vertex = info.vertices[i]; diff --git a/src/DynamicPolygon.hx b/src/DynamicPolygon.hx index 4099dfea..4f4ba1af 100644 --- a/src/DynamicPolygon.hx +++ b/src/DynamicPolygon.hx @@ -152,7 +152,7 @@ class DynamicPolygon extends MeshPrimitive { indexes = h3d.Indexes.alloc(idx); } - public function getBuffer(vertices:Int) { + public function getDrawBuffer(vertices:Int) { if (vbuf == null) vbuf = hxd.impl.Allocator.get().allocFloats(vertices * 8) else diff --git a/src/Main.hx b/src/Main.hx index 69c63288..ea253bbb 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -1,7 +1,10 @@ package; import src.ResourceLoader; +#if js import fs.ManifestFileSystem; +import fs.ManifestBuilder; +#end import hxd.Timer; import hxd.Window; import src.AudioManager; @@ -11,7 +14,6 @@ import gui.MainMenuGui; import hxd.res.DefaultFont; import h2d.Text; import h3d.Vector; -import fs.ManifestBuilder; class Main extends hxd.App { var marbleGame:MarbleGame; diff --git a/src/MarbleGame.hx b/src/MarbleGame.hx index 01c75e9a..6a643e26 100644 --- a/src/MarbleGame.hx +++ b/src/MarbleGame.hx @@ -56,6 +56,7 @@ class MarbleGame { canvasElement.style.width = "100%"; canvasElement.style.height = "100%"; }); + var canvas = js.Browser.document.getElementById("webgl"); var pointercontainer = js.Browser.document.querySelector("#pointercontainer"); pointercontainer.addEventListener('mousedown', (e:js.html.MouseEvent) -> { var buttonCode = switch (e.button) { @@ -81,6 +82,31 @@ class MarbleGame { var buttonCode = (e.keyCode); @:privateAccess Key.keyPressed[buttonCode] = -Key.getFrame(); }); + js.Browser.window.addEventListener('keydown', (e:js.html.KeyboardEvent) -> { + var buttonCode = (e.keyCode); + @:privateAccess Key.keyPressed[buttonCode] = Key.getFrame(); + }); + js.Browser.window.addEventListener('keyup', (e:js.html.KeyboardEvent) -> { + var buttonCode = (e.keyCode); + @:privateAccess Key.keyPressed[buttonCode] = -Key.getFrame(); + }); + + pointercontainer.addEventListener('touchstart', (e:js.html.TouchEvent) -> { + @:privateAccess Key.keyPressed[Key.MOUSE_LEFT] = Key.getFrame(); + @:privateAccess scene2d.window.curMouseX = e.touches[0].clientX; + @:privateAccess scene2d.window.curMouseY = e.touches[0].clientY; + }); + + pointercontainer.addEventListener('touchend', (e:js.html.TouchEvent) -> { + @:privateAccess Key.keyPressed[Key.MOUSE_LEFT] = -Key.getFrame(); + @:privateAccess scene2d.window.curMouseX = e.touches[0].clientX; + @:privateAccess scene2d.window.curMouseY = e.touches[0].clientY; + }); + + pointercontainer.addEventListener('touchmove', (e:js.html.TouchEvent) -> { + @:privateAccess scene2d.window.curMouseX = e.touches[0].clientX; + @:privateAccess scene2d.window.curMouseY = e.touches[0].clientY; + }); js.Browser.window.addEventListener('contextmenu', (e) -> e.preventDefault()); // Disable right click context menu for good diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 3e963e92..9797e87e 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -219,8 +219,9 @@ class MarbleWorld extends Scheduler { var sunDirection = MisParser.parseVector3(sunElement.direction); sunDirection.x = -sunDirection.x; // sunDirection.z = -sunDirection.z; + var ls = cast(scene.lightSystem, h3d.scene.fwd.LightSystem); - scene.lightSystem.ambientLight.load(ambientColor); + ls.ambientLight.load(ambientColor); var shadow = scene.renderer.getPass(h3d.pass.DefaultShadowMap); shadow.power = 0.5; diff --git a/src/ResourceLoader.hx b/src/ResourceLoader.hx index f5f07e15..7ec44dd2 100644 --- a/src/ResourceLoader.hx +++ b/src/ResourceLoader.hx @@ -1,7 +1,10 @@ package src; +#if js import fs.ManifestLoader; import fs.ManifestBuilder; +import fs.ManifestProgress; +#end import hxd.res.Image; import hxd.res.Sound; import h3d.mat.Texture; @@ -12,7 +15,6 @@ import dif.Dif; import hxd.fs.LocalFileSystem; import hxd.fs.FileSystem; import hxd.res.Loader; -import fs.ManifestProgress; import src.Resource; class ResourceLoader { diff --git a/src/fs/ManifestFileSystem.hx b/src/fs/ManifestFileSystem.hx index b0826414..15da6152 100644 --- a/src/fs/ManifestFileSystem.hx +++ b/src/fs/ManifestFileSystem.hx @@ -17,6 +17,7 @@ // SOFTWARE. package fs; +import hxd.fs.FileInput; import hxd.net.BinaryLoader; import hxd.impl.ArrayIterator; import hxd.fs.LoadedBitmap; @@ -80,53 +81,17 @@ class ManifestEntry extends FileEntry { #end } + override function readBytes(out:haxe.io.Bytes, outPos:Int, pos:Int, len:Int):Int { + if (pos + len > bytes.length) + len = bytes.length - pos; + if (len < 0) + len = 0; + out.blit(outPos, bytes, pos, len); + return len; + } + override public function open() { - #if sys - if (fio == null) - fio = sys.io.File.read(file); - else - fio.seek(0, SeekBegin); - #else - readPos = 0; - #end - } - - override public function skip(nbytes:Int) { - #if sys - fio.seek(nbytes, SeekCur); - #else - readPos += nbytes; - if (bytes.length < readPos) - readPos = bytes.length; - #end - } - - override public function readByte():Int { - #if sys - return fio.readByte(); - #else - return bytes.get(readPos++); - #end - } - - override public function read(out:Bytes, pos:Int, size:Int) { - #if sys - fio.readFullBytes(out, pos, size); - #else - out.blit(pos, bytes, readPos, size); - readPos += size; - #end - } - - override public function close() { - #if sys - if (fio != null) { - fio.close(); - fio = null; - } - #else - readPos = 0; - #end + return @:privateAccess new FileInput(this); } public function fancyLoad(onReady:() -> Void, onProgress:(cur:Int, max:Int) -> Void) { diff --git a/src/shaders/DirLight.hx b/src/shaders/DirLight.hx index 3b36cb8c..d4a46e4f 100644 --- a/src/shaders/DirLight.hx +++ b/src/shaders/DirLight.hx @@ -1,6 +1,6 @@ package shaders; -import h3d.scene.Light; +import h3d.scene.fwd.Light; class DirLight extends Light { var dshader:DirLightShader;