Add infos into target window
[ryzomcore.git] / ryzom / client / src / auto_anim.cpp
blob97efb324e20af02272ed43884a0b729c61913614
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2020 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "stdpch.h"
24 /////////////
25 // INCLUDE //
26 /////////////
27 // Misc.
28 #include "nel/misc/path.h"
29 #include "nel/misc/file.h"
30 // 3D Interface.
31 #include "nel/3d/u_scene.h"
32 #include "nel/3d/u_animation_set.h"
33 // Client.
34 #include "auto_anim.h"
35 // std.
36 #include <string>
37 #include <fstream>
39 #ifdef DEBUG_NEW
40 #define new DEBUG_NEW
41 #endif
43 ///////////
44 // USING //
45 ///////////
46 using namespace NLMISC;
47 using namespace NL3D;
48 using namespace NLNET;
49 using namespace std;
52 ////////////
53 // EXTERN //
54 ////////////
55 extern UDriver *Driver;
56 extern UScene *Scene;
59 // ***************************************************************************
60 static NL3D::UAnimationSet *AutoAnimSet= NULL;
62 // ***************************************************************************
63 void initAutoAnimation()
65 /* Load the automatic animations.
66 * Automatics animations are listed in the file auto_animatons_list.txt
67 * Each of this animations are loaded into an animations set
68 * The animation set is gived to the scene as default automatique animation set
70 CIFile file;
71 string listFilename = CPath::lookup("auto_animations_list.txt", false, false, false);
72 if (listFilename.empty() || !file.open (listFilename))
74 nlwarning ("No automatic animation files list (auto_animations_list.txt)");
76 else
78 nlassert(!AutoAnimSet);
79 // Create an animation set
80 AutoAnimSet = Driver->createAnimationSet();
81 nlassert (AutoAnimSet);
83 while (!file.eof())
85 // Read a filename
86 char line[512];
87 file.getline(line, 512);
89 // Read the animation file
90 string animName = toLowerAscii(CFile::getFilenameWithoutExtension(line));
91 uint id = AutoAnimSet->addAnimation (line, animName.c_str ());
92 if (id == UAnimationSet::NotFound)
94 nlwarning ("Can't load automatic animation '%s'", line);
98 // Add the animation set
99 AutoAnimSet->build ();
100 Scene->setAutomaticAnimationSet (AutoAnimSet);
104 // ***************************************************************************
105 void releaseAutoAnimation()
107 // if already created
108 if(AutoAnimSet)
110 Driver->deleteAnimationSet(AutoAnimSet);
111 AutoAnimSet= NULL;