77 lines
1.3 KiB
C++
77 lines
1.3 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __MOTION_CHANNEL__
|
|
#define __MOTION_CHANNEL__
|
|
|
|
|
|
#include "geometry/curve.h"
|
|
|
|
|
|
namespace GS {
|
|
namespace Core {
|
|
|
|
/*!
|
|
@short Motion channel object.
|
|
|
|
This class extends the curve class holding together a set of key frames and
|
|
able to evaluate the underlying curve object at a specific position.
|
|
A channel should be used on a specific value declared by the enumeration
|
|
Type.
|
|
|
|
@author Emmanuel Julien (ejulien@gsworks.fr)
|
|
*/
|
|
struct MotionChannel : public Curve
|
|
{
|
|
enum Type
|
|
{
|
|
NoType = 0,
|
|
Undf = 0,
|
|
|
|
// Transformation block.
|
|
XPos, YPos, ZPos,
|
|
XRot, YRot, ZRot,
|
|
XScl, YScl, ZScl,
|
|
XPiv, YPiv, ZPiv,
|
|
//
|
|
|
|
RDif, GDif, BDif,
|
|
RSpc, GSpc, BSpc,
|
|
|
|
DiffuseIntensity, SpecularIntensity,
|
|
|
|
ConeAngle, EdgeAngle,
|
|
|
|
Alpha,
|
|
|
|
ZoomFactor,
|
|
|
|
Range,
|
|
|
|
FogStart, FogEnd,
|
|
RFog, GFog, BFog,
|
|
|
|
Last
|
|
};
|
|
|
|
Type type;
|
|
|
|
/// Return the channel memory footprint.
|
|
size_t MemoryFootPrint() const { return Curve::MemoryFootPrint() + sizeof(MotionChannel); }
|
|
|
|
bool FromMetaTag(NML::Tag &);
|
|
NML::Tag *AsMetaTag() const;
|
|
|
|
MotionChannel();
|
|
~MotionChannel();
|
|
};
|
|
|
|
} // Core
|
|
} // GS
|
|
|
|
|
|
#endif // __MOTION_CHANNEL__
|