* Classes that will help MeshBuilder support simple shapes */
| 22 | */ |
| 23 | class Shapes { |
| 24 | |
| 25 | companion object |
| 26 | { |
| 27 | @JvmField var normals = 3; |
| 28 | @JvmField var textures = 4; |
| 29 | @JvmField var colors = 1; |
| 30 | |
| 31 | @SafeToToString |
| 32 | @Documentation("Set this field to rotate everything that this class appends to builders") |
| 33 | @JvmField var rotate = Quat() |
| 34 | |
| 35 | @SafeToToString |
| 36 | @Documentation("Set this field to translate everything that this class appends to builders") |
| 37 | @JvmField var translate = Vec3() |
| 38 | |
| 39 | @JvmStatic |
| 40 | @Documentation("Appends a cube of size `scale` to `builder`") |
| 41 | fun cube(scale: Number = 1, builder: MeshBuilder): MeshBuilder { |
| 42 | return cube(Vec3(scale.toDouble(), scale.toDouble(), scale.toDouble()), builder) |
| 43 | } |
| 44 | |
| 45 | @JvmStatic |
| 46 | @JvmOverloads |
| 47 | @Documentation("Appends a cube of size `scale` to `builder`") |
| 48 | fun cube(scale: Vec3 = Vec3(1.0, 1.0, 1.0), builder: MeshBuilder): MeshBuilder { |
| 49 | val shape = ParShapes.par_shapes_create_cube()!! |
| 50 | ParShapes.par_shapes_scale(shape, scale.x().toFloat(), scale.y().toFloat(), scale.z().toFloat()) |
| 51 | parMeshToMeshBuilder(shape, builder) |
| 52 | return builder |
| 53 | } |
| 54 | |
| 55 | @JvmStatic |
| 56 | @JvmOverloads |
| 57 | @Documentation("Appends a sphere of radius `scale` to `builder`") |
| 58 | fun sphere(scale: Vec3 = Vec3(1.0, 1.0, 1.0), slices: Int, stacks: Int, builder: MeshBuilder): MeshBuilder { |
| 59 | val shape = ParShapes.par_shapes_create_parametric_sphere(slices, stacks)!! |
| 60 | ParShapes.par_shapes_scale(shape, scale.x.toFloat(), scale.y.toFloat(), scale.z.toFloat()) |
| 61 | parMeshToMeshBuilder(shape, builder) |
| 62 | return builder |
| 63 | } |
| 64 | |
| 65 | @JvmStatic |
| 66 | @Documentation("Appends a sphere of radius `scale` to `builder`") |
| 67 | fun sphere(scale: Number, slices: Int, stacks: Int, builder: MeshBuilder): MeshBuilder { |
| 68 | return sphere(Vec3(scale.toDouble(), scale.toDouble(), scale.toDouble()), slices, stacks, builder) |
| 69 | } |
| 70 | |
| 71 | @JvmStatic |
| 72 | @JvmOverloads |
| 73 | @Documentation("Appends a torus of with radius `scale` and inner radius `scale` * `inner_radius` to `builder`") |
| 74 | fun torus(scale: Vec3 = Vec3(1.0, 1.0, 1.0), slices: Int, stacks: Int, inner_radius: Number, builder: MeshBuilder): MeshBuilder { |
| 75 | val shape = ParShapes.par_shapes_create_torus(slices, stacks, inner_radius.toFloat())!! |
| 76 | ParShapes.par_shapes_scale(shape, scale.x.toFloat(), scale.y.toFloat(), scale.z.toFloat()) |
| 77 | parMeshToMeshBuilder(shape, builder) |
| 78 | return builder |
| 79 | } |
| 80 | |
| 81 | @JvmStatic |