Last active
August 29, 2015 14:02
-
-
Save AdrianRossouw/3486d1745532b9bdcf28 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* globals define */ | |
define(function(require, exports, module) { | |
'use strict'; | |
// import dependencies | |
var Engine = require('famous/core/Engine'); | |
var Surface = require('famous/core/Surface'); | |
var EventHandler = require('famous/core/EventHandler'); | |
var View = require('famous/core/View'); | |
var Transform = require('famous/core/Transform'); | |
var StateModifier = require('famous/modifiers/StateModifier'); | |
var PhysicsEngine = require('famous/physics/PhysicsEngine'); | |
var Body = require('famous/physics/bodies/Body'); | |
var Circle = require('famous/physics/bodies/Circle'); | |
var Wall = require('famous/physics/constraints/Wall'); | |
function wallBounce() { | |
var context = Engine.createContext(); | |
var contextSize;// = context.getSize(); | |
var handler = new EventHandler(); | |
var physicsEngine = new PhysicsEngine(); | |
var ball = new Surface ({ | |
size: [200,200], | |
properties: { | |
backgroundColor: 'red', | |
borderRadius: '100px' | |
} | |
}) | |
ball.state = new StateModifier({origin:[0.5,0.5]}); | |
ball.particle = new Circle({radius:100}); | |
physicsEngine.addBody(ball.particle); | |
ball.on("click",function(){ | |
ball.particle.setVelocity([.1,.13,0]); | |
}); | |
context.add(ball.state).add(ball); | |
function setWalls() { | |
//console.log(contextSize[0]); | |
contextSize = context.getSize(); | |
var leftWall = new Wall({normal : [1,0,0], distance : contextSize[0]/2.0, restitution : .5}); | |
var rightWall = new Wall({normal : [-1,0,0], distance : contextSize[0]/2.0, restitution : .5}); | |
var topWall = new Wall({normal : [0,1,0], distance : contextSize[1]/2.0, restitution : .5}); | |
var bottomWall = new Wall({normal : [0,-1,0], distance : contextSize[1]/2.0, restitution : .5}); | |
physicsEngine.detachAll(); | |
physicsEngine.attach( leftWall, [ball.particle]); | |
physicsEngine.attach( rightWall, [ball.particle]); | |
physicsEngine.attach( topWall, [ball.particle]); | |
physicsEngine.attach( bottomWall,[ball.particle]); | |
}; | |
Engine.nextTick(setWalls); | |
Engine.on('resize',setWalls); | |
Engine.on('prerender', function(){ | |
ball.state.setTransform(ball.particle.getTransform()) | |
}); | |
}; | |
new wallBounce(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment