root/trunk/RBRapier/RBRapier/Renderer/AttributeMgr.py

Revision 703, 2.7 kB (checked in by sholloway, 5 years ago)

*** empty log message ***

Line 
1 #!/usr/bin/env python
2 ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 ##~ License
4 ##~
5 ##- The RuneBlade Foundation library is intended to ease some
6 ##- aspects of writing intricate Jabber, XML, and User Interface (wxPython, etc.)
7 ##- applications, while providing the flexibility to modularly change the
8 ##- architecture. Enjoy.
9 ##~
10 ##~ Copyright (C) 2002  TechGame Networks, LLC.
11 ##~
12 ##~ This library is free software; you can redistribute it and/or
13 ##~ modify it under the terms of the BSD style License as found in the
14 ##~ LICENSE file included with this distribution.
15 ##~
16 ##~ TechGame Networks, LLC can be reached at:
17 ##~ 3578 E. Hartsel Drive #211
18 ##~ Colorado Springs, Colorado, USA, 80920
19 ##~
20 ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21
22 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23 #~ Imports
24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25
26 from OpenGL import GL
27 from ChangeBaseMgr import *
28
29 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 #~ Definitions
31 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
33 class AttributeChangeElement(BitmaskChangeElement):
34     """Encapsulates a single collection of attribute changes"""
35
36 class DynamicAttributeChangeElement(DynamicBitmaskChangeElement):
37     """Encapsulates a single collection of attribute changes"""
38
39 class AttributeTracker(DynamicBitmaskChangeTracker):
40     _ElementAttributeName = 'AttributeChange'
41
42 class AttributeEffector(AttributeTracker):
43     def SequenceAdd(self, Sequence):
44         DynamicBitmaskChangeTracker.SequenceAdd(self, Sequence)
45         Sequence.OnBeginExecute.Add(self.GLSelect)
46         Sequence.OnEndExecute.Add(self.GLDeselect)
47
48     def GLSelect(self, context):
49         GL.glPushAttrib(self.Bitmask)
50        
51     def GLDeselect(self, context):
52         GL.glPopAttrib()
53
54 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 #~ Client Attributes
56 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57
58 class ClientAttributeChangeElement(BitmaskChangeElement):
59     """Encapsulates a single collection of client attribute changes"""
60
61 class DynamicClientAttributeChangeElement(DynamicBitmaskChangeElement):
62     """Encapsulates a single collection of client attribute changes"""
63
64 class ClientAttributeTracker(DynamicBitmaskChangeTracker):
65     _ElementAttributeName = 'ClientAttributeChange'
66
67 class ClientAttributeEffector(ClientAttributeTracker):
68     def SequenceAdd(self, Sequence):
69         DynamicBitmaskChangeTracker.SequenceAdd(self, Sequence)
70         Sequence.OnBeginExecute.Add(self.GLSelect)
71         Sequence.OnEndExecute.Add(self.GLDeselect)
72
73     def GLSelect(self, context):
74         GL.glPushClientAttrib(self.Bitmask)
75        
76     def GLDeselect(self, context):
77         GL.glPopClientAttrib()
78
Note: See TracBrowser for help on using the browser.