CC3Light represents the light in the 3D world. More...
#import <CC3Light.h>
Public Member Functions | |
(void) | - turnOn |
Static Public Member Functions | |
(void) | + disableReservedLights |
(GLuint) | + lightCount |
(GLuint) | + lightPoolStartIndex |
(void) | + setLightPoolStartIndex: |
Properties | |
ccColor4F | ambientColor |
ccColor4F | diffuseColor |
CC3Vector4 | homogeneousLocation |
BOOL | isDirectionalOnly |
GLuint | lightIndex |
ccColor4F | specularColor |
GLfloat | spotCutoffAngle |
CC3Light is a type of CC3Node, and can therefore participate in a structural node assembly. An instance can be the child of another node, and the light itself can have child nodes. For example, a light can be mounted on a boom object or camera, and will move along with the parent node.
CC3Light is also a type of CC3TargettingNode, and can be pointed so that it shines in a particular direction, or can be made to track a target node as that node moves.
To turn a CC3Light on or off, set the visible property.
The maximum number of lights available is determined by the platform. That number can be retrieved from [CC3OpenGLES11Engine engine].platform.maxLights.value. All platforms support at least eight lights.
If the application uses lights in the 2D world as well, the indexes of those lights can be reserved by invoking the class method setLightPoolStartIndex:. Light indexes reserved for use by the 2D world will not be used by the 3D world.
+ (void) disableReservedLights |
Disables the lights that were reserved for the 2D world by setLightPoolStartIndex:.
This method is invoked automatically by CC3World near the beginning of each frame drawing cycle. Usually, the application never needs to invoke this method directly.
+ (GLuint) lightCount |
Returns the number of lights that have already been instantiated (and not yet deallocated).
The maximum number of lights available is determined by the platform. That number can be retrieved from [CC3OpenGLES11Engine engine].platform.maxLights.value. All platforms support at least eight lights.
+ (GLuint) lightPoolStartIndex |
Indicates the smallest index number to assign to a 3D light.
See the description of the setLightPoolStartIndex: method for more information on this value.
+ (void) setLightPoolStartIndex: | (GLuint) | newStartIndex |
Sets the smallest index number to assign to a 3D light.
This value should be between zero inclusive and [CC3OpenGLES11Engine engine].platform.maxLights.value exclusive.
If the 2D world uses lights, setting this value to a number above zero will reserve the indexes below this number for the 2D world and those indexes will not be used in lights in the 3D world.
This value defaults to zero. If your application requires light indexes to be reserved and not assigned in the 3D world, set this value.
- (void) turnOn |
If this light is visible, turns it on by enabling this light in the GL engine, and then applies the properties of this light to the GL engine.
This method is invoked automatically by CC3World near the beginning of each frame drawing cycle. Usually, the application never needs to invoke this method directly.
- (ccColor4F) ambientColor [read, write, assign] |
The ambient color of this light.
Initially set to kCC3DefaultLightColorAmbient.
- (ccColor4F) diffuseColor [read, write, assign] |
The diffuse color of this light.
Initially set to kCC3DefaultLightColorDiffuse.
- (CC3Vector4) homogeneousLocation [read, assign] |
The location of this light in the 4D homogeneous coordinate space.
The x, y and z components of the returned value will be the same as those in the globalLocation property. The w-component will be one if the light is considered to be actually located at the globalLocation property, or zero if the globalLocation property is an indication of the direction the light is coming from, and not an absolute location.
- (BOOL) isDirectionalOnly [read, write, assign] |
Indicates whether this light is directional and without a specified location.
Directional-only light is good for modeling sunlight, or other flat overhead lighting. Positional lighting is good for point-source lights like a single bulb, flare, etc.
The value of this property impacts features like attenuation, and the angle of reflection to the user view. A directional-only light is not subject to attenuation over distance, where an absolutely located light is. In addition, directional-only light bounces off a flat surface at a single angle, whereas the angle for a point-source light also depends on the location of the camera.
The initial value is YES, indicating directional-only lighting.
- (GLuint) lightIndex [read, assign] |
The index of this light to identify it to the GL engine.
This is automatically assigned during instance initialization. The value of lightIndex will be between zero and one less than the maximium number of available lights, inclusive.
The maximum number of lights available is determined by the platform. That number can be retrieved from [CC3OpenGLES11Engine engine].platform.maxLights.value. All platforms support at least eight lights.
- (ccColor4F) specularColor [read, write, assign] |
The specular color of this light.
Initially set to kCC3DefaultLightColorSpecular.
- (GLfloat) spotCutoffAngle [read, write, assign] |
Indicates the angle, in degrees, of dispersion of the light from the direction of the light.
Setting this value to any angle below kSpotCutoffNone (180 degrees) will cause this light to be treated as a spotlight whose direction is set by the forwardDirection property of this light, and whose angle of dispersion is controlled by this property. Setting this property to kSpotCutoffNone or above will cause this light to be treated as an omnidirectional light. Initially set to kSpotCutoffNone.