consolidated stuff to marbleworld

This commit is contained in:
RandomityGuy 2021-05-28 22:44:18 +05:30
parent 5bed26560f
commit c97b36c432
2 changed files with 56 additions and 36 deletions

View file

@ -1,5 +1,6 @@
package;
import src.MarbleWorld;
import collision.CollisionWorld;
import src.Marble;
import hxd.res.Loader;
@ -16,9 +17,7 @@ class Main extends hxd.App {
var scene:Scene;
var fileSystem:FileSystem;
var marble:Marble;
var marble2:Marble;
var collisionWorld:CollisionWorld;
var world:MarbleWorld;
override function init() {
super.init();
@ -27,28 +26,10 @@ class Main extends hxd.App {
var loader = new Loader(fileSystem);
var cube = new Cube();
cube.addUVs();
cube.addNormals();
this.collisionWorld = new CollisionWorld();
world = new MarbleWorld(s3d);
var db = DifBuilder.loadDif("interiors/beginner/beginner_finish.dif", loader);
collisionWorld.addEntity(db.collider);
var mat = Material.create();
var difbounds = new CustomObject(cube, mat, s3d);
var bound = db.collider.boundingBox;
var oct = collisionWorld.octree;
difbounds.setPosition(oct.root.min.x, oct.root.min.y, oct.root.min.z);
var difbounds2 = new CustomObject(cube, mat, s3d);
difbounds2.setPosition(oct.root.min.x + oct.root.size, oct.root.min.y + oct.root.size, oct.root.min.z + oct.root.size);
var difbounds3 = new CustomObject(cube, mat, s3d);
difbounds3.setPosition(bound.xMin, bound.yMin, bound.zMin);
var difbounds4 = new CustomObject(cube, mat, s3d);
difbounds4.setPosition(bound.xMax, bound.yMax, bound.zMax);
world.addInterior(db);
// for (surf in db.collider.surfaces) {
// var surfmin = new CustomObject(cube, mat, s3d);
@ -72,25 +53,20 @@ class Main extends hxd.App {
// s3d.camera.
marble = new Marble();
marble.controllable = true;
s3d.addChild(marble);
marble.setPosition(0, 0, 5);
marble2 = new Marble();
s3d.addChild(marble2);
var marble2 = new Marble();
world.addMarble(marble2);
marble2.setPosition(0, 5, 5);
// marble.setPosition(-10, -5, 5);
s3d.addChild(marble.camera);
collisionWorld.addMovingEntity(marble.collider);
collisionWorld.addMovingEntity(marble2.collider);
var marble = new Marble();
marble.controllable = true;
world.addMarble(marble);
marble.setPosition(0, 0, 5);
// marble.setPosition(-10, -5, 5);
}
override function update(dt:Float) {
super.update(dt);
marble.update(dt, this.collisionWorld);
marble2.update(dt, this.collisionWorld);
world.update(dt);
}
static function main() {

44
src/MarbleWorld.hx Normal file
View file

@ -0,0 +1,44 @@
package src;
import hxd.Key;
import h3d.Vector;
import src.InteriorGeometry;
import h3d.scene.Scene;
import h3d.scene.CustomObject;
import collision.CollisionWorld;
import src.Marble;
class MarbleWorld {
var collisionWorld:CollisionWorld;
public var interiors:Array<InteriorGeometry> = [];
public var marbles:Array<Marble> = [];
var scene:Scene;
public function new(scene:Scene) {
this.collisionWorld = new CollisionWorld();
this.scene = scene;
}
public function addInterior(obj:InteriorGeometry) {
this.interiors.push(obj);
this.collisionWorld.addEntity(obj.collider);
this.scene.addChild(obj);
}
public function addMarble(marble:Marble) {
this.marbles.push(marble);
if (marble.controllable) {
this.scene.addChild(marble.camera);
}
this.collisionWorld.addMovingEntity(marble.collider);
this.scene.addChild(marble);
}
public function update(dt:Float) {
for (marble in marbles) {
marble.update(dt, collisionWorld);
}
}
}