NL3D::CAnimatedLightmap Class Reference

#include <animated_lightmap.h>

Inheritance diagram for NL3D::CAnimatedLightmap:

NL3D::IAnimatable

Detailed Description

An animated lightmap
Author:
Matthieu Besson

Nevrax France

Date:
2001

Definition at line 47 of file animated_lightmap.h.

Herited from IAnimatable

enum  TAnimValues { OwnerBit = IAnimatable::AnimValueLast, FactorValue, AnimValueLast }
 Added values. More...

virtual ITrackgetDefaultTrack (uint valueId)
 From IAnimatable.

virtual IAnimatedValuegetValue (uint valueId)
 From IAnimatable.

virtual const char * getValueName (uint valueId) const
 From IAnimatable.

virtual void registerToChannelMixer (CChannelMixer *chanMixer, const std::string &prefix)
 From IAnimatable.


Public Types


Public Member Functions

NLMISC::CRGBA getFactor (uint group) const
std::string getName () const
void setName (const std::string &s)
void updateGroupColors (class NL3D::CScene &scene)
ctor / setup.
 CAnimatedLightmap (uint lightmapGroup)
virtual ~CAnimatedLightmap ()

Protected Member Functions

sint addValue (CChannelMixer *chanMixer, uint valueId, uint ownerValueId, const std::string &prefix, bool detail)
void clearFlag (uint valueId)
 This method clear a bit in the bitset.

void setFlag (uint valueId)
 This method set a bit in the bitset.


Private Attributes

CTrackDefaultRGBA _DefaultFactor
CAnimatedValueRGBA _Factor
std::vector< NLMISC::CRGBA_GroupColor
std::string _Name


Member Enumeration Documentation

enum NL3D::CAnimatedLightmap::TAnimValues
 

Added values.

Enumeration values:
OwnerBit 
FactorValue 
AnimValueLast 

Reimplemented from NL3D::IAnimatable.

Definition at line 63 of file animated_lightmap.h.

00064         {
00065                 OwnerBit= IAnimatable::AnimValueLast,
00066                 FactorValue, 
00067                 AnimValueLast
00068         };


Constructor & Destructor Documentation

NL3D::CAnimatedLightmap::CAnimatedLightmap uint  lightmapGroup  ) 
 

Constructor.

Definition at line 45 of file animated_lightmap.cpp.

References _DefaultFactor, _Factor, _GroupColor, NL3D::CAnimatedValueBlendable< T >::affect(), NL3D::CTrackDefaultBlendable< T >::getValue(), NL3D::CTrackDefaultBlendable< T >::setValue(), and uint.

00046 {
00047         // IAnimatable.
00048         IAnimatable::resize( AnimValueLast );
00049 
00050         _DefaultFactor.setValue( CRGBA(255,0,255,255) );
00051         _Factor.affect( _DefaultFactor.getValue() );
00052         _GroupColor.resize (lightmapGroup, CRGBA::White);
00053 }

virtual NL3D::CAnimatedLightmap::~CAnimatedLightmap  )  [inline, virtual]
 

Constructor.

Definition at line 56 of file animated_lightmap.h.

00056 {}


Member Function Documentation

sint NL3D::IAnimatable::addValue CChannelMixer chanMixer,
uint  valueId,
uint  ownerValueId,
const std::string &  prefix,
bool  detail
[protected, inherited]
 

This is a tool function which add a given value to a channel.

Returns:
-1 if the track was not found in the animationSet, else it return the channelId as if returned by CAnimationSet::getChannelIdByName(channelName).

Definition at line 37 of file animatable.cpp.

References NL3D::CChannelMixer::addChannel(), NL3D::IAnimatable::getDefaultTrack(), NL3D::IAnimatable::getValue(), NL3D::IAnimatable::getValueName(), nlassert, sint, and uint.

Referenced by NL3D::CTransform::registerToChannelMixer(), NL3D::CParticleSystemModel::registerToChannelMixer(), NL3D::CCamera::registerToChannelMixer(), NL3D::CBone::registerToChannelMixer(), NL3D::CAnimatedMorph::registerToChannelMixer(), NL3D::CAnimatedMaterial::registerToChannelMixer(), and registerToChannelMixer().

00038 {
00039         nlassert(chanMixer);
00040         return chanMixer->addChannel(prefix+getValueName(valueId), this, getValue(valueId), getDefaultTrack(valueId), valueId, ownerValueId, detail);
00041 }

void NL3D::IAnimatable::clearFlag uint  valueId  )  [inline, protected, inherited]
 

This method clear a bit in the bitset.

Definition at line 233 of file animatable.h.

References NL3D::IAnimatable::_BitSet, and uint.

Referenced by NL3D::ITransformable::clearTransformFlags(), NL3D::CParticleSystemModel::doAnimate(), and NL3D::CAnimatedMaterial::update().

00234         {
00235                 _BitSet&= ~(1<<valueId);
00236         }

ITrack * NL3D::CAnimatedLightmap::getDefaultTrack uint  valueId  )  [virtual]
 

From IAnimatable.

Implements NL3D::IAnimatable.

Definition at line 125 of file animated_lightmap.cpp.

References _DefaultFactor, FactorValue, nlstop, and uint.

Referenced by NL3D::CScene::setAutomaticAnimationSet().

00126 {
00127         //nlassert(_LightmapBase);
00128 
00129         switch(valueId)
00130         {
00131         case FactorValue: return        &_DefaultFactor;
00132         };
00133 
00134         // should not be here!!
00135         nlstop;
00136         return NULL;
00137 }

NLMISC::CRGBA NL3D::CAnimatedLightmap::getFactor uint  group  )  const [inline]
 

Definition at line 90 of file animated_lightmap.h.

References _Factor, _GroupColor, uint, and NL3D::CAnimatedValueBlendable< T >::Value.

00091         { 
00092                 if (group < _GroupColor.size ())
00093                         return _GroupColor[group]; 
00094                 else
00095                         return _Factor.Value;
00096         }

std::string NL3D::CAnimatedLightmap::getName  )  const [inline]
 

Definition at line 85 of file animated_lightmap.h.

References _Name.

Referenced by NL3D::CScene::setAutomaticAnimationSet().

00085 { return _Name; }

IAnimatedValue * NL3D::CAnimatedLightmap::getValue uint  valueId  )  [virtual]
 

From IAnimatable.

Implements NL3D::IAnimatable.

Definition at line 101 of file animated_lightmap.cpp.

References _Factor, FactorValue, nlstop, and uint.

Referenced by NL3D::CScene::setAutomaticAnimationSet().

00102 {
00103         switch(valueId)
00104         {
00105         case FactorValue: return &_Factor;
00106         };
00107 
00108         // should not be here!!
00109         nlstop;
00110         return NULL;
00111 }

const char * NL3D::CAnimatedLightmap::getValueName uint  valueId  )  const [virtual]
 

From IAnimatable.

Implements NL3D::IAnimatable.

Definition at line 113 of file animated_lightmap.cpp.

References FactorValue, nlstop, and uint.

00114 {
00115         switch(valueId)
00116         {
00117         case FactorValue: nlstop; return "???";
00118         };
00119 
00120         // should not be here!!
00121         nlstop;
00122         return "";
00123 }

uint32 NL3D::IAnimatable::isTouched uint  valueId  )  const [inline, inherited]
 

Return non 0 int if the value as been touched else 0.

Parameters:
valueId is the animated value ID in the object we want to test the touch flag. or it may be an OwnerBit.

Definition at line 184 of file animatable.h.

References NL3D::IAnimatable::_BitSet, uint, and uint32.

Referenced by NL3D::CParticleSystemModel::doAnimate(), NL3D::ITransformable::needCompute(), NL3D::IAnimatable::propagateTouch(), and NL3D::CAnimatedMaterial::update().

00185         {
00186                 return _BitSet&(1<<valueId);
00187         }

void NL3D::CAnimatedLightmap::registerToChannelMixer CChannelMixer chanMixer,
const std::string &  prefix
[virtual]
 

From IAnimatable.

Implements NL3D::IAnimatable.

Definition at line 139 of file animated_lightmap.cpp.

References NL3D::IAnimatable::addValue(), FactorValue, and OwnerBit.

00140 {
00141         // For CAnimatedLightmap, channels are detailled (Lightmap rendered after clip)!
00142         addValue(chanMixer, FactorValue, OwnerBit, prefix, true);
00143 
00144 }

void NL3D::IAnimatable::resize uint  count  )  [inline, inherited]
 

Change value count, bit are set to 0

Parameters:
count is the new value count.

Definition at line 195 of file animatable.h.

References count, nlassert, and uint.

00196         {
00197                 // with the "uint32 _BitSet" implementation, juste check the size is correct
00198                 nlassert(count<=32);
00199         }

void NL3D::IAnimatable::setFather IAnimatable father,
uint  fatherOwnerBit
[inline, inherited]
 

Say which (if any) IAnimatable owns this one. This is important for Touch propagation. By this system, Fathers and ancestors know if they must check their sons (isTouched() return true).

Parameters:
father the father we must inform of our update.
fatherOwnerBit What bit of father we must set when we are updated

Definition at line 153 of file animatable.h.

References NL3D::IAnimatable::_Father, NL3D::IAnimatable::_FatherOwnerBit, NL3D::IAnimatable::propagateTouch(), and uint.

Referenced by NL3D::CMeshBase::instanciateMeshBase(), and NL3D::CSegRemanence::setAnimatedMaterial().

00154         {
00155                 _Father= father; _FatherOwnerBit= fatherOwnerBit;
00156 
00157                 // propagate the touch to the fathers.
00158                 propagateTouch();
00159         }

void NL3D::IAnimatable::setFlag uint  valueId  )  [inline, protected, inherited]
 

This method set a bit in the bitset.

Definition at line 239 of file animatable.h.

References NL3D::IAnimatable::_BitSet, and uint.

Referenced by NL3D::IAnimatable::propagateTouch(), and NL3D::IAnimatable::touch().

00240         {
00241                 _BitSet|= (1<<valueId);
00242         }

void NL3D::CAnimatedLightmap::setName const std::string &  s  )  [inline]
 

Definition at line 84 of file animated_lightmap.h.

References _Name, and s.

Referenced by NL3D::CScene::setAutomaticAnimationSet().

00084 { _Name = s; }

void NL3D::IAnimatable::touch uint  valueId,
uint  ownerValueId
[inline, inherited]
 

Touch a value because it has been modified.

Parameters:
valueId is the animated value ID in the object we want to touch.
ownerValueId is the bit of the IAnimatable part which owns this animated value.

Definition at line 168 of file animatable.h.

References NL3D::IAnimatable::propagateTouch(), NL3D::IAnimatable::setFlag(), and uint.

Referenced by NL3D::CChannelMixer::eval(), NL3D::CChannelMixer::evalSingleChannel(), NL3D::CParticleSystemModel::reallocRsc(), NL3D::CChannelMixer::refreshList(), NL3D::CCamera::setFov(), NL3D::ITransformable::setPivot(), NL3D::ITransformable::setPos(), NL3D::CCamera::setRoll(), NL3D::ITransformable::setRotEuler(), NL3D::ITransformable::setRotQuat(), NL3D::ITransformable::setScale(), NL3D::CCamera::setTargetPos(), NL3D::ITransformable::setTransformMode(), and NL3D::CParticleSystemInstanceUser::setUserParam().

00169         {
00170                 // Set the bit
00171                 setFlag(valueId);
00172                 // Set the owner bit
00173                 setFlag(ownerValueId);
00174 
00175                 // propagate the touch to the fathers.
00176                 propagateTouch();
00177         }

void NL3D::CAnimatedLightmap::updateGroupColors class NL3D::CScene scene  ) 
 

Definition at line 148 of file animated_lightmap.cpp.

References _Factor, _GroupColor, count, uint, and NL3D::CAnimatedValueBlendable< T >::Value.

00149 {
00150         // For each colors
00151         const uint count = scene.getNumLightGroup ();
00152         _GroupColor.resize (count);
00153         uint i;
00154         for (i=0; i<count; i++)
00155         {
00156                 _GroupColor[i].modulateFromColor (scene.getLightmapGroupColor (i), _Factor.Value);
00157         }
00158 }


Field Documentation

CTrackDefaultRGBA NL3D::CAnimatedLightmap::_DefaultFactor [private]
 

Definition at line 106 of file animated_lightmap.h.

Referenced by CAnimatedLightmap(), and getDefaultTrack().

CAnimatedValueRGBA NL3D::CAnimatedLightmap::_Factor [private]
 

Definition at line 105 of file animated_lightmap.h.

Referenced by CAnimatedLightmap(), getFactor(), getValue(), and updateGroupColors().

std::vector<NLMISC::CRGBA> NL3D::CAnimatedLightmap::_GroupColor [private]
 

Definition at line 107 of file animated_lightmap.h.

Referenced by CAnimatedLightmap(), getFactor(), and updateGroupColors().

std::string NL3D::CAnimatedLightmap::_Name [private]
 

Definition at line 101 of file animated_lightmap.h.

Referenced by getName(), and setName().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 06:44:21 2004 for NeL by doxygen 1.3.6