1 # \$Id\$
2 # Documentation for the vertex proxy class
4 class KX_VertexProxy:
5         """
6         A vertex holds position, UV, colour and normal information.
8         Note:
9         The physics simulation is NOT currently updated - physics will not respond
10         to changes in the vertex position.
12         @ivar XYZ: The position of the vertex.
13         @type XYZ: list [x, y, z]
14         @ivar UV: The texture coordinates of the vertex.
15         @type UV: list [u, v]
16         @ivar normal: The normal of the vertex
17         @type normal: list [nx, ny, nz]
18         @ivar colour: The colour of the vertex.
19                       Black = [0.0, 0.0, 0.0, 1.0], White = [1.0, 1.0, 1.0, 1.0]
20         @type colour: list [r, g, b, a]
21         @ivar color: Synonym for colour.
23         @group Position: x, y, z
24         @ivar x: The x coordinate of the vertex.
25         @type x: float
26         @ivar y: The y coordinate of the vertex.
27         @type y: float
28         @ivar z: The z coordinate of the vertex.
29         @type z: float
31         @group Texture Coordinates: u, v
32         @ivar u: The u texture coordinate of the vertex.
33         @type u: float
34         @ivar v: The v texture coordinate of the vertex.
35         @type v: float
37         @group Colour: r, g, b, a
38         @ivar r: The red component of the vertex colour.   0.0 <= r <= 1.0
39         @type r: float
40         @ivar g: The green component of the vertex colour. 0.0 <= g <= 1.0
41         @type g: float
42         @ivar b: The blue component of the vertex colour.  0.0 <= b <= 1.0
43         @type b: float
44         @ivar a: The alpha component of the vertex colour. 0.0 <= a <= 1.0
45         @type a: float
46         """
48         def getXYZ():
49                 """
50                 Gets the position of this vertex.
52                 @rtype: list [x, y, z]
53                 @return: this vertexes position in local coordinates.
54                 """
55         def setXYZ(pos):
56                 """
57                 Sets the position of this vertex.
59                 @type pos: list [x, y, z]
60                 @param pos: the new position for this vertex in local coordinates.
61                 """
62         def getUV():
63                 """
64                 Gets the UV (texture) coordinates of this vertex.
66                 @rtype: list [u, v]
67                 @return: this vertexes UV (texture) coordinates.
68                 """
69         def setUV(uv):
70                 """
71                 Sets the UV (texture) coordinates of this vertex.
73                 @type uv: list [u, v]
74                 """
75         def getUV2():
76                 """
77                 Gets the 2nd UV (texture) coordinates of this vertex.
79                 @rtype: list [u, v]
80                 @return: this vertexes UV (texture) coordinates.
81                 """
82         def setUV2(uv):
83                 """
84                 Sets the 2nd UV (texture) coordinates of this vertex.
86                 @type uv: list [u, v]
87                 """
88         def getRGBA():
89                 """
90                 Gets the colour of this vertex.
92                 The colour is represented as four bytes packed into an integer value.  The colour is
93                 packed as RGBA.
95                 Since Python offers no way to get each byte without shifting, you must use the struct module to
96                 access colour in an machine independent way.
98                 Because of this, it is suggested you use the r, g, b and a attributes or the colour attribute instead.
100                 Example::
101                         import struct;
102                         col = struct.unpack('4B', struct.pack('I', v.getRGBA()))
103                         # col = (r, g, b, a)
104                         # black = (  0,   0,   0, 255)
105                         # white = (255, 255, 255, 255)
107                 @rtype: integer
108                 @return: packed colour. 4 byte integer with one byte per colour channel in RGBA format.
109                 """
110         def setRGBA(col):
111                 """
112                 Sets the colour of this vertex.
114                 See getRGBA() for the format of col, and its relevant problems.  Use the r, g, b and a attributes
115                 or the colour attribute instead.
117                 setRGBA() also accepts a four component list as argument col.  The list represents the colour as [r, g, b, a]
118                 with black = [0.0, 0.0, 0.0, 1.0] and white = [1.0, 1.0, 1.0, 1.0]
120                 Example::
121                         v.setRGBA(0xff0000ff) # Red
122                         v.setRGBA(0xff00ff00) # Green on little endian, transparent purple on big endian
123                         v.setRGBA([1.0, 0.0, 0.0, 1.0]) # Red
124                         v.setRGBA([0.0, 1.0, 0.0, 1.0]) # Green on all platforms.
126                 @type col: integer or list [r, g, b, a]
127                 @param col: the new colour of this vertex in packed RGBA format.
128                 """
129         def getNormal():
130                 """
131                 Gets the normal vector of this vertex.
133                 @rtype: list [nx, ny, nz]
134                 @return: normalised normal vector.
135                 """
136         def setNormal(normal):
137                 """
138                 Sets the normal vector of this vertex.
140                 @type normal: sequence of floats [r, g, b]
141                 @param normal: the new normal of this vertex.
142                 """