commit x64 compilation from lulu cause the other branch dont seems to compile properly at home
This commit is contained in:
131
include/engine/motion/motion_channel_nml.cpp
Normal file
131
include/engine/motion/motion_channel_nml.cpp
Normal file
@ -0,0 +1,131 @@
|
||||
/* -----------------------------------------------------------------------------
|
||||
GSFramework
|
||||
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
||||
----------------------------------------------------------------------------- */
|
||||
|
||||
|
||||
#include "motion/motion_channel.h"
|
||||
#include "log/log.h"
|
||||
|
||||
using namespace GS::Core;
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
bool MotionChannel::FromMetaTag(GS::NML::Tag &tag)
|
||||
{
|
||||
if (tag.name != "Channel")
|
||||
__ERR__(__LOG_E__ << "Could not parse motion channel, incorrect root tag (" << tag.name << ").\n", false)
|
||||
|
||||
// Parse root tags.
|
||||
NMLTagForeach(pt, tag)
|
||||
{
|
||||
if (pt->name == "Curve")
|
||||
Curve::FromMetaTag(*pt);
|
||||
|
||||
else if (pt->name == "Id")
|
||||
{
|
||||
String chn(pt->GetString());
|
||||
|
||||
if (chn == "PositionX") type = XPos;
|
||||
else if (chn == "PositionY") type = YPos;
|
||||
else if (chn == "PositionZ") type = ZPos;
|
||||
else if (chn == "RotationX") type = XRot;
|
||||
else if (chn == "RotationY") type = YRot;
|
||||
else if (chn == "RotationZ") type = ZRot;
|
||||
else if (chn == "ScaleX") type = XScl;
|
||||
else if (chn == "ScaleY") type = YScl;
|
||||
else if (chn == "ScaleZ") type = ZScl;
|
||||
|
||||
else if (chn == "PivotX") type = XPiv;
|
||||
else if (chn == "PivotY") type = YPiv;
|
||||
else if (chn == "PivotZ") type = ZPiv;
|
||||
|
||||
else if (chn == "DiffuseR") type = RDif;
|
||||
else if (chn == "DiffuseG") type = GDif;
|
||||
else if (chn == "DiffuseB") type = BDif;
|
||||
else if (chn == "SpecularR") type = RSpc;
|
||||
else if (chn == "SpecularG") type = GSpc;
|
||||
else if (chn == "SpecularB") type = BSpc;
|
||||
|
||||
else if (chn == "DiffuseI") type = DiffuseIntensity;
|
||||
else if (chn == "SpecularI") type = SpecularIntensity;
|
||||
|
||||
else if (chn == "ConeAngle") type = ConeAngle;
|
||||
else if (chn == "EdgeAngle") type = EdgeAngle;
|
||||
|
||||
else if (chn == "Alpha") type = Alpha;
|
||||
|
||||
else if (chn == "Zoom") type = ZoomFactor;
|
||||
|
||||
else if (chn == "Range") type = Range;
|
||||
|
||||
else if (chn == "FogStart") type = FogStart;
|
||||
else if (chn == "FogEnd") type = FogEnd;
|
||||
else if (chn == "FogR") type = RFog;
|
||||
else if (chn == "FogG") type = GFog;
|
||||
else if (chn == "FogB") type = BFog;
|
||||
|
||||
else __LOG_W__ << "Unknown channel id '" << chn << "'.\n";
|
||||
}
|
||||
else __LOG_W__ << "Unknown tag '" << pt->name << "' in <Channel>.\n";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
GS::NML::Tag *MotionChannel::AsMetaTag() const
|
||||
{
|
||||
NML::Tag *root = new NML::Tag("Channel");
|
||||
if (!root)
|
||||
__ERR__(__LOG_E__ << "Could not create channel root tag to serialize.\n", NULL)
|
||||
|
||||
// Serialize underlying curve.
|
||||
root->AddChild(Curve::AsMetaTag());
|
||||
|
||||
// Channel type.
|
||||
switch (type)
|
||||
{
|
||||
case XPos: root->AddChild("Id", "PositionX"); break;
|
||||
case YPos: root->AddChild("Id", "PositionY"); break;
|
||||
case ZPos: root->AddChild("Id", "PositionZ"); break;
|
||||
case XRot: root->AddChild("Id", "RotationX"); break;
|
||||
case YRot: root->AddChild("Id", "RotationY"); break;
|
||||
case ZRot: root->AddChild("Id", "RotationZ"); break;
|
||||
case XScl: root->AddChild("Id", "ScaleX"); break;
|
||||
case YScl: root->AddChild("Id", "ScaleY"); break;
|
||||
case ZScl: root->AddChild("Id", "ScaleZ"); break;
|
||||
|
||||
case XPiv: root->AddChild("Id", "PivotX"); break;
|
||||
case YPiv: root->AddChild("Id", "PivotY"); break;
|
||||
case ZPiv: root->AddChild("Id", "PivotZ"); break;
|
||||
|
||||
case RDif: root->AddChild("Id", "DiffuseR"); break;
|
||||
case GDif: root->AddChild("Id", "DiffuseG"); break;
|
||||
case BDif: root->AddChild("Id", "DiffuseB"); break;
|
||||
case RSpc: root->AddChild("Id", "SpecularR"); break;
|
||||
case GSpc: root->AddChild("Id", "SpecularG"); break;
|
||||
case BSpc: root->AddChild("Id", "SpecularB"); break;
|
||||
|
||||
case DiffuseIntensity: root->AddChild("Id", "DiffuseI"); break;
|
||||
case SpecularIntensity: root->AddChild("Id", "SpecularI"); break;
|
||||
|
||||
case ConeAngle: root->AddChild("Id", "ConeAngle"); break;
|
||||
case EdgeAngle: root->AddChild("Id", "EdgeAngle"); break;
|
||||
|
||||
case Alpha: root->AddChild("Id", "Alpha"); break;
|
||||
|
||||
case ZoomFactor: root->AddChild("Id", "Zoom"); break;
|
||||
|
||||
case Range: root->AddChild("Id", "Range"); break;
|
||||
|
||||
case FogStart: root->AddChild("Id", "FogStart"); break;
|
||||
case FogEnd: root->AddChild("Id", "FogEnd"); break;
|
||||
case RFog: root->AddChild("Id", "FogR"); break;
|
||||
case GFog: root->AddChild("Id", "FogG"); break;
|
||||
case BFog: root->AddChild("Id", "FogB"); break;
|
||||
|
||||
default:
|
||||
__LOG_W__ << "Unknown motion channel type (" << type << ").\n";
|
||||
break;
|
||||
}
|
||||
return root;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user