Package Hexel.things.types

Source Code of Hexel.things.types.Humanoid

package Hexel.things.types;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import Hexel.math.Vector3d;
import Hexel.rendering.Renderable;

public abstract class Humanoid extends Thing implements Movable, Cuboid, Volumetric {

  /**
   *
   */
  private static final long serialVersionUID = -3849125377629870134L;
  protected double x;
  protected double y;
  protected double z;

  public final double xlen = .3;
  public final double ylen = .3;
  public final double zlen = 1.4;

  private double dx = 0;
  private double dy = 0;
  private double dz = 0;
 
  public Humanoid(double x, double y, double z){
    this.x = x;
    this.y = y;
    this.z = z;
  }
 

  @Override
  public void getXYZ(Vector3d v) {
    v.x = x;
    v.y = y;
    v.z = z;
  }

  @Override
  public double getX() {
    return x;
  }

  @Override
  public double getY() {
    return y;
  }

  @Override
  public double getZ() {
    return z;
  }

  @Override
  public double getWidth() {
    return this.xlen;
  }

  @Override
  public double getHeight() {
    return this.ylen;
  }

  @Override
  public double getDepth() {
    return this.zlen;
  }

  @Override
  public void accelerate(double fps, double dx, double dy, double dz) {
    this.dz += dz / fps;
    if (this.thingBridge.inWater(this) && Math.abs(this.dz) > 5)
      this.dz = Math.signum(this.dz) * 5;
  }

  @Override
  public void stopX() {

  }

  @Override
  public void stopY() {

  }

  @Override
  public void stopZ() {
    this.dz = 0;
  }

  @Override
  public Vector3d getReqMoveVector(double fps) {
    Vector3d v = new Vector3d();
    double dragZ = 1;
    double dragXY = 1;
    if (this.thingBridge.inWater(this)) {
      dragZ = .5;
      dragXY = .75;
    }
    v.x = dragXY * this.dx / fps;
    v.y = dragXY * this.dy / fps;
    v.z = dragZ * this.dz / fps;
    return v;
  }
 

  public void jump(double mag) {
    if (this.thingBridge.onGround(this) || this.thingBridge.inWater(this))
      this.dz = mag;
  }
 
  public void setMovement(double dir, double speed){
    this.dx = speed*Math.cos(dir);
    this.dy = speed*Math.sin(dir);
  }

  @Override
  public void applyMoveVector(Vector3d v) {
    this.x += v.x;
    this.y += v.y;
    this.z += v.z;
  }
 
  private void readObject(ObjectInputStream in) throws ClassNotFoundException, IOException {
    x = (Double) in.readObject();
    y = (Double) in.readObject();
    z = (Double) in.readObject();
   
    dx = (Double) in.readObject();
    dy = (Double) in.readObject();
    dz = (Double) in.readObject();
  }

  private void writeObject(ObjectOutputStream out) throws IOException {
   
    out.writeObject(x);
    out.writeObject(y);
    out.writeObject(z);
   
    out.writeObject(dx);
    out.writeObject(dy);
    out.writeObject(dz);
  }


}
TOP

Related Classes of Hexel.things.types.Humanoid

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.