64 lines
1.5 KiB
ActionScript
64 lines
1.5 KiB
ActionScript
import orbitals;
|
|
from nodes.FleetPlane import SHOW_FLEET_PLANES;
|
|
|
|
const double MAX_SIZE = 500.0;
|
|
|
|
final class OrbitalNodeScript {
|
|
const Orbital@ obj;
|
|
const OrbitalModule@ def;
|
|
double fleetPlane = 0.0;
|
|
|
|
OrbitalNodeScript(Node& node) {
|
|
node.transparent = true;
|
|
node.memorable = true;
|
|
}
|
|
|
|
void establish(Node& node, Orbital& orbital, uint type) {
|
|
@obj = orbital;
|
|
@def = getOrbitalModule(type);
|
|
}
|
|
|
|
void setFleetPlane(double radius) {
|
|
fleetPlane = radius;
|
|
}
|
|
|
|
void render(Node& node) {
|
|
if(def is null)
|
|
return;
|
|
|
|
if(fleetPlane != 0 && node.sortDistance < 2000.0 && node.sortDistance >= 150.0 && SHOW_FLEET_PLANES) {
|
|
Color color(0xffffff14);
|
|
if(node.sortDistance < 250.0)
|
|
color.a = double(color.a) * (node.sortDistance - 150.0) / 100.0;
|
|
renderPlane(material::FleetCircle, node.abs_position, fleetPlane, color);
|
|
}
|
|
|
|
node.applyTransform();
|
|
|
|
def.material.switchTo();
|
|
def.model.draw();
|
|
|
|
/*if(obj.Shield > 0) {*/
|
|
/* shader::SHIELD_STRENGTH = float(obj.Shield / obj.MaxShield);*/
|
|
/* material::Shield.switchTo();*/
|
|
/* def.model.draw();*/
|
|
/*}*/
|
|
|
|
undoTransform();
|
|
|
|
if(node.sortDistance > 600.0 && def.distantIcon.valid) {
|
|
double size = obj.radius * def.iconSize;
|
|
size *= node.sortDistance * 0.09;
|
|
size = min(size, MAX_SIZE);
|
|
if(obj.selected)
|
|
size *= 1.1;
|
|
|
|
Empire@ owner = obj.owner;
|
|
Color col;
|
|
if(owner !is null)
|
|
col = owner.color;
|
|
renderBillboard(def.distantIcon.sheet, def.distantIcon.index, node.abs_position, size, 0.0, col);
|
|
}
|
|
}
|
|
};
|