diff --git a/src/Main.hx b/src/Main.hx index 03595658..7f30c5f0 100644 --- a/src/Main.hx +++ b/src/Main.hx @@ -65,14 +65,14 @@ class Main extends hxd.App { var mission = new Mission(); mission.root = mis.root; - canvas = new Canvas(s2d); + // canvas = new Canvas(s2d); - canvas.setContent(new MainMenuGui()); + // canvas.setContent(new MainMenuGui()); - // world = new MarbleWorld(s3d, s2d, mission); + world = new MarbleWorld(s3d, s2d, mission); - // world.init(); - // world.start(); + world.init(); + world.start(); fpsCounter = new Text(DefaultFont.get(), s2d); fpsCounter.y = 40; @@ -81,17 +81,17 @@ class Main extends hxd.App { override function update(dt:Float) { super.update(dt); - var wnd = Window.getInstance(); - var mouseState:MouseState = { - position: new Vector(wnd.mouseX, wnd.mouseY) - } - canvas.update(dt, mouseState); - // world.update(dt); + // var wnd = Window.getInstance(); + // var mouseState:MouseState = { + // position: new Vector(wnd.mouseX, wnd.mouseY) + // } + // canvas.update(dt, mouseState); + world.update(dt); fpsCounter.text = 'FPS: ${this.engine.fps}'; } override function render(e:h3d.Engine) { - // this.world.render(e); + this.world.render(e); super.render(e); } diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx index 3acbc7bd..dbbcd3d9 100644 --- a/src/MarbleWorld.hx +++ b/src/MarbleWorld.hx @@ -219,7 +219,7 @@ class MarbleWorld extends Scheduler { this.marble.camera.oob = false; this.marble.mode = Start; this.marble.startPad = cast startquat.pad; - // sky.follow = marble; + sky.follow = marble; var missionInfo:MissionElementScriptObject = cast this.mission.root.elements.filter((element) -> element._type == MissionElementType.ScriptObject && element._name == "MissionInfo")[0]; @@ -525,6 +525,7 @@ class MarbleWorld extends Scheduler { if (element.datablock == "OutOfBoundsTrigger") { trigger = new OutOfBoundsTrigger(element, cast this); } else if (element.datablock == "InBoundsTrigger") { + return; trigger = new InBoundsTrigger(element, cast this); } else if (element.datablock == "HelpTrigger") { trigger = new HelpTrigger(element, cast this); @@ -587,7 +588,7 @@ class MarbleWorld extends Scheduler { this.scene.addChild(marble.camera); this.marble = marble; // Ugly hack - // sky.follow = marble; + sky.follow = marble; } this.collisionWorld.addMovingEntity(marble.collider); this.scene.addChild(marble); diff --git a/src/Sky.hx b/src/Sky.hx index d7d0df82..50d60fd0 100644 --- a/src/Sky.hx +++ b/src/Sky.hx @@ -1,5 +1,6 @@ package src; +import shaders.Skybox; import h3d.shader.pbr.PropsValues; import h3d.shader.AmbientLight; import h3d.scene.pbr.Environment; @@ -38,13 +39,13 @@ class Sky extends Object { pbrprops.occlusionValue = 0; pbrprops.metalnessValue = 1; - skyMesh.scale(3000); + skyMesh.scale(3500); var env = new Environment(texture); env.compute(); // var renderer = cast(level.scene.renderer, h3d.scene.pbr.Renderer); - var shad = new CubeMap(texture); + var shad = new Skybox(texture); skyMesh.material.mainPass.addShader(shad); - skyMesh.material.shadows = false; + // skyMesh.material.shadows = false; } function createSkyboxCubeTextured(dmlPath:String) { diff --git a/src/shaders/Skybox.hx b/src/shaders/Skybox.hx new file mode 100644 index 00000000..5498821d --- /dev/null +++ b/src/shaders/Skybox.hx @@ -0,0 +1,27 @@ +package shaders; + +class Skybox extends hxsl.Shader { + static var SRC = { + var pixelColor:Vec4; + var transformedNormal:Vec3; + var transformedPosition:Vec3; + @param var texture:SamplerCube; + @global var camera:{ + var position:Vec3; + var viewProj:Mat4; + var view:Mat4; + var proj:Mat4; + }; + function vertex() { + transformedNormal = transformedPosition - camera.position; + } + function fragment() { + pixelColor.rgb = texture.get(normalize(transformedNormal)).rgb; + } + } + + public function new(texture) { + super(); + this.texture = texture; + } +}