48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { Color4 } from '../Color4';
|
|
|
|
export class LightData
|
|
{
|
|
Color: Color4 = Color4.black;
|
|
Radius = 0.0;
|
|
Cutoff = 0.0;
|
|
Falloff = 0.0;
|
|
Intensity = 0.0;
|
|
|
|
constructor(buf?: Buffer, pos?: number, length?: number)
|
|
{
|
|
if (buf !== undefined && pos !== undefined && length !== undefined)
|
|
{
|
|
if (length >= 16)
|
|
{
|
|
this.Color = new Color4(buf, pos, false);
|
|
pos += 4;
|
|
this.Radius = buf.readFloatLE(pos);
|
|
pos += 4;
|
|
this.Cutoff = buf.readFloatLE(pos);
|
|
pos += 4;
|
|
this.Falloff = buf.readFloatLE(pos);
|
|
if (typeof this.Color.alpha === 'number')
|
|
{
|
|
this.Intensity = this.Color.alpha;
|
|
}
|
|
this.Color.alpha = 1.0;
|
|
}
|
|
}
|
|
}
|
|
writeToBuffer(buf: Buffer, pos: number): void
|
|
{
|
|
const tmpColour = new Color4(this.Color.getRed(), this.Color.getGreen(), this.Color.getBlue(), this.Color.getAlpha());
|
|
tmpColour.alpha = this.Intensity;
|
|
tmpColour.writeToBuffer(buf, pos); pos = pos + 4;
|
|
buf.writeFloatLE(this.Radius, pos); pos = pos + 4;
|
|
buf.writeFloatLE(this.Cutoff, pos); pos = pos + 4;
|
|
buf.writeFloatLE(this.Falloff, pos);
|
|
}
|
|
getBuffer(): Buffer
|
|
{
|
|
const buf = Buffer.allocUnsafe(16);
|
|
this.writeToBuffer(buf, 0);
|
|
return buf;
|
|
}
|
|
}
|