Godot Nature of Code  1.2.0
Nature of Code implemented in Godot Engine
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Properties | List of all members
Forces.SimpleMover Class Reference

Generic force-driven object. More...

Inheritance diagram for Forces.SimpleMover:
Agents.SimpleVehicle Ecosystem.Ecosystem.Lifeform Forces.ConstantAccelerationMover Particles.SimpleParticle Particles.SimpleParticleSystem Agents.RoundVehicle Agents.SimpleBoid Ecosystem.Ecosystem.BaseFly Ecosystem.Ecosystem.HoppingBunny Ecosystem.Ecosystem.SwimmingFish Particles.SimpleFallingParticle Ecosystem.Ecosystem.AttractedFly Ecosystem.Ecosystem.NervousButterfly Ecosystem.Ecosystem.NervousFly

Public Types

enum class  WrapModeEnum { Wrap , Bounce , None }
 Wrapping mode enum. More...
 

Public Member Functions

 SimpleMover ()
 Create a simple wrapping mover with a circle mesh. More...
 
 SimpleMover (WrapModeEnum wrapMode)
 Create a simple mover with a custom wrap mode and a circle mesh. More...
 
virtual void ApplyForce (Vector2 force)
 Apply force on mover. More...
 
virtual void ApplyAngularForce (float force)
 Apply angular force on mover. More...
 
virtual void ApplyFriction (float coef)
 Apply friction on mover. More...
 
virtual void ApplyAngularFriction (float coef)
 Apply angular friction on mover. More...
 
virtual void ApplyDrag (float coef)
 Apply drag on mover. More...
 
virtual void ApplyDamping (float coef)
 Apply damping on mover. More...
 

Public Attributes

Vector2 Velocity = Vector2.Zero
 Current velocity More...
 
Vector2 Acceleration = Vector2.Zero
 Current acceleration More...
 
float AngularVelocity
 Current angular velocity More...
 
float AngularAcceleration
 Current angular acceleration More...
 
float MaxVelocity = 10
 Max velocity More...
 
float MaxAngularVelocity = 0.1f
 Max angular velocity More...
 
float Mass = 1
 Mass More...
 
WrapModeEnum WrapMode
 Wrapping mode More...
 
bool DisableForces
 Disable forces More...
 
bool SyncRotationOnVelocity
 Synchronize rotation on velocity More...
 
SimpleMesh Mesh
 Mesh More...
 

Protected Member Functions

virtual void UpdateAcceleration ()
 Update acceleration value. More...
 

Protected Attributes

CollisionShape2D collisionShape2D
 Collision shape More...
 

Properties

bool Drawing [get, set]
 Draw mesh More...
 
Vector2 MeshSize [get, set]
 Mesh size More...
 
float Radius [get, set]
 Mesh radius More...
 

Detailed Description

Generic force-driven object.

Definition at line 9 of file SimpleMover.cs.

Member Enumeration Documentation

◆ WrapModeEnum

Wrapping mode enum.

Enumerator
Wrap 

Wrap on edges

Bounce 

Bounce on edges

None 

No edge limit

Definition at line 14 of file SimpleMover.cs.

15  {
17  Wrap,
18 
20  Bounce,
21 
23  None
24  }

Constructor & Destructor Documentation

◆ SimpleMover() [1/2]

Forces.SimpleMover.SimpleMover ( )
inline

Create a simple wrapping mover with a circle mesh.

Definition at line 95 of file SimpleMover.cs.

95 : this(WrapModeEnum.Wrap) { }
WrapModeEnum
Wrapping mode enum.
Definition: SimpleMover.cs:15

◆ SimpleMover() [2/2]

Forces.SimpleMover.SimpleMover ( WrapModeEnum  wrapMode)
inline

Create a simple mover with a custom wrap mode and a circle mesh.

Parameters
wrapModeWrap mode

Definition at line 101 of file SimpleMover.cs.

102  {
103  WrapMode = wrapMode;
104  Mesh = new SimpleMesh();
105  Name = "SimpleMover";
106 
107  collisionShape2D = new CollisionShape2D() { Name = "CollisionShape2D" };
108  }
Simple "mesh" drawing. Can be a circle, square, custom drawing or custom texture.
Definition: SimpleMesh.cs:9
WrapModeEnum WrapMode
Wrapping mode
Definition: SimpleMover.cs:48
SimpleMesh Mesh
Mesh
Definition: SimpleMover.cs:57
CollisionShape2D collisionShape2D
Collision shape
Definition: SimpleMover.cs:90

Member Function Documentation

◆ ApplyAngularForce()

virtual void Forces.SimpleMover.ApplyAngularForce ( float  force)
inlinevirtual

Apply angular force on mover.

Parameters
forceForce angle in radians

Definition at line 123 of file SimpleMover.cs.

124  {
125  AngularAcceleration += force / Mass;
126  }
float AngularAcceleration
Current angular acceleration
Definition: SimpleMover.cs:36

◆ ApplyAngularFriction()

virtual void Forces.SimpleMover.ApplyAngularFriction ( float  coef)
inlinevirtual

Apply angular friction on mover.

Parameters
coefFriction coefficient

Definition at line 142 of file SimpleMover.cs.

143  {
144  AngularAcceleration += -AngularVelocity * coef / 10f;
145  }
float AngularVelocity
Current angular velocity
Definition: SimpleMover.cs:33

◆ ApplyDamping()

virtual void Forces.SimpleMover.ApplyDamping ( float  coef)
inlinevirtual

Apply damping on mover.

Parameters
coefDamping coefficient

Definition at line 164 of file SimpleMover.cs.

165  {
166  Velocity *= coef;
167  }
Vector2 Velocity
Current velocity
Definition: SimpleMover.cs:27

◆ ApplyDrag()

virtual void Forces.SimpleMover.ApplyDrag ( float  coef)
inlinevirtual

Apply drag on mover.

Parameters
coefDrag coefficient

Definition at line 151 of file SimpleMover.cs.

152  {
153  float speedSqr = Velocity.LengthSquared();
154  float mag = coef * speedSqr;
155 
156  var drag = Velocity.Normalized() * mag * -1;
157  ApplyForce(drag);
158  }
virtual void ApplyForce(Vector2 force)
Apply force on mover.
Definition: SimpleMover.cs:114

◆ ApplyForce()

virtual void Forces.SimpleMover.ApplyForce ( Vector2  force)
inlinevirtual

Apply force on mover.

Parameters
forceForce vector

Definition at line 114 of file SimpleMover.cs.

115  {
116  Acceleration += force / Mass;
117  }
Vector2 Acceleration
Current acceleration
Definition: SimpleMover.cs:30

◆ ApplyFriction()

virtual void Forces.SimpleMover.ApplyFriction ( float  coef)
inlinevirtual

Apply friction on mover.

Parameters
coefFriction coefficient

Definition at line 132 of file SimpleMover.cs.

133  {
134  var friction = (-Velocity).Normalized() * coef;
135  ApplyForce(friction);
136  }

◆ UpdateAcceleration()

virtual void Forces.SimpleMover.UpdateAcceleration ( )
inlineprotectedvirtual

Member Data Documentation

◆ Acceleration

Vector2 Forces.SimpleMover.Acceleration = Vector2.Zero

Current acceleration

Definition at line 30 of file SimpleMover.cs.

◆ AngularAcceleration

float Forces.SimpleMover.AngularAcceleration

Current angular acceleration

Definition at line 36 of file SimpleMover.cs.

◆ AngularVelocity

float Forces.SimpleMover.AngularVelocity

Current angular velocity

Definition at line 33 of file SimpleMover.cs.

◆ collisionShape2D

CollisionShape2D Forces.SimpleMover.collisionShape2D
protected

Collision shape

Definition at line 90 of file SimpleMover.cs.

◆ DisableForces

bool Forces.SimpleMover.DisableForces

Disable forces

Definition at line 51 of file SimpleMover.cs.

◆ Mass

float Forces.SimpleMover.Mass = 1

Mass

Definition at line 45 of file SimpleMover.cs.

◆ MaxAngularVelocity

float Forces.SimpleMover.MaxAngularVelocity = 0.1f

Max angular velocity

Definition at line 42 of file SimpleMover.cs.

◆ MaxVelocity

float Forces.SimpleMover.MaxVelocity = 10

Max velocity

Definition at line 39 of file SimpleMover.cs.

◆ Mesh

SimpleMesh Forces.SimpleMover.Mesh

Mesh

Definition at line 57 of file SimpleMover.cs.

◆ SyncRotationOnVelocity

bool Forces.SimpleMover.SyncRotationOnVelocity

Synchronize rotation on velocity

Definition at line 54 of file SimpleMover.cs.

◆ Velocity

Vector2 Forces.SimpleMover.Velocity = Vector2.Zero

Current velocity

Definition at line 27 of file SimpleMover.cs.

◆ WrapMode

WrapModeEnum Forces.SimpleMover.WrapMode

Wrapping mode

Definition at line 48 of file SimpleMover.cs.

Property Documentation

◆ Drawing

bool Forces.SimpleMover.Drawing
getset

Draw mesh

Definition at line 60 of file SimpleMover.cs.

61  {
62  get => Mesh.Visible;
63  set
64  {
65  Mesh.Visible = value;
66  }
67  }

◆ MeshSize

Vector2 Forces.SimpleMover.MeshSize
getset

Mesh size

Definition at line 70 of file SimpleMover.cs.

71  {
72  get => Mesh.MeshSize;
73  set
74  {
75  Mesh.MeshSize = value;
76  }
77  }
Vector2 MeshSize
Mesh size
Definition: SimpleMesh.cs:32

◆ Radius

float Forces.SimpleMover.Radius
getset

Mesh radius

Definition at line 80 of file SimpleMover.cs.

81  {
82  get => Mesh.MeshSize.x / 2;
83  set
84  {
85  Mesh.MeshSize = new Vector2(value * 2, value * 2);
86  }
87  }

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