Files
OpenSceneGraph/src/osgPlugins/flt/LightPointPaletteRecords.cpp
Robert Osfield b6c1c44bd0 From Paul Martz,
"Changes to provide rudimentary support for OF 15.8 light point
animation palettes. This change also includes light point palette override
support for external references. This is the last of my code changes to
support OF 15.8 in the flt loader. Barring bugs, of course, knock on wood.

The gist of the animation palette code is to create ref_ptr'd
osgSim::BlinkSequence objects for each palette entry, and then pass them on
to osgSim::LightPoint for any OpenFlight light points that reference that
palette entry. This should be conservative of memory (not that I expect the
animation palette to be extremely large)."
2004-05-08 21:33:25 +00:00

136 lines
3.6 KiB
C++

#include "flt.h"
#include "Registry.h"
#include "LightPointPaletteRecords.h"
using namespace flt;
////////////////////////////////////////////////////////////////////
//
// LightPointAppearancePaletteRecords
//
////////////////////////////////////////////////////////////////////
RegisterRecordProxy<LtPtAppearancePaletteRecord> g_LtPtAppearancePaletteProxy;
LtPtAppearancePaletteRecord::LtPtAppearancePaletteRecord()
{
}
// virtual
LtPtAppearancePaletteRecord::~LtPtAppearancePaletteRecord()
{
}
// virtual
void LtPtAppearancePaletteRecord::endian()
{
SLightPointAppearancePalette* ltPtApp = (SLightPointAppearancePalette*)getData();
ENDIAN( ltPtApp->index );
ENDIAN( ltPtApp->surfMatCode );
ENDIAN( ltPtApp->featureID );
ENDIAN( ltPtApp->backColor );
ENDIAN( ltPtApp->displayMode );
ENDIAN( ltPtApp->intensity );
ENDIAN( ltPtApp->backIntensity );
ENDIAN( ltPtApp->minDefocus );
ENDIAN( ltPtApp->maxDefocus );
ENDIAN( ltPtApp->fadeMode );
ENDIAN( ltPtApp->fogPunch );
ENDIAN( ltPtApp->dirMode );
ENDIAN( ltPtApp->rangeMode );
ENDIAN( ltPtApp->minPixelSize );
ENDIAN( ltPtApp->maxPixelSize );
ENDIAN( ltPtApp->actualSize );
ENDIAN( ltPtApp->transFalloffPixelSize );
ENDIAN( ltPtApp->transFalloffExp );
ENDIAN( ltPtApp->transFalloffScalar );
ENDIAN( ltPtApp->transFalloffClamp );
ENDIAN( ltPtApp->fogScalar );
ENDIAN( ltPtApp->fogIntensity );
ENDIAN( ltPtApp->sizeDiffThreshold );
ENDIAN( ltPtApp->directionality );
ENDIAN( ltPtApp->horizLobeAngle );
ENDIAN( ltPtApp->vertLobeAngle );
ENDIAN( ltPtApp->lobeRollAngle );
ENDIAN( ltPtApp->dirFalloffExp );
ENDIAN( ltPtApp->dirAmbientIntensity );
ENDIAN( ltPtApp->significance );
ENDIAN( ltPtApp->flags );
ENDIAN( ltPtApp->visRange );
ENDIAN( ltPtApp->fadeRangeRatio );
ENDIAN( ltPtApp->fadeInDurationSecs );
ENDIAN( ltPtApp->adeOutDurationSecs );
ENDIAN( ltPtApp->lodRangeRatio );
ENDIAN( ltPtApp->lodScale );
}
////////////////////////////////////////////////////////////////////
//
// LightPointAnimationPaletteRecords
//
////////////////////////////////////////////////////////////////////
RegisterRecordProxy<LtPtAnimationPaletteRecord> g_LtPtAnimationPaletteProxy;
LtPtAnimationPaletteRecord::LtPtAnimationPaletteRecord()
{
}
// virtual
LtPtAnimationPaletteRecord::~LtPtAnimationPaletteRecord()
{
}
// virtual
void LtPtAnimationPaletteRecord::endian()
{
SLightPointAnimationPalette* ltPtAnim = (SLightPointAnimationPalette*)getData();
ENDIAN( ltPtAnim->index );
ENDIAN( ltPtAnim->period );
ENDIAN( ltPtAnim->phaseDelay );
ENDIAN( ltPtAnim->enabledPeriod );
ENDIAN( ltPtAnim->axis[0] );
ENDIAN( ltPtAnim->axis[1] );
ENDIAN( ltPtAnim->axis[2] );
ENDIAN( ltPtAnim->flags );
ENDIAN( ltPtAnim->animType );
ENDIAN( ltPtAnim->morseTiming );
ENDIAN( ltPtAnim->wordRate );
ENDIAN( ltPtAnim->charRate );
ENDIAN( ltPtAnim->numSequences );
for (int idx=0; idx < ltPtAnim->numSequences; idx++)
{
SLightPointAnimationSequence* seq = sequence( idx );
assert( seq );
ENDIAN( seq->seqState );
ENDIAN( seq->duration );
ENDIAN( seq->seqColor );
}
}
SLightPointAnimationSequence*
LtPtAnimationPaletteRecord::sequence( int idx )
{
SLightPointAnimationPalette* ltPtAnim = (SLightPointAnimationPalette*)getData();
if (idx >= ltPtAnim->numSequences)
return NULL;
SLightPointAnimationSequence* seq = (SLightPointAnimationSequence*)
( (char*)getData() + sizeof( SLightPointAnimationPalette ) );
seq += idx;
return seq;
}