HyCodeYourTale
classpublicPriority 3

ForceAccumulator

com.hypixel.hytale.server.core.modules.physics.util.ForceAccumulator

1

Methods

1

Public Methods

1

Fields

1

Constructors

Constructors

public
ForceAccumulator()

Methods

Public Methods (1)

public
void initialize(PhysicsBodyState state, double mass, double timeStep)

Fields

Public Fields (1)

publicdouble speed

Related Classes

Used By

Source Code

package com.hypixel.hytale.server.core.modules.physics.util;

import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nonnull;

public class ForceAccumulator {
   public double speed;
   public final Vector3d force = new Vector3d();
   public final Vector3d resistanceForceLimit = new Vector3d();

   public ForceAccumulator() {
   }

   public void initialize(@Nonnull PhysicsBodyState state, double mass, double timeStep) {
      this.force.assign(Vector3d.ZERO);
      this.speed = state.velocity.length();
      this.resistanceForceLimit.assign(state.velocity).scale(-mass / timeStep);
   }

   protected void computeResultingForce(
      @Nonnull PhysicsBodyState state, boolean onGround, @Nonnull ForceProvider[] forceProviders, double mass, double timeStep
   ) {
      this.initialize(state, mass, timeStep);

      for (ForceProvider provider : forceProviders) {
         provider.update(state, this, onGround);
      }
   }
}