Initial Commit
This commit is contained in:
108
2DGAMELIB/_2DGAMELIB/MotV.cs
Normal file
108
2DGAMELIB/_2DGAMELIB/MotV.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
namespace _2DGAMELIB;
|
||||
|
||||
public class MotV
|
||||
{
|
||||
public double Value;
|
||||
|
||||
protected double min = -1.0;
|
||||
|
||||
protected double max = 1.0;
|
||||
|
||||
private double Frame;
|
||||
|
||||
private double FrameHalf;
|
||||
|
||||
private double MinFrameHalf;
|
||||
|
||||
public double BaseSpeed = 1.0;
|
||||
|
||||
public double GotoSpeed = 1.0;
|
||||
|
||||
public double RetuSpeed = 1.0;
|
||||
|
||||
public double Interval;
|
||||
|
||||
private long st;
|
||||
|
||||
public double LowestIncrease = 1.0;
|
||||
|
||||
private int s = 1;
|
||||
|
||||
private double d;
|
||||
|
||||
private double m;
|
||||
|
||||
public double Min
|
||||
{
|
||||
get
|
||||
{
|
||||
return min;
|
||||
}
|
||||
set
|
||||
{
|
||||
min = value;
|
||||
SetFrame();
|
||||
}
|
||||
}
|
||||
|
||||
public double Max
|
||||
{
|
||||
get
|
||||
{
|
||||
return max;
|
||||
}
|
||||
set
|
||||
{
|
||||
max = value;
|
||||
SetFrame();
|
||||
}
|
||||
}
|
||||
|
||||
public MotV(double Min, double Max)
|
||||
{
|
||||
min = Min;
|
||||
max = Max;
|
||||
SetFrame();
|
||||
ResetValue();
|
||||
}
|
||||
|
||||
private void SetFrame()
|
||||
{
|
||||
Frame = max - min;
|
||||
FrameHalf = Frame * 0.5;
|
||||
MinFrameHalf = Min + FrameHalf;
|
||||
}
|
||||
|
||||
public void ResetValue()
|
||||
{
|
||||
Value = min;
|
||||
}
|
||||
|
||||
private void Count(FPS FPS)
|
||||
{
|
||||
m = Frame / FPS.Value;
|
||||
Value += (m * d + m * LowestIncrease) * BaseSpeed * ((s > 0) ? GotoSpeed : RetuSpeed) * (double)s;
|
||||
}
|
||||
|
||||
public void GetValue(FPS FPS)
|
||||
{
|
||||
if (!((double)(FPS.sw.ElapsedMilliseconds - st) < Interval) && FPS.Value > 0.0)
|
||||
{
|
||||
d = (MinFrameHalf - Value) / FrameHalf;
|
||||
d *= d.Sign();
|
||||
d = d.Inverse();
|
||||
Count(FPS);
|
||||
if (Value >= max)
|
||||
{
|
||||
Value = max;
|
||||
s = -s;
|
||||
}
|
||||
else if (Value <= min)
|
||||
{
|
||||
Value = min;
|
||||
s = -s;
|
||||
st = FPS.sw.ElapsedMilliseconds;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user