Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
SpriteBasedLaser Class Reference
Inheritance diagram for SpriteBasedLaser:

Public Member Functions

delegate void LaserHitTriggerHandler (RaycastHit2D hitInfo)
 
void Play (Vector3 to)
 

Public Attributes

Material mat
 
Vector3 dest
 
Vector3 fixTip
 
Vector3 dest2
 
Vector3 fix
 
Vector3 fix2
 
float arcNum
 
float arcNum2
 
DOTweenAnimation[] anime
 
LineRenderer laserLineRendererArc
 
int laserArcSegments = 20
 
RandomPositionMover laserOscillationPositionerScript
 
bool oscillateLaser
 
float maxLaserLength = 20f
 
float oscillationSpeed = 1f
 
GameObject targetGo
 
ParticleSystem hitSparkParticleSystem
 
float laserArcMax
 
float maxLaserRaycastDistance
 
bool laserRotationEnabled
 
bool lerpLaserRotation
 
float turningRate = 3f
 
float collisionTriggerInterval = 0.25f
 
LayerMask mask
 
bool useArc
 
float oscillationThreshold = 0.2f
 
Transform trail
 
GameObject startGoPiece
 
GameObject middleGoPiece
 
GameObject endGoPiece
 

Events

LaserHitTriggerHandler OnLaserHitTriggered
 

Private Member Functions

void OscillateLaserParts (float currentLaserDistance)
 
void SetLaserArcVertices (float distancePoint, bool useHitPoint)
 
void Update ()
 
void SetLaserArcSegmentLength ()
 

Private Attributes

GameObject gameObjectCached
 
float laserAngle
 
float lerpYValue
 
float startLaserLength
 
float startSpriteWidth
 
bool waitingForTriggerTime
 
ParticleSystem.EmissionModule hitSparkEmission
 

Detailed Description

Definition at line 5 of file SpriteBasedLaser.cs.

Member Function Documentation

◆ LaserHitTriggerHandler()

delegate void SpriteBasedLaser.LaserHitTriggerHandler ( RaycastHit2D  hitInfo)

◆ OscillateLaserParts()

void SpriteBasedLaser.OscillateLaserParts ( float  currentLaserDistance)
inlineprivate

Definition at line 112 of file SpriteBasedLaser.cs.

113 {
115 {
116 lerpYValue = Mathf.Lerp(middleGoPiece.transform.localPosition.y, laserOscillationPositionerScript.randomPointInCircle.y, Time.deltaTime * oscillationSpeed);
117 if (startGoPiece != null && middleGoPiece != null)
118 {
119 Vector2 vector = Vector2.Lerp(b: new Vector2(startGoPiece.transform.localPosition.x, laserOscillationPositionerScript.randomPointInCircle.y), a: startGoPiece.transform.localPosition, t: Time.deltaTime * oscillationSpeed);
120 startGoPiece.transform.localPosition = vector;
121 Vector2 vector2 = new Vector2(currentLaserDistance / 2f + startSpriteWidth / 4f, lerpYValue);
122 middleGoPiece.transform.localPosition = vector2;
123 }
124 if (endGoPiece != null)
125 {
126 Vector2 vector3 = new Vector2(currentLaserDistance + startSpriteWidth / 2f, lerpYValue);
127 endGoPiece.transform.localPosition = vector3;
128 }
129 }
130 }
GameObject endGoPiece
GameObject startGoPiece
GameObject middleGoPiece
RandomPositionMover laserOscillationPositionerScript

References endGoPiece, laserOscillationPositionerScript, lerpYValue, middleGoPiece, oscillationSpeed, RandomPositionMover.randomPointInCircle, startGoPiece, and startSpriteWidth.

Referenced by Update().

◆ Play()

void SpriteBasedLaser.Play ( Vector3  to)
inline

Definition at line 85 of file SpriteBasedLaser.cs.

86 {
87 base.transform.position = base.transform.position.SetZ(0f);
88 dest2 = (dest = to.SetZ(0f) + fix + new Vector3(0.2f, 0.2f, 0f).Random());
90 gameObjectCached = base.gameObject;
91 if (laserLineRendererArc != null)
92 {
94 }
97 {
98 laserOscillationPositionerScript.radius = oscillationThreshold;
99 }
100 Update();
101 Update();
102 trail.localScale = middleGoPiece.transform.localScale;
103 trail.rotation = middleGoPiece.transform.rotation;
104 trail.position = middleGoPiece.transform.position;
105 DOTweenAnimation[] array = anime;
106 for (int i = 0; i < array.Length; i++)
107 {
108 array[i].DOPlay();
109 }
110 }
ParticleSystem hitSparkParticleSystem
DOTweenAnimation[] anime
LineRenderer laserLineRendererArc
GameObject gameObjectCached
ParticleSystem.EmissionModule hitSparkEmission

References anime, dest, dest2, fix, gameObjectCached, hitSparkEmission, hitSparkParticleSystem, laserArcSegments, laserLineRendererArc, laserOscillationPositionerScript, maxLaserLength, middleGoPiece, oscillationThreshold, startLaserLength, and Update().

◆ SetLaserArcSegmentLength()

void SpriteBasedLaser.SetLaserArcSegmentLength ( )
inlineprivate

Definition at line 210 of file SpriteBasedLaser.cs.

211 {
212 int vertexCount = Mathf.Abs((int)maxLaserLength) * (int)arcNum;
213 laserLineRendererArc.SetVertexCount(vertexCount);
214 laserArcSegments = vertexCount;
215 }

References arcNum, laserArcSegments, laserLineRendererArc, and maxLaserLength.

Referenced by Update().

◆ SetLaserArcVertices()

void SpriteBasedLaser.SetLaserArcVertices ( float  distancePoint,
bool  useHitPoint 
)
inlineprivate

Definition at line 132 of file SpriteBasedLaser.cs.

133 {
134 for (int i = 1; i < laserArcSegments; i++)
135 {
136 float y = Mathf.Clamp(Mathf.Sin((float)i + Time.time * UnityEngine.Random.Range(0.5f, 1.3f)), 0f - laserArcMax + UnityEngine.Random.RandomRange(0f, laserArcMax * 0.5f), laserArcMax + UnityEngine.Random.RandomRange(0f, laserArcMax * 0.5f));
137 Vector2 vector = new Vector2((float)i * 1.2f * arcNum2, y);
138 if (useHitPoint && i == laserArcSegments - 1)
139 {
140 laserLineRendererArc.SetPosition(i, new Vector2(distancePoint, 0f));
141 }
142 else
143 {
144 laserLineRendererArc.SetPosition(i, vector);
145 }
146 }
147 }

References arcNum2, laserArcMax, laserArcSegments, and laserLineRendererArc.

Referenced by Update().

◆ Update()

void SpriteBasedLaser.Update ( )
inlineprivate

Definition at line 149 of file SpriteBasedLaser.cs.

150 {
151 if (!(gameObjectCached != null))
152 {
153 return;
154 }
155 middleGoPiece.transform.localScale = new Vector3(maxLaserLength - startSpriteWidth + 0.2f, middleGoPiece.transform.localScale.y, middleGoPiece.transform.localScale.z);
156 if (oscillateLaser)
157 {
159 }
160 else
161 {
162 if (middleGoPiece != null)
163 {
164 middleGoPiece.transform.localPosition = new Vector2(maxLaserLength / 2f + startSpriteWidth / 4f, lerpYValue);
165 }
166 if (endGoPiece != null)
167 {
168 endGoPiece.transform.localPosition = new Vector3(maxLaserLength + startSpriteWidth / 2f, 0f, 0f) + fixTip;
169 }
170 }
172 {
173 Vector3 vector = dest2 - gameObjectCached.transform.position;
174 laserAngle = Mathf.Atan2(vector.y, vector.x);
175 if (laserAngle < 0f)
176 {
177 laserAngle = MathF.PI * 2f + laserAngle;
178 }
179 float angle = laserAngle * 57.29578f;
181 {
182 base.transform.rotation = Quaternion.Slerp(base.transform.rotation, Quaternion.AngleAxis(angle, base.transform.forward), Time.deltaTime * turningRate);
183 }
184 else
185 {
186 base.transform.rotation = Quaternion.AngleAxis(angle, base.transform.forward);
187 }
188 }
189 maxLaserLength = Vector2.Distance(dest, base.transform.position) + startSpriteWidth / 4f + fix2.x;
190 if (hitSparkParticleSystem != null)
191 {
192 hitSparkParticleSystem.transform.position = dest;
193 hitSparkEmission.enabled = true;
194 }
195 if (useArc)
196 {
197 if (!laserLineRendererArc.enabled)
198 {
199 laserLineRendererArc.enabled = true;
200 }
201 SetLaserArcVertices(maxLaserLength, useHitPoint: true);
203 }
204 else if (laserLineRendererArc.enabled)
205 {
206 laserLineRendererArc.enabled = false;
207 }
208 }
void SetLaserArcVertices(float distancePoint, bool useHitPoint)
void OscillateLaserParts(float currentLaserDistance)
void SetLaserArcSegmentLength()

References dest, dest2, endGoPiece, fix2, fixTip, gameObjectCached, hitSparkParticleSystem, laserAngle, laserLineRendererArc, laserRotationEnabled, lerpLaserRotation, lerpYValue, maxLaserLength, middleGoPiece, oscillateLaser, OscillateLaserParts(), SetLaserArcSegmentLength(), SetLaserArcVertices(), startSpriteWidth, turningRate, and useArc.

Referenced by Play().

Member Data Documentation

◆ anime

DOTweenAnimation [] SpriteBasedLaser.anime

Definition at line 25 of file SpriteBasedLaser.cs.

Referenced by Play().

◆ arcNum

float SpriteBasedLaser.arcNum

Definition at line 21 of file SpriteBasedLaser.cs.

Referenced by SetLaserArcSegmentLength().

◆ arcNum2

float SpriteBasedLaser.arcNum2

Definition at line 23 of file SpriteBasedLaser.cs.

Referenced by SetLaserArcVertices().

◆ collisionTriggerInterval

float SpriteBasedLaser.collisionTriggerInterval = 0.25f

Definition at line 53 of file SpriteBasedLaser.cs.

◆ dest

Vector3 SpriteBasedLaser.dest

Definition at line 11 of file SpriteBasedLaser.cs.

Referenced by Play(), and Update().

◆ dest2

Vector3 SpriteBasedLaser.dest2

Definition at line 15 of file SpriteBasedLaser.cs.

Referenced by Play(), and Update().

◆ endGoPiece

GameObject SpriteBasedLaser.endGoPiece

Definition at line 75 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts(), and Update().

◆ fix

Vector3 SpriteBasedLaser.fix

Definition at line 17 of file SpriteBasedLaser.cs.

Referenced by Play().

◆ fix2

Vector3 SpriteBasedLaser.fix2

Definition at line 19 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ fixTip

Vector3 SpriteBasedLaser.fixTip

Definition at line 13 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ gameObjectCached

GameObject SpriteBasedLaser.gameObjectCached
private

Definition at line 61 of file SpriteBasedLaser.cs.

Referenced by Play(), and Update().

◆ hitSparkEmission

ParticleSystem.EmissionModule SpriteBasedLaser.hitSparkEmission
private

Definition at line 81 of file SpriteBasedLaser.cs.

Referenced by Play().

◆ hitSparkParticleSystem

ParticleSystem SpriteBasedLaser.hitSparkParticleSystem

Definition at line 41 of file SpriteBasedLaser.cs.

Referenced by Play(), and Update().

◆ laserAngle

float SpriteBasedLaser.laserAngle
private

Definition at line 63 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ laserArcMax

float SpriteBasedLaser.laserArcMax

Definition at line 43 of file SpriteBasedLaser.cs.

Referenced by SetLaserArcVertices().

◆ laserArcSegments

int SpriteBasedLaser.laserArcSegments = 20

Definition at line 29 of file SpriteBasedLaser.cs.

Referenced by Play(), SetLaserArcSegmentLength(), and SetLaserArcVertices().

◆ laserLineRendererArc

LineRenderer SpriteBasedLaser.laserLineRendererArc

Definition at line 27 of file SpriteBasedLaser.cs.

Referenced by Play(), SetLaserArcSegmentLength(), SetLaserArcVertices(), and Update().

◆ laserOscillationPositionerScript

RandomPositionMover SpriteBasedLaser.laserOscillationPositionerScript

Definition at line 31 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts(), and Play().

◆ laserRotationEnabled

bool SpriteBasedLaser.laserRotationEnabled

Definition at line 47 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ lerpLaserRotation

bool SpriteBasedLaser.lerpLaserRotation

Definition at line 49 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ lerpYValue

float SpriteBasedLaser.lerpYValue
private

Definition at line 65 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts(), and Update().

◆ mask

LayerMask SpriteBasedLaser.mask

Definition at line 55 of file SpriteBasedLaser.cs.

◆ mat

Material SpriteBasedLaser.mat

Definition at line 9 of file SpriteBasedLaser.cs.

◆ maxLaserLength

float SpriteBasedLaser.maxLaserLength = 20f

Definition at line 35 of file SpriteBasedLaser.cs.

Referenced by Play(), SetLaserArcSegmentLength(), and Update().

◆ maxLaserRaycastDistance

float SpriteBasedLaser.maxLaserRaycastDistance

Definition at line 45 of file SpriteBasedLaser.cs.

◆ middleGoPiece

GameObject SpriteBasedLaser.middleGoPiece

Definition at line 73 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts(), Play(), and Update().

◆ oscillateLaser

bool SpriteBasedLaser.oscillateLaser

Definition at line 33 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ oscillationSpeed

float SpriteBasedLaser.oscillationSpeed = 1f

Definition at line 37 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts().

◆ oscillationThreshold

float SpriteBasedLaser.oscillationThreshold = 0.2f

Definition at line 59 of file SpriteBasedLaser.cs.

Referenced by Play().

◆ startGoPiece

GameObject SpriteBasedLaser.startGoPiece

Definition at line 71 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts().

◆ startLaserLength

float SpriteBasedLaser.startLaserLength
private

Definition at line 67 of file SpriteBasedLaser.cs.

Referenced by Play().

◆ startSpriteWidth

float SpriteBasedLaser.startSpriteWidth
private

Definition at line 77 of file SpriteBasedLaser.cs.

Referenced by OscillateLaserParts(), and Update().

◆ targetGo

GameObject SpriteBasedLaser.targetGo

Definition at line 39 of file SpriteBasedLaser.cs.

◆ trail

Transform SpriteBasedLaser.trail

Definition at line 69 of file SpriteBasedLaser.cs.

◆ turningRate

float SpriteBasedLaser.turningRate = 3f

Definition at line 51 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ useArc

bool SpriteBasedLaser.useArc

Definition at line 57 of file SpriteBasedLaser.cs.

Referenced by Update().

◆ waitingForTriggerTime

bool SpriteBasedLaser.waitingForTriggerTime
private

Definition at line 79 of file SpriteBasedLaser.cs.

Event Documentation

◆ OnLaserHitTriggered

LaserHitTriggerHandler SpriteBasedLaser.OnLaserHitTriggered

Definition at line 83 of file SpriteBasedLaser.cs.


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