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