mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2025-10-30 08:11:25 +00:00
47 lines
1,021 B
Haxe
47 lines
1,021 B
Haxe
package shaders;
|
|
|
|
import src.MarbleGame;
|
|
import h3d.scene.fwd.Light;
|
|
|
|
class DirLight extends Light {
|
|
var dshader:DirLightShader;
|
|
|
|
public var direction:h3d.Vector;
|
|
|
|
public function new(?dir:h3d.Vector, ?parent) {
|
|
dshader = new DirLightShader();
|
|
super(dshader, parent);
|
|
priority = 100;
|
|
direction = dir;
|
|
if (dir != null)
|
|
setDirection(dir);
|
|
}
|
|
|
|
override function get_color() {
|
|
return dshader.color;
|
|
}
|
|
|
|
override function set_color(v) {
|
|
return dshader.color = v;
|
|
}
|
|
|
|
override function get_enableSpecular() {
|
|
return dshader.enableSpecular;
|
|
}
|
|
|
|
override function set_enableSpecular(b) {
|
|
return dshader.enableSpecular = b;
|
|
}
|
|
|
|
override function getShadowDirection():h3d.Vector {
|
|
if (MarbleGame.instance.world == null || MarbleGame.instance.world.marble == null)
|
|
return new h3d.Vector(0, 0, -1);
|
|
return MarbleGame.instance.world.marble.currentUp.multiply(-1);
|
|
}
|
|
|
|
override function emit(ctx) {
|
|
dshader.direction.load(absPos.front());
|
|
dshader.direction.normalize();
|
|
super.emit(ctx);
|
|
}
|
|
}
|