|
|
@ -1,34 +1,39 @@ |
|
|
|
using System.Numerics; |
|
|
|
|
|
|
|
namespace Smoll.Ex2 { |
|
|
|
sealed class InertiaComponent : Component { |
|
|
|
namespace Smoll.Ex3 |
|
|
|
{ |
|
|
|
sealed class InertiaComponent : Component |
|
|
|
{ |
|
|
|
public Transform2D transform; |
|
|
|
public float dampening; |
|
|
|
private Transform2DComponent? ownerTransform; |
|
|
|
|
|
|
|
public InertiaComponent(float dampening = 1) |
|
|
|
: this(dampening,0,0,0) |
|
|
|
{} |
|
|
|
public InertiaComponent(float dampening = 1) |
|
|
|
: this(dampening, 0, 0, 0) |
|
|
|
{ } |
|
|
|
|
|
|
|
public InertiaComponent(float dampening, float x, float y) |
|
|
|
: this(dampening,x,y,0) |
|
|
|
{} |
|
|
|
public InertiaComponent(float dampening, float x, float y) |
|
|
|
: this(dampening, x, y, 0) |
|
|
|
{ } |
|
|
|
|
|
|
|
public InertiaComponent(float dampening, float x, float y, float angle) { |
|
|
|
public InertiaComponent(float dampening, float x, float y, float angle) |
|
|
|
{ |
|
|
|
transform = new Transform2D(); |
|
|
|
transform.position = y*Complex.ImaginaryOne + x; |
|
|
|
transform.position = y * Complex.ImaginaryOne + x; |
|
|
|
transform.angle = angle; |
|
|
|
transform.scale = 1; |
|
|
|
this.dampening = dampening; |
|
|
|
} |
|
|
|
|
|
|
|
public InertiaComponent(float dampening, Transform2D tr) { |
|
|
|
public InertiaComponent(float dampening, Transform2D tr) |
|
|
|
{ |
|
|
|
transform = tr; |
|
|
|
this.dampening = dampening; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public override void OnAttached() { |
|
|
|
public override void OnAttached() |
|
|
|
{ |
|
|
|
ownerTransform = owner.GetComponent<Transform2DComponent>(); |
|
|
|
} |
|
|
|
|
|
|
@ -41,7 +46,7 @@ namespace Smoll.Ex2 { |
|
|
|
|
|
|
|
transform.position *= MathF.Pow(dampening, deltaTimeSeconds); |
|
|
|
transform.angle *= MathF.Pow(dampening, deltaTimeSeconds); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|