(function() {- "use strict"; var MovementSystem = function() { this.initialize(); } var p = MovementSystem.prototype; p.initialize = function() { } p.process = function(boids, fdelta) { for (var i=0; i 10) { var px = b.display.x; var py = b.display.y; var tx = toCoordX(px); var ty = toCoordY(py); var slow = registry.map.getLayerByName('area_slow'); var angle = Math.atan2(flock.velocityY, flock.velocityX)*(180/Math.PI); var rot = b.display.rotation; if (b.lastAngle < 0 && angle > 0 && angle < 150) { rot -= 360; } else if (b.lastAngle > 0 && angle < 0 && angle > -150) { rot += 360; } b.lastAngle = angle; angle += 360; angle %= 360; var diff = Math.abs(angle-rot); if (norm > 15) { rot = angle*SHEEP_ROTATION_SPEED*fdelta + rot*(1.0-SHEEP_ROTATION_SPEED*fdelta); } b.display.rotation = rot; // var rotationEffect = easeInOut(1-diff/180); var rotationEffect = (1-diff/180); var slowEffect = 1; if (getTile(slow, tx, ty)) { slowEffect = SHEEP_SLOW_RATE; } b.display.x += flock.velocityX*fdelta*rotationEffect*slowEffect; b.display.y += flock.velocityY*fdelta*rotationEffect*slowEffect; } } } window.MovementSystem = MovementSystem; })();