MBHaxe/src/shapes/Helicopter.hx
2023-07-07 00:07:04 +05:30

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;
}
}
}