Grease logo

Source code for grease

#############################################################################
#
# 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.
#
#############################################################################

__versioninfo__ = (0, 3, 0)
__version__ = '.'.join(str(n) for n in __versioninfo__)

__all__ = ('World', 'Entity', 'System', 'Renderer')

import grease.component
import grease.geometry
import grease.collision
from grease.entity import Entity
from grease.world import World

import abc

[docs]class System(object): """Grease system abstract base class. Systems define behaviorial aspects of a |World|. All systems must define a :meth:`step` method that is invoked by the world each timestep. User-defined systems are not required to subclass this class. See :ref:`an example system from the tutorial <tut-system-example>`. """ __metaclass__ = abc.ABCMeta world = None """The |World| this system belongs to"""
[docs] def set_world(self, world): """Bind the system to a world""" self.world = world
@abc.abstractmethod
[docs] def step(self, dt): """Execute a time step for the system. Must be defined by all system classes. :param dt: Time since last step invocation :type dt: float """
[docs]class Renderer(object): """Grease renderer abstract base class. Renderers define the presentation of a |World|. All renderers must define a :meth:`draw` method that is invoked by the world when the display needs to be redrawn. User-defined renderers are not required to subclass this class. See :ref:`an example renderer from the tutorial <tut-renderer-example>`. """ __metaclass__ = abc.ABCMeta world = None """The |World| this renderer belongs to"""
[docs] def set_world(self, world): """Bind the system to a world""" self.world = world
@abc.abstractmethod
[docs] def draw(self): """Issue drawing commands for this renderer. Must be defined for all renderer classes. """