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

Public Member Functions

void Launch (Vector2 from, Vector2 to)
 

Protected Member Functions

virtual void OnArrive ()
 

Properties

bool IsFlying [get]
 

Private Member Functions

void Awake ()
 
void Update ()
 
void StartMoving ()
 
Vector2 EvaluatePosition (float t)
 
Vector2 EvaluateDirection (float t)
 
float EvaluateRadius (float t)
 
float EvaluateRadiusDerivative (float t)
 
void UpdateRotation (float t)
 
float EstimatePathLength ()
 

Private Attributes

float orbitRadiusMin = 2f
 
float orbitRadiusMax = 4f
 
float orbitAngleMin = 220f
 
float orbitAngleMax = 340f
 
float launchDelayMin
 
float launchDelayMax = 0.25f
 
bool useFixedDuration = true
 
float fixedDurationMin = 0.65f
 
float fixedDurationMax = 0.95f
 
float speed = 10f
 
bool rotateToDirection = true
 
float rotationOffset
 
SpriteRenderer spriteRenderer
 
bool launched
 
bool startedMoving
 
float delayElapsed
 
float launchDelay
 
float elapsed
 
float travelDuration
 
float launchZ
 
Vector2 startPosition
 
Vector2 targetPosition
 
float startRadius
 
float peakRadius
 
float startAngle
 
float totalAngle
 
float turnSign
 

Detailed Description

Definition at line 4 of file MissileHomingEffect.cs.

Member Function Documentation

◆ Awake()

void MissileHomingEffect.Awake ( )
inlineprivate

Definition at line 77 of file MissileHomingEffect.cs.

78 {
79 spriteRenderer = GetComponent<SpriteRenderer>();
80 }
SpriteRenderer spriteRenderer

References spriteRenderer.

◆ EstimatePathLength()

float MissileHomingEffect.EstimatePathLength ( )
inlineprivate

Definition at line 216 of file MissileHomingEffect.cs.

217 {
218 float num = 0f;
219 Vector2 a = EvaluatePosition(0f);
220 for (int i = 1; i <= 32; i++)
221 {
222 Vector2 vector = EvaluatePosition((float)i / 32f);
223 num += Vector2.Distance(a, vector);
224 a = vector;
225 }
226 return num;
227 }
Vector2 EvaluatePosition(float t)

References EvaluatePosition().

Referenced by Launch().

◆ EvaluateDirection()

Vector2 MissileHomingEffect.EvaluateDirection ( float  t)
inlineprivate

Definition at line 183 of file MissileHomingEffect.cs.

184 {
185 float num = EvaluateRadius(t);
186 float num2 = EvaluateRadiusDerivative(t);
187 float f = startAngle + totalAngle * turnSign * t;
188 float num3 = totalAngle * turnSign;
189 Vector2 vector = new Vector2(Mathf.Cos(f), Mathf.Sin(f));
190 Vector2 vector2 = new Vector2(0f - vector.y, vector.x);
191 return vector * num2 + vector2 * num * num3;
192 }
float EvaluateRadius(float t)
float EvaluateRadiusDerivative(float t)

References EvaluateRadius(), EvaluateRadiusDerivative(), startAngle, totalAngle, and turnSign.

Referenced by UpdateRotation().

◆ EvaluatePosition()

Vector2 MissileHomingEffect.EvaluatePosition ( float  t)
inlineprivate

Definition at line 175 of file MissileHomingEffect.cs.

176 {
177 float num = EvaluateRadius(t);
178 float f = startAngle + totalAngle * turnSign * t;
179 Vector2 vector = new Vector2(Mathf.Cos(f), Mathf.Sin(f));
180 return targetPosition + vector * num;
181 }

References EvaluateRadius(), startAngle, targetPosition, totalAngle, and turnSign.

Referenced by EstimatePathLength(), and Update().

◆ EvaluateRadius()

float MissileHomingEffect.EvaluateRadius ( float  t)
inlineprivate

Definition at line 194 of file MissileHomingEffect.cs.

195 {
196 float num = 1f - t;
197 return num * num * num * startRadius + 3f * num * num * t * peakRadius + 3f * num * t * t * peakRadius;
198 }

References peakRadius, and startRadius.

Referenced by EvaluateDirection(), and EvaluatePosition().

◆ EvaluateRadiusDerivative()

float MissileHomingEffect.EvaluateRadiusDerivative ( float  t)
inlineprivate

Definition at line 200 of file MissileHomingEffect.cs.

201 {
202 float num = 1f - t;
203 return 3f * num * num * (peakRadius - startRadius) - 3f * t * t * peakRadius;
204 }

References peakRadius, and startRadius.

Referenced by EvaluateDirection().

◆ Launch()

void MissileHomingEffect.Launch ( Vector2  from,
Vector2  to 
)
inline

Definition at line 82 of file MissileHomingEffect.cs.

83 {
84 launchZ = base.transform.position.z;
85 base.transform.position = new Vector3(from.x, from.y, launchZ);
86 startPosition = from;
87 targetPosition = to;
88 delayElapsed = 0f;
89 elapsed = 0f;
90 startedMoving = false;
91 launched = true;
92 launchDelay = UnityEngine.Random.Range(launchDelayMin, launchDelayMax);
93 if (spriteRenderer != null)
94 {
95 spriteRenderer.enabled = launchDelay <= 0f;
96 }
97 Vector2 vector = from - to;
98 startRadius = vector.magnitude;
99 if (startRadius < 0.001f)
100 {
101 startRadius = 0.001f;
102 vector = Vector2.right * startRadius;
103 }
104 startAngle = Mathf.Atan2(vector.y, vector.x);
105 float f = UnityEngine.Random.Range(orbitAngleMin, orbitAngleMax);
106 totalAngle = Mathf.Max(180f, Mathf.Abs(f)) * (MathF.PI / 180f);
107 turnSign = ((UnityEngine.Random.value < 0.5f) ? (-1f) : 1f);
108 float a = UnityEngine.Random.Range(orbitRadiusMin, orbitRadiusMax);
109 peakRadius = Mathf.Max(a, startRadius * 0.75f);
111 {
112 travelDuration = Mathf.Max(0.001f, UnityEngine.Random.Range(fixedDurationMin, fixedDurationMax));
113 }
114 else
115 {
116 float num = EstimatePathLength();
117 travelDuration = num / Mathf.Max(0.001f, speed);
118 }
119 if (launchDelay <= 0f)
120 {
121 StartMoving();
122 }
123 }

References delayElapsed, elapsed, EstimatePathLength(), fixedDurationMax, fixedDurationMin, launchDelay, launchDelayMax, launchDelayMin, launched, launchZ, orbitAngleMax, orbitAngleMin, orbitRadiusMax, orbitRadiusMin, peakRadius, speed, spriteRenderer, startAngle, startedMoving, StartMoving(), startPosition, startRadius, targetPosition, totalAngle, travelDuration, turnSign, and useFixedDuration.

Referenced by ActEffect.DamageEle().

◆ OnArrive()

virtual void MissileHomingEffect.OnArrive ( )
inlineprotectedvirtual

Definition at line 229 of file MissileHomingEffect.cs.

230 {
231 }

Referenced by Update().

◆ StartMoving()

void MissileHomingEffect.StartMoving ( )
inlineprivate

Definition at line 160 of file MissileHomingEffect.cs.

161 {
162 startedMoving = true;
163 elapsed = 0f;
164 base.transform.position = new Vector3(startPosition.x, startPosition.y, launchZ);
165 if (spriteRenderer != null)
166 {
167 spriteRenderer.enabled = true;
168 }
170 {
171 UpdateRotation(0f);
172 }
173 }
void UpdateRotation(float t)

References elapsed, launchZ, rotateToDirection, spriteRenderer, startedMoving, startPosition, and UpdateRotation().

Referenced by Launch(), and Update().

◆ Update()

void MissileHomingEffect.Update ( )
inlineprivate

Definition at line 125 of file MissileHomingEffect.cs.

126 {
127 if (!launched)
128 {
129 return;
130 }
131 if (!startedMoving)
132 {
133 delayElapsed += Time.deltaTime;
135 {
136 StartMoving();
137 }
138 return;
139 }
140 elapsed += Time.deltaTime;
141 float num = Mathf.Clamp01(elapsed / travelDuration);
142 Vector2 vector = EvaluatePosition(num);
143 base.transform.position = new Vector3(vector.x, vector.y, launchZ);
145 {
146 UpdateRotation(num);
147 }
148 if (num >= 1f)
149 {
150 base.transform.position = new Vector3(targetPosition.x, targetPosition.y, launchZ);
151 if (spriteRenderer != null)
152 {
153 spriteRenderer.enabled = false;
154 }
155 launched = false;
156 OnArrive();
157 }
158 }

References delayElapsed, elapsed, EvaluatePosition(), launchDelay, launched, launchZ, OnArrive(), rotateToDirection, spriteRenderer, startedMoving, StartMoving(), targetPosition, travelDuration, and UpdateRotation().

◆ UpdateRotation()

void MissileHomingEffect.UpdateRotation ( float  t)
inlineprivate

Definition at line 206 of file MissileHomingEffect.cs.

207 {
208 Vector2 vector = EvaluateDirection(t);
209 if (!(vector.sqrMagnitude < 1E-06f))
210 {
211 float num = Mathf.Atan2(vector.y, vector.x) * 57.29578f;
212 base.transform.rotation = Quaternion.Euler(0f, 0f, num + rotationOffset);
213 }
214 }
Vector2 EvaluateDirection(float t)

References EvaluateDirection(), and rotationOffset.

Referenced by StartMoving(), and Update().

Member Data Documentation

◆ delayElapsed

float MissileHomingEffect.delayElapsed
private

Definition at line 51 of file MissileHomingEffect.cs.

Referenced by Launch(), and Update().

◆ elapsed

float MissileHomingEffect.elapsed
private

Definition at line 55 of file MissileHomingEffect.cs.

Referenced by Launch(), StartMoving(), and Update().

◆ fixedDurationMax

float MissileHomingEffect.fixedDurationMax = 0.95f
private

Definition at line 33 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ fixedDurationMin

float MissileHomingEffect.fixedDurationMin = 0.65f
private

Definition at line 30 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ launchDelay

float MissileHomingEffect.launchDelay
private

Definition at line 53 of file MissileHomingEffect.cs.

Referenced by Launch(), and Update().

◆ launchDelayMax

float MissileHomingEffect.launchDelayMax = 0.25f
private

Definition at line 24 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ launchDelayMin

float MissileHomingEffect.launchDelayMin
private

Definition at line 21 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ launched

bool MissileHomingEffect.launched
private

Definition at line 47 of file MissileHomingEffect.cs.

Referenced by Launch(), and Update().

◆ launchZ

float MissileHomingEffect.launchZ
private

Definition at line 59 of file MissileHomingEffect.cs.

Referenced by Launch(), StartMoving(), and Update().

◆ orbitAngleMax

float MissileHomingEffect.orbitAngleMax = 340f
private

Definition at line 17 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ orbitAngleMin

float MissileHomingEffect.orbitAngleMin = 220f
private

Definition at line 14 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ orbitRadiusMax

float MissileHomingEffect.orbitRadiusMax = 4f
private

Definition at line 11 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ orbitRadiusMin

float MissileHomingEffect.orbitRadiusMin = 2f
private

Definition at line 8 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ peakRadius

float MissileHomingEffect.peakRadius
private

Definition at line 67 of file MissileHomingEffect.cs.

Referenced by EvaluateRadius(), EvaluateRadiusDerivative(), and Launch().

◆ rotateToDirection

bool MissileHomingEffect.rotateToDirection = true
private

Definition at line 40 of file MissileHomingEffect.cs.

Referenced by StartMoving(), and Update().

◆ rotationOffset

float MissileHomingEffect.rotationOffset
private

Definition at line 43 of file MissileHomingEffect.cs.

Referenced by UpdateRotation().

◆ speed

float MissileHomingEffect.speed = 10f
private

Definition at line 36 of file MissileHomingEffect.cs.

Referenced by Launch().

◆ spriteRenderer

SpriteRenderer MissileHomingEffect.spriteRenderer
private

Definition at line 45 of file MissileHomingEffect.cs.

Referenced by Awake(), Launch(), StartMoving(), and Update().

◆ startAngle

float MissileHomingEffect.startAngle
private

Definition at line 69 of file MissileHomingEffect.cs.

Referenced by EvaluateDirection(), EvaluatePosition(), and Launch().

◆ startedMoving

bool MissileHomingEffect.startedMoving
private

Definition at line 49 of file MissileHomingEffect.cs.

Referenced by Launch(), StartMoving(), and Update().

◆ startPosition

Vector2 MissileHomingEffect.startPosition
private

Definition at line 61 of file MissileHomingEffect.cs.

Referenced by Launch(), and StartMoving().

◆ startRadius

float MissileHomingEffect.startRadius
private

Definition at line 65 of file MissileHomingEffect.cs.

Referenced by EvaluateRadius(), EvaluateRadiusDerivative(), and Launch().

◆ targetPosition

Vector2 MissileHomingEffect.targetPosition
private

Definition at line 63 of file MissileHomingEffect.cs.

Referenced by EvaluatePosition(), Launch(), and Update().

◆ totalAngle

float MissileHomingEffect.totalAngle
private

Definition at line 71 of file MissileHomingEffect.cs.

Referenced by EvaluateDirection(), EvaluatePosition(), and Launch().

◆ travelDuration

float MissileHomingEffect.travelDuration
private

Definition at line 57 of file MissileHomingEffect.cs.

Referenced by Launch(), and Update().

◆ turnSign

float MissileHomingEffect.turnSign
private

Definition at line 73 of file MissileHomingEffect.cs.

Referenced by EvaluateDirection(), EvaluatePosition(), and Launch().

◆ useFixedDuration

bool MissileHomingEffect.useFixedDuration = true
private

Definition at line 27 of file MissileHomingEffect.cs.

Referenced by Launch().

Property Documentation

◆ IsFlying

bool MissileHomingEffect.IsFlying
get

Definition at line 75 of file MissileHomingEffect.cs.


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