mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
86 lines
2.8 KiB
Haxe
86 lines
2.8 KiB
Haxe
package shapes;
|
|
|
|
import collision.CollisionInfo;
|
|
import mis.MisParser;
|
|
import src.DtsObject;
|
|
import src.ResourceLoader;
|
|
import mis.MissionElement.MissionElementStaticShape;
|
|
|
|
class Checkpoint extends DtsObject {
|
|
public var disableOOB = false;
|
|
|
|
var element:MissionElementStaticShape;
|
|
|
|
public function new(element:MissionElementStaticShape) {
|
|
super();
|
|
this.dtsPath = "data/shapes/pads/checkpad.dts";
|
|
this.isCollideable = true;
|
|
this.isTSStatic = false;
|
|
this.identifier = "Checkpoint";
|
|
this.element = element;
|
|
this.animateSubObjectOpacities = true;
|
|
|
|
this.disableOOB = element.fields.exists('disableOob') ? MisParser.parseBoolean(element.fields['disableOob'][0]) : false;
|
|
}
|
|
|
|
public override function init(level:src.MarbleWorld, onFinish:() -> Void) {
|
|
super.init(level, () -> {
|
|
ResourceLoader.load("sound/checkpoint.wav").entry.load(onFinish);
|
|
});
|
|
}
|
|
|
|
public override function onMarbleContact(time:src.TimeState, ?contact:CollisionInfo) {
|
|
this.level.saveCheckpointState({
|
|
obj: this,
|
|
elem: this.element
|
|
}, null);
|
|
}
|
|
|
|
override function postProcessMaterial(matName:String, material:h3d.mat.Material) {
|
|
if (matName == "sigil") {
|
|
var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/sigil.png").resource;
|
|
diffuseTex.wrap = Repeat;
|
|
diffuseTex.mipMap = Nearest;
|
|
|
|
var trivialShader = new shaders.TrivialMaterial(diffuseTex);
|
|
|
|
var glowpass = material.mainPass.clone();
|
|
glowpass.addShader(trivialShader);
|
|
var dtsshader = glowpass.getShader(shaders.DtsTexture);
|
|
dtsshader.passThrough = true;
|
|
glowpass.setPassName("glow");
|
|
glowpass.depthTest = LessEqual;
|
|
glowpass.enableLights = false;
|
|
glowpass.setBlendMode(Alpha);
|
|
material.addPass(glowpass);
|
|
|
|
material.mainPass.setPassName("glowPre");
|
|
material.mainPass.addShader(trivialShader);
|
|
dtsshader = material.mainPass.getShader(shaders.DtsTexture);
|
|
if (dtsshader != null)
|
|
material.mainPass.removeShader(dtsshader);
|
|
material.mainPass.enableLights = false;
|
|
material.mainPass.setBlendMode(Alpha);
|
|
}
|
|
if (matName == "sigiloff") {
|
|
var diffuseTex = ResourceLoader.getTexture("data/shapes/pads/sigiloff.png").resource;
|
|
diffuseTex.wrap = Repeat;
|
|
diffuseTex.mipMap = Nearest;
|
|
var shader = new shaders.DefaultDiffuseMaterial(diffuseTex);
|
|
var dtsTex = material.mainPass.getShader(shaders.DtsTexture);
|
|
dtsTex.passThrough = true;
|
|
material.mainPass.removeShader(material.textureShader);
|
|
material.mainPass.addShader(shader);
|
|
var thisprops:Dynamic = material.getDefaultProps();
|
|
thisprops.light = false; // We will calculate our own lighting
|
|
material.props = thisprops;
|
|
material.shadows = false;
|
|
material.receiveShadows = true;
|
|
material.blendMode = Alpha;
|
|
}
|
|
if (matName == "corona") {
|
|
material.blendMode = Alpha;
|
|
material.mainPass.enableLights = false;
|
|
}
|
|
}
|
|
}
|