Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PunchCameraModifier.cs
Go to the documentation of this file.
1using System;
3
5
7{
8 private int _framesToLast;
9
11
13
14 private float _distanceFalloff;
15
16 private float _strength;
17
19
20 private int _framesLasted;
21
22 public string UniqueIdentity { get; private set; }
23
24 public bool Finished { get; private set; }
25
26 public PunchCameraModifier(Vector2 startPosition, Vector2 direction, float strength, float vibrationCyclesPerSecond, int frames, float distanceFalloff = -1f, string uniqueIdentity = null)
27 {
28 _startPosition = startPosition;
29 _direction = direction;
30 _strength = strength;
31 _vibrationCyclesPerSecond = vibrationCyclesPerSecond;
32 _framesToLast = frames;
33 _distanceFalloff = distanceFalloff;
34 UniqueIdentity = uniqueIdentity;
35 }
36
37 public void Update(ref CameraInfo cameraInfo)
38 {
39 float num = (float)Math.Cos((float)_framesLasted / 60f * _vibrationCyclesPerSecond * ((float)Math.PI * 2f));
40 float num2 = Utils.Remap(_framesLasted, 0f, _framesToLast, 1f, 0f);
41 float num3 = Utils.Remap(Vector2.Distance(_startPosition, cameraInfo.OriginalCameraCenter), 0f, _distanceFalloff, 1f, 0f);
42 if (_distanceFalloff == -1f)
43 {
44 num3 = 1f;
45 }
46 cameraInfo.CameraPosition += _direction * num * _strength * num2 * num3;
49 {
50 Finished = true;
51 }
52 }
53}
static double Cos(double d)
const double PI
Definition Math.cs:16
PunchCameraModifier(Vector2 startPosition, Vector2 direction, float strength, float vibrationCyclesPerSecond, int frames, float distanceFalloff=-1f, string uniqueIdentity=null)
static float Remap(float fromValue, float fromMin, float fromMax, float toMin, float toMax, bool clamped=true)
Definition Utils.cs:233
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91