mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-12-10 10:03:13 +00:00
59 lines
1.9 KiB
Haxe
59 lines
1.9 KiB
Haxe
package shapes;
|
|
|
|
import h3d.mat.Material;
|
|
import src.ResourceLoader;
|
|
import mis.MissionElement.MissionElementItem;
|
|
import src.TimeState;
|
|
import src.DtsObject;
|
|
import src.AudioManager;
|
|
import src.MarbleWorld;
|
|
|
|
class Helicopter extends PowerUp {
|
|
public function new(element:MissionElementItem) {
|
|
super(element);
|
|
this.dtsPath = "data/shapes/images/helicopter.dts";
|
|
this.isCollideable = false;
|
|
this.isTSStatic = false;
|
|
this.showSequences = false;
|
|
this.identifier = "Helicopter";
|
|
this.pickUpName = "a Gyrocopter powerup";
|
|
}
|
|
|
|
public override function init(level:MarbleWorld, onFinish:Void->Void) {
|
|
super.init(level, () -> {
|
|
ResourceLoader.load("sound/gyrocopter.wav").entry.load(() -> {
|
|
this.pickupSound = ResourceLoader.getResource("data/sound/gyrocopter.wav", ResourceLoader.getAudio, this.soundResources);
|
|
onFinish();
|
|
});
|
|
});
|
|
}
|
|
|
|
public function pickUp():Bool {
|
|
return this.level.pickUpPowerUp(this);
|
|
}
|
|
|
|
public function use(timeState:TimeState) {
|
|
var marble = this.level.marble;
|
|
marble.enableHelicopter(timeState.currentAttemptTime);
|
|
this.level.deselectPowerUp();
|
|
}
|
|
|
|
override function postProcessMaterial(matName:String, material:Material) {
|
|
if (matName == "copter_skin") {
|
|
var diffuseTex = ResourceLoader.getTexture("data/shapes/images/copter_skin.png").resource;
|
|
diffuseTex.wrap = Repeat;
|
|
diffuseTex.mipMap = Nearest;
|
|
var shader = new shaders.DefaultNormalMaterial(diffuseTex, 32, new h3d.Vector(1, 1, 1, 1), 1);
|
|
shader.doGammaRamp = false;
|
|
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;
|
|
}
|
|
}
|
|
}
|