Skip to content

Commit 1d433d5

Browse files
committedApr 16, 2015
tests; include new test base
1 parent 64aa064 commit 1d433d5

File tree

5 files changed

+257
-0
lines changed

5 files changed

+257
-0
lines changed
 

‎tests/usage0/assets/.keep

Whitespace-only changes.

‎tests/usage0/project.flow

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
3+
luxe:{
4+
window: {
5+
width:960,
6+
height:640,
7+
title:'differ - usage 0',
8+
resizable:false
9+
}
10+
},
11+
12+
project : {
13+
name : 'collision0',
14+
version : '1.0.0',
15+
author : 'luxeengine',
16+
17+
app : {
18+
name : 'collision0',
19+
package : 'com.underscorediscovery.differ0'
20+
},
21+
22+
build : {
23+
dependencies : {
24+
luxe : '*',
25+
hxcollision : '*',
26+
}
27+
},
28+
29+
files : {
30+
assets : 'assets/'
31+
}
32+
33+
}
34+
35+
}

‎tests/usage0/src/LuxeDrawer.hx

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
import differ.ShapeDrawer;
3+
import differ.math.Vector;
4+
import luxe.Log.*;
5+
6+
class LuxeDrawer extends ShapeDrawer {
7+
8+
static var color = new luxe.Color().rgb(0xf6007b); //0xff4b03
9+
10+
override public function drawLine( p0:Vector, p1:Vector, ?startPoint:Bool = true ) {
11+
12+
assertnull(p0);
13+
assertnull(p1);
14+
15+
Luxe.draw.line({
16+
p0 : new luxe.Vector(p0.x, p0.y),
17+
p1 : new luxe.Vector(p1.x, p1.y),
18+
color : color,
19+
depth : 20,
20+
immediate : true
21+
});
22+
23+
} //drawLine
24+
25+
} //LuxeDrawer

‎tests/usage0/src/Main.hx

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
2+
import luxe.Input;
3+
import luxe.Vector;
4+
import luxe.Text;
5+
6+
import differ.shapes.Shape;
7+
import differ.shapes.Ray;
8+
9+
class Main extends luxe.Game {
10+
11+
//shared conveniences for the states
12+
public static var drawer: LuxeDrawer;
13+
public static var shapes: Array<Shape>;
14+
public static var rays: Array<Ray>;
15+
static var disp : Text;
16+
17+
//main specifics
18+
var desc : Text;
19+
var state : luxe.States;
20+
var current : Int = 0;
21+
var count : Int = 0;
22+
23+
override function config(config:luxe.AppConfig) {
24+
25+
config.render.antialiasing = 8;
26+
return config;
27+
28+
} //config
29+
30+
override function ready() {
31+
32+
Luxe.renderer.batcher.add_group(0,
33+
function(_) {
34+
Luxe.renderer.state.lineWidth(2);
35+
},
36+
function(_) {
37+
Luxe.renderer.state.lineWidth(1);
38+
});
39+
40+
drawer = new LuxeDrawer();
41+
shapes = [];
42+
rays = [];
43+
44+
desc = new Text({
45+
pos: new Vector(10,10),
46+
point_size: 18,
47+
text: 'differ usage examples, press 1 or 2 to cycle'
48+
});
49+
50+
disp = new Text({
51+
pos: new Vector(10, 30),
52+
point_size: 15,
53+
text: 'usage text goes here'
54+
});
55+
56+
state = new luxe.States({ name:'machine' });
57+
58+
state.add( new states.RayAndShape({ name:'state0' }) );
59+
60+
count = Lambda.count( state._states );
61+
state.set( 'state0' );
62+
63+
} //ready
64+
65+
public static function display(text:String) {
66+
disp.text = text;
67+
}
68+
69+
function change(to:String) {
70+
shapes = [];
71+
rays = [];
72+
disp.text = '';
73+
state.set(to);
74+
}
75+
76+
override function onkeyup( e:KeyEvent ) {
77+
78+
if(e.keycode == Key.key_1) {
79+
current--;
80+
if(current <= count) current = count-1;
81+
change('state$current');
82+
}
83+
84+
if(e.keycode == Key.key_2) {
85+
current++;
86+
if(current >= count) current = 0;
87+
change('state$current');
88+
}
89+
90+
if(e.keycode == Key.escape) {
91+
Luxe.shutdown();
92+
}
93+
94+
} //onkeyup
95+
96+
override function onrender() {
97+
for(shape in shapes) drawer.drawShape(shape);
98+
for(ray in rays) drawer.drawLine(ray.start, ray.end);
99+
}
100+
101+
} //Main
+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package states;
2+
3+
import luxe.Vector;
4+
import luxe.Input;
5+
import luxe.Color;
6+
7+
import phoenix.geometry.LineGeometry;
8+
9+
import differ.Collision;
10+
import differ.math.Vector in V;
11+
import differ.shapes.*;
12+
import differ.data.*;
13+
14+
using differ.data.RayCollision.RayCollisionHelper;
15+
16+
class RayAndShape extends luxe.States.State {
17+
18+
var beam:Ray;
19+
20+
var intersect:LineGeometry;
21+
var before:LineGeometry;
22+
var after:LineGeometry;
23+
24+
override function onenter<T>(_:T) {
25+
26+
Main.display('pink = ray\ngreen = before hit\nwhite = intersection\npurple = after hit');
27+
28+
beam = new Ray( new V(10,300), new V(400,100), false );
29+
30+
Main.rays.push(beam);
31+
Main.shapes.push(new Circle(300,300,50));
32+
33+
intersect = Luxe.draw.line({ depth:100, group:1, p0:new Vector(), p1:new Vector(), color:new Color().rgb(0xffffff) });
34+
before = Luxe.draw.line({ depth:100, group:1, p0:new Vector(), p1:new Vector(), color:new Color().rgb(0x00f67b) });
35+
after = Luxe.draw.line({ depth:100, group:1, p0:new Vector(), p1:new Vector(), color:new Color().rgb(0x7b00f6) });
36+
37+
} //onenter
38+
39+
override function onleave<T>(_:T) {
40+
41+
beam = null;
42+
intersect.drop();
43+
before.drop();
44+
after.drop();
45+
46+
intersect = null;
47+
before = null;
48+
after = null;
49+
50+
} //onleave
51+
52+
override function onmousemove( e:MouseEvent ) {
53+
if(beam != null) {
54+
beam.end.x = e.pos.x;
55+
beam.end.y = e.pos.y;
56+
}
57+
}
58+
59+
override function update(dt:Float) {
60+
61+
if(Main.shapes.length <= 0) return;
62+
63+
var c = differ.Collision.rayWithShape(beam, Main.shapes[0]);
64+
65+
if(c != null) {
66+
67+
var start = c.hitStart();
68+
var end = c.hitEnd();
69+
70+
var hitstart = new Vector(start.x, start.y);
71+
var hitend = new Vector(end.x, end.y);
72+
var raystart = new Vector(c.ray.start.x, c.ray.start.y);
73+
var rayend = new Vector(c.ray.end.x, c.ray.end.y);
74+
75+
intersect.p0 = hitstart;
76+
intersect.p1 = hitend;
77+
78+
before.p0 = raystart;
79+
before.p1 = hitstart;
80+
81+
after.p0 = hitend;
82+
after.p1 = rayend;
83+
84+
Luxe.draw.text({
85+
point_size:13,
86+
pos:new Vector(Luxe.screen.w - 10,10),
87+
align: right,
88+
text: 'hit start %: ${c.start}\n end %: ${c.end}',
89+
immediate:true,
90+
});
91+
92+
}
93+
94+
} //update
95+
96+
} //RayAndShape

0 commit comments

Comments
 (0)
Please sign in to comment.