Removed the use of NaN due to compiler issues.

This commit is contained in:
Pieter Hulshoff 2016-06-05 17:29:52 +02:00
parent ccfc0325a9
commit 02cb0d584f
4 changed files with 44 additions and 52 deletions

View File

@ -24,10 +24,11 @@ std::map<std::string, TweenProperty> Tween::tweenPropertyMap_;
Tween::Tween(TweenProperty property, TweenAlgorithm type, double start, double end, double duration)
: property(property)
, duration(duration)
, duration(duration)
, type(type)
, start(start)
, end(end)
, startDefined(true)
{
}
@ -374,9 +375,3 @@ double Tween::easeInOutCircular(double t, double d, double b, double c)
t -= 2;
return c/2 * (sqrt(1 - t*t) + 1) + b;
}
double Tween::getStart()
{
return start;
}

View File

@ -33,7 +33,7 @@ public:
static bool getTweenProperty(std::string name, TweenProperty &property);
TweenProperty property;
double duration;
double getStart();
bool startDefined;
private:
static double easeInQuadratic(double elapsedTime, double duration, double b, double c);

View File

@ -18,7 +18,6 @@
#include "../../Graphics/ViewInfo.h"
#include "../../Utility/Log.h"
#include "../../SDL.h"
#include <cmath>
Component::Component(Page &p)
: page(p)
@ -206,87 +205,87 @@ bool Component::animate()
switch(tween->property)
{
case TWEEN_PROPERTY_X:
if (std::isnan( tween->getStart() ))
baseViewInfo.X = tween->animate(elapsedTime, storeViewInfo_.X);
else
if (tween->startDefined)
baseViewInfo.X = tween->animate(elapsedTime);
else
baseViewInfo.X = tween->animate(elapsedTime, storeViewInfo_.X);
break;
case TWEEN_PROPERTY_Y:
if (std::isnan( tween->getStart() ))
baseViewInfo.Y = tween->animate(elapsedTime, storeViewInfo_.Y);
else
if (tween->startDefined)
baseViewInfo.Y = tween->animate(elapsedTime);
else
baseViewInfo.Y = tween->animate(elapsedTime, storeViewInfo_.Y);
break;
case TWEEN_PROPERTY_HEIGHT:
if (std::isnan( tween->getStart() ))
baseViewInfo.Height = tween->animate(elapsedTime, storeViewInfo_.Height);
else
if (tween->startDefined)
baseViewInfo.Height = tween->animate(elapsedTime);
else
baseViewInfo.Height = tween->animate(elapsedTime, storeViewInfo_.Height);
break;
case TWEEN_PROPERTY_WIDTH:
if (std::isnan( tween->getStart() ))
baseViewInfo.Width = tween->animate(elapsedTime, storeViewInfo_.Width);
else
if (tween->startDefined)
baseViewInfo.Width = tween->animate(elapsedTime);
else
baseViewInfo.Width = tween->animate(elapsedTime, storeViewInfo_.Width);
break;
case TWEEN_PROPERTY_ANGLE:
if (std::isnan( tween->getStart() ))
baseViewInfo.Angle = tween->animate(elapsedTime, storeViewInfo_.Angle);
else
if (tween->startDefined)
baseViewInfo.Angle = tween->animate(elapsedTime);
else
baseViewInfo.Angle = tween->animate(elapsedTime, storeViewInfo_.Angle);
break;
case TWEEN_PROPERTY_ALPHA:
if (std::isnan( tween->getStart() ))
baseViewInfo.Alpha = tween->animate(elapsedTime, storeViewInfo_.Alpha);
else
if (tween->startDefined)
baseViewInfo.Alpha = tween->animate(elapsedTime);
else
baseViewInfo.Alpha = tween->animate(elapsedTime, storeViewInfo_.Alpha);
break;
case TWEEN_PROPERTY_X_ORIGIN:
if (std::isnan( tween->getStart() ))
baseViewInfo.XOrigin = tween->animate(elapsedTime, storeViewInfo_.XOrigin);
else
if (tween->startDefined)
baseViewInfo.XOrigin = tween->animate(elapsedTime);
else
baseViewInfo.XOrigin = tween->animate(elapsedTime, storeViewInfo_.XOrigin);
break;
case TWEEN_PROPERTY_Y_ORIGIN:
if (std::isnan( tween->getStart() ))
baseViewInfo.YOrigin = tween->animate(elapsedTime, storeViewInfo_.YOrigin);
else
if (tween->startDefined)
baseViewInfo.YOrigin = tween->animate(elapsedTime);
else
baseViewInfo.YOrigin = tween->animate(elapsedTime, storeViewInfo_.YOrigin);
break;
case TWEEN_PROPERTY_X_OFFSET:
if (std::isnan( tween->getStart() ))
baseViewInfo.XOffset = tween->animate(elapsedTime, storeViewInfo_.XOffset);
else
if (tween->startDefined)
baseViewInfo.XOffset = tween->animate(elapsedTime);
else
baseViewInfo.XOffset = tween->animate(elapsedTime, storeViewInfo_.XOffset);
break;
case TWEEN_PROPERTY_Y_OFFSET:
if (std::isnan( tween->getStart() ))
baseViewInfo.YOffset = tween->animate(elapsedTime, storeViewInfo_.YOffset);
else
if (tween->startDefined)
baseViewInfo.YOffset = tween->animate(elapsedTime);
else
baseViewInfo.YOffset = tween->animate(elapsedTime, storeViewInfo_.YOffset);
break;
case TWEEN_PROPERTY_FONT_SIZE:
if (std::isnan( tween->getStart() ))
baseViewInfo.FontSize = tween->animate(elapsedTime, storeViewInfo_.FontSize);
else
if (tween->startDefined)
baseViewInfo.FontSize = tween->animate(elapsedTime);
else
baseViewInfo.FontSize = tween->animate(elapsedTime, storeViewInfo_.FontSize);
break;
case TWEEN_PROPERTY_BACKGROUND_ALPHA:
if (std::isnan( tween->getStart() ))
baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime, storeViewInfo_.BackgroundAlpha);
else
if (tween->startDefined)
baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime);
else
baseViewInfo.BackgroundAlpha = tween->animate(elapsedTime, storeViewInfo_.BackgroundAlpha);
break;
}
}

View File

@ -37,7 +37,6 @@
#include <stdexcept>
#include <vector>
#include <map>
#include <limits>
using namespace rapidxml;
@ -959,15 +958,12 @@ void PageBuilder::getAnimationEvents(xml_node<> *node, TweenSet &tweens)
}
else
{
float fromValue;
float fromValue = 0.0f;
bool fromDefined = true;
if (from)
{
fromValue = Utils::convertFloat(from->value());
}
else
{
fromValue = std::numeric_limits<double>::quiet_NaN();
}
fromDefined = false;
float toValue = Utils::convertFloat(to->value());
float durationValue = Utils::convertFloat(durationXml->value());
@ -1016,6 +1012,8 @@ void PageBuilder::getAnimationEvents(xml_node<> *node, TweenSet &tweens)
}
Tween *t = new Tween(property, algorithm, fromValue, toValue, durationValue);
if (!fromDefined)
t->startDefined = false;
tweens.push(t);
}
else