AlEnvironment
 
 
 

Base object for representing shader environment data.

Synopsis

#include <AlEnvironment.h>
class AlEnvironment : public AlObject,
virtual	~AlEnvironment();
virtual AlObjectType	type() const;
virtual const char*	name() const;
virtual statusCode	deleteObject();
virtual AlObject*	copyWrapper() const;
AlTexture*	firstTexture() const;
AlTexture*	nextTexture( AlTexture* ) const;
statusCode	nextTextureD( AlTexture* ) const;
statusCode	parameter( const AlShadingFields, double& ) const;
statusCode	setParameter( const AlShadingFields, const double );
AlList*	fields() const;
AlList*	mappedFields() const;
statusCode	addTexture( const char*, const char*, AlTexture** = NULL );
statusCode	removeTexture( const char* );
statusCode	applyIteratorToTextures( AlIterator *, int& );

Description

This class encapsulates the basic functionality for checking and setting the name of an environment. It also encapsulates accessing the textures that a particular environment refers to, and the animation on the environment. When the wire file is read, the environment contained therein are created as an AlEnvironment class object. This environment object is accessible through the AlUniverse class.

An environment object may reference textures. The firstTexture and nextTexture methods are used to access these textures.

firstTexture() returns the first texture that the environment object references. nextTexture() moves from a given referenced texture to the next texture in order, as related to the environment object. (See the similar methods for the AlTexture/AlShader classes.)

The animation on the environment can be accessed through the firstChannel() and nextChannel() methods. All the channels on the environment can be deleted by calling deleteAnimation().

The environment parameters can be accessed through the parameter() and setParameter() methods. Each shader has a specific set of parameters that are valid for it that depend on its type. The full list of environment parameters can be seen in the file AlAnim.h. For example, all parameters specific to the Blinn shader have names of the form kFLD_SHADING_BLINN_*. Parameters common to all shaders have the form kFLD_SHADING_COMMON_*. All parameters are treated as doubles even though this may not necessarily be what they are. This is done to make the interface as simple and consistent as possible.

The user can neither create nor destroy an AlEnvironment class object at this time.

AlEnvironment::~AlEnvironment()

Description

Deletes the AlEnvironment wrapper object. It is not possible to delete an environment.

statusCode AlEnvironment::deleteObject()

Description

It is not possible to delete the environment shader. This method always returns sFailure.

Return Codes

sFailure - always returned

AlObject *AlEnvironment::copyWrapper() const

Description

Creates an exact copy of the AlEnvironment wrapper.

AlObjectType AlEnvironment::type() const

Description

Returns the class identifier ’kEnvironmentType’.

const char* AlEnvironment::name() const

Description

Returns the name of the environment shader (it is constant for now).

statusCode AlEnvironment::parameter( const AlShadingFields field, double& result ) const

Description

Finds the value of a given environment field.

Arguments

< field - environment field type

> result - Returned result of the field

Return Codes

sSuccess - the value of the field was returned

sInvalidArgument - the field was not legal for this environment or result was NULL

sFailure - the value of the field could not be returned

sInvalidObject - the environment was invalid

statusCode AlEnvironment::setParameter( const AlShadingFields field,const double value )

Description

Changes the value of the environment field.

Arguments

< field - environment field type

< value - new value that the environment field is to take

Return Codes

sSuccess - the value of the field was changed

sInvalidArgument - the field was not legal for this environment

sFailure - the value of the field could not be changed

sInvalidObject - the environment was invalid

AlTexture* AlEnvironment::firstTexture() const

Description

Returns the first texture that this environment object references. If there are none then NULL is returned.

AlTexture* AlEnvironment::nextTexture( AlTexture* last_texture ) const

Description

Returns the texture after the given one in the environment’s texture list. Specifying NULL as parameter will return the first texture.

Arguments

< last_texture - the texture from which to walk forward

statusCode AlEnvironment::nextTextureD( AlTexture* last_texture ) const

Description

Destructively points ’last_texture’ to the texture after the given one in the shader’s texture list.

Arguments

<> last_texture - the texture from which to walk forward

Return Codes

sSuccess - ’last_texture’ now points to the next texture

sInvalidArgument - ’last_texture’ was not valid or was NULL

sFailure - there is no next texture

sInvalidObject - the environment was invalid

AlList* AlEnvironment::fields() const

Description

Returns an AlList of AlShadingFieldItems, each of which contains an AlShadingFields value valid for this environment. Note that this list is allocated and must be freed using ’delete AlList*’.

AlList* AlEnvironment::mappedFields() const

Description

Returns an AlList of AlMappedFieldItems, each of which contains a character string identifier identifying a field on this environment which may be texture mapped. Note that these strings are identical to the SDL identifiers and the complete list can be found in the SDL manual.

statusCode AlEnvironment::removeTexture( const char* fieldName )

Description

Removes a texture from a particular field of the AlEnvironment. The first argument is the name of the field which will have the texture applied to it. Only those fields valid for this shader should be provided; any others will cause this method to fail. Valid fields are any returned by the fields() method.

Arguments

< fieldName - name of the field which will have the texture removed from it

Return Codes

sSuccess - the texture was added successfully

sFailure - no texture was present

sCannotDelete - a texture already existed on the field which could not be deleted

sInvalidArgument - the argument was not valid for the shader

sInvalidObject - the shader is invalid

statusCode AlEnvironment::addTexture( const char* fieldName, const char* textureName, AlTexture** returnCreatedTexture )

Description

Adds a texture to a particular field of the AlEnvironment. The first argument is the name of the field that will have the texture applied to it. Only those fields valid for this environment should be provided; any others will cause this method to fail. Valid fields are any returned by the fields() method. The second argument is the name of the texture type to apply to the field. The complete list of names is available in the SDL manual.

Arguments

< fieldName - name of the field which will have the texture applied to it

< textureName - name of the texture type to apply to the field returnCreatedTexture - if not NULL, then the created texture is returned

Return Codes

sSuccess - the texture was added successfully

sFailure - the texture was not added

sCannotDelete - a texture already existed on the field which could not be deleted

sInvalidArgument - either argument was not valid for the environment

sInvalidObject - the environment was invalid

statusCode AlEnvironment::applyIteratorToTextures( AlIterator *iter, int &rc )

Description

Applies the given AlIterator to all textures of this environment. The second argument will be set to the return value of the last application of the iterator’s function. See the AlIterator class for more information.

Arguments

< iter - the iterator to apply to each texture

> rc - the return value of the last application of the iterator

Return Codes

sSuccess - the application of the iterator terminated normally

sFailure - the application of the iterator terminated abnormally

sInvalidArgument - the iterator was NULL

sInvalidObject - the environment was not valid