• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package com.jme3.bullet.collision.shapes;
6 
7 import com.bulletphysics.collision.shapes.ConeShape;
8 import com.bulletphysics.collision.shapes.ConeShapeX;
9 import com.bulletphysics.collision.shapes.ConeShapeZ;
10 import com.jme3.bullet.PhysicsSpace;
11 import com.jme3.bullet.util.Converter;
12 import com.jme3.export.InputCapsule;
13 import com.jme3.export.JmeExporter;
14 import com.jme3.export.JmeImporter;
15 import com.jme3.export.OutputCapsule;
16 import java.io.IOException;
17 
18 /**
19  *
20  * @author normenhansen
21  */
22 public class ConeCollisionShape extends CollisionShape {
23 
24     protected float radius;
25     protected float height;
26     protected int axis;
27 
ConeCollisionShape()28     public ConeCollisionShape() {
29     }
30 
ConeCollisionShape(float radius, float height, int axis)31     public ConeCollisionShape(float radius, float height, int axis) {
32         this.radius = radius;
33         this.height = radius;
34         this.axis = axis;
35         createShape();
36     }
37 
ConeCollisionShape(float radius, float height)38     public ConeCollisionShape(float radius, float height) {
39         this.radius = radius;
40         this.height = radius;
41         this.axis = PhysicsSpace.AXIS_Y;
42         createShape();
43     }
44 
getRadius()45     public float getRadius() {
46         return radius;
47     }
48 
write(JmeExporter ex)49     public void write(JmeExporter ex) throws IOException {
50         super.write(ex);
51         OutputCapsule capsule = ex.getCapsule(this);
52         capsule.write(radius, "radius", 0.5f);
53         capsule.write(height, "height", 0.5f);
54         capsule.write(axis, "axis", 0.5f);
55     }
56 
read(JmeImporter im)57     public void read(JmeImporter im) throws IOException {
58         super.read(im);
59         InputCapsule capsule = im.getCapsule(this);
60         radius = capsule.readFloat("radius", 0.5f);
61         radius = capsule.readFloat("height", 0.5f);
62         radius = capsule.readFloat("axis", 0.5f);
63         createShape();
64     }
65 
createShape()66     protected void createShape() {
67         if (axis == PhysicsSpace.AXIS_X) {
68             cShape = new ConeShapeX(radius, height);
69         } else if (axis == PhysicsSpace.AXIS_Y) {
70             cShape = new ConeShape(radius, height);
71         } else if (axis == PhysicsSpace.AXIS_Z) {
72             cShape = new ConeShapeZ(radius, height);
73         }
74         cShape.setLocalScaling(Converter.convert(getScale()));
75         cShape.setMargin(margin);
76     }
77 }
78