**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include "valuenode_const.h"
#include <stdexcept>
#include "color.h"
+#include <ETL/misc>
#endif
{
switch(get_type())
{
- case ValueBase::TYPE_REAL:
- set_link("before",ValueNode_Const::create(value.get(Real())));
- set_link("after",ValueNode_Const::create(value.get(Real())));
- break;
- case ValueBase::TYPE_VECTOR:
- set_link("before",ValueNode_Const::create(value.get(Vector())));
- set_link("after",ValueNode_Const::create(value.get(Vector())));
- break;
case ValueBase::TYPE_ANGLE:
set_link("before",ValueNode_Const::create(value.get(Angle())));
set_link("after",ValueNode_Const::create(value.get(Angle())));
set_link("before",ValueNode_Const::create(value.get(int())));
set_link("after",ValueNode_Const::create(value.get(int())));
break;
+ case ValueBase::TYPE_REAL:
+ set_link("before",ValueNode_Const::create(value.get(Real())));
+ set_link("after",ValueNode_Const::create(value.get(Real())));
+ break;
case ValueBase::TYPE_TIME:
set_link("before",ValueNode_Const::create(value.get(Time())));
set_link("after",ValueNode_Const::create(value.get(Time())));
break;
+ case ValueBase::TYPE_VECTOR:
+ set_link("before",ValueNode_Const::create(value.get(Vector())));
+ set_link("after",ValueNode_Const::create(value.get(Vector())));
+ break;
default:
throw Exception::BadType(ValueBase::type_name(get_type()));
}
switch(get_type())
{
- case ValueBase::TYPE_REAL:
- {
- Real a=(*after)(t).get(Real());
- Real b=(*before)(t).get(Real());
- return (b-a)*amount+a;
- }
- case ValueBase::TYPE_VECTOR:
- {
- Vector a=(*after)(t).get(Vector());
- Vector b=(*before)(t).get(Vector());
- return (b-a)*amount+a;
- }
case ValueBase::TYPE_ANGLE:
{
Angle a=(*after)(t).get(Angle());
{
float a=(float)(*after)(t).get(int());
float b=(float)(*before)(t).get(int());
- return static_cast<int>((b-a)*amount+a+0.5f);
+ return round_to_int((b-a)*amount+a);
+ }
+ case ValueBase::TYPE_REAL:
+ {
+ Real a=(*after)(t).get(Real());
+ Real b=(*before)(t).get(Real());
+ return (b-a)*amount+a;
}
case ValueBase::TYPE_TIME:
{
Time b=(*before)(t).get(Time());
return (b-a)*amount+a;
}
+ case ValueBase::TYPE_VECTOR:
+ {
+ Vector a=(*after)(t).get(Vector());
+ Vector b=(*before)(t).get(Vector());
+ return (b-a)*amount+a;
+ }
default:
break;
}
ValueNode_TimedSwap::check_type(ValueBase::Type type)
{
return
- type==ValueBase::TYPE_REAL ||
- type==ValueBase::TYPE_VECTOR ||
type==ValueBase::TYPE_ANGLE ||
type==ValueBase::TYPE_COLOR ||
type==ValueBase::TYPE_INTEGER ||
- type==ValueBase::TYPE_TIME;
+ type==ValueBase::TYPE_REAL ||
+ type==ValueBase::TYPE_TIME ||
+ type==ValueBase::TYPE_VECTOR;
}