-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathFadeListener.cpp
93 lines (81 loc) · 1.95 KB
/
FadeListener.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/////////////////////////////////////////////////////////////////////
///////////////Original file by:Fyodor Zagumennov aka Sgw32//////////
///////////////Copyright(c) 2010 Fyodor Zagumennov //////////
/////////////////////////////////////////////////////////////////////
#include "FadeListener.h"
template<> FadeListener *Singleton<FadeListener>::ms_Singleton=0;
FadeListener::FadeListener(){
inited=false;
fadeb=false;
wait=0;
returnafter=false;
}
FadeListener::~FadeListener()
{
}
void FadeListener::init(Ogre::Root *_root)
{
root=_root;
root->addFrameListener(this);
fader = new Fader("Overlays/FadeInOut", "Materials/OverlayMaterial");
inited=true;
}
void FadeListener::rebuild()
{
if (inited && !fadeb)
{
delete fader;
OverlayManager::getSingleton().getByName("Overlays/FadeInOut")->getChild("FadeInOutPanel")->setMaterialName("Materials/OverlayMaterial");
fader = new Fader("Overlays/FadeInOut", "Materials/OverlayMaterial");
}
}
void FadeListener::rebuild(String mat,bool return1)
{
if (inited && !fadeb)
{
delete fader;
OverlayManager::getSingleton().getByName("Overlays/FadeInOut")->getChild("FadeInOutPanel")->setMaterialName(mat);
fader = new Fader("Overlays/FadeInOut", mat.c_str());
}
returnafter=return1;
}
void FadeListener::setDuration(Real dur)
{
duration=dur;
}
void FadeListener::setDurationF(Real durf)
{
durationf=durf;
}
void FadeListener::startIN()
{
LogManager::getSingleton().logMessage("Fader:Fading in!");
if (returnafter)
{
rebuild();
returnafter=false;
}
fadeb=true;
fader->startFadeIn(duration);
}
void FadeListener::startOUT()
{
LogManager::getSingleton().logMessage("Fader:Fading out!");
if (returnafter)
{
rebuild();
returnafter=false;
}
fadeb=true;
fader->startFadeOut(duration);
}
bool FadeListener::frameStarted(const Ogre::FrameEvent &evt)
{
if (fadeb && (wait>0))
wait-=evt.timeSinceLastFrame;
if (fadeb && (wait<=0))
{
fader->fade(evt.timeSinceLastFrame);
}
return true;
}