Changeset 341

Show
Ignore:
Timestamp:
10/30/02 15:27:20 (6 years ago)
Author:
sholloway
Message:

Getting closer to reason =)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBRapier/RBRapier/Renderer/AttributeMgr.py

    r338 r341  
    2525 
    2626from OpenGL import GL 
    27 from Foundation.AOSubjectObserver.StandardSubjects import SubjectList 
     27from ChangeBaseMgr import ChangeTrackerBase 
    2828 
    2929#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    3131#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3232 
    33 class AttributeChangeElement(object): 
     33class AttributeChangeElement(ChangeElementBase): 
    3434    """Encapsulates a single collection of attribute changes""" 
    3535 
     
    4747#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4848 
    49 class DynamicAttributeChangeElement(object): 
     49class DynamicAttributeChangeElement(DynamicChangeElementBase): 
    5050    """Encapsulates a single collection of attribute changes""" 
    5151 
     
    5353 
    5454    def __init__(self, Bitmask): 
    55         self.Trackers = SubjectList() 
    5655        self.Bitmask |= Bitmask 
    5756 
     
    7978#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    8079 
    81 class AttributeTrackerBase(object): 
     80class AttributeTrackerBase(ChangeTrackerBase): 
    8281    """Collects many attribute changes into a single change""" 
    8382 
     
    9089    _NeedUpdate = 1 
    9190 
    92     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    93     #~ Public Methods  
    94     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     91    def __init__(self, BitmaskDefault): 
     92        self.Bitmask = self.BitmaskDefault = BitmaskDefault 
    9593 
    96     def __init__(self): 
    97         self.TrackedElements = [] 
    98  
    99     def SequenceAdd(self, Sequence): 
    100         Sequence.OnAddELement.Add(self.OnAddElement) 
    101         Sequence.OnRemoveELement.Add(self.OnRemoveElement) 
    102  
    103     def OnAddElement(self, Element): 
    104         Change = getattr(Element, self._ElementAttributeName, None) 
    105         if Change is not None: 
    106             self.TrackedElements.append(Element) 
    107             Change.AddTracker(self.OnTrackedChange) 
    108  
    109     def OnRemoveElement(self, Element): 
    110         Change = getattr(Element, self._ElementAttributeName, None) 
    111         if Change is not None: 
    112             self.TrackedElements.remove(Element) 
    113             Change.RemoveTracker(self.OnTrackedChange) 
    114      
    11594    def OnTrackedChange(self, ChangeType, Change): 
    11695        if ChangeType == 'add': 
     
    126105    def UpdateAttributes(self): 
    127106        if self._NeedUpdate: 
     107            self.Bitmask = self.BitmaskDefault 
    128108            for each in self.TrackedELements: 
    129109                self.Bitmask |= each.Bitmask 
  • trunk/RBRapier/RBRapier/Renderer/BufferMgr.py

    r339 r341  
    3131#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3232 
    33 class BufferChangeElement(object): 
     33class BufferChangeElement(ChangeElementBase): 
    3434    """Encapsulates a single collection of attribute changes""" 
    3535 
     
    4747#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4848 
    49 class DynamicAttributeChangeElement(object): 
     49class DynamicAttributeChangeElement(DynamicChangeElementBase): 
    5050    """Encapsulates a single collection of attribute changes""" 
    5151 
     
    5353 
    5454    def __init__(self, Bitmask): 
    55         self.Trackers = SubjectList() 
    5655        self.Bitmask |= Bitmask 
    5756 
     
    7978#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    8079 
    81 class BufferTrackerBase(object): 
     80class BufferTrackerBase(ChangeTrackerBase): 
    8281    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    8382    #~ Constants / Variables / Etc.  
     
    9291    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    9392 
    94     def __init__(self): 
    95         self.TrackedElements = [] 
    96  
    9793    def SequenceAdd(self, Sequence): 
    9894        Sequence.OnAddELement.Add(self.OnAddElement) 
    9995        Sequence.OnRemoveELement.Add(self.OnRemoveElement) 
    10096 
    101     def OnAddElement(self, Element): 
    102         Change = getattr(Element, self._ElementAttributeName, None) 
    103         if Change is not None: 
    104             self.TrackedElements.append(Element) 
    105             Change.AddTracker(self.OnTrackedChange) 
    106  
    107     def OnRemoveElement(self, Element): 
    108         Change = getattr(Element, self._ElementAttributeName, None) 
    109         if Change is not None: 
    110             self.TrackedElements.remove(Element) 
    111             Change.RemoveTracker(self.OnTrackedChange) 
    112      
    11397    def OnTrackedChange(self, ChangeType, Change): 
    11498        if ChangeType == 'add': 
     
    124108    def UpdateAttributes(self): 
    125109        if self._NeedUpdate: 
     110            self.Bitmask = 0 
    126111            for each in self.TrackedELements: 
    127112                self.Bitmask |= each.Bitmask 
  • trunk/RBRapier/RBRapier/Renderer/SequenceMgr.py

    r340 r341  
    5252    def AddElement(self, Element, priority=0): 
    5353        if priority <= 0: 
    54             idx = bisect.bisect_right(self.Elements, (priority, _MatchAll)) 
    55         else: idx = bisect.bisect_left(self.Elements, (priority, _MatchAll)) 
    56         self.Elements.insert(idx, (priority, Element)) 
     54            idx = bisect.bisect_right(self.Elements, (priority, _MatchAll, _MatchAll)) 
     55        else: idx = bisect.bisect_left(self.Elements, (priority, _MatchAll, _MatchAll)) 
     56        if isinstance(Element, types.MethodType): 
     57            ElementFn, Element = Element, ElementFn.im_self 
     58        elif isinstance(getattr(Element, 'Execute', None), types.MethodType): 
     59            ElementFn = Element.Execute 
     60        self.Elements.insert(idx, (priority, ElementFn, Element)) 
    5761 
    5862        try: ElementSequenceAdd = self.Element.SequenceAdd 
     
    6367 
    6468    def RemoveElement(self, Element): 
    65         idx = self.Elements.index((_MatchAll, Element)) 
    66         del self.Elements[idx] 
     69        self.Elements[:] = [x for x in self.Elements if x[-1] != Element] 
    6770        self.OnRemoveElement.Update(Element) 
    6871 
    6972    def Execute(self, context): 
    7073        self.OnBeginExecute.Update(context) 
    71         for priority, element in self.Elements: 
     74        for priority, elementfn, element in self.Elements: 
    7275            if getattr(element, 'Active', 1): 
    73                 element.Execute(context) 
     76                elementfn(context) 
    7477        self.OnEndExecute.Update(context) 
    7578 
  • trunk/RBRapier/RBRapier/Renderer/StateMgr.py

    r338 r341  
    2626from OpenGL import GL 
    2727from Foundation.AspectOriented import Aspect 
     28from RBRapier.Renderer.AttributeMgr import AttributeChangeElement 
    2829 
    2930#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    102103 
    103104class StateManager(StateManagerBase): 
     105    AttributeChange = AttributeChangeElement(GL.GL_ENABLE_BIT) 
     106 
    104107    def _SetState(self, state, enabled): 
    105108        if enable: GL.glEnable(state) 
     
    109112 
    110113class ClientStateManager(StateManagerBase): 
     114    AttributeChange = AttributeChangeElement(GL.GL_CLIENT_ENABLE_BIT) 
     115 
    111116    def _SetState(self, state, enabled): 
    112117        if enable: GL.glEnableClientState(state) 
  • trunk/RBRapier/RBRapier/Renderer/View/ClippingPlane.py

    r340 r341  
    2525 
    2626from OpenGL import GL 
     27from RBRapier.Renderer.AttributeMgr import AttributeChangeElement 
    2728from RBRapier.Tools import Vector 
    2829 
     
    3637    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3738 
    38     PlaneNumber = None 
     39    AttributeChange = AttributeChangeElement(GL.GL_TRANSFORM_BIT) 
     40 
     41    PlaneNumber = 0 
    3942    Equation = Vector.Vector4Property('Equation') 
    40  
    41     # TODO: hook up this attribute change thingy 
    42     context.AttributeMgr.Save(GL.GL_TRANSFORM_BIT) 
    4343 
    4444    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    4646    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4747 
    48     def __init__(self, PlaneNumber=None, Equation=None): 
     48    def __init__(self, PlaneNumber=0, Equation=None): 
    4949        self.PlaneNumber = PlaneNumber 
    5050        if Equation is not None:  
     
    5252 
    5353    def Select(self, context): 
    54         if self.PlaneNumber is not None: 
    55             GL.glClipPlane(GL.GL_CLIP_PLANE0 + self.PlaneNumber, self.Equation.tolist()) 
    56             context.StateMgr.Enable(GL.GL_CLIP_PLANE0 + self.PlaneNumber
     54        PlaneIdx = GL.GL_CLIP_PLANE0 + self.PlaneNumber 
     55        GL.glClipPlane(PlaneIdx, self.Equation.tolist()) 
     56        context.StateMgr.Enable(PlaneIdx
    5757         
    5858    def Deselect(self, context): 
    59         if self.PlaneNumber is not None: 
    60             context.StateMgr.Disable(GL.GL_CLIP_PLANE0 + self.PlaneNumber
     59        PlaneIdx = GL.GL_CLIP_PLANE0 + self.PlaneNumber 
     60        context.StateMgr.Disable(PlaneIdx
    6161 
  • trunk/RBRapier/RBRapier/Renderer/View/TransformationSettings.py

    r338 r341  
    2525 
    2626from OpenGL import GL 
     27from RBRapier.Renderer.AttributeMgr import AttributeChangeElement 
    2728 
    2829#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    3031#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3132 
    32 class TransformationSettings(object): 
     33class Normalization(object): 
    3334    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3435    #~ Constants / Variables / Etc.  
    3536    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3637 
    37     Active = 1 
    38  
    39     RescaleNormal = None # 0 or 1 
    40     Normalize = None # 0 or 1 
    41     PerspectiveHint = None # GL_FASTEST, GL_DONTCARE, GL_NICEST 
    42  
    43     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    44     #~ Definitions  
    45     #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    46  
    47     class _Extensions(object): 
    48         def __init__(self): 
    49             from OpenGL.GL.EXT import rescale_normal 
    50             self.rescale_normal = rescale_normal.glInitRescaleNormalEXT() and rescale_normal or None 
    51     _extensions = LazyProperty('_extensions', _Extensions) 
     38    AttributeChange = AttributeChangeElement(GL.GL_TRANSFORM_BIT) 
    5239 
    5340    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    5542    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    5643 
    57     def __init__(self, Nomralize=None, PerspectiveHint=None): 
    58         self.Nomralize = Nomralize 
     44    def Select(self, context): 
     45        context.StateMgr.Enable(GL.GL_NORMALIZE) 
     46 
     47    def Deselect(self, context): 
     48        context.StateMgr.Disable(GL.GL_NORMALIZE) 
     49 
     50#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     51 
     52class PerspectiveHint(object) 
     53    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     54    #~ Constants / Variables / Etc.  
     55    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     56 
     57    AttributeChange = AttributeChangeElement(GL.GL_TRANSFORM_BIT) 
     58    PerspectiveHint = GL_DONT_CARE 
     59 
     60    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     61    #~ Public Methods  
     62    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     63 
     64    def __init__(self, PerspectiveHint=None): 
    5965        self.PerspectiveHint = PerspectiveHint 
    6066 
    61     def Setup(self, context): 
    62         if not self.Active: return 
    63         context.AttributeMgr.Save(GL.GL_TRANSFORM_BIT) 
    64         if self.PerspectiveHint is not None:  
    65             context.AttributeMgr.Save(GL.GL_HINT_BIT) 
    66         if self.RescaleNormal is not None and self._extensions.rescale_normal:  
    67             context.StateMgr.SetState(self.RescaleNormal, self._extensions.rescale_normal.GL_RESCALE_NORMAL_EXT) 
    68         if self.Normalize is not None:  
    69             context.StateMgr.SetState(self.Normalize, GL.GL_NORMALIZE) 
    70          
    71     def Draw(self, context): 
    72         if not self.Active: return 
    73         if self.PerspectiveHint is not None:  
    74             GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, self.PerspectiveHint ) 
     67    def Execute(self, context): 
     68        GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, self.PerspectiveHint) 
     69    Draw = Execute 
    7570 
  • trunk/RBRapier/RBRapier/Renderer/View/Transformations.py

    r338 r341  
    2727from RBRapier.Tools import Projections 
    2828from RBRapier.Tools import Quaternion 
    29 from RBRapier.Tools import Vector 
    3029 
    31 from Foundation.LazyProperty import LazyProperty 
    3230from Numeric import transpose 
    3331from OpenGL import GL, GLU 
     
    3735#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3836 
    39 class Composite(Transformations.Composite): 
     37class ManagedTransformationMixin(object): 
    4038    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4139    #~ Constants / Variables / Etc.  
    4240    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4341 
    44     Active = 1 
    45  
    4642    _ModeNameTable = {None:"< None >", GL.GL_MODELVIEW:"Model View", GL.GL_PROJECTION:"Projection", GL.GL_TEXTURE_MATRIX:"Texture", GL.GL_COLOR:"Color"} 
     43    Mode = None 
     44    Save = 0 
    4745 
    4846    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    5553        self.Save = Save 
    5654 
    57     def __repr__(self): 
    58         return "<%s matrix=%s>" % (self.__class__.__name__, self._ModeNameTable[self.Mode] 
     55    def Select(self, context): 
     56        if self.Mode: GL.glMatrixMode(self.Mode) 
     57        if self.Save: GL.glPushMatrix() 
     58        self.Execute(context) 
     59        if self.Mode: GL.glMatrixMode(GL.GL_MODELVIEW) 
    5960 
    60     def Draw(self, context): 
    61         if not self.Active: return 
    62         if self.Mode: 
    63             GL.glMatrixMode(self.Mode) 
     61    def Deselect(self): 
     62        if self.Save: 
     63            if self.Mode: 
     64                GL.glMatrixMode(self.Mode) 
     65                GL.glPopMatrix() 
     66                GL.glMatrixMode(GL.GL_MODELVIEW) 
     67            else: 
     68                GL.glPopMatrix() 
    6469 
    65         if self.Save: 
    66             GL.glPushMatrix() 
    67             context.AddCleanupCallable(self.Cleanup) 
     70#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    6871 
     72class Composite(Transformations.Composite): 
     73    def Execute(self, context): 
    6974        for each in self.collection: 
    7075            each.Draw(context) 
     76    Draw = Execute 
    7177 
    72         if self.Mode: 
    73             GL.glMatrixMode(GL.GL_MODELVIEW) 
    74  
    75     def Cleanup(self): 
    76         if self.Mode: 
    77             GL.glMatrixMode(self.Mode) 
    78             GL.glPopMatrix() 
    79             GL.glMatrixMode(GL.GL_MODELVIEW) 
    80         else: 
    81             GL.glPopMatrix() 
     78class ManagedComposite(ManagedTransformationMixin, Composite): 
     79    pass 
    8280 
    8381#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    8684    def Draw(self, context): 
    8785        GL.glMultMatrixd(transpose(self.matrix).tolist()) 
     86    Draw = Execute 
    8887 
    8988class LoadMatrix(Transformations.Matrix): 
    9089    def Draw(self, context): 
    9190        GL.glLoadMatrixd(transpose(self.matrix).tolist()) 
     91    Draw = Execute 
    9292 
    9393class Identity(Transformations.Identity): 
    9494    def Draw(self, context): 
    9595        pass # Uh.... don't use this? 
     96    Draw = Execute 
    9697 
    9798class LoadIdentity(Transformations.Identity): 
    9899    def Draw(self, context): 
    99100        GL.glLoadIdentity() 
     101    Draw = Execute 
    100102 
    101103class Translate(Transformations.Translate): 
    102104    def Draw(self, context): 
    103105        GL.glTranslated(*self.Direction[:3]) 
     106    Draw = Execute 
    104107 
    105108class Scale(Transformations.Scale): 
    106109    def Draw(self, context): 
    107110        GL.glScaled(*self.Scale[:3]) 
     111    Draw = Execute 
    108112 
    109113class Rotate(Transformations.Rotate): 
    110114    def Draw(self, context): 
    111115        GL.glRotated(self.Angle, *self.Axis[:3]) 
     116    Draw = Execute 
    112117 
    113118class Quaternion(Quaternion.Quaternion): 
    114119    def Draw(self, context): 
    115120        GL.glMultMatrixd(transpose(self.asArray4x4()).tolist()) 
     121    Draw = Execute 
    116122 
    117123class LinearMappingMatrix(Transformations.LinearMappingMatrix): 
    118124    def Draw(self, context): 
    119125        GL.glMultMatrixd(transpose(self.asArray4x4()).tolist()) 
     126    Draw = Execute 
    120127 
    121128class LookAt(Transformations.LookAt): 
     
    123130        args= self.Eye.tolist() + self.Center.tolist() + self.Up.tolist() 
    124131        GLU.gluLookAt(*args) 
     132    Draw = Execute 
    125133 
    126134class SphericalLookAt(Transformations.SphericalLookAt): 
     
    128136        args= self.Eye.tolist() + self.Center.tolist() + self.Up.tolist() 
    129137        GLU.gluLookAt(*args) 
     138    Draw = Execute 
    130139 
    131140class Shear(Transformations.Shear): 
    132141    def Draw(self, context): 
    133142        GL.glMultMatrixd(transpose(self.matrix).tolist()) 
     143    Draw = Execute 
    134144 
    135145class Skew(Transformations.Skew): 
    136146    def Draw(self, context): 
    137147        GL.glMultMatrixd(transpose(self.matrix).tolist()) 
     148    Draw = Execute 
    138149 
    139150class Orthographic(Projections.Orthographic): 
    140151    def Draw(self, context): 
    141152        GL.glOrtho(self.Left, self.Right, self.Bottom, self.Top, self.Near, self.Far) 
     153    Draw = Execute 
    142154 
    143155class Frustum(Projections.Frustum): 
    144156    def Draw(self, context): 
    145157        GL.glFrustum(self.Left, self.Right, self.Bottom, self.Top, self.Near, self.Far) 
     158    Draw = Execute 
    146159 
    147160class Perspective(Projections.Perspective): 
    148161    def Draw(self, context): 
    149162        GL.glFrustum(self.Left, self.Right, self.Bottom, self.Top, self.Near, self.Far) 
     163    Draw = Execute 
    150164 
  • trunk/RBRapier/RBRapier/Renderer/View/Viewport.py

    r338 r341  
    2626from OpenGL import GL 
    2727from RBRapier.Tools import RectangleBase 
     28from RBRapier.Renderer.AttributeMgr import AttributeChangeElement 
    2829 
    2930#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    3637    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3738 
    38     Active = 1 
    39  
    40     SetupPhase = DrawPhase = -2 
     39    AttributeChange = AttributeChangeElement(GL.GL_VIEWPORT_BIT) 
    4140 
    4241    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    4443    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4544 
    46     def __repr__(self): 
    47         return "<%s rectangle=%s>" % (self.__class__.__name__, self.Rectangle) 
     45    def Execute(self, context): 
     46        GL.glViewport(*self.Rectangle) 
     47    Draw = Execute 
    4848 
    49     def Setup(self, context): 
    50         if not self.Active: return 
    51         context.AttributeMgr.Save(GL.GL_VIEWPORT_BIT) 
    52          
    53     def Draw(self, context): 
    54         if not self.Active: return 
    55         GL.glViewport(*self.Rectangle) 
    56  
  • trunk/RBRapier/doc/DesignLayout.xml

    r340 r341  
    5555 
    5656        <package name='Appearance'> 
     57            <module name='Accumulation' /> 
    5758            <module name='Lighting and Lights' /> 
    5859            <module name='LogicOp'> 
     
    7374 
    7475        <package name='Environment'> 
    75             <module name='Accumulation' /> 
    76  
    77             <module name='Selection and Picking'> 
     76            <module name='Selection'> 
    7877                Don't Forget this! 
    7978            </module>