Skip to content

Class "EntityLaser"⚓︎

Class Diagram⚓︎

    classDiagram
    class Entity:::diagramCurrentPage
    class EntityBomb
    class EntityEffect
    class EntityFamiliar
    class EntityKnife
    class EntityLaser
    class EntityNPC
    class EntityPickup
    class EntityPlayer
    class EntityProjectile
    class EntityTear
    Entity <|-- EntityBomb
    Entity <|-- EntityEffect
    Entity <|-- EntityFamiliar
    Entity <|-- EntityKnife
    Entity <|-- EntityLaser
    Entity <|-- EntityNPC
    Entity <|-- EntityPickup
    Entity <|-- EntityPlayer
    Entity <|-- EntityProjectile
    Entity <|-- EntityTear
    link Entity "Entity.html" "Go to page for 'Entity' class"
    link EntityBomb "EntityBomb.html" "Go to page for 'EntityBomb' class"
    link EntityEffect "EntityEffect.html" "Go to page for 'EntityEffect' class"
    link EntityFamiliar "EntityFamiliar.html" "Go to page for 'EntityFamiliar' class"
    link EntityKnife "EntityKnife.html" "Go to page for 'EntityKnife' class"
    link EntityLaser "EntityLaser.html" "Go to page for 'EntityLaser' class"
    link EntityNPC "EntityNPC.html" "Go to page for 'EntityNPC' class"
    link EntityPickup "EntityPickup.html" "Go to page for 'EntityPickup' class"
    link EntityPlayer "EntityPlayer.html" "Go to page for 'EntityPlayer' class"
    link EntityProjectile "EntityProjectile.html" "Go to page for 'EntityProjectile' class"
    link EntityTear "EntityTear.html" "Go to page for 'EntityTear' class"

Functions⚓︎

Add·Tear·Flags ()⚓︎

void AddTearFlags ( TearFlags Flags )⚓︎


Calculate·End·Point ()⚓︎

static Vector CalculateEndPoint ( Vector Start, Vector Dir, Vector PositionOffset, Entity Parent, float Margin )⚓︎


Clear·Tear·Flags ()⚓︎

void ClearTearFlags ( TearFlags Flags )⚓︎


Get·End·Point ()⚓︎

const Vector GetEndPoint ( )⚓︎


Get·Non·Optimized·Samples ()⚓︎

const VectorList GetNonOptimizedSamples ( )⚓︎

Returns a VectorList representing the path of the laser. Seems to typically return 51 evenly-spaced points along the laser's path, as opposed to GetSamples() which only returns the minimum needed points to represent the path of the laser.

Example Usage
1
2
3
4
5
6
local samplePoints = laser:GetNonOptimizedSamples()

for i=0, #samplePoints-1 do
    local pos = samplePoints:Get(i)
    ...
end

Get·Render·Z ()⚓︎

int GetRenderZ ( )⚓︎


Get·Samples ()⚓︎

const VectorList GetSamples ( )⚓︎

Returns a VectorList representing the path of the laser. Unlike GetNonOptimizedSamples(), this function returns as few points as possible, while still correctly representing the path of the laser.

For example, for a completely straight laser, GetNonOptimizedSamples() will still return 51 points as always, but this function only only return 2.

Example Usage
1
2
3
4
5
6
local samplePoints = laser:GetSamples()

for i=0, #samplePoints-1 do
    local pos = samplePoints:Get(i)
    ...
end

Has·Tear·Flags ()⚓︎

boolean HasTearFlags ( TearFlags Flags )⚓︎


Is·Circle·Laser ()⚓︎

boolean IsCircleLaser ( )⚓︎

Note

This function cannot differentiate between different types of Circle Laser, however these may be identified by their SubType:

  • 0 - Linear Laser (Typical laser with a start and end point)
  • 1 - Ring Ludovico (Controlled laser ring for Ludo synergies)
  • 2 - Ring Projectile (Tech X)
  • 3 - Ring Follow Parent (Maw of the Void)
  • 4 - No Impact (No impact splash, e.g. Tech Zero)

Is·Sample·Laser ()⚓︎

boolean IsSampleLaser ( )⚓︎


Set·Active·Rotation ()⚓︎

void SetActiveRotation ( int Delay, float AngleDegrees, float RotationSpd, boolean TimeoutComplete )⚓︎


Set·Black·Hp·Drop·Chance ()⚓︎

void SetBlackHpDropChance ( float Chance )⚓︎


Set·Homing·Type ()⚓︎

void SetHomingType ( LaserHomingType Type )⚓︎


Set·Max·Distance ()⚓︎

void SetMaxDistance ( float Distance )⚓︎


Set·Multidimensional·Touched ()⚓︎

void SetMultidimensionalTouched ( boolean Value )⚓︎


Set·One·Hit ()⚓︎

void SetOneHit ( boolean Value )⚓︎


Set·Timeout ()⚓︎

void SetTimeout ( int Value )⚓︎


Shoot·Angle ()⚓︎

static EntityLaser ShootAngle ( int Variant, Vector SourcePos, float AngleDegrees, int Timeout, Vector PosOffset, Entity Source )⚓︎

static helper to simplify spawning lasers


Variables⚓︎

Angle⚓︎

float Angle⚓︎


Angle·Degrees⚓︎

float AngleDegrees⚓︎


Black·Hp·Drop·Chance⚓︎

float BlackHpDropChance⚓︎

For maw of void.


Bounce·Laser⚓︎

Entity BounceLaser⚓︎


Curve·Strength⚓︎

float CurveStrength⚓︎

My Reflection.


Disable·Follow·Parent⚓︎

boolean DisableFollowParent⚓︎

Set on children of other lasers, for instance Rubber Cement reflections. Disables m_ParentOffset.


End·Point⚓︎

Vector EndPoint⚓︎

Will hold the endpoint so it will not need to be recalculated when accessed from extern.


First·Update⚓︎

boolean FirstUpdate⚓︎


Grid·Hit⚓︎

boolean GridHit⚓︎

true if laser can be clipped by grid entities and it was clipped at that frame.


Homing·Laser⚓︎

HomingLaser HomingLaser⚓︎


Homing·Type⚓︎

LaserHomingType HomingType⚓︎


Is·Active·Rotating⚓︎

boolean IsActiveRotating⚓︎


Laser·Length⚓︎

float LaserLength⚓︎


Last·Angle·Degrees⚓︎

float LastAngleDegrees⚓︎


Max·Distance⚓︎

float MaxDistance⚓︎

Used to trim brimstone for Azazel (0 - off)


One·Hit⚓︎

boolean OneHit⚓︎

Laser hits only once.


Parent·Offset⚓︎

Vector ParentOffset⚓︎


Radius⚓︎

float Radius⚓︎


Rotation·Degrees⚓︎

float RotationDegrees⚓︎


Rotation·Delay⚓︎

int RotationDelay⚓︎


Rotation·Spd⚓︎

float RotationSpd⚓︎


Sample·Laser⚓︎

boolean SampleLaser⚓︎


Shrink⚓︎

boolean Shrink⚓︎


Start·Angle·Degrees⚓︎

float StartAngleDegrees⚓︎

Some lasers have a bit of random variation in rotation so they need to remember their starting point.


Tear·Flags⚓︎

TearFlags TearFlags⚓︎


Timeout⚓︎

int Timeout⚓︎



Last update: January 21, 2023