00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "asIrrHelper.h"
00018 #include "asSColor.h"
00019
00020
00021
00025 void constructor(void *memory)
00026 {
00027 new (memory) SColor();
00028 }
00029
00033 void constructor(u32 clr, void *memory)
00034 {
00035 new (memory) SColor(clr);
00036 }
00037
00041 void constructor(u32 a, u32 r, u32 g, u32 b, void *memory)
00042 {
00043 new (memory) SColor(a, r, g, b);
00044 }
00045
00049 void deconstructor(void *memory)
00050 {
00051 ((SColor*)memory)->~SColor();
00052 }
00053
00054
00057 void bindSColor(asIScriptEngine *engine)
00058 {
00059
00060 int r;
00061
00062
00063 r = engine->RegisterObjectType("SColor", sizeof(SColor), asOBJ_VALUE | asOBJ_APP_CLASS_CD); assert(r >= 0);
00064
00065
00066
00067 r = engine->RegisterObjectBehaviour("SColor", asBEHAVE_CONSTRUCT, "void f()", asFUNCTIONPR(constructor,
00068 (void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0);
00069
00070 r = engine->RegisterObjectBehaviour("SColor", asBEHAVE_CONSTRUCT, "void f(u32)", asFUNCTIONPR(constructor,
00071 (u32, void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0);
00072
00073 r = engine->RegisterObjectBehaviour("SColor", asBEHAVE_CONSTRUCT, "void f(u32)", asFUNCTIONPR(constructor,
00074 (u32, u32, u32, u32, void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0);
00075
00076 r = engine->RegisterObjectBehaviour("SColor", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(deconstructor),
00077 asCALL_CDECL_OBJLAST); assert(r >= 0);
00078
00079
00080 r = engine->RegisterGlobalBehaviour(asBEHAVE_ADD, "SColor f(const SColor &in, const SColor &in)",
00081 asFUNCTIONPR((add< SColor, SColor, SColor >),
00082 (const SColor&, const SColor&), SColor),
00083 asCALL_CDECL); assert(r >= 0);
00084
00085
00086 std::string declComparison = "bool f(const SColor &in, const SColor &in)";
00087
00088 r = engine->RegisterGlobalBehaviour(asBEHAVE_EQUAL, declComparison.c_str(), asFUNCTIONPR(equal<SColor>,
00089 (const SColor&, const SColor&), bool), asCALL_CDECL); assert(r >= 0);
00090 r = engine->RegisterGlobalBehaviour(asBEHAVE_NOTEQUAL, declComparison.c_str(), asFUNCTIONPR(not_equal<SColor>,
00091 (const SColor&, const SColor&), bool), asCALL_CDECL); assert(r >= 0);
00092 r = engine->RegisterGlobalBehaviour(asBEHAVE_LESSTHAN, declComparison.c_str(), asFUNCTIONPR(less_than<SColor>,
00093 (const SColor&, const SColor&), bool), asCALL_CDECL); assert(r >= 0);
00094
00095
00096 r = engine->RegisterObjectMethod("SColor", "u32 getAlpha()",
00097 asMETHOD(SColor, getAlpha), asCALL_THISCALL); assert(r >= 0);
00098 r = engine->RegisterObjectMethod("SColor", "u32 getAverage()",
00099 asMETHOD(SColor, getAverage), asCALL_THISCALL); assert(r >= 0);
00100 r = engine->RegisterObjectMethod("SColor", "u32 getBlue()",
00101 asMETHOD(SColor, getBlue), asCALL_THISCALL); assert(r >= 0);
00102 r = engine->RegisterObjectMethod("SColor", "u32 getGreen()",
00103 asMETHOD(SColor, getGreen), asCALL_THISCALL); assert(r >= 0);
00104 r = engine->RegisterObjectMethod("SColor", "SColor getInterpolated(const SColor &in, f32)",
00105 asMETHOD(SColor, getInterpolated), asCALL_THISCALL); assert(r >= 0);
00106 r = engine->RegisterObjectMethod("SColor", "SColor getInterpolated_quadratic(const SColor &in, " \
00107 "const SColor &in, f32)", asMETHOD(SColor, getInterpolated_quadratic),
00108 asCALL_THISCALL); assert(r >= 0);
00109 r = engine->RegisterObjectMethod("SColor", "f32 getLuminance()",
00110 asMETHOD(SColor, getLuminance), asCALL_THISCALL); assert(r >= 0);
00111 r = engine->RegisterObjectMethod("SColor", "u32 getRed()",
00112 asMETHOD(SColor, getRed), asCALL_THISCALL); assert(r >= 0);
00113 r = engine->RegisterObjectMethod("SColor", "void set(u32)",
00114 asMETHODPR(SColor, set, (u32), void), asCALL_THISCALL); assert(r >= 0);
00115 r = engine->RegisterObjectMethod("SColor", "void set(u32, u32, u32, u32)",
00116 asMETHODPR(SColor, set, (u32, u32, u32, u32), void), asCALL_THISCALL);
00117 assert(r >= 0);
00118 r = engine->RegisterObjectMethod("SColor", "void setAlpha(u32)",
00119 asMETHOD(SColor, setAlpha), asCALL_THISCALL); assert(r >= 0);
00120 r = engine->RegisterObjectMethod("SColor", "void setBlue(u32)",
00121 asMETHOD(SColor, setBlue), asCALL_THISCALL); assert(r >= 0);
00122 r = engine->RegisterObjectMethod("SColor", "void setGreen(u32)",
00123 asMETHOD(SColor, setGreen), asCALL_THISCALL); assert(r >= 0);
00124 r = engine->RegisterObjectMethod("SColor", "void setRed(u32)",
00125 asMETHOD(SColor, setRed), asCALL_THISCALL); assert(r >= 0);
00126
00127
00128 r = engine->RegisterObjectProperty("SColor", "u32 color", offsetof(SColor, color)); assert(r >= 0);
00129 }
00130
00131