Mercurial > parpg-source
view bGrease/controller/integrator.py @ 115:26e65f27dbd7
"Open" will now not be shown in the context menu when the lockable is locked.
"Lock" will not not be shown in the context menu when the lockable is open.
author | KarstenBock@gmx.net |
---|---|
date | Mon, 03 Oct 2011 14:12:17 +0200 |
parents | ff3e395abf91 |
children | a6bbb732b27b |
line wrap: on
line source
############################################################################# # # Copyright (c) 2010 by Casey Duncan and contributors # All Rights Reserved. # # This software is subject to the provisions of the MIT License # A copy of the license should accompany this distribution. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # ############################################################################# __version__ = '$Id$' class EulerMovement(object): """System that applies entity movement to position using Euler's method :param position_component: Name of :class:`grease.component.Position` component to update. :param movement_component: Name of :class:`grease.component.Movement` component used to update position. """ def __init__(self, position_component='position', movement_component='movement'): self.position_component = position_component self.movement_component = movement_component def set_world(self, world): """Bind the system to a world""" self.world = world def step(self, dt): """Apply movement to position""" assert self.world is not None, "Cannot run with no world set" for position, movement in self.world.components.join( self.position_component, self.movement_component): movement.velocity += movement.accel * dt position.position += movement.velocity * dt position.angle += movement.rotation * dt