Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
OgreAngelscript.cpp
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5 Copyright 2013-2024 Petr Ohlidal
6
7 For more information, see http://www.rigsofrods.org/
8
9 Rigs of Rods is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3, as
11 published by the Free Software Foundation.
12
13 Rigs of Rods 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 Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20*/
21
25
26#include "Application.h"
27#include "AngelScriptBindings.h"
28#include "ScriptEngine.h"
29#include "ScriptUtils.h"
31
32// AS addons start
33#include "scriptstdstring/scriptstdstring.h"
34#include "scriptmath/scriptmath.h"
35#include "scriptany/scriptany.h"
36#include "scriptarray/scriptarray.h"
37#include "scripthelper/scripthelper.h"
38// AS addons end
39
40#include <OgreRenderOperation.h>
41
42#include <Overlay/OgreOverlaySystem.h>
43#include <Overlay/OgreOverlayManager.h>
44#include <Overlay/OgreOverlay.h>
45#include <Overlay/OgreOverlayContainer.h>
46
47using namespace Ogre;
48using namespace AngelScript;
49using namespace RoR;
50using namespace OgreAngelscriptWrappers;
51
52// forward declarations, defined below
53void registerOgreVector3(AngelScript::asIScriptEngine* engine);
54void registerOgreVector2(AngelScript::asIScriptEngine* engine);
55void registerOgreRadian(AngelScript::asIScriptEngine* engine);
56void registerOgreDegree(AngelScript::asIScriptEngine* engine);
57void registerOgreQuaternion(AngelScript::asIScriptEngine* engine);
58void registerOgreColourValue(AngelScript::asIScriptEngine* engine);
59void registerOgreBox(AngelScript::asIScriptEngine* engine);
60
61void registerOgreMovableObject(AngelScript::asIScriptEngine* engine);
62void registerOgreEntity(AngelScript::asIScriptEngine* engine);
63void registerOgreSubEntity(AngelScript::asIScriptEngine* engine);
64void registerOgreNode(AngelScript::asIScriptEngine* engine);
65void registerOgreSceneNode(AngelScript::asIScriptEngine* engine);
66void registerOgreSceneManager(AngelScript::asIScriptEngine* engine);
67void registerOgreRoot(AngelScript::asIScriptEngine* engine);
68void registerOgreAnimationState(AngelScript::asIScriptEngine* engine);
69void registerOgreAnimationStateSet(AngelScript::asIScriptEngine* engine);
70void registerOgreTexture(AngelScript::asIScriptEngine* engine);
71void registerOgreTextureManager(AngelScript::asIScriptEngine* engine);
72void registerOgreManualObject(AngelScript::asIScriptEngine* engine);
73void registerOgreHardwarePixelBuffer(AngelScript::asIScriptEngine* engine);
74void registerOgrePixelBox(AngelScript::asIScriptEngine* engine);
75void registerOgreImage(AngelScript::asIScriptEngine* engine);
76void registerOgreMeshManager(AngelScript::asIScriptEngine* engine);
77void registerOgreMesh(AngelScript::asIScriptEngine* engine);
78void registerOgreSubMesh(AngelScript::asIScriptEngine* engine);
79void registerOgreMaterialManager(AngelScript::asIScriptEngine* engine);
80void registerOgreMaterial(AngelScript::asIScriptEngine* engine);
81void registerOgreTechnique(AngelScript::asIScriptEngine* engine);
82void registerOgrePass(AngelScript::asIScriptEngine* engine);
83void registerOgreTextureUnitState(AngelScript::asIScriptEngine* engine);
84void registerOgreTimer(AngelScript::asIScriptEngine* engine);
85void registerOgreGpuProgramParameters(AngelScript::asIScriptEngine* engine);
86void registerOgreLight(AngelScript::asIScriptEngine* engine);
87void registerOgreOverlay(AngelScript::asIScriptEngine* engine);
88void registerOgreOverlayElement(AngelScript::asIScriptEngine* engine);
89void registerOgreOverlayManager(AngelScript::asIScriptEngine* engine);
90
91// main registration method
92void RoR::RegisterOgreObjectsNative(AngelScript::asIScriptEngine* engine)
93{
94 int r;
95
96 // NOTE: data types, enums and object properties are registered in RegisterOgreObjectsCommon()
97
98 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
99
100 // dictionary/array view types, also under namespace `Ogre`
101
102 SceneManagerInstanceDict::RegisterReadonlyScriptDictView(engine, "SceneManagerInstanceDict", "SceneManager");
103 MovableObjectArray::RegisterReadonlyScriptArrayView(engine, "MovableObjectArray", "MovableObject");
104 ChildNodeArray::RegisterReadonlyScriptArrayView(engine, "ChildNodeArray", "Node");
105 AnimationStateDict::RegisterReadonlyScriptDictView(engine, "AnimationStateDict", "AnimationState");
106 SubMeshArray::RegisterReadonlyScriptArrayView(engine, "SubMeshArray", "SubMesh");
107 TechniqueArray::RegisterReadonlyScriptArrayView(engine, "TechniqueArray", "Technique");
108 PassArray::RegisterReadonlyScriptArrayView(engine, "PassArray", "Pass");
109 TextureUnitStateArray::RegisterReadonlyScriptArrayView(engine, "TextureUnitStateArray", "TextureUnitState");
110 SubEntityArray::RegisterReadonlyScriptArrayView(engine, "SubEntityArray", "SubEntity");
111
112 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
113
114 // Now we register the object properties and methods
115
116 registerOgreRadian(engine);
117 registerOgreDegree(engine);
118 registerOgreVector3(engine);
119 registerOgreVector2(engine);
122 registerOgreBox(engine);
123
124 registerOgreNode(engine);
126 registerOgreEntity(engine);
127 registerOgreSubEntity(engine);
128 registerOgreSceneNode(engine);
130 registerOgreRoot(engine);
133 registerOgreTexture(engine);
137 registerOgrePixelBox(engine);
138 registerOgreImage(engine);
139 registerOgreMesh(engine);
140 registerOgreSubMesh(engine);
142 registerOgreMaterial(engine);
143 registerOgreTechnique(engine);
144 registerOgrePass(engine);
147 registerOgreTimer(engine);
149 registerOgreLight(engine);
150 registerOgreOverlay(engine);
153
154 // To estabilish class hierarchy in AngelScript you need to register the reference cast operators opCast and opImplCast.
155
156 // - `SceneNode` derives from `Node`
157 r = engine->RegisterObjectMethod("Ogre::Node", "Ogre::SceneNode@ opCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::Node, Ogre::SceneNode>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
158 r = engine->RegisterObjectMethod("Ogre::SceneNode", "Ogre::Node@ opImplCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::SceneNode, Ogre::Node>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
159 // - `Entity` derives from `MovableObject`
160 r = engine->RegisterObjectMethod("Ogre::MovableObject", "Ogre::Entity@ opCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::Entity>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
161 r = engine->RegisterObjectMethod("Ogre::Entity", "Ogre::MovableObject@ opImplCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::Entity, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
162 // - `ManualObject` derives from `MovableObject`
163 r = engine->RegisterObjectMethod("Ogre::MovableObject", "Ogre::ManualObject@ opCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::ManualObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
164 r = engine->RegisterObjectMethod("Ogre::ManualObject", "Ogre::MovableObject@ opImplCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::ManualObject, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
165 // - `Light` derives from `MovableObject`
166 r = engine->RegisterObjectMethod("Ogre::MovableObject", "Ogre::Light@ opCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::Light>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
167 r = engine->RegisterObjectMethod("Ogre::Light", "Ogre::MovableObject@ opImplCast()", asFUNCTION((ScriptRefCastNoCount<Ogre::Light, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
168
169 // Also register the const overloads so the cast works also when the handle is read only
170
171 // - `SceneNode` derives from `Node`
172 r = engine->RegisterObjectMethod("Ogre::Node", "const Ogre::SceneNode@ opCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::Node, Ogre::SceneNode>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
173 r = engine->RegisterObjectMethod("Ogre::SceneNode", "const Ogre::Node@ opImplCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::SceneNode, Ogre::Node>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
174 // - `Entity` derives from `MovableObject`
175 r = engine->RegisterObjectMethod("Ogre::MovableObject", "const Ogre::Entity@ opCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::Entity>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
176 r = engine->RegisterObjectMethod("Ogre::Entity", "const Ogre::MovableObject@ opImplCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::Entity, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
177 // - `ManualObject` derives from `MovableObject`
178 r = engine->RegisterObjectMethod("Ogre::MovableObject", "const Ogre::ManualObject@ opCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::ManualObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
179 r = engine->RegisterObjectMethod("Ogre::ManualObject", "const Ogre::MovableObject@ opImplCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::ManualObject, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
180 // - `Light` derives from `MovableObject`
181 r = engine->RegisterObjectMethod("Ogre::MovableObject", "const Ogre::Light@ opCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::MovableObject, Ogre::Light>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
182 r = engine->RegisterObjectMethod("Ogre::Light", "const Ogre::MovableObject@ opImplCast() const", asFUNCTION((ScriptRefCastNoCount<Ogre::Light, Ogre::MovableObject>)), asCALL_CDECL_OBJLAST); assert(r >= 0);
183}
184
185// register Ogre::Vector3
186void registerOgreVector3(AngelScript::asIScriptEngine* engine)
187{
188 int r;
189
190 // Register the object constructors
191 r = engine->RegisterObjectBehaviour("vector3", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(Vector3DefaultConstructor), asCALL_CDECL_OBJLAST);
192 ROR_ASSERT( r >= 0 );
193 r = engine->RegisterObjectBehaviour("vector3", asBEHAVE_CONSTRUCT, "void f(float, float, float)", asFUNCTION(Vector3InitConstructor), asCALL_CDECL_OBJLAST);
194 ROR_ASSERT( r >= 0 );
195 r = engine->RegisterObjectBehaviour("vector3", asBEHAVE_CONSTRUCT, "void f(const vector3 &in)", asFUNCTION(Vector3CopyConstructor), asCALL_CDECL_OBJLAST);
196 ROR_ASSERT( r >= 0 );
197 r = engine->RegisterObjectBehaviour("vector3", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(Vector3InitConstructorScaler), asCALL_CDECL_OBJLAST);
198 ROR_ASSERT( r >= 0 );
199
200 // Register the object operators
201 r = engine->RegisterObjectMethod("vector3", "float opIndex(int) const", asMETHODPR(Vector3, operator[], (size_t) const, float), asCALL_THISCALL);
202 ROR_ASSERT( r >= 0 );
203 r = engine->RegisterObjectMethod("vector3", "vector3 &f(const vector3 &in)", asMETHODPR(Vector3, operator =, (const Vector3 &), Vector3&), asCALL_THISCALL);
204 ROR_ASSERT( r >= 0 );
205 r = engine->RegisterObjectMethod("vector3", "bool opEquals(const vector3 &in) const", asMETHODPR(Vector3, operator==,(const Vector3&) const, bool), asCALL_THISCALL);
206 ROR_ASSERT( r >= 0 );
207
208 r = engine->RegisterObjectMethod("vector3", "vector3 opAdd(const vector3 &in) const", asMETHODPR(Vector3, operator+,(const Vector3&) const, Vector3), asCALL_THISCALL);
209 ROR_ASSERT( r >= 0 );
210 r = engine->RegisterObjectMethod("vector3", "vector3 opSub(const vector3 &in) const", asMETHODPR(Vector3, operator-,(const Vector3&) const, Vector3), asCALL_THISCALL);
211 ROR_ASSERT( r >= 0 );
212
213 r = engine->RegisterObjectMethod("vector3", "vector3 opMul(float) const", asMETHODPR(Vector3, operator*,(const float) const, Vector3), asCALL_THISCALL);
214 ROR_ASSERT( r >= 0 );
215 r = engine->RegisterObjectMethod("vector3", "vector3 opMul(const vector3 &in) const", asMETHODPR(Vector3, operator*,(const Vector3&) const, Vector3), asCALL_THISCALL);
216 ROR_ASSERT( r >= 0 );
217 r = engine->RegisterObjectMethod("vector3", "vector3 opDiv(float) const", asMETHODPR(Vector3, operator/,(const float) const, Vector3), asCALL_THISCALL);
218 ROR_ASSERT( r >= 0 );
219 r = engine->RegisterObjectMethod("vector3", "vector3 opDiv(const vector3 &in) const", asMETHODPR(Vector3, operator/,(const Vector3&) const, Vector3), asCALL_THISCALL);
220 ROR_ASSERT( r >= 0 );
221
222 r = engine->RegisterObjectMethod("vector3", "vector3 opAdd() const", asMETHODPR(Vector3, operator+,() const, const Vector3&), asCALL_THISCALL);
223 ROR_ASSERT( r >= 0 );
224 r = engine->RegisterObjectMethod("vector3", "vector3 opSub() const", asMETHODPR(Vector3, operator-,() const, Vector3), asCALL_THISCALL);
225 ROR_ASSERT( r >= 0 );
226
227 //r = engine->RegisterObjectMethod("vector3", "vector3 opMul(float, const vector3 &in)", asMETHODPR(Vector3, operator*,(const float, const Vector3&), Vector3), asCALL_THISCALL); ROR_ASSERT( r >= 0 );
228
229 r = engine->RegisterObjectMethod("vector3", "vector3 &opAddAssign(const vector3 &in)", asMETHODPR(Vector3,operator+=,(const Vector3 &),Vector3&), asCALL_THISCALL);
230 ROR_ASSERT( r >= 0 );
231 r = engine->RegisterObjectMethod("vector3", "vector3 &opAddAssign(float)", asMETHODPR(Vector3,operator+=,(const float),Vector3&), asCALL_THISCALL);
232 ROR_ASSERT( r >= 0 );
233
234 r = engine->RegisterObjectMethod("vector3", "vector3 &opSubAssign(const vector3 &in)", asMETHODPR(Vector3,operator-=,(const Vector3 &),Vector3&), asCALL_THISCALL);
235 ROR_ASSERT( r >= 0 );
236 r = engine->RegisterObjectMethod("vector3", "vector3 &opSubAssign(float)", asMETHODPR(Vector3,operator-=,(const float),Vector3&), asCALL_THISCALL);
237 ROR_ASSERT( r >= 0 );
238
239 r = engine->RegisterObjectMethod("vector3", "vector3 &opMulAssign(const vector3 &in)", asMETHODPR(Vector3,operator*=,(const Vector3 &),Vector3&), asCALL_THISCALL);
240 ROR_ASSERT( r >= 0 );
241 r = engine->RegisterObjectMethod("vector3", "vector3 &opMulAssign(float)", asMETHODPR(Vector3,operator*=,(const float),Vector3&), asCALL_THISCALL);
242 ROR_ASSERT( r >= 0 );
243
244 //r = engine->RegisterObjectMethod("vector3", "vector3& operator @= ( const vector3& rkVector f( const Vector3& rkVector )", asMETHOD(Ogre::Vector3, f), asCALL_THISCALL); ROR_ASSERT(r>=0);
245
246 r = engine->RegisterObjectMethod("vector3", "vector3 &opDivAssign(const vector3 &in)", asMETHODPR(Vector3,operator/=,(const Vector3 &),Vector3&), asCALL_THISCALL);
247 ROR_ASSERT( r >= 0 );
248 r = engine->RegisterObjectMethod("vector3", "vector3 &opDivAssign(float)", asMETHODPR(Vector3,operator/=,(const float),Vector3&), asCALL_THISCALL);
249 ROR_ASSERT( r >= 0 );
250
251 // Register the object methods
252 // r = engine->RegisterObjectMethod("vector3", "void swap(vector3 &inout)", asMETHOD(Vector3,swap), asCALL_THISCALL); ROR_ASSERT( r >= 0 );
253
254 r = engine->RegisterObjectMethod("vector3", "float length() const", asMETHOD(Vector3,length), asCALL_THISCALL);
255 ROR_ASSERT( r >= 0 );
256 r = engine->RegisterObjectMethod("vector3", "float squaredLength() const", asMETHOD(Vector3,squaredLength), asCALL_THISCALL);
257 ROR_ASSERT( r >= 0 );
258
259 r = engine->RegisterObjectMethod("vector3", "float distance(const vector3 &in) const", asMETHOD(Vector3,distance), asCALL_THISCALL);
260 ROR_ASSERT( r >= 0 );
261 r = engine->RegisterObjectMethod("vector3", "float squaredDistance(const vector3 &in) const", asMETHOD(Vector3,squaredDistance), asCALL_THISCALL);
262 ROR_ASSERT( r >= 0 );
263
264 r = engine->RegisterObjectMethod("vector3", "float dotProduct(const vector3 &in) const", asMETHOD(Vector3,dotProduct), asCALL_THISCALL);
265 ROR_ASSERT( r >= 0 );
266 r = engine->RegisterObjectMethod("vector3", "float absDotProduct(const vector3 &in) const", asMETHOD(Vector3,absDotProduct), asCALL_THISCALL);
267 ROR_ASSERT( r >= 0 );
268
269 r = engine->RegisterObjectMethod("vector3", "float normalise()", asMETHOD(Vector3,normalise), asCALL_THISCALL);
270 ROR_ASSERT( r >= 0 );
271 r = engine->RegisterObjectMethod("vector3", "vector3 crossProduct(const vector3 &in) const", asMETHOD(Vector3,crossProduct), asCALL_THISCALL);
272 ROR_ASSERT( r >= 0 );
273 r = engine->RegisterObjectMethod("vector3", "vector3 midPoint(const vector3 &in) const", asMETHOD(Vector3,midPoint), asCALL_THISCALL);
274 ROR_ASSERT( r >= 0 );
275 r = engine->RegisterObjectMethod("vector3", "void makeFloor(const vector3 &in)", asMETHOD(Vector3,makeFloor), asCALL_THISCALL);
276 ROR_ASSERT( r >= 0 );
277 r = engine->RegisterObjectMethod("vector3", "void makeCeil(const vector3 &in)", asMETHOD(Vector3,makeCeil), asCALL_THISCALL);
278 ROR_ASSERT( r >= 0 );
279 r = engine->RegisterObjectMethod("vector3", "vector3 perpendicular() const", asMETHOD(Vector3,perpendicular), asCALL_THISCALL);
280 ROR_ASSERT( r >= 0 );
281 r = engine->RegisterObjectMethod("vector3", "vector3 randomDeviant(const radian &in, const vector3 &in) const", asMETHOD(Vector3,randomDeviant), asCALL_THISCALL);
282 ROR_ASSERT( r >= 0 );
283 r = engine->RegisterObjectMethod("vector3", "radian angleBetween(const vector3 &in)", asMETHOD(Vector3,angleBetween), asCALL_THISCALL);
284 ROR_ASSERT( r >= 0 );
285 r = engine->RegisterObjectMethod("vector3", "quaternion getRotationTo(const vector3 &in, const vector3 &in) const", asMETHOD(Vector3,getRotationTo), asCALL_THISCALL);
286 ROR_ASSERT( r >= 0 );
287 r = engine->RegisterObjectMethod("vector3", "bool isZeroLength() const", asMETHOD(Vector3,isZeroLength), asCALL_THISCALL);
288 ROR_ASSERT( r >= 0 );
289 r = engine->RegisterObjectMethod("vector3", "vector3 normalisedCopy() const", asMETHOD(Vector3,normalisedCopy), asCALL_THISCALL);
290 ROR_ASSERT( r >= 0 );
291 r = engine->RegisterObjectMethod("vector3", "vector3 reflect(const vector3 &in) const", asMETHOD(Vector3,reflect), asCALL_THISCALL);
292 ROR_ASSERT( r >= 0 );
293
294 r = engine->RegisterObjectMethod("vector3", "bool positionEquals(const vector3 &in, float) const", asMETHOD(Vector3,positionEquals), asCALL_THISCALL);
295 ROR_ASSERT( r >= 0 );
296 r = engine->RegisterObjectMethod("vector3", "bool positionCloses(const vector3 &in, float) const", asMETHOD(Vector3,positionCloses), asCALL_THISCALL);
297 ROR_ASSERT( r >= 0 );
298 r = engine->RegisterObjectMethod("vector3", "bool directionEquals(const vector3 &in, radian &in) const", asMETHOD(Vector3,directionEquals), asCALL_THISCALL);
299 ROR_ASSERT( r >= 0 );
300
301 r = engine->RegisterObjectMethod("vector3", "bool isNaN() const", asMETHOD(Vector3,isNaN), asCALL_THISCALL);
302 ROR_ASSERT( r >= 0 );
303}
304
305
306// register Ogre::Vector2
307void registerOgreVector2(AngelScript::asIScriptEngine* engine)
308{
309 int r;
310
311 // Register the object constructors
312 r = engine->RegisterObjectBehaviour("vector2", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(Vector2DefaultConstructor), asCALL_CDECL_OBJLAST);
313 ROR_ASSERT( r >= 0 );
314 r = engine->RegisterObjectBehaviour("vector2", asBEHAVE_CONSTRUCT, "void f(float, float)", asFUNCTION(Vector2InitConstructor), asCALL_CDECL_OBJLAST);
315 ROR_ASSERT( r >= 0 );
316 r = engine->RegisterObjectBehaviour("vector2", asBEHAVE_CONSTRUCT, "void f(const vector2 &in)", asFUNCTION(Vector2CopyConstructor), asCALL_CDECL_OBJLAST);
317 ROR_ASSERT( r >= 0 );
318 r = engine->RegisterObjectBehaviour("vector2", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(Vector2InitConstructorScaler), asCALL_CDECL_OBJLAST);
319 ROR_ASSERT( r >= 0 );
320
321 // Register the object operators
322 r = engine->RegisterObjectMethod("vector2", "float opIndex(int) const", asMETHODPR(Vector2, operator[], (size_t) const, float), asCALL_THISCALL);
323 ROR_ASSERT( r >= 0 );
324 r = engine->RegisterObjectMethod("vector2", "vector2 &f(const vector2 &in)", asMETHODPR(Vector2, operator =, (const Vector2 &), Vector2&), asCALL_THISCALL);
325 ROR_ASSERT( r >= 0 );
326 r = engine->RegisterObjectMethod("vector2", "bool opEquals(const vector2 &in) const", asMETHODPR(Vector2, operator==,(const Vector2&) const, bool), asCALL_THISCALL);
327 ROR_ASSERT( r >= 0 );
328
329 r = engine->RegisterObjectMethod("vector2", "vector2 opAdd(const vector2 &in) const", asMETHODPR(Vector2, operator+,(const Vector2&) const, Vector2), asCALL_THISCALL);
330 ROR_ASSERT( r >= 0 );
331 r = engine->RegisterObjectMethod("vector2", "vector2 opSub(const vector2 &in) const", asMETHODPR(Vector2, operator-,(const Vector2&) const, Vector2), asCALL_THISCALL);
332 ROR_ASSERT( r >= 0 );
333
334 r = engine->RegisterObjectMethod("vector2", "vector2 opMul(float) const", asMETHODPR(Vector2, operator*,(const float) const, Vector2), asCALL_THISCALL);
335 ROR_ASSERT( r >= 0 );
336 r = engine->RegisterObjectMethod("vector2", "vector2 opMul(const vector2 &in) const", asMETHODPR(Vector2, operator*,(const Vector2&) const, Vector2), asCALL_THISCALL);
337 ROR_ASSERT( r >= 0 );
338 r = engine->RegisterObjectMethod("vector2", "vector2 opDiv(float) const", asMETHODPR(Vector2, operator/,(const float) const, Vector2), asCALL_THISCALL);
339 ROR_ASSERT( r >= 0 );
340 r = engine->RegisterObjectMethod("vector2", "vector2 opDiv(const vector2 &in) const", asMETHODPR(Vector2, operator/,(const Vector2&) const, Vector2), asCALL_THISCALL);
341 ROR_ASSERT( r >= 0 );
342
343 r = engine->RegisterObjectMethod("vector2", "vector2 opAdd() const", asMETHODPR(Vector2, operator+,() const, const Vector2&), asCALL_THISCALL);
344 ROR_ASSERT( r >= 0 );
345 r = engine->RegisterObjectMethod("vector2", "vector2 opSub() const", asMETHODPR(Vector2, operator-,() const, Vector2), asCALL_THISCALL);
346 ROR_ASSERT( r >= 0 );
347
348 r = engine->RegisterObjectMethod("vector2", "vector2 &opAddAssign(const vector2 &in)", asMETHODPR(Vector2,operator+=,(const Vector2 &),Vector2&), asCALL_THISCALL);
349 ROR_ASSERT( r >= 0 );
350 r = engine->RegisterObjectMethod("vector2", "vector2 &opAddAssign(float)", asMETHODPR(Vector2,operator+=,(const float),Vector2&), asCALL_THISCALL);
351 ROR_ASSERT( r >= 0 );
352
353 r = engine->RegisterObjectMethod("vector2", "vector2 &opSubAssign(const vector2 &in)", asMETHODPR(Vector2,operator-=,(const Vector2 &),Vector2&), asCALL_THISCALL);
354 ROR_ASSERT( r >= 0 );
355 r = engine->RegisterObjectMethod("vector2", "vector2 &opSubAssign(float)", asMETHODPR(Vector2,operator-=,(const float),Vector2&), asCALL_THISCALL);
356 ROR_ASSERT( r >= 0 );
357
358 r = engine->RegisterObjectMethod("vector2", "vector2 &opMulAssign(const vector2 &in)", asMETHODPR(Vector2,operator*=,(const Vector2 &),Vector2&), asCALL_THISCALL);
359 ROR_ASSERT( r >= 0 );
360 r = engine->RegisterObjectMethod("vector2", "vector2 &opMulAssign(float)", asMETHODPR(Vector2,operator*=,(const float),Vector2&), asCALL_THISCALL);
361 ROR_ASSERT( r >= 0 );
362
363 r = engine->RegisterObjectMethod("vector2", "vector2 &opDivAssign(const vector2 &in)", asMETHODPR(Vector2,operator/=,(const Vector2 &),Vector2&), asCALL_THISCALL);
364 ROR_ASSERT( r >= 0 );
365 r = engine->RegisterObjectMethod("vector2", "vector2 &opDivAssign(float)", asMETHODPR(Vector2,operator/=,(const float),Vector2&), asCALL_THISCALL);
366 ROR_ASSERT( r >= 0 );
367
368 // Register the object methods
369
370 r = engine->RegisterObjectMethod("vector2", "float length() const", asMETHOD(Vector2,length), asCALL_THISCALL);
371 ROR_ASSERT( r >= 0 );
372 r = engine->RegisterObjectMethod("vector2", "float squaredLength() const", asMETHOD(Vector2,squaredLength), asCALL_THISCALL);
373 ROR_ASSERT( r >= 0 );
374
375 r = engine->RegisterObjectMethod("vector2", "float distance(const vector2 &in) const", asMETHOD(Vector2,distance), asCALL_THISCALL);
376 ROR_ASSERT( r >= 0 );
377 r = engine->RegisterObjectMethod("vector2", "float squaredDistance(const vector2 &in) const", asMETHOD(Vector2,squaredDistance), asCALL_THISCALL);
378 ROR_ASSERT( r >= 0 );
379
380 r = engine->RegisterObjectMethod("vector2", "float dotProduct(const vector2 &in) const", asMETHOD(Vector2,dotProduct), asCALL_THISCALL);
381 ROR_ASSERT( r >= 0 );
382
383 r = engine->RegisterObjectMethod("vector2", "float normalise()", asMETHOD(Vector2,normalise), asCALL_THISCALL);
384 ROR_ASSERT( r >= 0 );
385 r = engine->RegisterObjectMethod("vector2", "float crossProduct(const vector2 &in) const", asMETHOD(Vector2,crossProduct), asCALL_THISCALL);
386 ROR_ASSERT( r >= 0 );
387 r = engine->RegisterObjectMethod("vector2", "vector2 midPoint(const vector2 &in) const", asMETHOD(Vector2,midPoint), asCALL_THISCALL);
388 ROR_ASSERT( r >= 0 );
389 r = engine->RegisterObjectMethod("vector2", "void makeFloor(const vector2 &in)", asMETHOD(Vector2,makeFloor), asCALL_THISCALL);
390 ROR_ASSERT( r >= 0 );
391 r = engine->RegisterObjectMethod("vector2", "void makeCeil(const vector2 &in)", asMETHOD(Vector2,makeCeil), asCALL_THISCALL);
392 ROR_ASSERT( r >= 0 );
393 r = engine->RegisterObjectMethod("vector2", "vector2 perpendicular() const", asMETHOD(Vector2,perpendicular), asCALL_THISCALL);
394 ROR_ASSERT( r >= 0 );
395 r = engine->RegisterObjectMethod("vector2", "vector2 randomDeviant(const radian &in, const vector2 &in) const", asMETHOD(Vector2,randomDeviant), asCALL_THISCALL);
396 ROR_ASSERT( r >= 0 );
397 r = engine->RegisterObjectMethod("vector2", "radian angleBetween(const vector2 &in)", asMETHOD(Vector2,angleBetween), asCALL_THISCALL);
398 ROR_ASSERT( r >= 0 );
399 r = engine->RegisterObjectMethod("vector2", "bool isZeroLength() const", asMETHOD(Vector2,isZeroLength), asCALL_THISCALL);
400 ROR_ASSERT( r >= 0 );
401 r = engine->RegisterObjectMethod("vector2", "vector2 normalisedCopy() const", asMETHOD(Vector2,normalisedCopy), asCALL_THISCALL);
402 ROR_ASSERT( r >= 0 );
403 r = engine->RegisterObjectMethod("vector2", "vector2 reflect(const vector2 &in) const", asMETHOD(Vector2,reflect), asCALL_THISCALL);
404 ROR_ASSERT( r >= 0 );
405
406 r = engine->RegisterObjectMethod("vector2", "bool positionEquals(const vector2 &in, float) const", asMETHOD(Vector2,positionEquals), asCALL_THISCALL);
407 ROR_ASSERT( r >= 0 );
408
409 r = engine->RegisterObjectMethod("vector2", "bool isNaN() const", asMETHOD(Vector2,isNaN), asCALL_THISCALL);
410 ROR_ASSERT( r >= 0 );
411}
412
413void registerOgreRadian(AngelScript::asIScriptEngine* engine)
414{
415 int r;
416
417 // Register the object constructors
418 r = engine->RegisterObjectBehaviour("radian", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(RadianDefaultConstructor), asCALL_CDECL_OBJLAST);
419 ROR_ASSERT( r >= 0 );
420 r = engine->RegisterObjectBehaviour("radian", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(RadianInitConstructor), asCALL_CDECL_OBJLAST);
421 ROR_ASSERT( r >= 0 );
422 r = engine->RegisterObjectBehaviour("radian", asBEHAVE_CONSTRUCT, "void f(const radian &in)", asFUNCTION(RadianCopyConstructor), asCALL_CDECL_OBJLAST);
423 ROR_ASSERT( r >= 0 );
424
425 // Disabled during port to latest AngelScript because `asBEHAVE_IMPLICIT_VALUE_CAST` is deprecated.
426 // TODO: Research and restore it ~ only_a_ptr, 08/2017
427 // // Register other object behaviours
428 // r = engine->RegisterObjectBehaviour("radian", asBEHAVE_IMPLICIT_VALUE_CAST, "float f() const", asMETHOD(Radian,valueRadians), asCALL_THISCALL);
429 // ROR_ASSERT( r >= 0 );
430 // r = engine->RegisterObjectBehaviour("radian", asBEHAVE_IMPLICIT_VALUE_CAST, "double f() const", asMETHOD(Radian,valueRadians), asCALL_THISCALL);
431 // ROR_ASSERT( r >= 0 );
432
433 // Register the object operators
434 r = engine->RegisterObjectMethod("radian", "radian &opAssign(const radian &in)", asMETHODPR(Radian, operator =, (const Radian &), Radian&), asCALL_THISCALL);
435 ROR_ASSERT( r >= 0 );
436 r = engine->RegisterObjectMethod("radian", "radian &opAssign(const float)", asMETHODPR(Radian, operator =, (const float &), Radian&), asCALL_THISCALL);
437 ROR_ASSERT( r >= 0 );
438 r = engine->RegisterObjectMethod("radian", "radian &opAssign(const degree &in)", asMETHODPR(Radian, operator =, (const Degree &), Radian&), asCALL_THISCALL);
439 ROR_ASSERT( r >= 0 );
440
441 r = engine->RegisterObjectMethod("radian", "radian opAdd() const", asMETHODPR(Radian, operator+,() const, const Radian&), asCALL_THISCALL);
442 ROR_ASSERT( r >= 0 );
443 r = engine->RegisterObjectMethod("radian", "radian opAdd(const radian &in) const", asMETHODPR(Radian, operator+,(const Radian&) const, Radian), asCALL_THISCALL);
444 ROR_ASSERT( r >= 0 );
445 r = engine->RegisterObjectMethod("radian", "radian opAdd(const degree &in) const", asMETHODPR(Radian, operator+,(const Degree&) const, Radian), asCALL_THISCALL);
446 ROR_ASSERT( r >= 0 );
447
448 r = engine->RegisterObjectMethod("radian", "radian &opAddAssign(const radian &in)", asMETHODPR(Radian,operator+=,(const Radian &),Radian&), asCALL_THISCALL);
449 ROR_ASSERT( r >= 0 );
450 r = engine->RegisterObjectMethod("radian", "radian &opAddAssign(const degree &in)", asMETHODPR(Radian,operator+=,(const Degree &),Radian&), asCALL_THISCALL);
451 ROR_ASSERT( r >= 0 );
452
453 r = engine->RegisterObjectMethod("radian", "radian opSub() const", asMETHODPR(Radian, operator-,() const, Radian), asCALL_THISCALL);
454 ROR_ASSERT( r >= 0 );
455 r = engine->RegisterObjectMethod("radian", "radian opSub(const radian &in) const", asMETHODPR(Radian, operator-,(const Radian&) const, Radian), asCALL_THISCALL);
456 ROR_ASSERT( r >= 0 );
457 r = engine->RegisterObjectMethod("radian", "radian opSub(const degree &in) const", asMETHODPR(Radian, operator-,(const Degree&) const, Radian), asCALL_THISCALL);
458 ROR_ASSERT( r >= 0 );
459
460 r = engine->RegisterObjectMethod("radian", "radian &opSubAssign(const radian &in)", asMETHODPR(Radian,operator-=,(const Radian &),Radian&), asCALL_THISCALL);
461 ROR_ASSERT( r >= 0 );
462 r = engine->RegisterObjectMethod("radian", "radian &opSubAssign(const degree &in)", asMETHODPR(Radian,operator-=,(const Degree &),Radian&), asCALL_THISCALL);
463 ROR_ASSERT( r >= 0 );
464
465 r = engine->RegisterObjectMethod("radian", "radian opMul(float) const", asMETHODPR(Radian, operator*,(float) const, Radian), asCALL_THISCALL);
466 ROR_ASSERT( r >= 0 );
467 r = engine->RegisterObjectMethod("radian", "radian opMul(const radian &in) const", asMETHODPR(Radian, operator*,(const Radian&) const, Radian), asCALL_THISCALL);
468 ROR_ASSERT( r >= 0 );
469
470 r = engine->RegisterObjectMethod("radian", "radian &opMulAssign(float)", asMETHODPR(Radian,operator*=,(float),Radian&), asCALL_THISCALL);
471 ROR_ASSERT( r >= 0 );
472
473 r = engine->RegisterObjectMethod("radian", "radian opDiv(float) const", asMETHODPR(Radian, operator/,(float) const, Radian), asCALL_THISCALL);
474 ROR_ASSERT( r >= 0 );
475
476 r = engine->RegisterObjectMethod("radian", "radian &opDivAssign(float)", asMETHODPR(Radian,operator*=,(float),Radian&), asCALL_THISCALL);
477 ROR_ASSERT( r >= 0 );
478
479 r = engine->RegisterObjectMethod("radian", "int opCmp(const radian &in) const", asFUNCTION(RadianCmp), asCALL_CDECL_OBJFIRST);
480 ROR_ASSERT( r >= 0 );
481
482 r = engine->RegisterObjectMethod("radian", "bool opEquals(const radian &in) const", asMETHODPR(Radian, operator==,(const Radian&) const, bool), asCALL_THISCALL);
483 ROR_ASSERT( r >= 0 );
484
485 // Register the object methods
486 r = engine->RegisterObjectMethod("radian", "float valueDegrees() const", asMETHOD(Radian,valueDegrees), asCALL_THISCALL);
487 ROR_ASSERT( r >= 0 );
488 r = engine->RegisterObjectMethod("radian", "float valueRadians() const", asMETHOD(Radian,valueRadians), asCALL_THISCALL);
489 ROR_ASSERT( r >= 0 );
490 r = engine->RegisterObjectMethod("radian", "float valueAngleUnits() const", asMETHOD(Radian,valueAngleUnits), asCALL_THISCALL);
491 ROR_ASSERT( r >= 0 );
492}
493
494void registerOgreDegree(AngelScript::asIScriptEngine* engine)
495{
496 int r;
497
498 // Register the object constructors
499 r = engine->RegisterObjectBehaviour("degree", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(DegreeDefaultConstructor), asCALL_CDECL_OBJLAST);
500 ROR_ASSERT( r >= 0 );
501 r = engine->RegisterObjectBehaviour("degree", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(DegreeInitConstructor), asCALL_CDECL_OBJLAST);
502 ROR_ASSERT( r >= 0 );
503 r = engine->RegisterObjectBehaviour("degree", asBEHAVE_CONSTRUCT, "void f(const degree &in)", asFUNCTION(DegreeCopyConstructor), asCALL_CDECL_OBJLAST);
504 ROR_ASSERT( r >= 0 );
505
506 // Disabled during port to latest AngelScript because `asBEHAVE_IMPLICIT_VALUE_CAST` is deprecated.
507 // TODO: Research and restore it ~ only_a_ptr, 08/2017
508 // // Register other object behaviours
509 // r = engine->RegisterObjectBehaviour("degree", asBEHAVE_IMPLICIT_VALUE_CAST, "float f() const", asMETHOD(Degree,valueDegrees), asCALL_THISCALL);
510 // ROR_ASSERT( r >= 0 );
511 // r = engine->RegisterObjectBehaviour("degree", asBEHAVE_IMPLICIT_VALUE_CAST, "double f() const", asMETHOD(Degree,valueDegrees), asCALL_THISCALL);
512 // ROR_ASSERT( r >= 0 );
513
514 // Register the object operators
515 r = engine->RegisterObjectMethod("degree", "degree &opAssign(const degree &in)", asMETHODPR(Degree, operator =, (const Degree &), Degree&), asCALL_THISCALL);
516 ROR_ASSERT( r >= 0 );
517 r = engine->RegisterObjectMethod("degree", "degree &opAssign(float)", asMETHODPR(Degree, operator =, (const float &), Degree&), asCALL_THISCALL);
518 ROR_ASSERT( r >= 0 );
519 r = engine->RegisterObjectMethod("degree", "degree &opAssign(const radian &in)", asMETHODPR(Degree, operator =, (const Radian &), Degree&), asCALL_THISCALL);
520 ROR_ASSERT( r >= 0 );
521
522 r = engine->RegisterObjectMethod("degree", "degree opAdd() const", asMETHODPR(Degree, operator+,() const, const Degree&), asCALL_THISCALL);
523 ROR_ASSERT( r >= 0 );
524 r = engine->RegisterObjectMethod("degree", "degree opAdd(const degree &in) const", asMETHODPR(Degree, operator+,(const Degree&) const, Degree), asCALL_THISCALL);
525 ROR_ASSERT( r >= 0 );
526 r = engine->RegisterObjectMethod("degree", "degree opAdd(const radian &in) const", asMETHODPR(Degree, operator+,(const Radian&) const, Degree), asCALL_THISCALL);
527 ROR_ASSERT( r >= 0 );
528
529 r = engine->RegisterObjectMethod("degree", "degree &opAddAssign(const degree &in)", asMETHODPR(Degree,operator+=,(const Degree &),Degree&), asCALL_THISCALL);
530 ROR_ASSERT( r >= 0 );
531 r = engine->RegisterObjectMethod("degree", "degree &opAddAssign(const radian &in)", asMETHODPR(Degree,operator+=,(const Radian &),Degree&), asCALL_THISCALL);
532 ROR_ASSERT( r >= 0 );
533
534 r = engine->RegisterObjectMethod("degree", "degree opSub() const", asMETHODPR(Degree, operator-,() const, Degree), asCALL_THISCALL);
535 ROR_ASSERT( r >= 0 );
536 r = engine->RegisterObjectMethod("degree", "degree opSub(const degree &in) const", asMETHODPR(Degree, operator-,(const Degree&) const, Degree), asCALL_THISCALL);
537 ROR_ASSERT( r >= 0 );
538 r = engine->RegisterObjectMethod("degree", "degree opSub(const radian &in) const", asMETHODPR(Degree, operator-,(const Radian&) const, Degree), asCALL_THISCALL);
539 ROR_ASSERT( r >= 0 );
540
541 r = engine->RegisterObjectMethod("degree", "degree &opSubAssign(const degree &in)", asMETHODPR(Degree,operator-=,(const Degree &),Degree&), asCALL_THISCALL);
542 ROR_ASSERT( r >= 0 );
543 r = engine->RegisterObjectMethod("degree", "degree &opSubAssign(const radian &in)", asMETHODPR(Degree,operator-=,(const Radian &),Degree&), asCALL_THISCALL);
544 ROR_ASSERT( r >= 0 );
545
546 r = engine->RegisterObjectMethod("degree", "degree opMul(float) const", asMETHODPR(Degree, operator*,(float) const, Degree), asCALL_THISCALL);
547 ROR_ASSERT( r >= 0 );
548 r = engine->RegisterObjectMethod("degree", "degree opMul(const degree &in) const", asMETHODPR(Degree, operator*,(const Degree&) const, Degree), asCALL_THISCALL);
549 ROR_ASSERT( r >= 0 );
550
551 r = engine->RegisterObjectMethod("degree", "degree &opMulAssign(float)", asMETHODPR(Degree,operator*=,(float),Degree&), asCALL_THISCALL);
552 ROR_ASSERT( r >= 0 );
553
554 r = engine->RegisterObjectMethod("degree", "degree opDiv(float) const", asMETHODPR(Degree, operator/,(float) const, Degree), asCALL_THISCALL);
555 ROR_ASSERT( r >= 0 );
556
557 r = engine->RegisterObjectMethod("degree", "degree &opDivAssign(float)", asMETHODPR(Degree,operator*=,(float),Degree&), asCALL_THISCALL);
558 ROR_ASSERT( r >= 0 );
559
560 r = engine->RegisterObjectMethod("degree", "int opCmp(const degree &in) const", asFUNCTION(DegreeCmp), asCALL_CDECL_OBJFIRST);
561 ROR_ASSERT( r >= 0 );
562
563 r = engine->RegisterObjectMethod("degree", "bool opEquals(const degree &in) const", asMETHODPR(Degree, operator==,(const Degree&) const, bool), asCALL_THISCALL);
564 ROR_ASSERT( r >= 0 );
565
566 // Register the object methods
567 r = engine->RegisterObjectMethod("degree", "float valueRadians() const", asMETHOD(Degree,valueRadians), asCALL_THISCALL);
568 ROR_ASSERT( r >= 0 );
569 r = engine->RegisterObjectMethod("degree", "float valueDegrees() const", asMETHOD(Degree,valueDegrees), asCALL_THISCALL);
570 ROR_ASSERT( r >= 0 );
571 r = engine->RegisterObjectMethod("degree", "float valueAngleUnits() const", asMETHOD(Degree,valueAngleUnits), asCALL_THISCALL);
572 ROR_ASSERT( r >= 0 );
573}
574
575void registerOgreQuaternion(AngelScript::asIScriptEngine* engine)
576{
577 int r;
578
579 // Register the object constructors
580 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(QuaternionDefaultConstructor), asCALL_CDECL_OBJLAST);
581 ROR_ASSERT( r >= 0 );
582 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f(const radian &in, const vector3 &in)", asFUNCTION(QuaternionInitConstructor1), asCALL_CDECL_OBJLAST);
583 ROR_ASSERT( r >= 0 );
584 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f(float, float, float, float)", asFUNCTION(QuaternionInitConstructor2), asCALL_CDECL_OBJLAST);
585 ROR_ASSERT( r >= 0 );
586 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f(const vector3 &in, const vector3 &in, const vector3 &in)", asFUNCTION(QuaternionInitConstructor3), asCALL_CDECL_OBJLAST);
587 ROR_ASSERT( r >= 0 );
588 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f(float)", asFUNCTION(QuaternionInitConstructorScaler), asCALL_CDECL_OBJLAST);
589 ROR_ASSERT( r >= 0 );
590 r = engine->RegisterObjectBehaviour("quaternion", asBEHAVE_CONSTRUCT, "void f(const quaternion &in)", asFUNCTION(QuaternionCopyConstructor), asCALL_CDECL_OBJLAST);
591 ROR_ASSERT( r >= 0 );
592
593 // Register the object operators
594 r = engine->RegisterObjectMethod("quaternion", "float opIndex(int) const", asMETHODPR(Quaternion, operator[], (size_t) const, float), asCALL_THISCALL);
595 ROR_ASSERT( r >= 0 );
596 r = engine->RegisterObjectMethod("quaternion", "quaternion &opAssign(const quaternion &in)", asMETHODPR(Quaternion, operator =, (const Quaternion &), Quaternion&), asCALL_THISCALL);
597 ROR_ASSERT( r >= 0 );
598 r = engine->RegisterObjectMethod("quaternion", "quaternion opAdd(const quaternion &in) const", asMETHODPR(Quaternion, operator+,(const Quaternion&) const, Quaternion), asCALL_THISCALL);
599 ROR_ASSERT( r >= 0 );
600 r = engine->RegisterObjectMethod("quaternion", "quaternion opSub(const quaternion &in) const", asMETHODPR(Quaternion, operator-,(const Quaternion&) const, Quaternion), asCALL_THISCALL);
601 ROR_ASSERT( r >= 0 );
602 r = engine->RegisterObjectMethod("quaternion", "quaternion opMul(const quaternion &in) const", asMETHODPR(Quaternion, operator*,(const Quaternion&) const, Quaternion), asCALL_THISCALL);
603 ROR_ASSERT( r >= 0 );
604 r = engine->RegisterObjectMethod("quaternion", "quaternion opMul(float) const", asMETHODPR(Quaternion, operator*,(float) const, Quaternion), asCALL_THISCALL);
605 ROR_ASSERT( r >= 0 );
606 r = engine->RegisterObjectMethod("quaternion", "quaternion opSub() const", asMETHODPR(Quaternion, operator-,() const, Quaternion), asCALL_THISCALL);
607 ROR_ASSERT( r >= 0 );
608 r = engine->RegisterObjectMethod("quaternion", "bool opEquals(const quaternion &in) const", asMETHODPR(Quaternion, operator==,(const Quaternion&) const, bool), asCALL_THISCALL);
609 ROR_ASSERT( r >= 0 );
610 r = engine->RegisterObjectMethod("quaternion", "vector3 opMul(const vector3 &in) const", asMETHODPR(Quaternion, operator*,(const Vector3&) const, Vector3), asCALL_THISCALL);
611 ROR_ASSERT( r >= 0 );
612
613 // Register the object methods
614 r = engine->RegisterObjectMethod("quaternion", "float Dot(const quaternion &in) const", asMETHOD(Quaternion,Dot), asCALL_THISCALL);
615 ROR_ASSERT( r >= 0 );
616 r = engine->RegisterObjectMethod("quaternion", "float Norm() const", asMETHOD(Quaternion,Norm), asCALL_THISCALL);
617 ROR_ASSERT( r >= 0 );
618 r = engine->RegisterObjectMethod("quaternion", "float normalise()", asMETHOD(Quaternion,normalise), asCALL_THISCALL);
619 ROR_ASSERT( r >= 0 );
620 r = engine->RegisterObjectMethod("quaternion", "quaternion Inverse() const", asMETHOD(Quaternion,Inverse), asCALL_THISCALL);
621 ROR_ASSERT( r >= 0 );
622 r = engine->RegisterObjectMethod("quaternion", "quaternion UnitInverse() const", asMETHOD(Quaternion,UnitInverse), asCALL_THISCALL);
623 ROR_ASSERT( r >= 0 );
624 r = engine->RegisterObjectMethod("quaternion", "quaternion Exp() const", asMETHOD(Quaternion,Exp), asCALL_THISCALL);
625 ROR_ASSERT( r >= 0 );
626 r = engine->RegisterObjectMethod("quaternion", "quaternion Log() const", asMETHOD(Quaternion,Log), asCALL_THISCALL);
627 ROR_ASSERT( r >= 0 );
628 r = engine->RegisterObjectMethod("quaternion", "radian getRoll(bool reprojectAxis = true) const", asMETHOD(Quaternion,getRoll), asCALL_THISCALL);
629 ROR_ASSERT( r >= 0 );
630 r = engine->RegisterObjectMethod("quaternion", "radian getPitch(bool reprojectAxis = true) const", asMETHOD(Quaternion,getPitch), asCALL_THISCALL);
631 ROR_ASSERT( r >= 0 );
632 r = engine->RegisterObjectMethod("quaternion", "radian getYaw(bool reprojectAxis = true) const", asMETHOD(Quaternion,getYaw), asCALL_THISCALL);
633 ROR_ASSERT( r >= 0 );
634 r = engine->RegisterObjectMethod("quaternion", "bool equals(const quaternion &in, const radian &in) const", asMETHOD(Quaternion,equals), asCALL_THISCALL);
635 ROR_ASSERT( r >= 0 );
636 r = engine->RegisterObjectMethod("quaternion", "bool isNaN() const", asMETHOD(Quaternion,isNaN), asCALL_THISCALL);
637 ROR_ASSERT( r >= 0 );
638
639 // Register some static methods
640 r = engine->RegisterGlobalFunction("quaternion Slerp(float, const quaternion &in, const quaternion &in, bool &in)", asFUNCTIONPR(Quaternion::Slerp,(Real fT, const Quaternion&, const Quaternion&, bool), Quaternion), asCALL_CDECL);
641 ROR_ASSERT( r >= 0 );
642 r = engine->RegisterGlobalFunction("quaternion SlerpExtraSpins(float, const quaternion &in, const quaternion &in, int &in)", asFUNCTION(Quaternion::SlerpExtraSpins), asCALL_CDECL);
643 ROR_ASSERT( r >= 0 );
644 r = engine->RegisterGlobalFunction("void Intermediate(const quaternion &in, const quaternion &in, const quaternion &in, const quaternion &in, const quaternion &in)", asFUNCTION(Quaternion::Intermediate), asCALL_CDECL);
645 ROR_ASSERT( r >= 0 );
646 r = engine->RegisterGlobalFunction("quaternion Squad(float, const quaternion &in, const quaternion &in, const quaternion &in, const quaternion &in, bool &in)", asFUNCTION(Quaternion::Squad), asCALL_CDECL);
647 ROR_ASSERT( r >= 0 );
648 r = engine->RegisterGlobalFunction("quaternion nlerp(float, const quaternion &in, const quaternion &in, bool &in)", asFUNCTION(Quaternion::nlerp), asCALL_CDECL);
649 ROR_ASSERT( r >= 0 );
650}
651
652void registerOgreColourValue(AngelScript::asIScriptEngine* engine)
653{
654 int r;
655
656 // Register the object constructors
657 r = engine->RegisterObjectBehaviour("color", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(ColourValueDefaultConstructor), asCALL_CDECL_OBJLAST);
658 ROR_ASSERT( r >= 0 );
659 r = engine->RegisterObjectBehaviour("color", asBEHAVE_CONSTRUCT, "void f(float r, float g, float b, float a)", asFUNCTION(ColourValueInitConstructor), asCALL_CDECL_OBJLAST);
660 ROR_ASSERT( r >= 0 );
661 r = engine->RegisterObjectBehaviour("color", asBEHAVE_CONSTRUCT, "void f(const color &other)", asFUNCTION(QuaternionCopyConstructor), asCALL_CDECL_OBJLAST);
662}
663
664void registerOgreBox(AngelScript::asIScriptEngine* engine)
665{
666 int r;
667
668 // Register the object constructors
669 r = engine->RegisterObjectBehaviour("box", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(BoxDefaultConstructor), asCALL_CDECL_OBJLAST);
670 ROR_ASSERT( r >= 0 );
671 r = engine->RegisterObjectBehaviour("box", asBEHAVE_CONSTRUCT, "void f(uint32 l, uint32 t, uint32 r, uint32 b)", asFUNCTION(BoxInitConstructor), asCALL_CDECL_OBJLAST);
672 ROR_ASSERT( r >= 0 );
673 r = engine->RegisterObjectBehaviour("box", asBEHAVE_CONSTRUCT, "void f(const box &other)", asFUNCTION(BoxCopyConstructor), asCALL_CDECL_OBJLAST);
674
675 // Register other behaviors
676 r = engine->RegisterObjectBehaviour("box", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(BoxDestructor), asCALL_CDECL_OBJLAST);
677 ROR_ASSERT(r >= 0);
678 r = engine->RegisterObjectMethod("box", "box& opAssign(const box&in)", asFUNCTION(BoxAssignOperator), asCALL_CDECL_OBJLAST);
679 ROR_ASSERT(r >= 0);
680}
681
682void registerOgreTexture(AngelScript::asIScriptEngine* engine)
683{
684 int r;
685 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
686
687 r = engine->RegisterObjectBehaviour("TexturePtr", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(TexturePtrDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
688 r = engine->RegisterObjectBehaviour("TexturePtr", asBEHAVE_CONSTRUCT, "void f(const TexturePtr&in)", asFUNCTION(TexturePtrCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
689 r = engine->RegisterObjectBehaviour("TexturePtr", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(TexturePtrDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
690 r = engine->RegisterObjectMethod("TexturePtr", "TexturePtr& opAssign(const TexturePtr&in)", asFUNCTION(TexturePtrAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
691 r = engine->RegisterObjectMethod("TexturePtr", "bool isNull()", asFUNCTION(TexturePtrIsNull), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
692
693 // Wrappers are inevitable, see https://www.gamedev.net/forums/topic/540419-custom-smartpointers-and-angelscript-/
694 r = engine->RegisterObjectMethod("TexturePtr", "string getName() const", asFUNCTION(TexturePtrGetName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
695 r = engine->RegisterObjectMethod("TexturePtr", "uint getWidth()", asFUNCTION(TexturePtrGetWidth), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
696 r = engine->RegisterObjectMethod("TexturePtr", "uint getHeight()", asFUNCTION(TexturePtrGetHeight), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
697 r = engine->RegisterObjectMethod("TexturePtr", "uint getNumMipmaps()", asFUNCTION(TexturePtrGetNumMipmaps), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
698 r = engine->RegisterObjectMethod("TexturePtr", "HardwarePixelBufferPtr getBuffer(uint, uint)", asFUNCTION(TexturePtrGetBuffer), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
699
700 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
701}
702
703void registerOgreTextureManager(AngelScript::asIScriptEngine * engine)
704{
705 int r;
706 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
707
708 // Convenience wrapper to omit optional parameters
709 r = engine->RegisterObjectMethod("TextureManager", "TexturePtr load(const string&in file, const string&in rg)", asFUNCTION(TextureManagerLoad), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
710
711 r = engine->SetDefaultNamespace("Ogre::TextureManager"); ROR_ASSERT(r >= 0);
712 r = engine->RegisterGlobalFunction("TextureManager& getSingleton()", asFUNCTION(TextureManager::getSingleton), asCALL_CDECL); ROR_ASSERT(r >= 0);
713
714 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
715}
716
717template <typename T>
718void registerOgreMovableObjectBase(AngelScript::asIScriptEngine* engine, const char* obj)
719{
720 int r;
721 r = engine->RegisterObjectMethod(obj, "string __getUniqueName() const", asFUNCTION(MovableObjectGetUniqueNameMixin), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
722
723 r = engine->RegisterObjectMethod(obj, "const string& getName() const", asMETHOD(MovableObject, getName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
724 r = engine->RegisterObjectMethod(obj, "const string& getMovableType() const", asMETHOD(MovableObject, getMovableType), asCALL_THISCALL); ROR_ASSERT(r >= 0);
725
726 r = engine->RegisterObjectMethod(obj, "Node@ getParentNode()", asMETHOD(MovableObject, getParentNode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
727 r = engine->RegisterObjectMethod(obj, "SceneNode@ getParentSceneNode()", asMETHOD(MovableObject, getParentSceneNode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
728 r = engine->RegisterObjectMethod(obj, "bool isParentTagPoint() const", asMETHOD(MovableObject, isParentTagPoint), asCALL_THISCALL); ROR_ASSERT(r >= 0);
729 r = engine->RegisterObjectMethod(obj, "bool isAttached() const", asMETHOD(MovableObject, isAttached), asCALL_THISCALL); ROR_ASSERT(r >= 0);
730 r = engine->RegisterObjectMethod(obj, "void detachFromParent()", asMETHOD(MovableObject, detachFromParent), asCALL_THISCALL); ROR_ASSERT(r >= 0);
731
732 r = engine->RegisterObjectMethod(obj, "bool isInScene() const", asMETHOD(MovableObject, isInScene), asCALL_THISCALL); ROR_ASSERT(r >= 0);
733 r = engine->RegisterObjectMethod(obj, "float getBoundingRadius() const", asMETHOD(MovableObject, getBoundingRadius), asCALL_THISCALL); ROR_ASSERT(r >= 0);
734
735 r = engine->RegisterObjectMethod(obj, "void setVisible(bool visible)", asMETHOD(MovableObject, setVisible), asCALL_THISCALL); ROR_ASSERT(r >= 0);
736 r = engine->RegisterObjectMethod(obj, "bool getVisible() const", asMETHOD(MovableObject, getVisible), asCALL_THISCALL); ROR_ASSERT(r >= 0);
737 r = engine->RegisterObjectMethod(obj, "bool isVisible() const", asMETHOD(MovableObject, isVisible), asCALL_THISCALL); ROR_ASSERT(r >= 0);
738
739 r = engine->RegisterObjectMethod(obj, "void setRenderingDistance(float dist)", asMETHOD(MovableObject, setRenderingDistance), asCALL_THISCALL); ROR_ASSERT(r >= 0);
740 r = engine->RegisterObjectMethod(obj, "float getRenderingDistance() const", asMETHOD(MovableObject, getRenderingDistance), asCALL_THISCALL); ROR_ASSERT(r >= 0);
741
742 r = engine->RegisterObjectMethod(obj, "void setRenderingMinPixelSize(float pixelSize)", asMETHOD(MovableObject, setRenderingMinPixelSize), asCALL_THISCALL); ROR_ASSERT(r >= 0);
743 r = engine->RegisterObjectMethod(obj, "float getRenderingMinPixelSize() const", asMETHOD(MovableObject, getRenderingMinPixelSize), asCALL_THISCALL); ROR_ASSERT(r >= 0);
744
745 r = engine->RegisterObjectMethod(obj, "void setCastShadows(bool enabled)", asMETHOD(MovableObject, setCastShadows), asCALL_THISCALL); ROR_ASSERT(r >= 0);
746 r = engine->RegisterObjectMethod(obj, "bool getCastShadows() const", asMETHOD(MovableObject, getCastShadows), asCALL_THISCALL); ROR_ASSERT(r >= 0);
747}
748
749void registerOgreMovableObject(AngelScript::asIScriptEngine* engine)
750{
751 int r;
752 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
753
754 registerOgreMovableObjectBase<MovableObject>(engine, "MovableObject");
755
756 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
757}
758
759void registerOgreEntity(AngelScript::asIScriptEngine* engine)
760{
761 int r;
762 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
763
764 r = engine->RegisterObjectMethod("Entity", "void setMaterialName(const string &in name, const string &in rg = \"OgreAutodetect\")", asMETHOD(Entity, setMaterialName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
765 r = engine->RegisterObjectMethod("Entity", "AnimationState @getAnimationState(const string &in) const", asMETHOD(Entity, getAnimationState), asCALL_THISCALL); ROR_ASSERT(r >= 0);
766 r = engine->RegisterObjectMethod("Entity", "AnimationStateSet @getAllAnimationStates()", asMETHOD(Entity, getAllAnimationStates), asCALL_THISCALL); ROR_ASSERT(r >= 0);
767 r = engine->RegisterObjectMethod("Entity", "void setDisplaySkeleton(bool)", asMETHOD(Entity, setDisplaySkeleton), asCALL_THISCALL); ROR_ASSERT(r >= 0);
768 r = engine->RegisterObjectMethod("Entity", "bool getDisplaySkeleton() const", asMETHOD(Entity, getDisplaySkeleton), asCALL_THISCALL); ROR_ASSERT(r >= 0);
769 r = engine->RegisterObjectMethod("Entity", "uint64 getNumManualLodLevels() const", asMETHOD(Entity, getNumManualLodLevels), asCALL_THISCALL); ROR_ASSERT(r >= 0);
770 r = engine->RegisterObjectMethod("Entity", "uint16 getCurrentLodIndex()", asMETHOD(Entity, getCurrentLodIndex), asCALL_THISCALL); ROR_ASSERT(r >= 0);
771 r = engine->RegisterObjectMethod("Entity", "Entity @getManualLodLevel(uint64) const", asMETHOD(Entity, getManualLodLevel), asCALL_THISCALL); ROR_ASSERT(r >= 0);
772 r = engine->RegisterObjectMethod("Entity", "void setMeshLodBias(float, uint16, uint16)", asMETHOD(Entity, setMeshLodBias), asCALL_THISCALL); ROR_ASSERT(r >= 0);
773 r = engine->RegisterObjectMethod("Entity", "void setMaterialLodBias(float, uint16, uint16)", asMETHOD(Entity, setMaterialLodBias), asCALL_THISCALL); ROR_ASSERT(r >= 0);
774 r = engine->RegisterObjectMethod("Entity", "SubEntityArray @getSubEntities() const", asFUNCTION(EntityGetSubEntities), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
775 r = engine->RegisterObjectMethod("Entity", "const MeshPtr& getMesh() const", asMETHOD(Entity, getMesh), asCALL_THISCALL); ROR_ASSERT(r >= 0);
776
777 registerOgreMovableObjectBase<MovableObject>(engine, "Entity");
778
779 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
780}
781
782void registerOgreSubEntity(AngelScript::asIScriptEngine* engine)
783{
784 int r;
785 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
786
787 r = engine->RegisterObjectMethod("SubEntity", "const MaterialPtr& getMaterial() const", asMETHOD(SubEntity, getMaterial), asCALL_THISCALL); ROR_ASSERT(r >= 0);
788 r = engine->RegisterObjectMethod("SubEntity", "void setMaterial(const MaterialPtr&in)", asMETHOD(SubEntity, setMaterial), asCALL_THISCALL); ROR_ASSERT(r >= 0);
789 r = engine->RegisterObjectMethod("SubEntity", "SubMesh@ getSubMesh()", asMETHOD(SubEntity, getSubMesh), asCALL_THISCALL); ROR_ASSERT(r >= 0);
790
791 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
792}
793
794template <typename T>
795void registerOgreNodeBase(AngelScript::asIScriptEngine* engine, const char* obj)
796{
797 int r;
798 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
799
800 r = engine->RegisterObjectMethod(obj, "const vector3& getPosition() const", asMETHOD(T, getPosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
801 r = engine->RegisterObjectMethod(obj, "void setPosition(const vector3 &in)", asMETHODPR(T, setPosition, (const Vector3&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
802
803 r = engine->RegisterObjectMethod(obj, "const vector3& getScale() const", asMETHOD(T, getScale), asCALL_THISCALL); ROR_ASSERT(r >= 0);
804 r = engine->RegisterObjectMethod(obj, "void setScale(const vector3 &in)", asMETHODPR(T, setScale, (const Ogre::Vector3&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
805
806 r = engine->RegisterObjectMethod(obj, "const string& getName() const", asMETHOD(T, getName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
807 r = engine->RegisterObjectMethod(obj, "Node@ getParent()", asMETHOD(T, getParent), asCALL_THISCALL); ROR_ASSERT(r >= 0);
808
809 r = engine->RegisterObjectMethod(obj, "const quaternion& getOrientation() const", asMETHOD(T, getOrientation), asCALL_THISCALL); ROR_ASSERT(r >= 0);
810 r = engine->RegisterObjectMethod(obj, "void setOrientation(const quaternion&in)", asFUNCTION(NodeSetOrientation<T>), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
811
812 r = engine->RegisterObjectMethod(obj, "string __getUniqueName() const", asFUNCTION(NodeGetUniqueNameMixin), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
813
814 // Not const because we don't want all elements to be const (this isn't the case with raw pointers in C++).
815 r = engine->RegisterObjectMethod(obj, "ChildNodeArray@ getChildren()", asFUNCTION(NodeGetChildren), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
816
817 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
818}
819
820void registerOgreNode(AngelScript::asIScriptEngine* engine)
821{
822 int r;
823 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
824
825 registerOgreNodeBase<Node>(engine, "Node");
826
827 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
828}
829
830void registerOgreSceneNode(AngelScript::asIScriptEngine* engine)
831{
832 int r;
833 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
834
835 r = engine->RegisterObjectMethod("SceneNode", "void attachObject(MovableObject@ obj)", asMETHODPR(SceneNode, attachObject, (MovableObject*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
836 r = engine->RegisterObjectMethod("SceneNode", "MovableObject@ getAttachedObject(const string& in)", asMETHODPR(SceneNode, getAttachedObject, (const String&), MovableObject*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
837 r = engine->RegisterObjectMethod("SceneNode", "MovableObject@ detachObject(uint16)", asMETHODPR(SceneNode, detachObject, (uint16), MovableObject*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
838 r = engine->RegisterObjectMethod("SceneNode", "void detachObject(MovableObject@ obj)", asMETHODPR(SceneNode, detachObject, (MovableObject*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
839 r = engine->RegisterObjectMethod("SceneNode", "MovableObject@ detachObject(const string& in)", asMETHODPR(SceneNode, detachObject, (const String&), MovableObject*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
840 r = engine->RegisterObjectMethod("SceneNode", "void detachAllObjects()", asMETHOD(SceneNode, detachAllObjects), asCALL_THISCALL); ROR_ASSERT(r >= 0);
841 r = engine->RegisterObjectMethod("SceneNode", "bool isInSceneGraph() const", asMETHOD(SceneNode, isInSceneGraph), asCALL_THISCALL); ROR_ASSERT(r >= 0);
842 r = engine->RegisterObjectMethod("SceneNode", "SceneManager@ getCreator() const", asMETHOD(SceneNode, getCreator), asCALL_THISCALL); ROR_ASSERT(r >= 0);
843 r = engine->RegisterObjectMethod("SceneNode", "void removeAndDestroyChild(const string& in)", asMETHODPR(SceneNode, removeAndDestroyChild, (const String&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
844 r = engine->RegisterObjectMethod("SceneNode", "void removeAndDestroyChild(uint16)", asMETHODPR(SceneNode, removeAndDestroyChild, (uint16), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
845 r = engine->RegisterObjectMethod("SceneNode", "void removeAndDestroyChild(SceneNode@)", asMETHODPR(SceneNode, removeAndDestroyChild, (SceneNode*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
846 r = engine->RegisterObjectMethod("SceneNode", "void removeAndDestroyAllChildren()", asMETHOD(SceneNode, removeAndDestroyAllChildren), asCALL_THISCALL); ROR_ASSERT(r >= 0);
847 r = engine->RegisterObjectMethod("SceneNode", "void showBoundingBox(bool bShow)", asMETHOD(SceneNode, showBoundingBox), asCALL_THISCALL); ROR_ASSERT(r >= 0);
848 r = engine->RegisterObjectMethod("SceneNode", "void hideBoundingBox(bool bHide)", asMETHOD(SceneNode, hideBoundingBox), asCALL_THISCALL); ROR_ASSERT(r >= 0);
849 r = engine->RegisterObjectMethod("SceneNode", "bool getShowBoundingBox() const", asMETHOD(SceneNode, getShowBoundingBox), asCALL_THISCALL); ROR_ASSERT(r >= 0);
850 r = engine->RegisterObjectMethod("SceneNode", "SceneNode@ createChildSceneNode(const string& in name, const vector3& in translate = vector3(0.f, 0.f, 0.f), const quaternion& in rotate = quaternion())", asMETHODPR(SceneNode, createChildSceneNode, (const String&, const Vector3&, const Quaternion&), SceneNode*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
851 r = engine->RegisterObjectMethod("SceneNode", "void setFixedYawAxis(bool useFixed, const vector3& in fixedAxis = vector3(0.f, 1.f, 0.f))", asMETHOD(SceneNode, setFixedYawAxis), asCALL_THISCALL); ROR_ASSERT(r >= 0);
852 r = engine->RegisterObjectMethod("SceneNode", "void yaw(const radian& in angle, TransformSpace relativeTo = Ogre::TS_LOCAL)", asMETHOD(SceneNode, yaw), asCALL_THISCALL); ROR_ASSERT(r >= 0);
853 r = engine->RegisterObjectMethod("SceneNode", "void setDirection(const vector3& in vec, TransformSpace relativeTo = Ogre::TS_LOCAL, const vector3& in localDirectionVector = vector3(0.f, 0.f, -1.f))", asMETHODPR(SceneNode, setDirection, (const Vector3&, Node::TransformSpace, const Vector3&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
854 r = engine->RegisterObjectMethod("SceneNode", "SceneNode@ getParentSceneNode() const", asMETHOD(SceneNode, getParentSceneNode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
855 // Not const because we don't want all elements to be const (this isn't the case with raw pointers in C++).
856 r = engine->RegisterObjectMethod("SceneNode", "MovableObjectArray@ getAttachedObjects()", asFUNCTION(SceneNodeGetAttachedObjects), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
857 r = engine->RegisterObjectMethod("SceneNode", "void lookAt(const vector3 &in, TransformSpace, const vector3 &in = vector3(0,0,-1))", asMETHODPR(SceneNode, lookAt, (const Vector3&, Node::TransformSpace, const Vector3&), void), asCALL_THISCALL);
858 r = engine->RegisterObjectMethod("SceneNode", "void setAutoTracking(bool, SceneNode@, const vector3 &in = vector3(0,0,-1), const vector3 &in = vector3())", asMETHODPR(SceneNode, setAutoTracking, (bool, SceneNode* const, const Vector3&, const Vector3&), void), asCALL_THISCALL);
859 r = engine->RegisterObjectMethod("SceneNode", "SceneNode@ getAutoTrackTarget()", asMETHODPR(SceneNode, getAutoTrackTarget, (), SceneNode*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
860 r = engine->RegisterObjectMethod("SceneNode", "const vector3& getAutoTrackOffset()", asMETHODPR(SceneNode, getAutoTrackOffset, (), const Vector3&), asCALL_THISCALL); ROR_ASSERT(r >= 0);
861 r = engine->RegisterObjectMethod("SceneNode", "const vector3& getAutoTrackLocalDirection()", asMETHODPR(SceneNode, getAutoTrackLocalDirection, (), const Vector3&), asCALL_THISCALL); ROR_ASSERT(r >= 0);
862 r = engine->RegisterObjectMethod("SceneNode", "SceneNode@ getParentSceneNode()", asMETHODPR(SceneNode, getParentSceneNode, () const, SceneNode*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
863 r = engine->RegisterObjectMethod("SceneNode", "void setVisible(bool, bool cascade = true)", asMETHODPR(SceneNode, setVisible, (bool, bool), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
864 r = engine->RegisterObjectMethod("SceneNode", "void flipVisibility(bool = true)", asMETHODPR(SceneNode, flipVisibility, (bool), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
865 r = engine->RegisterObjectMethod("SceneNode", "void setDebugDisplayEnabled(bool, bool cascade = true)", asMETHODPR(SceneNode, setDebugDisplayEnabled, (bool, bool), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
866
867 registerOgreNodeBase<SceneNode>(engine, "SceneNode");
868
869 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
870}
871
872void registerOgreSceneManager(AngelScript::asIScriptEngine* engine)
873{
874 int r;
875 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
876
877 r = engine->RegisterObjectMethod("SceneManager", "const string& getName() const", asMETHOD(SceneManager, getName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
878
879 r = engine->RegisterObjectMethod("SceneManager", "array<MovableObject@>@ __getMovableObjectsByType(const string&in typeName)", asFUNCTION(SceneManager__getMovableObjectsByType), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
880
881 // Entities
882 r = engine->RegisterObjectMethod("SceneManager", "Entity@ createEntity(const string&in ent_name, const string &in mesh_name, const string &in mesh_rg = \"OgreAutodetect\")", asFUNCTION(SceneManagerCreateEntity), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
883 r = engine->RegisterObjectMethod("SceneManager", "void destroyEntity(Entity@)", asMETHODPR(SceneManager, destroyEntity, (Entity*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
884 r = engine->RegisterObjectMethod("SceneManager", "void destroyEntity(const string &in)", asMETHODPR(SceneManager, destroyEntity, (const Ogre::String&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
885
886 // Scene nodes
887 r = engine->RegisterObjectMethod("SceneManager", "SceneNode@ getRootSceneNode()", asMETHOD(SceneManager, getRootSceneNode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
888 r = engine->RegisterObjectMethod("SceneManager", "void destroySceneNode(SceneNode@)", asMETHODPR(SceneManager, destroySceneNode, (SceneNode*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
889 r = engine->RegisterObjectMethod("SceneManager", "void destroySceneNode(const string &in)", asMETHODPR(SceneManager, destroySceneNode, (const Ogre::String&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
890
891 // Ambient light
892 r = engine->RegisterObjectMethod("SceneManager", "const color& getAmbientLight() const", asMETHOD(SceneManager, getAmbientLight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
893 r = engine->RegisterObjectMethod("SceneManager", "void setAmbientLight(const color &in)", asMETHODPR(SceneManager, setAmbientLight, (const ColourValue&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
894
895 // ManualObject:
896 r = engine->RegisterObjectMethod("SceneManager", "ManualObject@ createManualObject(const string &in)", asMETHODPR(SceneManager, createManualObject, (const Ogre::String&), Ogre::ManualObject*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
897 r = engine->RegisterObjectMethod("SceneManager", "ManualObject@ getManualObject(const string &in)", asMETHODPR(SceneManager, getManualObject, (const Ogre::String&) const, Ogre::ManualObject*), asCALL_THISCALL); ROR_ASSERT(r >= 0);
898 r = engine->RegisterObjectMethod("SceneManager", "void destroyManualObject(const string &in)", asMETHODPR(SceneManager, destroyManualObject, (const Ogre::String&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
899 r = engine->RegisterObjectMethod("SceneManager", "void destroyManualObject(ManualObject@)", asMETHODPR(SceneManager, destroyManualObject, (Ogre::ManualObject*), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
900
901 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
902}
903
904void registerOgreRoot(AngelScript::asIScriptEngine* engine)
905{
906 int r;
907 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
908
909 r = engine->RegisterObjectMethod("Root", "SceneManagerInstanceDict@ getSceneManagers()", asFUNCTION(RootGetSceneManagers), asCALL_CDECL_OBJLAST);
910
911 r = engine->SetDefaultNamespace("Ogre::Root");
912 r = engine->RegisterGlobalFunction("Root& getSingleton()", asFUNCTION(Root::getSingleton), asCALL_CDECL);
913
914 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
915}
916
917void registerOgreAnimationState(AngelScript::asIScriptEngine* engine)
918{
919 int r;
920 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
921
922 // Register the getters and setters
923 r = engine->RegisterObjectMethod("AnimationState", "const string& getAnimationName() const", asMETHOD(AnimationState, getAnimationName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
924 r = engine->RegisterObjectMethod("AnimationState", "float getTimePosition() const", asMETHOD(AnimationState, getTimePosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
925 r = engine->RegisterObjectMethod("AnimationState", "void setTimePosition(float)", asMETHOD(AnimationState, setTimePosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
926 r = engine->RegisterObjectMethod("AnimationState", "float getLength() const", asMETHOD(AnimationState, getLength), asCALL_THISCALL); ROR_ASSERT(r >= 0);
927 r = engine->RegisterObjectMethod("AnimationState", "void setLength(float)", asMETHOD(AnimationState, setLength), asCALL_THISCALL); ROR_ASSERT(r >= 0);
928 r = engine->RegisterObjectMethod("AnimationState", "float getWeight() const", asMETHOD(AnimationState, getWeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
929 r = engine->RegisterObjectMethod("AnimationState", "void setWeight(float)", asMETHOD(AnimationState, setWeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
930 r = engine->RegisterObjectMethod("AnimationState", "void addTime(float)", asMETHOD(AnimationState, addTime), asCALL_THISCALL); ROR_ASSERT(r >= 0);
931 r = engine->RegisterObjectMethod("AnimationState", "bool hasEnded() const", asMETHOD(AnimationState, hasEnded), asCALL_THISCALL); ROR_ASSERT(r >= 0);
932 r = engine->RegisterObjectMethod("AnimationState", "bool getEnabled() const", asMETHOD(AnimationState, getEnabled), asCALL_THISCALL); ROR_ASSERT(r >= 0);
933 r = engine->RegisterObjectMethod("AnimationState", "void setEnabled(bool)", asMETHOD(AnimationState, setEnabled), asCALL_THISCALL); ROR_ASSERT(r >= 0);
934 r = engine->RegisterObjectMethod("AnimationState", "void setLoop(bool)", asMETHOD(AnimationState, setLoop), asCALL_THISCALL); ROR_ASSERT(r >= 0);
935 r = engine->RegisterObjectMethod("AnimationState", "bool getLoop() const", asMETHOD(AnimationState, getLoop), asCALL_THISCALL); ROR_ASSERT(r >= 0);
936 r = engine->RegisterObjectMethod("AnimationState", "AnimationStateSet@ getParent()", asMETHOD(AnimationState, getParent), asCALL_THISCALL); ROR_ASSERT(r >= 0);
937 r = engine->RegisterObjectMethod("AnimationState", "void createBlendMask(uint blendMaskSizeHint, float initialWeight = 1.0f)", asMETHOD(AnimationState, createBlendMask), asCALL_THISCALL); ROR_ASSERT(r >= 0);
938 r = engine->RegisterObjectMethod("AnimationState", "void destroyBlendMask()", asMETHOD(AnimationState, destroyBlendMask), asCALL_THISCALL); ROR_ASSERT(r >= 0);
939 r = engine->RegisterObjectMethod("AnimationState", "bool hasBlendMask() const", asMETHOD(AnimationState, hasBlendMask), asCALL_THISCALL); ROR_ASSERT(r >= 0);
940 r = engine->RegisterObjectMethod("AnimationState", "void setBlendMaskEntry(uint boneHandle, float weight)", asMETHOD(AnimationState, setBlendMaskEntry), asCALL_THISCALL); ROR_ASSERT(r >= 0);
941 r = engine->RegisterObjectMethod("AnimationState", "float getBlendMaskEntry(uint boneHandle)", asMETHOD(AnimationState, getBlendMaskEntry), asCALL_THISCALL); ROR_ASSERT(r >= 0);
942
943 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
944}
945
946void registerOgreAnimationStateSet(AngelScript::asIScriptEngine* engine)
947{
948 int r;
949 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
950
951 r = engine->RegisterObjectMethod("AnimationStateSet", "AnimationState@ createAnimationState(const string& in, float, float, float = 1.0f, bool = false)", asMETHOD(AnimationStateSet, createAnimationState), asCALL_THISCALL); ROR_ASSERT(r >= 0);
952 r = engine->RegisterObjectMethod("AnimationStateSet", "AnimationState@ getAnimationState(const string& in) const", asMETHOD(AnimationStateSet, getAnimationState), asCALL_THISCALL); ROR_ASSERT(r >= 0);
953 r = engine->RegisterObjectMethod("AnimationStateSet", "bool hasAnimationState(const string& in) const", asMETHOD(AnimationStateSet, hasAnimationState), asCALL_THISCALL); ROR_ASSERT(r >= 0);
954 r = engine->RegisterObjectMethod("AnimationStateSet", "void removeAnimationState(const string& in)", asMETHOD(AnimationStateSet, removeAnimationState), asCALL_THISCALL); ROR_ASSERT(r >= 0);
955 r = engine->RegisterObjectMethod("AnimationStateSet", "void removeAllAnimationStates()", asMETHOD(AnimationStateSet, removeAllAnimationStates), asCALL_THISCALL); ROR_ASSERT(r >= 0);
956 r = engine->RegisterObjectMethod("AnimationStateSet", "AnimationStateDict@ getAnimationStates()", asFUNCTION(AnimationStateSetGetAnimationStates), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
957
958 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
959}
960
961void registerOgreOverlayElement(AngelScript::asIScriptEngine* engine)
962{
963 int r;
964 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
965
966 // Register the OverlayElement class
967 // ATTENTION! only instances of `OverlayContainer` (is-a `OverlayElement`) can actually be bound to overlays and retrieved from overlays
968 // - see `Ogre::Overlay::add2D()`, `Ogre::Overlay::get2DElements()` and APIDOC on `OverlayContainer`.
969 // This forces us to toss `dynamic_cast<>`s around :(
970 // (order roughly matches OgreOverlayElement.h)
971 r = engine->RegisterObjectMethod("OverlayElement", "const string& getName() const", asMETHOD(Ogre::OverlayElement, getName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
972 // > visibility
973 r = engine->RegisterObjectMethod("OverlayElement", "void show()", asMETHOD(Ogre::OverlayElement, show), asCALL_THISCALL); ROR_ASSERT(r >= 0);
974 r = engine->RegisterObjectMethod("OverlayElement", "void hide()", asMETHOD(Ogre::OverlayElement, hide), asCALL_THISCALL); ROR_ASSERT(r >= 0);
975 r = engine->RegisterObjectMethod("OverlayElement", "bool isVisible() const", asMETHOD(Ogre::OverlayElement, isVisible), asCALL_THISCALL); ROR_ASSERT(r >= 0);
976 // > positioning
977 r = engine->RegisterObjectMethod("OverlayElement", "void setPosition(float, float)", asMETHOD(Ogre::OverlayElement, setPosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
978 r = engine->RegisterObjectMethod("OverlayElement", "void setDimensions(float, float)", asMETHOD(Ogre::OverlayElement, setDimensions), asCALL_THISCALL); ROR_ASSERT(r >= 0);
979 r = engine->RegisterObjectMethod("OverlayElement", "float getLeft() const", asMETHOD(Ogre::OverlayElement, getLeft), asCALL_THISCALL); ROR_ASSERT(r >= 0);
980 r = engine->RegisterObjectMethod("OverlayElement", "float getTop() const", asMETHOD(Ogre::OverlayElement, getTop), asCALL_THISCALL); ROR_ASSERT(r >= 0);
981 r = engine->RegisterObjectMethod("OverlayElement", "float getWidth() const", asMETHOD(Ogre::OverlayElement, getWidth), asCALL_THISCALL); ROR_ASSERT(r >= 0);
982 r = engine->RegisterObjectMethod("OverlayElement", "float getHeight() const", asMETHOD(Ogre::OverlayElement, getHeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
983 r = engine->RegisterObjectMethod("OverlayElement", "void setLeft(float)", asMETHOD(Ogre::OverlayElement, setLeft), asCALL_THISCALL); ROR_ASSERT(r >= 0);
984 r = engine->RegisterObjectMethod("OverlayElement", "void setTop(float)", asMETHOD(Ogre::OverlayElement, setTop), asCALL_THISCALL); ROR_ASSERT(r >= 0);
985 r = engine->RegisterObjectMethod("OverlayElement", "void setWidth(float)", asMETHOD(Ogre::OverlayElement, setWidth), asCALL_THISCALL); ROR_ASSERT(r >= 0);
986 r = engine->RegisterObjectMethod("OverlayElement", "void setHeight(float)", asMETHOD(Ogre::OverlayElement, setHeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
987 // > material
988 r = engine->RegisterObjectMethod("OverlayElement", "const string& getMaterialName() const", asMETHOD(Ogre::OverlayElement, getMaterialName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
989 r = engine->RegisterObjectMethod("OverlayElement", "void setMaterialName(const string&in, const string&in)", asMETHOD(Ogre::OverlayElement, setMaterialName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
990 // > caption
991 r = engine->RegisterObjectMethod("OverlayElement", "void setCaption(const string&in)", asMETHOD(Ogre::OverlayElement, setCaption), asCALL_THISCALL); ROR_ASSERT(r >= 0);
992 r = engine->RegisterObjectMethod("OverlayElement", "const string& getCaption() const", asMETHOD(Ogre::OverlayElement, getCaption), asCALL_THISCALL); ROR_ASSERT(r >= 0);
993 // > color
994 r = engine->RegisterObjectMethod("OverlayElement", "void setColour(const color&in)", asMETHOD(Ogre::OverlayElement, setColour), asCALL_THISCALL); ROR_ASSERT(r >= 0);
995 r = engine->RegisterObjectMethod("OverlayElement", "const color& getColour() const", asMETHOD(Ogre::OverlayElement, getColour), asCALL_THISCALL); ROR_ASSERT(r >= 0);
996 // > GuiMetricsMode
997 r = engine->RegisterObjectMethod("OverlayElement", "GuiMetricsMode getMetricsMode() const", asMETHOD(Ogre::OverlayElement, getMetricsMode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
998 r = engine->RegisterObjectMethod("OverlayElement", "void setMetricsMode(GuiMetricsMode)", asMETHOD(Ogre::OverlayElement, setMetricsMode), asCALL_THISCALL); ROR_ASSERT(r >= 0);
999 // > GuiHorizontalAlignment
1000 r = engine->RegisterObjectMethod("OverlayElement", "GuiHorizontalAlignment getHorizontalAlignment() const", asMETHOD(Ogre::OverlayElement, getHorizontalAlignment), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1001 r = engine->RegisterObjectMethod("OverlayElement", "void setHorizontalAlignment(GuiHorizontalAlignment)", asMETHOD(Ogre::OverlayElement, setHorizontalAlignment), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1002
1003 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1004}
1005
1006void registerOgreOverlay(AngelScript::asIScriptEngine* engine)
1007{
1008 int r;
1009 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1010
1011 // Register the Overlay class
1012 // (order roughly matches OgreOverlay.h)
1013 r = engine->RegisterObjectMethod("Overlay", "const string& getName() const", asMETHOD(Ogre::Overlay, getName), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1014 // > z-order
1015 r = engine->RegisterObjectMethod("Overlay", "void setZOrder(uint16)", asMETHOD(Ogre::Overlay, setZOrder), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1016 r = engine->RegisterObjectMethod("Overlay", "uint16 getZOrder()", asMETHOD(Ogre::Overlay, getZOrder), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1017 // > visibility
1018 r = engine->RegisterObjectMethod("Overlay", "bool isVisible() const", asMETHODPR(Ogre::Overlay, isVisible, () const, bool), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1019 r = engine->RegisterObjectMethod("Overlay", "void show()", asMETHODPR(Ogre::Overlay, show, (), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1020 r = engine->RegisterObjectMethod("Overlay", "void hide()", asMETHODPR(Ogre::Overlay, hide, (), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1021 // > 2D elements
1022 r = engine->RegisterObjectMethod("Overlay", "void add2D(OverlayElement@)", asFUNCTION(OverlayAdd2D), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1023 r = engine->RegisterObjectMethod("Overlay", "void remove2D(OverlayElement@)", asFUNCTION(OverlayRemove2D), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1024 // > scrolling
1025 r = engine->RegisterObjectMethod("Overlay", "void setScroll(float, float)", asMETHOD(Ogre::Overlay, setScroll), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1026 r = engine->RegisterObjectMethod("Overlay", "float getScrollX() const", asMETHOD(Ogre::Overlay, getScrollX), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1027 r = engine->RegisterObjectMethod("Overlay", "float getScrollY() const", asMETHOD(Ogre::Overlay, getScrollY), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1028 r = engine->RegisterObjectMethod("Overlay", "void scroll(float, float)", asMETHOD(Ogre::Overlay, scroll), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1029 // > rotating
1030 r = engine->RegisterObjectMethod("Overlay", "void setRotate(const radian&in)", asMETHOD(Ogre::Overlay, setRotate), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1031 r = engine->RegisterObjectMethod("Overlay", "const radian& getRotate() const", asMETHOD(Ogre::Overlay, getRotate), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1032 r = engine->RegisterObjectMethod("Overlay", "void rotate(const radian&in)", asMETHOD(Ogre::Overlay, rotate), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1033 // > scaling
1034 r = engine->RegisterObjectMethod("Overlay", "void setScale(float, float)", asMETHOD(Ogre::Overlay, setScale), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1035 r = engine->RegisterObjectMethod("Overlay", "float getScaleX() const", asMETHOD(Ogre::Overlay, getScaleX), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1036 r = engine->RegisterObjectMethod("Overlay", "float getScaleY() const", asMETHOD(Ogre::Overlay, getScaleY), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1037 // > 2D elements
1038 r = engine->RegisterObjectMethod("Overlay", "array<OverlayElement@>@ get2DElements()", asFUNCTION(get2DElementsHelper), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1039
1040 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1041}
1042
1043void registerOgreOverlayManager(AngelScript::asIScriptEngine* engine)
1044{
1045 int r;
1046 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1047
1048 // Register the OverlayManager class
1049 // (order roughly matches OgreOverlayManager.h)
1050 // > overlay management
1051 r = engine->RegisterObjectMethod("OverlayManager", "Overlay@ create(const string&in)", asFUNCTION(OverlayManagerCreate), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1052 r = engine->RegisterObjectMethod("OverlayManager", "Overlay@ getByName(const string&in)", asFUNCTION(OverlayManagerGetByName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1053 r = engine->RegisterObjectMethod("OverlayManager", "void destroy(const string&in)", asFUNCTION(OverlayManagerDestroyByName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1054 r = engine->RegisterObjectMethod("OverlayManager", "void destroy(Overlay@)", asFUNCTION(OverlayManagerDestroy), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1055 r = engine->RegisterObjectMethod("OverlayManager", "void destroyAll()", asFUNCTION(OverlayManagerDestroyAll), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1056 // NOTE: we have `getOverlays()` instead of `getOverlayIterator()`
1057 r = engine->RegisterObjectMethod("OverlayManager", "array<Overlay@>@ getOverlays()", asFUNCTION(OverlayManagerGetOverlays), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1058 // > viewport info
1059 r = engine->RegisterObjectMethod("OverlayManager", "float getViewportHeight() const", asMETHOD(Ogre::OverlayManager, getViewportHeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1060 r = engine->RegisterObjectMethod("OverlayManager", "float getViewportWidth() const", asMETHOD(Ogre::OverlayManager, getViewportWidth), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1061 // > overlay element management
1062 r = engine->RegisterObjectMethod("OverlayManager", "OverlayElement@ createOverlayElement(const string&in, const string&in, bool=false)", asFUNCTION(OverlayManagerCreateOverlayElement), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1063 r = engine->RegisterObjectMethod("OverlayManager", "OverlayElement@ getOverlayElement(const string&in) const", asFUNCTION(OverlayManagerGetOverlayElement), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1064 r = engine->RegisterObjectMethod("OverlayManager", "bool hasOverlayElement(const string&in) const", asMETHOD(Ogre::OverlayManager, hasOverlayElement), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1065 r = engine->RegisterObjectMethod("OverlayManager", "void destroyOverlayElement(const string&in, bool isTemplate=false) const", asFUNCTION(OverlayManagerDestroyOverlayElementByName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1066 r = engine->RegisterObjectMethod("OverlayManager", "void destroyOverlayElement(OverlayElement@, bool isTemplate=false) const", asFUNCTION(OverlayManagerDestroyOverlayElement), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1067 r = engine->RegisterObjectMethod("OverlayManager", "void destroyAllOverlayElements(bool isTemplate=false) const", asFUNCTION(OverlayManagerDestroyAllOverlayElements), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1068 // > template management
1069 r = engine->RegisterObjectMethod("OverlayManager", "OverlayElement@ createOverlayElementFromTemplate(const string&in, const string&in, const string&in, bool=false)", asFUNCTION(OverlayManagerCreateOverlayElementFromTemplate), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1070 r = engine->RegisterObjectMethod("OverlayManager", "OverlayElement@ cloneOverlayElementFromTemplate(const string&in, const string&in)", asFUNCTION(OverlayManagerCloneOverlayElementFromTemplate), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1071 // NOTE: we have `getTemplates()` instead of `getTemplateIterator()`
1072 r = engine->RegisterObjectMethod("OverlayManager", "array<OverlayElement@>@ getTemplates()", asFUNCTION(getElementTemplatesHelper), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1073 r = engine->RegisterObjectMethod("OverlayManager", "bool isTemplate(const string&in)", asFUNCTION(OverlayManagerIsTemplate), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1074
1075 r = engine->SetDefaultNamespace("Ogre::OverlayManager"); ROR_ASSERT(r >= 0);
1076 r = engine->RegisterGlobalFunction("OverlayManager& getSingleton()", asFUNCTION(OverlayManager::getSingleton), asCALL_CDECL); ROR_ASSERT(r >= 0);
1077
1078 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1079}
1080
1081void registerOgreManualObject(AngelScript::asIScriptEngine* engine)
1082{
1083 engine->SetDefaultNamespace("Ogre");
1084
1085 // Register the ManualObject class
1086 engine->RegisterObjectMethod("ManualObject", "void begin(const string&in, RenderOperation, const string&in)", asMETHODPR(Ogre::ManualObject, begin, (const String&, Ogre::RenderOperation::OperationType, const String&), void), asCALL_THISCALL);
1087 engine->RegisterObjectMethod("ManualObject", "void beginUpdate()", asMETHOD(Ogre::ManualObject, beginUpdate), asCALL_THISCALL);
1088 engine->RegisterObjectMethod("ManualObject", "void position(const vector3&in)", asMETHODPR(Ogre::ManualObject, position, (const Ogre::Vector3&), void), asCALL_THISCALL);
1089 engine->RegisterObjectMethod("ManualObject", "void normal(const vector3&in)", asMETHODPR(Ogre::ManualObject, normal, (const Ogre::Vector3&), void), asCALL_THISCALL);
1090 engine->RegisterObjectMethod("ManualObject", "void textureCoord(float, float)", asMETHODPR(Ogre::ManualObject, textureCoord, (float, float), void), asCALL_THISCALL);
1091 engine->RegisterObjectMethod("ManualObject", "void textureCoord(const vector2&in)", asMETHODPR(Ogre::ManualObject, textureCoord, (const Ogre::Vector2&), void), asCALL_THISCALL);
1092 engine->RegisterObjectMethod("ManualObject", "void textureCoord(const vector3&in)", asMETHODPR(Ogre::ManualObject, textureCoord, (const Ogre::Vector3&), void), asCALL_THISCALL);
1093 engine->RegisterObjectMethod("ManualObject", "void colour(const color&in)", asMETHODPR(Ogre::ManualObject, colour, (const Ogre::ColourValue&), void), asCALL_THISCALL);
1094 engine->RegisterObjectMethod("ManualObject", "void index(uint32)", asMETHOD(Ogre::ManualObject, index), asCALL_THISCALL);
1095 engine->RegisterObjectMethod("ManualObject", "void end()", asMETHOD(Ogre::ManualObject, end), asCALL_THISCALL);
1096
1097 engine->RegisterObjectMethod("ManualObject", "uint getCurrentVertexCount()", asMETHOD(Ogre::ManualObject, getCurrentVertexCount), asCALL_THISCALL);
1098 engine->RegisterObjectMethod("ManualObject", "void getCurrentIndexCount()", asMETHOD(Ogre::ManualObject, getCurrentIndexCount), asCALL_THISCALL);
1099
1100 engine->RegisterObjectMethod("ManualObject", "MeshPtr convertToMesh(const string&in name, const string&in group = 'General')", asMETHOD(Ogre::ManualObject, convertToMesh), asCALL_THISCALL);
1101
1102 engine->SetDefaultNamespace("");
1103}
1104
1105void registerOgreHardwarePixelBuffer(AngelScript::asIScriptEngine* engine)
1106{
1107 int r;
1108 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1109
1110 r = engine->RegisterObjectBehaviour("HardwarePixelBufferPtr", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(HardwarePixelBufferPtrDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1111 r = engine->RegisterObjectBehaviour("HardwarePixelBufferPtr", asBEHAVE_CONSTRUCT, "void f(const HardwarePixelBufferPtr&in)", asFUNCTION(HardwarePixelBufferPtrCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1112 r = engine->RegisterObjectBehaviour("HardwarePixelBufferPtr", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(HardwarePixelBufferPtrDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1113 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "HardwarePixelBufferPtr& opAssign(const HardwarePixelBufferPtr&in)", asFUNCTION(HardwarePixelBufferPtrAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1114
1115 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "const PixelBox& getCurrentLock()", asFUNCTION(HardwarePixelBufferPtrGetCurrentLock), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1116
1117 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "const PixelBox& lock(const box& lockbox, HardwareBufferLockOptions opt)", asFUNCTION(HardwarePixelBufferPtrLock), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1118
1119 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "uint getWidth()", asFUNCTION(HardwarePixelBufferPtrGetWidth), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1120
1121 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "uint getHeight()", asFUNCTION(HardwarePixelBufferPtrGetHeight), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1122
1123 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "void blitFromMemory(const PixelBox& src, const box& dst)", asFUNCTION(HardwarePixelBufferPtrBlitFromMemory), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1124
1125 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "void blitToMemory(const box& src, const PixelBox& dst)", asFUNCTION(HardwarePixelBufferPtrBlitToMemory), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1126
1127 r = engine->RegisterObjectMethod("HardwarePixelBufferPtr", "void unlock()", asFUNCTION(HardwarePixelBufferPtrUnlock), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1128
1129 engine->SetDefaultNamespace("");
1130}
1131
1132void registerOgrePixelBox(AngelScript::asIScriptEngine* engine)
1133{
1134 int r;
1135 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1136
1137 r = engine->RegisterObjectBehaviour("PixelBox", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(PixelBoxDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1138 r = engine->RegisterObjectBehaviour("PixelBox", asBEHAVE_CONSTRUCT, "void f(const PixelBox&in)", asFUNCTION(PixelBoxCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1139 r = engine->RegisterObjectBehaviour("PixelBox", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(PixelBoxDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1140 r = engine->RegisterObjectMethod("PixelBox", "PixelBox& opAssign(const PixelBox&in)", asFUNCTION(PixelBoxAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1141
1142 r = engine->RegisterObjectMethod("PixelBox", "color getColourAt(uint32 x, uint32 y, uint32 z)", asMETHOD(PixelBox, getColourAt), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1143 r = engine->RegisterObjectMethod("PixelBox", "void setColourAt(const color& c, uint32 x, uint32 y, uint32 z)", asMETHOD(PixelBox, setColourAt), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1144
1145 // Inherited methods must have wrappers - see AngelScript doc
1146 r = engine->RegisterObjectMethod("PixelBox", "uint getWidth()", asFUNCTION(PixelBoxGetWidth), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1147
1148 r = engine->RegisterObjectMethod("PixelBox", "uint getHeight()", asFUNCTION(PixelBoxGetHeight), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1149
1150 r = engine->RegisterObjectMethod("PixelBox", "uint getDepth()", asFUNCTION(PixelBoxGetDepth), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1151
1152 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1153}
1154
1155void registerOgreImage(AngelScript::asIScriptEngine* engine)
1156{
1157 int r;
1158 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1159
1160 r = engine->RegisterObjectBehaviour("Image", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(ImageDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1161 r = engine->RegisterObjectBehaviour("Image", asBEHAVE_CONSTRUCT, "void f(const Image&in)", asFUNCTION(ImageCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1162 r = engine->RegisterObjectBehaviour("Image", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(ImageDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1163 r = engine->RegisterObjectMethod("Image", "Image& opAssign(const Image&in)", asFUNCTION(ImageAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1164
1165 r = engine->RegisterObjectMethod("Image", "color getColourAt(uint32 x, uint32 y, uint32 z)", asMETHOD(Image, getColourAt), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1166 r = engine->RegisterObjectMethod("Image", "void setColourAt(const color& c, uint32 x, uint32 y, uint32 z)", asMETHOD(Image, setColourAt), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1167 r = engine->RegisterObjectMethod("Image", "Image& flipAroundX()", asMETHOD(Ogre::Image, flipAroundX), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1168 r = engine->RegisterObjectMethod("Image", "Image& flipAroundY()", asMETHOD(Ogre::Image, flipAroundY), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1169 r = engine->RegisterObjectMethod("Image", "uint getNumMipmaps()", asMETHOD(Ogre::Image, getNumMipmaps), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1170 r = engine->RegisterObjectMethod("Image", "uint getNumFaces()", asMETHOD(Ogre::Image, getNumFaces), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1171 r = engine->RegisterObjectMethod("Image", "PixelBox getPixelBox(uint face, uint mipmap)", asMETHOD(Ogre::Image, getPixelBox), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1172 r = engine->RegisterObjectMethod("Image", "uint getSize()", asMETHOD(Ogre::Image, getSize), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1173 r = engine->RegisterObjectMethod("Image", "uint getWidth()", asMETHOD(Ogre::Image, getWidth), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1174 r = engine->RegisterObjectMethod("Image", "uint getHeight()", asMETHOD(Ogre::Image, getHeight), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1175 r = engine->RegisterObjectMethod("Image", "void resize(uint16 width, uint16 height, ImageFilter filter)", asMETHOD(Ogre::Image, resize), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1176
1177 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1178}
1179
1180void registerOgreSubMesh(AngelScript::asIScriptEngine* engine)
1181{
1182 engine->SetDefaultNamespace("Ogre");
1183
1184 // Register the SubMesh class
1185 engine->RegisterObjectMethod("SubMesh", "const string& getMaterialName()", asMETHOD(Ogre::SubMesh, getMaterialName), asCALL_THISCALL);
1186 engine->RegisterObjectMethod("SubMesh", "void setMaterialName(const string&in, const string&in)", asMETHOD(Ogre::SubMesh, setMaterialName), asCALL_THISCALL);
1187
1188 // > Vertex buffer
1189 engine->RegisterObjectMethod("SubMesh", "array<vector3>@ __getVertexPositions()", asFUNCTION(SubMesh__getVertexPositions), asCALL_CDECL_OBJFIRST);
1190 engine->RegisterObjectMethod("SubMesh", "array<vector2>@ __getVertexTexcoords(uint index)", asFUNCTION(SubMesh__getVertexTexcoords), asCALL_CDECL_OBJFIRST);
1191
1192 // > Index buffer
1193 engine->RegisterObjectMethod("SubMesh", "array<uint16>@ __getIndexBuffer16bit()", asFUNCTION(SubMesh__getIndexBuffer16bit), asCALL_CDECL_OBJFIRST);
1194 engine->RegisterObjectMethod("SubMesh", "array<uint>@ __getIndexBuffer32bit()", asFUNCTION(SubMesh__getIndexBuffer32bit), asCALL_CDECL_OBJFIRST);
1195 engine->RegisterObjectMethod("SubMesh", "IndexType __getIndexType()", asFUNCTION(SubMesh__getIndexType), asCALL_CDECL_OBJFIRST);
1196
1197 engine->SetDefaultNamespace("");
1198}
1199
1200void registerOgreMesh(AngelScript::asIScriptEngine* engine)
1201{
1202 int r;
1203 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1204
1205 r = engine->RegisterObjectBehaviour("MeshPtr", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(MeshPtrDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1206 r = engine->RegisterObjectBehaviour("MeshPtr", asBEHAVE_CONSTRUCT, "void f(const MeshPtr&in)", asFUNCTION(MeshPtrCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1207 r = engine->RegisterObjectBehaviour("MeshPtr", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(MeshPtrDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1208 r = engine->RegisterObjectMethod("MeshPtr", "MeshPtr& opAssign(const MeshPtr&in)", asFUNCTION(MeshPtrAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1209 r = engine->RegisterObjectMethod("MeshPtr", "bool isNull()", asFUNCTION(MeshPtrIsNull), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1210
1211 // Wrappers are inevitable, see https://www.gamedev.net/forums/topic/540419-custom-smartpointers-and-angelscript-/
1212 r = engine->RegisterObjectMethod("MeshPtr", "SubMeshArray@ getSubMeshes()", asFUNCTION(MeshPtrGetSubmeshes), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1213 r = engine->RegisterObjectMethod("MeshPtr", "string getName()", asFUNCTION(MeshPtrGetName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1214 r = engine->RegisterObjectMethod("MeshPtr", "SubMesh@ createSubMesh(const string&in name)", asFUNCTION(MeshPtrCreateSubMesh), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1215 r = engine->RegisterObjectMethod("MeshPtr", "void destroySubMesh(const string&in name)", asFUNCTION(MeshPtrDestroySubMesh), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1216
1217 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1218}
1219
1220void registerOgreMeshManager(AngelScript::asIScriptEngine * engine)
1221{
1222 int r;
1223 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1224
1225 r = engine->RegisterObjectMethod("MeshManager", "MeshPtr load(const string&in file, const string&in rg)", asFUNCTION(MeshManagerLoad), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1226
1227 r = engine->RegisterObjectMethod("MeshManager", "void remove(const string&in file, const string&in rg)", asFUNCTION(MeshManagerRemove), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1228
1229 r = engine->SetDefaultNamespace("Ogre::MeshManager"); ROR_ASSERT(r >= 0);
1230 r = engine->RegisterGlobalFunction("MeshManager& getSingleton()", asFUNCTION(MeshManager::getSingleton), asCALL_CDECL); ROR_ASSERT(r >= 0);
1231
1232 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1233}
1234
1235void registerOgreMaterialManager(AngelScript::asIScriptEngine * engine)
1236{
1237 int r;
1238 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1239
1240 r = engine->RegisterObjectMethod("MaterialManager", "MaterialPtr getByName(const string&in file, const string&in rg)", asFUNCTION(MaterialManagerGetByName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1241
1242 r = engine->RegisterObjectMethod("MaterialManager", "MaterialPtr create(const string&in file, const string&in rg)", asFUNCTION(MaterialManagerCreate), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1243
1244 r = engine->SetDefaultNamespace("Ogre::MaterialManager"); ROR_ASSERT(r >= 0);
1245 r = engine->RegisterGlobalFunction("MaterialManager& getSingleton()", asFUNCTION(MaterialManager::getSingleton), asCALL_CDECL); ROR_ASSERT(r >= 0);
1246
1247 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1248}
1249
1250void registerOgreMaterial(AngelScript::asIScriptEngine* engine)
1251{
1252 int r;
1253 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1254
1255 r = engine->RegisterObjectBehaviour("MaterialPtr", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(MaterialPtrDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1256 r = engine->RegisterObjectBehaviour("MaterialPtr", asBEHAVE_CONSTRUCT, "void f(const MaterialPtr&in)", asFUNCTION(MaterialPtrCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1257 r = engine->RegisterObjectBehaviour("MaterialPtr", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(MaterialPtrDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1258 r = engine->RegisterObjectMethod("MaterialPtr", "MaterialPtr& opAssign(const MaterialPtr&in)", asFUNCTION(MaterialPtrAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1259 r = engine->RegisterObjectMethod("MaterialPtr", "bool isNull()", asFUNCTION(MaterialPtrIsNull), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1260
1261 // Wrappers are inevitable, see https://www.gamedev.net/forums/topic/540419-custom-smartpointers-and-angelscript-/
1262 r = engine->RegisterObjectMethod("MaterialPtr", "TechniqueArray@ getTechniques()", asFUNCTION(MaterialPtrGetTechniques), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1263
1264 r = engine->RegisterObjectMethod("MaterialPtr", "string getName()", asFUNCTION(MaterialPtrGetName), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1265
1266 r = engine->RegisterObjectMethod("MaterialPtr", "Technique@ createTechnique()", asFUNCTION(MaterialPtrCreateTechnique), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1267
1268 r = engine->RegisterObjectMethod("MaterialPtr", "void removeTechnique(uint16 index)", asFUNCTION(MaterialPtrRemoveTechnique), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1269
1270 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1271}
1272
1273void registerOgreTechnique(AngelScript::asIScriptEngine* engine)
1274{
1275 engine->SetDefaultNamespace("Ogre");
1276
1277 engine->RegisterObjectMethod("Technique", "PassArray @getPasses()", asFUNCTION(TechniqueGetPasses), asCALL_CDECL_OBJFIRST);
1278 engine->RegisterObjectMethod("Technique", "Pass @createPass()", asMETHOD(Ogre::Technique, createPass), asCALL_THISCALL);
1279 engine->RegisterObjectMethod("Technique", "void removePass(uint16 index)", asMETHOD(Ogre::Technique, removePass), asCALL_THISCALL);
1280 engine->RegisterObjectMethod("Technique", "const string& getName() const", asMETHOD(Ogre::Technique, getName), asCALL_THISCALL);
1281
1282 engine->SetDefaultNamespace("");
1283}
1284
1285void registerOgrePass(AngelScript::asIScriptEngine* engine)
1286{
1287 int r = 0;
1288 engine->SetDefaultNamespace("Ogre");
1289
1290 engine->RegisterObjectMethod("Pass", "const string& getName() const", asMETHOD(Ogre::Pass, getName), asCALL_THISCALL);
1291 engine->RegisterObjectMethod("Pass", "TextureUnitStateArray @getTextureUnitStates()", asFUNCTION(PassGetTextureUnitStates), asCALL_CDECL_OBJFIRST);
1292 engine->RegisterObjectMethod("Pass", "void removeTextureUnitState(uint16 index)", asMETHOD(Ogre::Pass, removeTextureUnitState), asCALL_THISCALL);
1293
1294 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getVertexProgramParameters()", asFUNCTION(PassGetVertexProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1295
1296 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getFragmentProgramParameters()", asFUNCTION(PassGetFragmentProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1297
1298 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getGeometryProgramParameters()", asFUNCTION(PassGetGeometryProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1299
1300 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getTessellationHullProgramParameters()", asFUNCTION(PassGetTessellationHullProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1301
1302 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getTessellationDomainProgramParameters()", asFUNCTION(PassGetTessellationDomainProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1303
1304 r = engine->RegisterObjectMethod("Pass", "GpuProgramParametersPtr getComputeProgramParameters()", asFUNCTION(PassGetComputeProgramParameters), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1305
1306 engine->RegisterObjectMethod("Pass", "void setVertexProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setVertexProgramParameters), asCALL_THISCALL);
1307 engine->RegisterObjectMethod("Pass", "void setFragmentProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setFragmentProgramParameters), asCALL_THISCALL);
1308 engine->RegisterObjectMethod("Pass", "void setGeometryProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setGeometryProgramParameters), asCALL_THISCALL);
1309 engine->RegisterObjectMethod("Pass", "void setTessellationHullProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setTessellationHullProgramParameters), asCALL_THISCALL);
1310 engine->RegisterObjectMethod("Pass", "void setTessellationDomainProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setTessellationDomainProgramParameters), asCALL_THISCALL);
1311 engine->RegisterObjectMethod("Pass", "void setComputeProgramParameters(GpuProgramParametersPtr)", asMETHOD(Ogre::Pass, setComputeProgramParameters), asCALL_THISCALL);
1312
1313 engine->SetDefaultNamespace("");
1314}
1315
1316void registerOgreTextureUnitState(AngelScript::asIScriptEngine* engine)
1317{
1318 engine->SetDefaultNamespace("Ogre");
1319
1320 engine->RegisterObjectMethod("TextureUnitState", "const string& getName() const", asMETHOD(Ogre::TextureUnitState, getName), asCALL_THISCALL);
1321 engine->RegisterObjectMethod("TextureUnitState", "void setTexture(const TexturePtr&in)", asMETHODPR(Ogre::TextureUnitState, setTexture, (const TexturePtr&), void), asCALL_THISCALL);
1322 engine->RegisterObjectMethod("TextureUnitState", "const TexturePtr& _getTexturePtr() const", asMETHODPR(Ogre::TextureUnitState, _getTexturePtr, (void) const, const TexturePtr&), asCALL_THISCALL);
1323
1324 engine->SetDefaultNamespace("");
1325}
1326
1327void registerOgreTimer(AngelScript::asIScriptEngine* engine)
1328{
1329 int r;
1330 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1331
1332 r = engine->RegisterObjectBehaviour("Timer", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(TimerDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1333 r = engine->RegisterObjectBehaviour("Timer", asBEHAVE_CONSTRUCT, "void f(const Timer&in)", asFUNCTION(TimerCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1334 r = engine->RegisterObjectBehaviour("Timer", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(TimerDefaultDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1335 r = engine->RegisterObjectMethod("Timer", "Timer& opAssign(const Timer&in)", asFUNCTION(TimerAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1336
1337 r = engine->RegisterObjectMethod("Timer", "void reset()", asMETHOD(Timer, reset), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1338 r = engine->RegisterObjectMethod("Timer", "uint getMilliseconds()", asMETHOD(Timer, getMilliseconds), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1339 r = engine->RegisterObjectMethod("Timer", "uint getMicroseconds()", asMETHOD(Timer, getMicroseconds), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1340 r = engine->RegisterObjectMethod("Timer", "uint getMillisecondsCPU()", asMETHOD(Timer, getMillisecondsCPU), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1341 r = engine->RegisterObjectMethod("Timer", "uint getMicrosecondsCPU()", asMETHOD(Timer, getMicrosecondsCPU), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1342
1343 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1344}
1345
1346void registerOgreGpuProgramParameters(AngelScript::asIScriptEngine* engine)
1347{
1348 int r;
1349
1350 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1351
1352 // Note: The `*SharedPtr` is a deprecated alias of `*Ptr` in OGRE 14, but it's not yet present in the version we use.
1353 r = engine->RegisterObjectBehaviour("GpuProgramParametersPtr", asBEHAVE_CONSTRUCT, "void f()", asFUNCTION(GpuProgramParametersPtrDefaultConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1354 r = engine->RegisterObjectBehaviour("GpuProgramParametersPtr", asBEHAVE_CONSTRUCT, "void f(const GpuProgramParametersPtr&in)", asFUNCTION(GpuProgramParametersPtrCopyConstructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1355 r = engine->RegisterObjectBehaviour("GpuProgramParametersPtr", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(GpuProgramParametersPtrDestructor), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1356 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "GpuProgramParametersPtr& opAssign(const GpuProgramParametersPtr&in)", asFUNCTION(GpuProgramParametersPtrAssignOperator), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1357 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "bool isNull()", asFUNCTION(GpuProgramParametersPtrIsNull), asCALL_CDECL_OBJLAST); ROR_ASSERT(r >= 0);
1358
1359 // Wrappers are inevitable, see https://www.gamedev.net/forums/topic/540419-custom-smartpointers-and-angelscript-/
1360
1361 // > setConstant (scalar)
1362 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, float val)", asFUNCTION(GpuProgramParametersPtrSetConstantFloat), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1363 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const vector3& val)", asFUNCTION(GpuProgramParametersPtrSetConstantVector3), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1364 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const vector2& val)", asFUNCTION(GpuProgramParametersPtrSetConstantVector2), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1365 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const color& val)", asFUNCTION(GpuProgramParametersPtrSetConstantColourValue), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1366
1367 // > setConstant (vector)
1368 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const array<float>@ vals)", asFUNCTION(GpuProgramParametersPtrSetConstantFloatArray), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1369 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const array<vector3>@ vals)", asFUNCTION(GpuProgramParametersPtrSetConstantVector3Array), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1370 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const array<vector2>@ vals)", asFUNCTION(GpuProgramParametersPtrSetConstantVector2Array), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1371 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setConstant(uint index, const array<color>@ vals)", asFUNCTION(GpuProgramParametersPtrSetConstantColourValueArray), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1372
1373 // > setNamedConstant (scalar)
1374 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, float val)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantFloat), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1375 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const vector3& val)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantVector3), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1376 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const vector2& val)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantVector2), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1377 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const color& val)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantColourValue), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1378
1379 // > setNamedConstant (vector)
1380 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const array<float>@ vals)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantFloatArray), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1381 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const array<vector3>@ vals)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantVector3Array), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1382 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const array<vector2>@ vals)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantVector2Array), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1383 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "void setNamedConstant(const string&in name, const array<color>@ vals)", asFUNCTION(GpuProgramParametersPtrSetNamedConstantColourValueArray), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1384
1385 r = engine->RegisterObjectMethod("GpuProgramParametersPtr", "array<string>@ __getNamedConstants()", asFUNCTION(GpuProgramParametersPtr__getNamedConstants), asCALL_CDECL_OBJFIRST); ROR_ASSERT(r >= 0);
1386
1387
1388 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1389}
1390
1391void registerOgreLight(AngelScript::asIScriptEngine* engine)
1392{
1393 int r;
1394 r = engine->SetDefaultNamespace("Ogre"); ROR_ASSERT(r >= 0);
1395
1396 // Type control
1397 r = engine->RegisterObjectMethod("Light", "void setType(LightTypes type)", asMETHOD(Ogre::Light, setType), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1398 r = engine->RegisterObjectMethod("Light", "LightTypes getType() const", asMETHOD(Ogre::Light, getType), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1399
1400 // Color
1401 r = engine->RegisterObjectMethod("Light", "void setDiffuseColour(float r, float g, float b)", asMETHODPR(Ogre::Light, setDiffuseColour, (float, float, float), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1402 r = engine->RegisterObjectMethod("Light", "void setDiffuseColour(const color&in)", asMETHODPR(Ogre::Light, setDiffuseColour, (const Ogre::ColourValue&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1403 r = engine->RegisterObjectMethod("Light", "const color& getDiffuseColour() const", asMETHOD(Ogre::Light, getDiffuseColour), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1404
1405 r = engine->RegisterObjectMethod("Light", "void setSpecularColour(float r, float g, float b)", asMETHODPR(Ogre::Light, setSpecularColour, (float, float, float), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1406 r = engine->RegisterObjectMethod("Light", "void setSpecularColour(const color&in)", asMETHODPR(Ogre::Light, setSpecularColour, (const Ogre::ColourValue&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1407 r = engine->RegisterObjectMethod("Light", "const color& getSpecularColour() const", asMETHOD(Ogre::Light, getSpecularColour), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1408
1409 // Attenuation
1410 r = engine->RegisterObjectMethod("Light", "void setAttenuation(float range, float constant, float linear, float quadratic)", asMETHOD(Ogre::Light, setAttenuation), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1411 r = engine->RegisterObjectMethod("Light", "float getAttenuationRange() const", asMETHOD(Ogre::Light, getAttenuationRange), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1412 r = engine->RegisterObjectMethod("Light", "float getAttenuationConstant() const", asMETHOD(Ogre::Light, getAttenuationConstant), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1413 r = engine->RegisterObjectMethod("Light", "float getAttenuationLinear() const", asMETHOD(Ogre::Light, getAttenuationLinear), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1414 r = engine->RegisterObjectMethod("Light", "float getAttenuationQuadric() const", asMETHOD(Ogre::Light, getAttenuationQuadric), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1415
1416 // Position & Direction
1417 r = engine->RegisterObjectMethod("Light", "void setPosition(float x, float y, float z)", asMETHODPR(Ogre::Light, setPosition, (float, float, float), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1418 r = engine->RegisterObjectMethod("Light", "void setPosition(const vector3&in)", asMETHODPR(Ogre::Light, setPosition, (const Ogre::Vector3&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1419 r = engine->RegisterObjectMethod("Light", "const vector3& getPosition() const", asMETHOD(Ogre::Light, getPosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1420
1421 r = engine->RegisterObjectMethod("Light", "void setDirection(float x, float y, float z)", asMETHODPR(Ogre::Light, setDirection, (float, float, float), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1422 r = engine->RegisterObjectMethod("Light", "void setDirection(const vector3&in)", asMETHODPR(Ogre::Light, setDirection, (const Ogre::Vector3&), void), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1423 r = engine->RegisterObjectMethod("Light", "const vector3& getDirection() const", asMETHOD(Ogre::Light, getDirection), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1424
1425 // Spotlight parameters
1426 r = engine->RegisterObjectMethod("Light", "void setSpotlightRange(const radian&in innerAngle, const radian&in outerAngle, float falloff = 1.0f)", asMETHOD(Ogre::Light, setSpotlightRange), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1427 r = engine->RegisterObjectMethod("Light", "const radian& getSpotlightInnerAngle() const", asMETHOD(Ogre::Light, getSpotlightInnerAngle), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1428 r = engine->RegisterObjectMethod("Light", "const radian& getSpotlightOuterAngle() const", asMETHOD(Ogre::Light, getSpotlightOuterAngle), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1429 r = engine->RegisterObjectMethod("Light", "float getSpotlightFalloff() const", asMETHOD(Ogre::Light, getSpotlightFalloff), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1430
1431 // Power scale
1432 r = engine->RegisterObjectMethod("Light", "void setPowerScale(float power)", asMETHOD(Ogre::Light, setPowerScale), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1433 r = engine->RegisterObjectMethod("Light", "float getPowerScale() const", asMETHOD(Ogre::Light, getPowerScale), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1434
1435 // Derived direction (useful for attached lights)
1436 r = engine->RegisterObjectMethod("Light", "const vector3& getDerivedPosition() const", asMETHOD(Ogre::Light, getDerivedPosition), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1437 r = engine->RegisterObjectMethod("Light", "const vector3& getDerivedDirection() const", asMETHOD(Ogre::Light, getDerivedDirection), asCALL_THISCALL); ROR_ASSERT(r >= 0);
1438
1439 // Inherit MovableObject methods
1440 registerOgreMovableObjectBase<Ogre::Light>(engine, "Light");
1441
1442 r = engine->SetDefaultNamespace(""); ROR_ASSERT(r >= 0);
1443}
float normalise()
radian getRoll(bool reprojectAxis=true) const
bool isNaN() const
quaternion Exp() const
radian getYaw(bool reprojectAxis=true) const
bool equals(const quaternion &in, const radian &in) const
float Dot(const quaternion &in) const
quaternion Log() const
float Norm() const
quaternion Inverse() const
radian getPitch(bool reprojectAxis=true) const
quaternion UnitInverse() const
Central state/object manager and communications hub.
#define ROR_ASSERT(_EXPR)
Definition Application.h:40
void registerOgrePixelBox(AngelScript::asIScriptEngine *engine)
void registerOgreMeshManager(AngelScript::asIScriptEngine *engine)
void registerOgreMesh(AngelScript::asIScriptEngine *engine)
void registerOgreMaterial(AngelScript::asIScriptEngine *engine)
void registerOgreHardwarePixelBuffer(AngelScript::asIScriptEngine *engine)
void registerOgreGpuProgramParameters(AngelScript::asIScriptEngine *engine)
void registerOgreDegree(AngelScript::asIScriptEngine *engine)
void registerOgreAnimationStateSet(AngelScript::asIScriptEngine *engine)
void registerOgreNodeBase(AngelScript::asIScriptEngine *engine, const char *obj)
void registerOgreBox(AngelScript::asIScriptEngine *engine)
void registerOgreNode(AngelScript::asIScriptEngine *engine)
void registerOgreTexture(AngelScript::asIScriptEngine *engine)
void registerOgreSceneManager(AngelScript::asIScriptEngine *engine)
void registerOgreImage(AngelScript::asIScriptEngine *engine)
void registerOgreTextureUnitState(AngelScript::asIScriptEngine *engine)
void registerOgreTextureManager(AngelScript::asIScriptEngine *engine)
void registerOgreSubMesh(AngelScript::asIScriptEngine *engine)
void registerOgreMovableObjectBase(AngelScript::asIScriptEngine *engine, const char *obj)
void registerOgreMaterialManager(AngelScript::asIScriptEngine *engine)
void registerOgreEntity(AngelScript::asIScriptEngine *engine)
void registerOgreTechnique(AngelScript::asIScriptEngine *engine)
void registerOgreTimer(AngelScript::asIScriptEngine *engine)
void registerOgreLight(AngelScript::asIScriptEngine *engine)
void registerOgreOverlayManager(AngelScript::asIScriptEngine *engine)
void registerOgreQuaternion(AngelScript::asIScriptEngine *engine)
void registerOgreOverlayElement(AngelScript::asIScriptEngine *engine)
void registerOgreSceneNode(AngelScript::asIScriptEngine *engine)
void registerOgreSubEntity(AngelScript::asIScriptEngine *engine)
void registerOgreOverlay(AngelScript::asIScriptEngine *engine)
void registerOgreVector2(AngelScript::asIScriptEngine *engine)
void registerOgreVector3(AngelScript::asIScriptEngine *engine)
void registerOgreManualObject(AngelScript::asIScriptEngine *engine)
void registerOgreAnimationState(AngelScript::asIScriptEngine *engine)
void registerOgrePass(AngelScript::asIScriptEngine *engine)
void registerOgreRadian(AngelScript::asIScriptEngine *engine)
void registerOgreColourValue(AngelScript::asIScriptEngine *engine)
void registerOgreMovableObject(AngelScript::asIScriptEngine *engine)
void registerOgreRoot(AngelScript::asIScriptEngine *engine)
Helper/wrapper functions shared by native (OgreAngelscript.cpp) and generic (OgreAngelscriptGeneric....
static void RegisterReadonlyScriptArrayView(AngelScript::asIScriptEngine *engine, const char *decl, const char *value_decl)
static void RegisterReadonlyScriptDictView(AngelScript::asIScriptEngine *engine, const char *decl, const char *value_decl)
void RegisterOgreObjectsNative(AngelScript::asIScriptEngine *engine)
static void GpuProgramParametersPtrCopyConstructor(const GpuProgramParametersPtr &other, GpuProgramParametersPtr *self)
static TechniqueArray * MaterialPtrGetTechniques(const MaterialPtr &self)
static Ogre::uint32 TexturePtrGetWidth(TexturePtr const &self)
static Ogre::OverlayElement * OverlayManagerCloneOverlayElementFromTemplate(Ogre::OverlayManager *self, const std::string &templateName, const std::string &instanceName)
static void GpuProgramParametersPtrSetConstantFloat(GpuProgramParametersPtr const &self, asUINT index, float val)
static AnimationStateDict * AnimationStateSetGetAnimationStates(AnimationStateSet *self)
static void MeshPtrDefaultConstructor(MeshPtr *self)
static void GpuProgramParametersPtrSetConstantColourValueArray(GpuProgramParametersPtr const &self, asUINT index, CScriptArray *vals)
static Ogre::Technique * MaterialPtrCreateTechnique(MaterialPtr const &self)
static void MaterialPtrAssignOperator(const MaterialPtr &other, MaterialPtr *self)
static void GpuProgramParametersPtrSetConstantVector2Array(GpuProgramParametersPtr const &self, asUINT index, CScriptArray *vals)
static asUINT PixelBoxGetWidth(const Ogre::PixelBox &self)
static void MaterialPtrDestructor(MaterialPtr *self)
static void GpuProgramParametersPtrSetNamedConstantVector3(GpuProgramParametersPtr const &self, const std::string &name, const Ogre::Vector3 &val)
static Ogre::GpuProgramParametersPtr PassGetComputeProgramParameters(Ogre::Pass *self)
static void ImageCopyConstructor(const Image &other, Image *self)
static HardwarePixelBufferSharedPtr TexturePtrGetBuffer(TexturePtr const &self, asUINT face, asUINT mipmap)
static AngelScript::CScriptArray * SubMesh__getVertexTexcoords(SubMesh *self, asUINT index)
static bool OverlayManagerIsTemplate(Ogre::OverlayManager *self, const std::string &name)
static void MeshPtrAssignOperator(const MeshPtr &other, MeshPtr *self)
static void ImageDefaultConstructor(Image *self)
static void MeshPtrCopyConstructor(const MeshPtr &other, MeshPtr *self)
static bool MeshPtrIsNull(MeshPtr *self)
static ChildNodeArray * NodeGetChildren(Ogre::Node *self)
static void BoxDestructor(Box *self)
static void Vector2DefaultConstructor(Vector2 *self)
static Ogre::GpuProgramParametersPtr PassGetGeometryProgramParameters(Ogre::Pass *self)
static asUINT HardwarePixelBufferPtrGetWidth(HardwarePixelBufferSharedPtr const &self)
static SubEntityArray * EntityGetSubEntities(Entity *self)
static void HardwarePixelBufferPtrBlitFromMemory(HardwarePixelBufferSharedPtr const &self, const PixelBox &src, const Box &dstBox)
static void PixelBoxCopyConstructor(const PixelBox &other, PixelBox *self)
static void OverlayAdd2D(Ogre::Overlay *self, Ogre::OverlayElement *elem)
static CScriptArray * SubMesh__getIndexBuffer16bit(Ogre::SubMesh *self)
static Ogre::GpuProgramParametersPtr PassGetTessellationDomainProgramParameters(Ogre::Pass *self)
static void BoxCopyConstructor(const Box &other, Box *self)
static void RadianInitConstructor(float r, Radian *self)
static void ImageDestructor(PixelBox *self)
static Ogre::uint32 TexturePtrGetHeight(TexturePtr const &self)
static std::string MovableObjectGetUniqueNameMixin(Ogre::MovableObject *self)
static Ogre::OverlayElement * OverlayManagerCreateOverlayElementFromTemplate(Ogre::OverlayManager *self, const std::string &templateName, const std::string &typeName, const std::string &instanceName, bool isTemplate)
static const PixelBox & HardwarePixelBufferPtrLock(HardwarePixelBufferSharedPtr const &self, const Box &lockbox, HardwareBuffer::LockOptions opt)
static void TimerDefaultConstructor(Timer *self)
static void PixelBoxDestructor(PixelBox *self)
static MovableObjectArray * SceneNodeGetAttachedObjects(SceneNode *self)
static PassArray * TechniqueGetPasses(Technique *self)
static void TexturePtrAssignOperator(const TexturePtr &other, TexturePtr *self)
static void MaterialPtrDefaultConstructor(MaterialPtr *self)
static void MeshPtrDestructor(MeshPtr *self)
static MaterialPtr MaterialManagerCreate(MaterialManager &mgr, std::string const &file, std::string const &rg)
static void GpuProgramParametersPtrSetNamedConstantColourValueArray(GpuProgramParametersPtr const &self, const std::string &name, CScriptArray *vals)
static void GpuProgramParametersPtrSetNamedConstantVector2Array(GpuProgramParametersPtr const &self, const std::string &name, CScriptArray *vals)
static int RadianCmp(const Radian &a, const Radian &b)
static void DegreeDefaultConstructor(Degree *self)
static void GpuProgramParametersPtrSetConstantVector3(GpuProgramParametersPtr const &self, asUINT index, const Ogre::Vector3 &val)
static void GpuProgramParametersPtrDestructor(GpuProgramParametersPtr *self)
static Ogre::String TexturePtrGetName(TexturePtr const &self)
static AngelScript::CScriptArray * SceneManager__getMovableObjectsByType(SceneManager *self, const std::string &typeName)
static Ogre::String MaterialPtrGetName(MaterialPtr const &self)
static void GpuProgramParametersPtrSetConstantVector2(GpuProgramParametersPtr const &self, asUINT index, const Ogre::Vector2 &val)
static void Vector3InitConstructorScaler(float s, Vector3 *self)
static void Vector2CopyConstructor(const Vector2 &other, Vector2 *self)
static void MeshManagerRemove(MeshManager &mgr, std::string const &file, std::string const &rg)
static void Vector3CopyConstructor(const Vector3 &other, Vector3 *self)
static void OverlayManagerDestroy(Ogre::OverlayManager *self, Ogre::Overlay *ov)
static void GpuProgramParametersPtrSetNamedConstantColourValue(GpuProgramParametersPtr const &self, const std::string &name, const Ogre::ColourValue &val)
static void PixelBoxDefaultConstructor(PixelBox *self)
static void ColourValueDefaultConstructor(ColourValue *self)
static void RadianCopyConstructor(const Radian &other, Radian *self)
static void GpuProgramParametersPtrSetConstantVector3Array(GpuProgramParametersPtr const &self, asUINT index, CScriptArray *vals)
static void TexturePtrDefaultConstructor(TexturePtr *self)
static SceneManagerInstanceDict * RootGetSceneManagers(Root *self)
static void Vector2InitConstructorScaler(float s, Vector2 *self)
static Ogre::GpuProgramParametersPtr PassGetFragmentProgramParameters(Ogre::Pass *self)
static CScriptArray * OverlayManagerGetOverlays(Ogre::OverlayManager *self)
static void QuaternionInitConstructor1(const Radian &rfAngle, const Vector3 &rkAxis, Quaternion *self)
static CScriptArray * SubMesh__getIndexBuffer32bit(Ogre::SubMesh *self)
static void GpuProgramParametersPtrSetNamedConstantFloat(GpuProgramParametersPtr const &self, const std::string &name, float val)
static TextureUnitStateArray * PassGetTextureUnitStates(Pass *self)
static asUINT HardwarePixelBufferPtrGetHeight(HardwarePixelBufferSharedPtr const &self)
static void ImageAssignOperator(const PixelBox &other, PixelBox *self)
static Ogre::Entity * SceneManagerCreateEntity(Ogre::SceneManager *self, const std::string &entityName, const std::string &meshName, const std::string &meshRG)
static void QuaternionDefaultConstructor(Quaternion *self)
static std::string NodeGetUniqueNameMixin(Ogre::Node *self)
static bool GpuProgramParametersPtrIsNull(GpuProgramParametersPtr *self)
static void GpuProgramParametersPtrSetConstantColourValue(GpuProgramParametersPtr const &self, asUINT index, const Ogre::ColourValue &val)
static void HardwarePixelBufferPtrCopyConstructor(const HardwarePixelBufferSharedPtr &other, HardwarePixelBufferSharedPtr *self)
static void OverlayManagerDestroyAllOverlayElements(Ogre::OverlayManager *self, bool isTemplate)
static void BoxAssignOperator(const Box &other, Box *self)
static void TimerAssignOperator(const Timer &other, Timer *self)
static bool MaterialPtrIsNull(MaterialPtr *self)
static bool TexturePtrIsNull(TexturePtr *self)
static Ogre::uint32 TexturePtrGetNumMipmaps(TexturePtr const &self)
static TexturePtr TextureManagerLoad(TextureManager &mgr, std::string const &file, std::string const &rg)
static void HardwarePixelBufferPtrUnlock(HardwarePixelBufferSharedPtr const &self)
static void TimerDefaultDestructor(Timer *self)
static void OverlayManagerDestroyAll(Ogre::OverlayManager *self)
static void QuaternionInitConstructor3(const Vector3 &xaxis, const Vector3 &yaxis, const Vector3 &zaxis, Quaternion *self)
static void BoxInitConstructor(asUINT l, asUINT t, asUINT r, asUINT b, Box *self)
static void PixelBoxAssignOperator(const PixelBox &other, PixelBox *self)
static void OverlayManagerDestroyOverlayElementByName(Ogre::OverlayManager *self, const std::string &name, bool isTemplate)
static void GpuProgramParametersPtrSetNamedConstantFloatArray(GpuProgramParametersPtr const &self, const std::string &name, CScriptArray *vals)
static AngelScript::CScriptArray * getElementTemplatesHelper(Ogre::OverlayManager *self)
static Ogre::GpuProgramParametersPtr PassGetTessellationHullProgramParameters(Ogre::Pass *self)
static void DegreeInitConstructor(float r, Degree *self)
static Ogre::SubMesh * MeshPtrCreateSubMesh(MeshPtr const &self, const Ogre::String &name)
static void TimerCopyConstructor(const Timer &other, Timer *self)
static void Vector3InitConstructor(float x, float y, float z, Vector3 *self)
static void RadianDefaultConstructor(Radian *self)
static SubMeshArray * MeshPtrGetSubmeshes(const MeshPtr &self)
static Ogre::HardwareIndexBuffer::IndexType SubMesh__getIndexType(SubMesh *self)
static asUINT PixelBoxGetDepth(const Ogre::PixelBox &self)
static void MaterialPtrRemoveTechnique(MaterialPtr const &self, uint16_t index)
static void Vector2InitConstructor(float x, float y, Vector2 *self)
static void HardwarePixelBufferPtrDestructor(HardwarePixelBufferSharedPtr *self)
static void HardwarePixelBufferPtrBlitToMemory(HardwarePixelBufferSharedPtr const &self, const Box &srcBox, const PixelBox &dst)
static void Vector3DefaultConstructor(Vector3 *self)
static void ColourValueInitConstructor(float r, float g, float b, float a, ColourValue *self)
static void GpuProgramParametersPtrSetConstantFloatArray(GpuProgramParametersPtr const &self, asUINT index, CScriptArray *vals)
static void HardwarePixelBufferPtrAssignOperator(const HardwarePixelBufferSharedPtr &other, HardwarePixelBufferSharedPtr *self)
static void QuaternionInitConstructor2(float w, float x, float y, float z, Quaternion *self)
static void GpuProgramParametersPtrSetNamedConstantVector3Array(GpuProgramParametersPtr const &self, const std::string &name, CScriptArray *vals)
static MaterialPtr MaterialManagerGetByName(MaterialManager &mgr, std::string const &file, std::string const &rg)
static void BoxDefaultConstructor(Box *self)
static Ogre::OverlayElement * OverlayManagerGetOverlayElement(Ogre::OverlayManager *self, const std::string &name)
static asUINT PixelBoxGetHeight(const Ogre::PixelBox &self)
static AngelScript::CScriptArray * SubMesh__getVertexPositions(SubMesh *self)
static Ogre::String MeshPtrGetName(MeshPtr const &self)
static void HardwarePixelBufferPtrDefaultConstructor(HardwarePixelBufferSharedPtr *self)
static void MaterialPtrCopyConstructor(const MaterialPtr &other, MaterialPtr *self)
static Ogre::GpuProgramParametersPtr PassGetVertexProgramParameters(Ogre::Pass *self)
static Ogre::OverlayElement * OverlayManagerCreateOverlayElement(Ogre::OverlayManager *self, const std::string &type, const std::string &name, bool isTemplate)
static MeshPtr MeshManagerLoad(MeshManager &mgr, std::string const &file, std::string const &rg)
static void OverlayManagerDestroyOverlayElement(Ogre::OverlayManager *self, Ogre::OverlayElement *oe, bool isTemplate)
static void GpuProgramParametersPtrDefaultConstructor(GpuProgramParametersPtr *self)
static Ogre::Overlay * OverlayManagerCreate(Ogre::OverlayManager *self, const std::string &name)
static void TexturePtrDestructor(TexturePtr *self)
static void QuaternionCopyConstructor(const Quaternion &other, Quaternion *self)
static void MeshPtrDestroySubMesh(MeshPtr const &self, const Ogre::String &name)
static void OverlayManagerDestroyByName(Ogre::OverlayManager *self, const std::string &name)
static Ogre::Overlay * OverlayManagerGetByName(Ogre::OverlayManager *self, const std::string &name)
static const PixelBox & HardwarePixelBufferPtrGetCurrentLock(HardwarePixelBufferSharedPtr const &self)
static int DegreeCmp(const Degree &a, const Degree &b)
static CScriptArray * GpuProgramParametersPtr__getNamedConstants(GpuProgramParametersPtr const &self)
static void DegreeCopyConstructor(const Degree &other, Degree *self)
static void TexturePtrCopyConstructor(const TexturePtr &other, TexturePtr *self)
static AngelScript::CScriptArray * get2DElementsHelper(Ogre::Overlay *self)
static void QuaternionInitConstructorScaler(float s, Quaternion *self)
static void GpuProgramParametersPtrSetNamedConstantVector2(GpuProgramParametersPtr const &self, const std::string &name, const Ogre::Vector2 &val)
static void GpuProgramParametersPtrAssignOperator(const GpuProgramParametersPtr &other, GpuProgramParametersPtr *self)
static void OverlayRemove2D(Ogre::Overlay *self, Ogre::OverlayElement *elem)