AlDirectionLight
 
 
 

Encapsulates the functionality common to all directional lights.

Synopsis

#include <AlDirectionLight.h>
class AlDirectionLight: public AlNonAmbientLight
AlDirectionLight();
virtual	~AlDirectionLight();
virtual AlObject*	copyWrapper() const;
statusCode	create();
AlObjectType	type() const;
AlLightNode*  	lookAtNode() const;
AlLightNode*      	upNode() const;
virtual statusCode	direction( double&, double&, double& ) const;
virtual statusCode	setDirection( double, double, double );

Description

There are two ways that this class is used. If the user instantiates and calls the create method on an AlDirectionLight, the resulting object is a light that has color, intensity, and direction but no obvious source in a scene. This type of direction light does not decay with distance. Sunlight is a direction light of this type.

Alternatively, the user could instantiate and create an AlSpotLight, AlLinearLight, or AlAreaLight (which are all considered "directional" and which are all derived from this light class).

Although all direction lights can access the "look at" and "up" nodes of a light, only the spot light uses these nodes.

AlDirectionLight::AlDirectionLight()

Description

Constructs an AlDirectionLight wrapper object.

AlDirectionLight::~AlDirectionLight()

Description

Deletes an AlDirectionLight wrapper object.

statusCode AlDirectionLight::create()

Description

Creates all the DAG nodes for this light and adds them to the universe. The DAG nodes are for ’position’, ’look at’ and ’up’, and another DAG node that groups these three together.

Return Codes

sSuccess - everything was successful

sInsufficientMemory - not enough memory available

sAlreadyCreated - light is already created

AlObjectType AlDirectionLight::type() const

Description

Returns the class identifier, kDirectionLightType.

AlLightNode *AlDirectionLight::lookAtNode() const

Description

Returns a pointer to the light’s "look at" node. This node is an AlLightNode (which is a DAG node).

AlLightNode *AlDirectionLight::upNode() const

Description

Returns a pointer to the light’s "up" node. This node is an AlLightNode (which is a DAG node).

statusCode AlDirectionLight::direction( double &x, double &y, double &z ) const

Description

Returns a world space vector indicating the direction that this light is pointing. The default direction for the light is (0,0,-1)

Arguments

> x - the direction vector in x

> y - the direction vector in y

> z - the direction vector in z

Return Codes

sSuccess - the direction was returned

sFailure - the direction could not be determined

sInvalidObject - the light was invalid

statusCode AlDirectionLight::setDirection( double x, double y, double z )

Description

This is a ’convenience’ function. It calculates rotations in the DAG node to set the world direction of the light. This will overwrite the current rotations in the light node. The default direction for the light is (0,0,-1)

Arguments

< x - the direction vector in x

< y - the direction vector in y

< z - the direction vector in z

Return Codes

sSuccess - the direction was returned

sFailure - the direction could not be determined

sInvalidObject - the light was invalid