Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/netp6/src/network/synchronisable/SynchronisableSpecialisations.cc @ 3227

Last change on this file since 3227 was 3227, checked in by scheusso, 15 years ago

some cleaning up and memory leak fixes

  • Property svn:eol-style set to native
File size: 4.8 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Dumeni Manatschal, (C) 2007
24 *      Oliver Scheuss, (C) 2007
25 *   Co-authors:
26 *      ...
27 *
28 */
29
30#include <string>
31#include "util/Math.h"
32#include "Synchronisable.h"
33#include "SynchronisableVariable.h"
34
35// ================ template spezialisation
36 
37 
38namespace orxonox{
39 
40//   template <> void Synchronisable::registerVariable( const std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
41//   {
42//     if (bidirectional)
43//       syncList.push_back(new SynchronisableVariableBidirectional<const std::string>(variable, mode, cb));
44//     else
45//       syncList.push_back(new SynchronisableVariable<const std::string>(variable, mode, cb));
46//     stringList.push_back(syncList.back());
47//   }
48 
49  template <> void Synchronisable::registerVariable( std::string& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
50  {
51    if (bidirectional)
52      syncList.push_back(new SynchronisableVariableBidirectional<const std::string>(variable, mode, cb));
53    else
54      syncList.push_back(new SynchronisableVariable<const std::string>(variable, mode, cb));
55    stringList.push_back(syncList.back());
56  }
57 
58  template <> void Synchronisable::registerVariable( const ColourValue& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
59  {
60    registerVariable(variable.r, mode, cb, bidirectional);
61    registerVariable(variable.g, mode, cb, bidirectional);
62    registerVariable(variable.b, mode, cb, bidirectional);
63    registerVariable(variable.a, mode, cb, bidirectional);
64  }
65  template <> void Synchronisable::registerVariable( ColourValue& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
66  {
67    return Synchronisable::registerVariable( (const ColourValue&)variable, mode, cb, bidirectional);
68  }
69
70  template <> void Synchronisable::registerVariable( const Vector2& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
71  {
72    registerVariable(variable.x, mode, cb, bidirectional);
73    registerVariable(variable.y, mode, cb, bidirectional);
74  }
75 
76  template <> void Synchronisable::registerVariable( const Vector3& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
77  {
78    registerVariable(variable.x, mode, cb, bidirectional);
79    registerVariable(variable.y, mode, cb, bidirectional);
80    registerVariable(variable.z, mode, cb, bidirectional);
81  }
82  template <> void Synchronisable::registerVariable( Vector3& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
83  {
84    registerVariable( (const Vector3&)variable, mode, cb, bidirectional);
85  }
86
87  template <> void Synchronisable::registerVariable( const Vector4& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
88  {
89    registerVariable(variable.x, mode, cb, bidirectional);
90    registerVariable(variable.y, mode, cb, bidirectional);
91    registerVariable(variable.z, mode, cb, bidirectional);
92    registerVariable(variable.w, mode, cb, bidirectional);
93  }
94  template <> void Synchronisable::registerVariable( Vector4& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
95  {
96    registerVariable( (const Vector4&)variable, mode, cb, bidirectional);
97  }
98 
99  template <> void Synchronisable::registerVariable( mbool& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
100  {
101    registerVariable(variable.getMemory(), mode, cb, bidirectional);
102  }
103 
104  template <> void Synchronisable::registerVariable( const Quaternion& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
105  {
106    registerVariable(variable.x, mode, cb, bidirectional);
107    registerVariable(variable.y, mode, cb, bidirectional);
108    registerVariable(variable.z, mode, cb, bidirectional);
109    registerVariable(variable.w, mode, cb, bidirectional);
110  }
111  template <> void Synchronisable::registerVariable( Quaternion& variable, uint8_t mode, NetworkCallbackBase* cb, bool bidirectional)
112  {
113    registerVariable( (const Quaternion&)variable, mode, cb, bidirectional);
114  }
115
116 
117
118} //namespace
Note: See TracBrowser for help on using the repository browser.