Elin Decompiled Documentation EA 23.103 Nightly
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Pages
TwoDLaserPack.LineBasedLaser Class Reference
Inheritance diagram for TwoDLaserPack.LineBasedLaser:

Public Member Functions

delegate void LaserHitTriggerHandler (RaycastHit2D hitInfo)
 
void SetLaserState (bool enabledStatus)
 

Public Attributes

LineRenderer laserLineRendererArc
 
LineRenderer laserLineRenderer
 
int laserArcSegments = 20
 
bool laserActive
 
bool ignoreCollisions
 
GameObject targetGo
 
float laserTexOffsetSpeed = 1f
 
ParticleSystem hitSparkParticleSystem
 
float laserArcMaxYDown
 
float laserArcMaxYUp
 
float maxLaserRaycastDistance = 20f
 
bool laserRotationEnabled
 
bool lerpLaserRotation
 
float turningRate = 3f
 
float collisionTriggerInterval = 0.25f
 
LayerMask mask
 
string sortLayer = "Default"
 
int sortOrder
 
bool useArc
 

Events

LaserHitTriggerHandler OnLaserHitTriggered
 

Private Member Functions

void Start ()
 
void Awake ()
 
void OnEnable ()
 
void OnDisable ()
 
void Update ()
 
IEnumerator HitTrigger (float triggerInterval, RaycastHit2D hit)
 
void SetLaserEndToTargetLocation (RaycastHit2D hit)
 
void SetLaserToDefaultLength ()
 
void SetLaserArcVertices (float distancePoint, bool useHitPoint)
 

Private Attributes

GameObject gameObjectCached
 
float laserAngle
 
float laserTextureOffset
 
float laserTextureXScale
 
float startLaserTextureXScale
 
int startLaserSegmentLength
 
bool waitingForTriggerTime
 
ParticleSystem.EmissionModule hitSparkEmission
 

Detailed Description

Definition at line 7 of file LineBasedLaser.cs.

Member Function Documentation

◆ Awake()

void TwoDLaserPack.LineBasedLaser.Awake ( )
inlineprivate

◆ HitTrigger()

IEnumerator TwoDLaserPack.LineBasedLaser.HitTrigger ( float  triggerInterval,
RaycastHit2D  hit 
)
inlineprivate

Definition at line 150 of file LineBasedLaser.cs.

151 {
153 if (this.OnLaserHitTriggered != null)
154 {
155 this.OnLaserHitTriggered(hit);
156 }
157 yield return new WaitForSeconds(triggerInterval);
158 waitingForTriggerTime = false;
159 }
LaserHitTriggerHandler OnLaserHitTriggered

References TwoDLaserPack.LineBasedLaser.OnLaserHitTriggered, and TwoDLaserPack.LineBasedLaser.waitingForTriggerTime.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ LaserHitTriggerHandler()

delegate void TwoDLaserPack.LineBasedLaser.LaserHitTriggerHandler ( RaycastHit2D  hitInfo)

◆ OnDisable()

void TwoDLaserPack.LineBasedLaser.OnDisable ( )
inlineprivate

Definition at line 91 of file LineBasedLaser.cs.

92 {
93 }

◆ OnEnable()

void TwoDLaserPack.LineBasedLaser.OnEnable ( )
inlineprivate

◆ SetLaserArcVertices()

void TwoDLaserPack.LineBasedLaser.SetLaserArcVertices ( float  distancePoint,
bool  useHitPoint 
)
inlineprivate

Definition at line 234 of file LineBasedLaser.cs.

235 {
236 for (int i = 1; i < laserArcSegments; i++)
237 {
238 float y = Mathf.Clamp(Mathf.Sin((float)i + Time.time * UnityEngine.Random.Range(0.5f, 1.3f)), laserArcMaxYDown, laserArcMaxYUp);
239 Vector2 vector = new Vector2((float)i * 1.2f, y);
240 if (useHitPoint && i == laserArcSegments - 1)
241 {
242 laserLineRendererArc.SetPosition(i, new Vector2(distancePoint, 0f));
243 }
244 else
245 {
246 laserLineRendererArc.SetPosition(i, vector);
247 }
248 }
249 }

References TwoDLaserPack.LineBasedLaser.laserArcMaxYDown, TwoDLaserPack.LineBasedLaser.laserArcMaxYUp, TwoDLaserPack.LineBasedLaser.laserArcSegments, and TwoDLaserPack.LineBasedLaser.laserLineRendererArc.

Referenced by TwoDLaserPack.LineBasedLaser.SetLaserEndToTargetLocation(), and TwoDLaserPack.LineBasedLaser.SetLaserToDefaultLength().

◆ SetLaserEndToTargetLocation()

void TwoDLaserPack.LineBasedLaser.SetLaserEndToTargetLocation ( RaycastHit2D  hit)
inlineprivate

Definition at line 175 of file LineBasedLaser.cs.

176 {
177 float num = Vector2.Distance(hit.point, laserLineRenderer.transform.position);
178 laserLineRenderer.SetPosition(1, new Vector2(num, 0f));
180 laserLineRenderer.material.mainTextureScale = new Vector2(laserTextureXScale, 1f);
181 if (useArc)
182 {
183 if (!laserLineRendererArc.enabled)
184 {
185 laserLineRendererArc.enabled = true;
186 }
187 int vertexCount = Mathf.Abs((int)num);
188 laserLineRendererArc.SetVertexCount(vertexCount);
189 laserArcSegments = vertexCount;
190 SetLaserArcVertices(num, useHitPoint: true);
191 }
192 else if (laserLineRendererArc.enabled)
193 {
194 laserLineRendererArc.enabled = false;
195 }
196 if (hitSparkParticleSystem != null)
197 {
198 hitSparkParticleSystem.transform.position = hit.point;
199 hitSparkEmission.enabled = true;
200 }
201 }
void SetLaserArcVertices(float distancePoint, bool useHitPoint)

References TwoDLaserPack.LineBasedLaser.hitSparkParticleSystem, TwoDLaserPack.LineBasedLaser.laserArcSegments, TwoDLaserPack.LineBasedLaser.laserLineRenderer, TwoDLaserPack.LineBasedLaser.laserLineRendererArc, TwoDLaserPack.LineBasedLaser.laserTextureXScale, TwoDLaserPack.LineBasedLaser.SetLaserArcVertices(), TwoDLaserPack.LineBasedLaser.startLaserTextureXScale, and TwoDLaserPack.LineBasedLaser.useArc.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ SetLaserState()

void TwoDLaserPack.LineBasedLaser.SetLaserState ( bool  enabledStatus)
inline

Definition at line 161 of file LineBasedLaser.cs.

162 {
163 laserActive = enabledStatus;
164 laserLineRenderer.enabled = enabledStatus;
165 if (laserLineRendererArc != null)
166 {
167 laserLineRendererArc.enabled = enabledStatus;
168 }
169 if (hitSparkParticleSystem != null)
170 {
171 hitSparkEmission.enabled = enabledStatus;
172 }
173 }

References TwoDLaserPack.LineBasedLaser.hitSparkParticleSystem, TwoDLaserPack.LineBasedLaser.laserActive, and TwoDLaserPack.LineBasedLaser.laserLineRendererArc.

◆ SetLaserToDefaultLength()

void TwoDLaserPack.LineBasedLaser.SetLaserToDefaultLength ( )
inlineprivate

Definition at line 203 of file LineBasedLaser.cs.

204 {
205 laserLineRenderer.SetPosition(1, new Vector2(laserArcSegments, 0f));
207 laserLineRenderer.material.mainTextureScale = new Vector2(laserTextureXScale, 1f);
208 if (useArc)
209 {
210 if (!laserLineRendererArc.enabled)
211 {
212 laserLineRendererArc.enabled = true;
213 }
216 SetLaserArcVertices(0f, useHitPoint: false);
217 }
218 else
219 {
220 if (laserLineRendererArc.enabled)
221 {
222 laserLineRendererArc.enabled = false;
223 }
226 }
227 if (hitSparkParticleSystem != null)
228 {
229 hitSparkEmission.enabled = false;
230 hitSparkParticleSystem.transform.position = new Vector2(laserArcSegments, base.transform.position.y);
231 }
232 }

References TwoDLaserPack.LineBasedLaser.hitSparkParticleSystem, TwoDLaserPack.LineBasedLaser.laserArcSegments, TwoDLaserPack.LineBasedLaser.laserLineRenderer, TwoDLaserPack.LineBasedLaser.laserLineRendererArc, TwoDLaserPack.LineBasedLaser.laserTextureXScale, TwoDLaserPack.LineBasedLaser.SetLaserArcVertices(), TwoDLaserPack.LineBasedLaser.startLaserSegmentLength, TwoDLaserPack.LineBasedLaser.startLaserTextureXScale, and TwoDLaserPack.LineBasedLaser.useArc.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ Start()

void TwoDLaserPack.LineBasedLaser.Start ( )
inlineprivate

◆ Update()

void TwoDLaserPack.LineBasedLaser.Update ( )
inlineprivate

Definition at line 95 of file LineBasedLaser.cs.

96 {
97 if (!(gameObjectCached != null) || !laserActive)
98 {
99 return;
100 }
101 laserLineRenderer.material.mainTextureOffset = new Vector2(laserTextureOffset, 0f);
102 laserTextureOffset -= Time.deltaTime * laserTexOffsetSpeed;
103 RaycastHit2D raycastHit2D;
104 if (laserRotationEnabled && targetGo != null)
105 {
106 Vector3 vector = targetGo.transform.position - gameObjectCached.transform.position;
107 laserAngle = Mathf.Atan2(vector.y, vector.x);
108 if (laserAngle < 0f)
109 {
110 laserAngle = MathF.PI * 2f + laserAngle;
111 }
112 float angle = laserAngle * 57.29578f;
114 {
115 base.transform.rotation = Quaternion.Slerp(base.transform.rotation, Quaternion.AngleAxis(angle, base.transform.forward), Time.deltaTime * turningRate);
116 Vector3 vector2 = base.transform.rotation * Vector3.right;
117 raycastHit2D = Physics2D.Raycast(base.transform.position, vector2, maxLaserRaycastDistance, mask);
118 }
119 else
120 {
121 base.transform.rotation = Quaternion.AngleAxis(angle, base.transform.forward);
122 raycastHit2D = Physics2D.Raycast(base.transform.position, vector, maxLaserRaycastDistance, mask);
123 }
124 }
125 else
126 {
127 raycastHit2D = Physics2D.Raycast(base.transform.position, base.transform.right, maxLaserRaycastDistance, mask);
128 }
129 if (!ignoreCollisions)
130 {
131 if (raycastHit2D.collider != null)
132 {
133 SetLaserEndToTargetLocation(raycastHit2D);
135 {
136 StartCoroutine(HitTrigger(collisionTriggerInterval, raycastHit2D));
137 }
138 }
139 else
140 {
142 }
143 }
144 else
145 {
147 }
148 }
void SetLaserEndToTargetLocation(RaycastHit2D hit)
IEnumerator HitTrigger(float triggerInterval, RaycastHit2D hit)

References TwoDLaserPack.LineBasedLaser.collisionTriggerInterval, TwoDLaserPack.LineBasedLaser.gameObjectCached, TwoDLaserPack.LineBasedLaser.HitTrigger(), TwoDLaserPack.LineBasedLaser.ignoreCollisions, TwoDLaserPack.LineBasedLaser.laserActive, TwoDLaserPack.LineBasedLaser.laserAngle, TwoDLaserPack.LineBasedLaser.laserRotationEnabled, TwoDLaserPack.LineBasedLaser.laserTexOffsetSpeed, TwoDLaserPack.LineBasedLaser.laserTextureOffset, TwoDLaserPack.LineBasedLaser.lerpLaserRotation, TwoDLaserPack.LineBasedLaser.mask, TwoDLaserPack.LineBasedLaser.maxLaserRaycastDistance, TwoDLaserPack.LineBasedLaser.SetLaserEndToTargetLocation(), TwoDLaserPack.LineBasedLaser.SetLaserToDefaultLength(), TwoDLaserPack.LineBasedLaser.targetGo, TwoDLaserPack.LineBasedLaser.turningRate, and TwoDLaserPack.LineBasedLaser.waitingForTriggerTime.

Member Data Documentation

◆ collisionTriggerInterval

float TwoDLaserPack.LineBasedLaser.collisionTriggerInterval = 0.25f

Definition at line 39 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ gameObjectCached

GameObject TwoDLaserPack.LineBasedLaser.gameObjectCached
private

◆ hitSparkEmission

ParticleSystem.EmissionModule TwoDLaserPack.LineBasedLaser.hitSparkEmission
private

Definition at line 63 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Awake().

◆ hitSparkParticleSystem

◆ ignoreCollisions

bool TwoDLaserPack.LineBasedLaser.ignoreCollisions

Definition at line 19 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ laserActive

bool TwoDLaserPack.LineBasedLaser.laserActive

◆ laserAngle

float TwoDLaserPack.LineBasedLaser.laserAngle
private

Definition at line 51 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ laserArcMaxYDown

float TwoDLaserPack.LineBasedLaser.laserArcMaxYDown

Definition at line 27 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.SetLaserArcVertices().

◆ laserArcMaxYUp

float TwoDLaserPack.LineBasedLaser.laserArcMaxYUp

Definition at line 29 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.SetLaserArcVertices().

◆ laserArcSegments

◆ laserLineRenderer

LineRenderer TwoDLaserPack.LineBasedLaser.laserLineRenderer

◆ laserLineRendererArc

◆ laserRotationEnabled

bool TwoDLaserPack.LineBasedLaser.laserRotationEnabled

Definition at line 33 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ laserTexOffsetSpeed

float TwoDLaserPack.LineBasedLaser.laserTexOffsetSpeed = 1f

Definition at line 23 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ laserTextureOffset

float TwoDLaserPack.LineBasedLaser.laserTextureOffset
private

Definition at line 53 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ laserTextureXScale

float TwoDLaserPack.LineBasedLaser.laserTextureXScale
private

◆ lerpLaserRotation

bool TwoDLaserPack.LineBasedLaser.lerpLaserRotation

Definition at line 35 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ mask

LayerMask TwoDLaserPack.LineBasedLaser.mask

Definition at line 41 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ maxLaserRaycastDistance

float TwoDLaserPack.LineBasedLaser.maxLaserRaycastDistance = 20f

Definition at line 31 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ sortLayer

string TwoDLaserPack.LineBasedLaser.sortLayer = "Default"

Definition at line 43 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Start().

◆ sortOrder

int TwoDLaserPack.LineBasedLaser.sortOrder

Definition at line 45 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Start().

◆ startLaserSegmentLength

int TwoDLaserPack.LineBasedLaser.startLaserSegmentLength
private

◆ startLaserTextureXScale

float TwoDLaserPack.LineBasedLaser.startLaserTextureXScale
private

◆ targetGo

GameObject TwoDLaserPack.LineBasedLaser.targetGo

Definition at line 21 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ turningRate

float TwoDLaserPack.LineBasedLaser.turningRate = 3f

Definition at line 37 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.Update().

◆ useArc

bool TwoDLaserPack.LineBasedLaser.useArc

◆ waitingForTriggerTime

bool TwoDLaserPack.LineBasedLaser.waitingForTriggerTime
private

Event Documentation

◆ OnLaserHitTriggered

LaserHitTriggerHandler TwoDLaserPack.LineBasedLaser.OnLaserHitTriggered

Definition at line 65 of file LineBasedLaser.cs.

Referenced by TwoDLaserPack.LineBasedLaser.HitTrigger().


The documentation for this class was generated from the following file: