|
@@ -7,9 +7,10 @@ class Interactive extends hxd.App {
|
|
|
var obj : h3d.scene.Object;
|
|
|
var b : h2d.Interactive;
|
|
|
|
|
|
- function initInteract( i : h3d.scene.Interactive, m : h3d.scene.Mesh ) {
|
|
|
+ function initInteract( i : h3d.scene.Interactive, m : h3d.scene.Mesh, scale = 1. ) {
|
|
|
var beacon = null;
|
|
|
var color = m.material.color.clone();
|
|
|
+ i.bestMatch = true;
|
|
|
i.onOver = function(e : hxd.Event) {
|
|
|
m.material.color.set(0, 1, 0);
|
|
|
var s = new h3d.prim.Sphere(1, 32, 32);
|
|
@@ -17,12 +18,12 @@ class Interactive extends hxd.App {
|
|
|
beacon = new h3d.scene.Mesh(s, m);
|
|
|
beacon.material.mainPass.enableLights = true;
|
|
|
beacon.material.color.set(1, 0, 0);
|
|
|
- beacon.scale(0.05 / m.parent.scaleX);
|
|
|
+ beacon.scale(0.05 * scale / m.parent.scaleX);
|
|
|
beacon.x = e.relX;
|
|
|
beacon.y = e.relY;
|
|
|
beacon.z = e.relZ;
|
|
|
};
|
|
|
- i.onMove = function(e:hxd.Event) {
|
|
|
+ i.onMove = i.onCheck = function(e:hxd.Event) {
|
|
|
if( beacon == null ) return;
|
|
|
beacon.x = e.relX;
|
|
|
beacon.y = e.relY;
|
|
@@ -57,7 +58,7 @@ class Interactive extends hxd.App {
|
|
|
var color = new h3d.Vector(c, c * 0.6, c * 0.6);
|
|
|
m.material.color.load(color);
|
|
|
|
|
|
- var interact = new h3d.scene.Interactive(m.primitive.getCollider(), m);
|
|
|
+ var interact = new h3d.scene.Interactive(m.getCollider(), m);
|
|
|
initInteract(interact, m);
|
|
|
}
|
|
|
|
|
@@ -66,17 +67,15 @@ class Interactive extends hxd.App {
|
|
|
obj.scale(1 / 20);
|
|
|
obj.rotate(0,0,Math.PI / 2);
|
|
|
obj.y = 0.2;
|
|
|
- obj.z = -0.2;
|
|
|
-
|
|
|
- // disable skinning (not supported for picking)
|
|
|
- var pass = obj.getChildAt(1).toMesh().material.mainPass;
|
|
|
- pass.removeShader(pass.getShader(h3d.shader.Skin));
|
|
|
+ obj.z = 0.2;
|
|
|
s3d.addChild(obj);
|
|
|
|
|
|
+ obj.playAnimation(cache.loadAnimation(hxd.Res.Model)).speed = 0.1;
|
|
|
+
|
|
|
for( o in obj ) {
|
|
|
var m = o.toMesh();
|
|
|
- var i = new h3d.scene.Interactive(m.primitive.getCollider(), o);
|
|
|
- initInteract(i, m);
|
|
|
+ var i = new h3d.scene.Interactive(m.getCollider(), m);
|
|
|
+ initInteract(i, m, 0.2);
|
|
|
}
|
|
|
|
|
|
b = new h2d.Interactive(150, 100, s2d);
|
|
@@ -102,17 +101,17 @@ class Interactive extends hxd.App {
|
|
|
pix.remove();
|
|
|
pix = null;
|
|
|
};
|
|
|
-
|
|
|
+
|
|
|
onResize();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
override function onResize() {
|
|
|
b.x = (s2d.width >> 1) - 200;
|
|
|
b.y = 150;
|
|
|
}
|
|
|
|
|
|
override function update(dt:Float) {
|
|
|
- obj.rotate(0, 0, 0.01 * dt);
|
|
|
+ obj.rotate(0, 0, 0.002 * dt);
|
|
|
}
|
|
|
|
|
|
|