ege/src/org/atriasoft/phyligram/PhysicSphere.java

38 lines
1.4 KiB
Java

package org.atriasoft.phyligram;
import org.atriasoft.etk.Color;
import org.atriasoft.etk.math.Transform3D;
import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.gale.resource.ResourceColored3DObject;
public class PhysicSphere extends PhysicShape {
// Box size property in X, Y and Z
private float size;
public PhysicSphere() {
super(PhysicShapeType.SPHERE);
}
public float getSize() {
return size;
}
public void setSize(float size) {
this.size = size;
}
@Override
public void updateAABB(Transform3D transform, PhysicCollisionAABB aabb) {
aabb.update(transform.multiply(this.transform.getPosition()).add(this.size,0,0));
aabb.update(transform.multiply(this.transform.getPosition()).add(-this.size,0,0));
aabb.update(transform.multiply(this.transform.getPosition()).add(0,this.size,0));
aabb.update(transform.multiply(this.transform.getPosition()).add(0,-this.size,0));
aabb.update(transform.multiply(this.transform.getPosition()).add(0,0,this.size));
aabb.update(transform.multiply(this.transform.getPosition()).add(0,0,-this.size));
}
@Override
public void updateForNarrowCollision(Transform3D transform) {
}
@Override
public void renderDebug(Transform3D transform, ResourceColored3DObject debugDrawProperty) {
debugDrawProperty.drawSphere(this.size, 9, 9, this.transform.getOpenGLMatrix().multiply(transform.getOpenGLMatrix()), new Color(0,1,0,1));
}
}