diff --git a/compile.bat b/compile.bat
new file mode 100644
index 00000000..2a7da2ed
--- /dev/null
+++ b/compile.bat
@@ -0,0 +1 @@
+cl native\marblegame.c /Fe:marblegame.exe /Ox -I "D:\C Projects\Haxe\hl-1.11.0-win\include" -I native "D:\repos\Hashlink\hashlink\x64\Release\libhl.lib" "D:\repos\Hashlink\hashlink\x64\Release\fmt.lib" "D:\repos\Hashlink\hashlink\x64\Release\ui.lib" "D:\repos\Hashlink\hashlink\x64\Release\openal.lib" "D:\repos\Hashlink\hashlink\x64\Release\sdl.lib"
\ No newline at end of file
diff --git a/src/DifBuilder.hx b/src/DifBuilder.hx
index 87c5f89f..acca5338 100644
--- a/src/DifBuilder.hx
+++ b/src/DifBuilder.hx
@@ -305,6 +305,7 @@ class DifBuilder {
} else {
material = Material.create();
}
+ material.shadows = false;
// material.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1));
// material.mainPass.wireframe = true;
diff --git a/src/DtsObject.hx b/src/DtsObject.hx
index d63a4b74..7ed262ac 100644
--- a/src/DtsObject.hx
+++ b/src/DtsObject.hx
@@ -366,14 +366,15 @@ class DtsObject extends GameObject {
// // TODO TRANSPARENCY SHIT
if (flags & 8 > 0) {
material.blendMode = BlendMode.Add;
- material.mainPass.setPassName("overlay");
+ // material.mainPass.setPassName("overlay");
// material.textureShader.additive = true;
}
if (flags & 16 > 0)
material.blendMode = BlendMode.Sub;
if (flags & 32 > 0) {
- material.mainPass.setPassName("overlay");
+ material.mainPass.enableLights = false;
+ // material.mainPass.setPassName("overlay");
// var pbrprops = material.mainPass.getShader(h3d.shader.pbr.PropsValues);
// pbrprops.emissiveValue = 1;
// pbrprops.roughnessValue = 1;
@@ -386,6 +387,8 @@ class DtsObject extends GameObject {
// }
// ((flags & 32) || environmentMaterial) ? new Materia
+ material.shadows = false;
+
// material.mainPass.addShader(new AlphaMult());
this.materials.push(material);
diff --git a/src/ForceObject.hx b/src/ForceObject.hx
index 323358cf..21069996 100644
--- a/src/ForceObject.hx
+++ b/src/ForceObject.hx
@@ -2,7 +2,6 @@ package src;
import src.DtsObject;
import h3d.Vector;
-import h3d.scene.CustomObject;
enum ForceType {
NoForce;
diff --git a/src/InstanceManager.hx b/src/InstanceManager.hx
index 49d91191..528e4e78 100644
--- a/src/InstanceManager.hx
+++ b/src/InstanceManager.hx
@@ -41,6 +41,7 @@ class InstanceManager {
for (instance in opaqueinstances) { // Draw the opaque shit first
var transform = instance.emptyObj.getAbsPos().clone();
minfo.meshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
+ minfo.meshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights;
minfo.meshbatch.setTransform(transform);
minfo.meshbatch.emitInstance();
}
@@ -52,8 +53,10 @@ class InstanceManager {
var dtsShader = minfo.transparencymeshbatch.material.mainPass.getShader(h3d.shader.Texture);
minfo.transparencymeshbatch.material.blendMode = Alpha;
minfo.transparencymeshbatch.material.color.a = instance.gameObject.currentOpacity;
- minfo.transparencymeshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
+ // minfo.transparencymeshbatch.material.mainPass.setPassName(minfo.mesh.material.mainPass.name);
minfo.transparencymeshbatch.shadersChanged = true;
+ minfo.transparencymeshbatch.material.mainPass.enableLights = minfo.mesh.material.mainPass.enableLights;
+ // minfo.transparencymeshbatch.material.mainPass.depthWrite = false;
// if (dtsShader != null) {
// dtsShader.currentOpacity = instance.gameObject.currentOpacity;
// minfo.transparencymeshbatch.shadersChanged = true;
diff --git a/src/Main.hx b/src/Main.hx
index a4b1378c..b7f0f9e1 100644
--- a/src/Main.hx
+++ b/src/Main.hx
@@ -40,7 +40,7 @@ class Main extends hxd.App {
}
static function main() {
- h3d.mat.PbrMaterialSetup.set();
+ // h3d.mat.PbrMaterialSetup.set();
new Main();
}
}
diff --git a/src/Marble.hx b/src/Marble.hx
index 365f0a6b..0d23d90c 100644
--- a/src/Marble.hx
+++ b/src/Marble.hx
@@ -1,5 +1,6 @@
package src;
+import h3d.scene.Mesh;
import h3d.col.Bounds;
import collision.CollisionEntity;
import shapes.StartPad;
@@ -30,7 +31,6 @@ import h3d.col.ObjectCollider;
import h3d.col.Collider.GroupCollider;
import h3d.Vector;
import h3d.mat.Material;
-import h3d.scene.CustomObject;
import h3d.prim.Sphere;
import h3d.scene.Object;
import src.CameraController;
@@ -164,7 +164,8 @@ class Marble extends GameObject {
geom.addUVs();
var marbleTexture = ResourceLoader.loader.load("data/shapes/balls/base.marble.png").toTexture();
var marbleMaterial = Material.create(marbleTexture);
- var obj = new CustomObject(geom, marbleMaterial, this);
+ marbleMaterial.shadows = false;
+ var obj = new Mesh(geom, marbleMaterial, this);
obj.scale(_radius);
this.velocity = new Vector();
diff --git a/src/MarbleWorld.hx b/src/MarbleWorld.hx
index 6d2d2279..5014059f 100644
--- a/src/MarbleWorld.hx
+++ b/src/MarbleWorld.hx
@@ -4,7 +4,7 @@ import src.MarbleGame;
import gui.EndGameGui;
import sdl.Cursor;
import src.ForceObject;
-import h3d.scene.pbr.DirLight;
+import h3d.scene.fwd.DirLight;
import h3d.col.Bounds;
import triggers.HelpTrigger;
import triggers.InBoundsTrigger;
@@ -54,7 +54,6 @@ import hxd.Key;
import h3d.Vector;
import src.InteriorObject;
import h3d.scene.Scene;
-import h3d.scene.CustomObject;
import collision.CollisionWorld;
import src.Marble;
@@ -153,9 +152,9 @@ class MarbleWorld extends Scheduler {
this.instanceManager = new InstanceManager(scene);
this.particleManager = new ParticleManager(cast this);
- var renderer = cast(this.scene.renderer, h3d.scene.pbr.Renderer);
+ // var renderer = cast(this.scene.renderer, h3d.scene.pbr.Renderer);
- renderer.skyMode = Hide;
+ // renderer.skyMode = Hide;
for (element in mission.root.elements) {
if (element._type != MissionElementType.Sun)
@@ -172,7 +171,7 @@ class MarbleWorld extends Scheduler {
scene.lightSystem.ambientLight.load(ambientColor);
var sunlight = new DirLight(sunDirection, scene);
- sunlight.color = directionalColor.multiply(2);
+ sunlight.color = directionalColor;
}
// var skyElement:MissionElementSky = cast this.mission.root.elements.filter((element) -> element._type == MissionElementType.Sky)[0];
diff --git a/src/ParticleSystem.hx b/src/ParticleSystem.hx
index 2386f811..e466e302 100644
--- a/src/ParticleSystem.hx
+++ b/src/ParticleSystem.hx
@@ -291,7 +291,8 @@ class ParticleManager {
particleShader.scale = instance.scale;
particleShader.rotation = instance.rotation;
batch.meshBatch.material.blendMode = instance.o.blending;
- batch.meshBatch.material.mainPass.setPassName("overlay");
+ batch.meshBatch.material.mainPass.depthWrite = false;
+ // batch.meshBatch.material.mainPass.setPassName("overlay");
batch.meshBatch.material.color.load(instance.color);
batch.meshBatch.shadersChanged = true;
batch.meshBatch.setScale(instance.scale);
@@ -324,8 +325,9 @@ class ParticleManager {
var mat = Material.create(particleData.texture);
// matshader.texture = mat.texture;
mat.mainPass.enableLights = false;
- mat.mainPass.setPassName("overlay");
+ // mat.mainPass.setPassName("overlay");
// mat.mainPass.addShader(new h3d.shader.pbr.PropsValues(1, 0, 0, 1));
+ mat.shadows = false;
mat.texture.wrap = Wrap.Repeat;
var billboardShader = new Billboard();
mat.mainPass.addShader(billboardShader);
diff --git a/src/Sky.hx b/src/Sky.hx
index 50d60fd0..04a756fe 100644
--- a/src/Sky.hx
+++ b/src/Sky.hx
@@ -33,11 +33,11 @@ class Sky extends Object {
skyMesh.material.mainPass.enableLights = false;
skyMesh.material.receiveShadows = false;
skyMesh.material.blendMode = None;
- var pbrprops = skyMesh.material.mainPass.getShader(PropsValues);
- pbrprops.emissiveValue = 1;
- pbrprops.roughnessValue = 0;
- pbrprops.occlusionValue = 0;
- pbrprops.metalnessValue = 1;
+ // var pbrprops = skyMesh.material.mainPass.getShader(PropsValues);
+ // pbrprops.emissiveValue = 1;
+ // pbrprops.roughnessValue = 0;
+ // pbrprops.occlusionValue = 0;
+ // pbrprops.metalnessValue = 1;
skyMesh.scale(3500);
var env = new Environment(texture);
diff --git a/src/gui/EndGameGui.hx b/src/gui/EndGameGui.hx
index 95ef93b9..91e7fa01 100644
--- a/src/gui/EndGameGui.hx
+++ b/src/gui/EndGameGui.hx
@@ -54,6 +54,17 @@ class EndGameGui extends GuiControl {
var expo32 = new BitmapFont(expo32fontdata.entry);
@:privateAccess expo32.loader = ResourceLoader.loader;
+ function mlFontLoader(text:String) {
+ switch (text) {
+ case "DomCasual32":
+ return domcasual32.toFont();
+ case "Arial14":
+ return arial14.toFont();
+ default:
+ return null;
+ }
+ }
+
var congrats = new GuiText(expo50);
congrats.text.textColor = 0xffff00;
congrats.text.text = "Final Time:";
@@ -71,9 +82,9 @@ class EndGameGui extends GuiControl {
finishMessage.extent = new Vector(200, 100);
pg.addChild(finishMessage);
- var leftColumn = new GuiText(domcasual32);
+ var leftColumn = new GuiMLText(domcasual32, mlFontLoader);
leftColumn.text.textColor = 0x000000;
- leftColumn.text.text = "Qualify Time:\nGold Time:\nElapsed Time:\nBonus Time:";
+ leftColumn.text.text = 'Qualify Time:
Gold Time:
Elapsed Time:
Bonus Time:
Best Times:
1. Nardo Polo
2. Nardo Polo
3. Nardo Polo';
leftColumn.text.filter = new DropShadow(1.414, 0.785, 0xffffff, 1, 0, 0.4, 1, true);
leftColumn.position = new Vector(108, 103);
leftColumn.extent = new Vector(208, 50);
diff --git a/src/gui/PlayGui.hx b/src/gui/PlayGui.hx
index 6bf2f53c..e9814c62 100644
--- a/src/gui/PlayGui.hx
+++ b/src/gui/PlayGui.hx
@@ -1,12 +1,13 @@
package gui;
+import h3d.shader.AlphaMult;
+import h3d.shader.ColorKey;
import hxd.snd.WavData;
import gui.GuiControl.HorizSizing;
import src.TimeState;
import format.gif.Data.Block;
import hxd.res.BitmapFont;
import h2d.Text;
-import h3d.shader.pbr.PropsValues;
import h3d.Vector;
import hxd.fmt.hmd.Data.AnimationEvent;
import h2d.Tile;
@@ -201,8 +202,8 @@ class PlayGui {
playGuiCtrl.addChild(gemCountNumbers[3]);
this.gemImageScene = new h3d.scene.Scene();
- var gemImageRenderer = cast(this.gemImageScene.renderer, h3d.scene.pbr.Renderer);
- gemImageRenderer.skyMode = Hide;
+ // var gemImageRenderer = cast(this.gemImageScene.renderer, h3d.scene.Renderer);
+ // gemImageRenderer.skyMode = Hide;
gemImageSceneTarget = new Texture(60, 60, [Target]);
gemImageSceneTarget.depthBuffer = new DepthBuffer(60, 60);
@@ -210,6 +211,8 @@ class PlayGui {
gemImageSceneTargetBitmap = new Bitmap(Tile.fromTexture(gemImageSceneTarget), scene2d);
gemImageSceneTargetBitmap.x = -8;
gemImageSceneTargetBitmap.y = -8;
+ // gemImageSceneTargetBitmap.blendMode = None;
+ // gemImageSceneTargetBitmap.addShader(new ColorKey());
gemImageObject = new DtsObject();
gemImageObject.dtsPath = "data/shapes/items/gem.dts";
@@ -220,7 +223,13 @@ class PlayGui {
// ["base.gem"] = color + ".gem";
gemImageObject.init(null);
for (mat in gemImageObject.materials) {
- mat.mainPass.addShader(new PropsValues(1, 0, 0, 1));
+ mat.mainPass.enableLights = false;
+
+ // Huge hacks
+ if (mat.blendMode != Add) {
+ var alphaShader = new h3d.shader.AlphaChannel();
+ mat.mainPass.addShader(alphaShader);
+ }
}
gemImageScene.addChild(gemImageObject);
var gemImageCenter = gemImageObject.getBounds().getCenter();
@@ -237,8 +246,8 @@ class PlayGui {
playGuiCtrl.addChild(powerupBox);
this.powerupImageScene = new h3d.scene.Scene();
- var powerupImageRenderer = cast(this.powerupImageScene.renderer, h3d.scene.pbr.Renderer);
- powerupImageRenderer.skyMode = Hide;
+ // var powerupImageRenderer = cast(this.powerupImageScene.renderer, h3d.scene.pbr.Renderer);
+ // powerupImageRenderer.skyMode = Hide;
powerupImageSceneTarget = new Texture(68, 67, [Target]);
powerupImageSceneTarget.depthBuffer = new DepthBuffer(68, 67);
@@ -365,7 +374,7 @@ class PlayGui {
powerupImageObject.showSequences = false;
powerupImageObject.init(null);
for (mat in powerupImageObject.materials) {
- mat.mainPass.addShader(new PropsValues(1, 0, 0, 1));
+ mat.mainPass.enableLights = false;
}
powerupImageScene.addChild(powerupImageObject);
var powerupImageCenter = powerupImageObject.getBounds().getCenter();