Skip to content

Commit b88c82f

Browse files
committed
added Example.renderResize
1 parent fc05839 commit b88c82f

2 files changed

Lines changed: 132 additions & 0 deletions

File tree

examples/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ module.exports = {
2828
restitution: require('./restitution.js'),
2929
rounded: require('./rounded.js'),
3030
remove: require('./remove.js'),
31+
renderResize: require('./renderResize.js'),
3132
sensors: require('./sensors.js'),
3233
sleeping: require('./sleeping.js'),
3334
slingshot: require('./slingshot.js'),

examples/renderResize.js

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
var Example = Example || {};
2+
3+
Example.renderResize = function() {
4+
var Engine = Matter.Engine,
5+
Render = Matter.Render,
6+
Runner = Matter.Runner,
7+
Composite = Matter.Composite,
8+
Composites = Matter.Composites,
9+
Common = Matter.Common,
10+
MouseConstraint = Matter.MouseConstraint,
11+
Mouse = Matter.Mouse,
12+
Composite = Matter.Composite,
13+
Bodies = Matter.Bodies;
14+
15+
// create engine
16+
var engine = Engine.create(),
17+
world = engine.world;
18+
19+
// create renderer
20+
var render = Render.create({
21+
element: document.body,
22+
engine: engine,
23+
options: {
24+
width: 800,
25+
height: 600,
26+
showAngleIndicator: true,
27+
pixelRatio: 2
28+
}
29+
});
30+
31+
Render.run(render);
32+
33+
// create runner
34+
var runner = Runner.create();
35+
Runner.run(runner, engine);
36+
37+
// add bodies
38+
var stack = Composites.stack(20, 20, 10, 5, 0, 0, function(x, y) {
39+
var sides = Math.round(Common.random(1, 8));
40+
41+
// round the edges of some bodies
42+
var chamfer = null;
43+
if (sides > 2 && Common.random() > 0.7) {
44+
chamfer = {
45+
radius: 10
46+
};
47+
}
48+
49+
switch (Math.round(Common.random(0, 1))) {
50+
case 0:
51+
if (Common.random() < 0.8) {
52+
return Bodies.rectangle(x, y, Common.random(25, 50), Common.random(25, 50), { chamfer: chamfer });
53+
} else {
54+
return Bodies.rectangle(x, y, Common.random(80, 120), Common.random(25, 30), { chamfer: chamfer });
55+
}
56+
case 1:
57+
return Bodies.polygon(x, y, sides, Common.random(25, 50), { chamfer: chamfer });
58+
}
59+
});
60+
61+
Composite.add(world, stack);
62+
63+
Composite.add(world, [
64+
// walls
65+
Bodies.rectangle(400, 0, 800, 50, { isStatic: true }),
66+
Bodies.rectangle(400, 600, 800, 50, { isStatic: true }),
67+
Bodies.rectangle(800, 300, 50, 600, { isStatic: true }),
68+
Bodies.rectangle(0, 300, 50, 600, { isStatic: true })
69+
]);
70+
71+
// add mouse control
72+
var mouse = Mouse.create(render.canvas),
73+
mouseConstraint = MouseConstraint.create(engine, {
74+
mouse: mouse,
75+
constraint: {
76+
stiffness: 0.2,
77+
render: {
78+
visible: false
79+
}
80+
}
81+
});
82+
83+
Composite.add(world, mouseConstraint);
84+
85+
// keep the mouse in sync with rendering
86+
render.mouse = mouse;
87+
88+
// set canvas position to screen top left
89+
render.canvas.style.position = 'fixed';
90+
91+
// resize event handler
92+
var handleWindowResize = function() {
93+
// get the current window size
94+
var width = window.innerWidth,
95+
height = window.innerHeight;
96+
97+
// set the render size to equal window size
98+
Render.setSize(render, width, height);
99+
100+
// update the render bounds to fit the scene
101+
Render.lookAt(render, Composite.allBodies(engine.world), {
102+
x: 50,
103+
y: 50
104+
});
105+
}
106+
107+
// add window resize handler
108+
window.addEventListener('resize', handleWindowResize);
109+
110+
// update canvas size to initial window size
111+
handleWindowResize();
112+
113+
// context for MatterTools.Demo
114+
return {
115+
engine: engine,
116+
runner: runner,
117+
render: render,
118+
canvas: render.canvas,
119+
stop: function() {
120+
Matter.Render.stop(render);
121+
Matter.Runner.stop(runner);
122+
}
123+
};
124+
};
125+
126+
Example.renderResize.title = 'Render Resize';
127+
Example.renderResize.for = '>=0.20.0';
128+
129+
if (typeof module !== 'undefined') {
130+
module.exports = Example.renderResize;
131+
}

0 commit comments

Comments
 (0)