// // MY CLASS TYPE // // Copyright © 2009-2015 Benjamin "Touky" Huet // // This program is free software. It comes without any warranty, to // the extent permitted by applicable law. You can redistribute it // and/or modify it under the terms of the Do What the Fuck You Want // to Public License, Version 2, as published by the WTFPL Task Force. // See http://www.wtfpl.net/ for more details. // #pragma once namespace lol { //----------------------------------------------------------------------------- class EasyMeshLuaLoader : public LuaLoader { public: EasyMeshLuaLoader(); virtual ~EasyMeshLuaLoader(); }; //----------------------------------------------------------------------------- class EasyMeshLuaObject : public LuaObjectDef { typedef Lolua::VarPtr EzMeshPtr; EasyMesh m_instance; public: //------------------------------------------------------------------------- EasyMeshLuaObject(); virtual ~EasyMeshLuaObject(); //------------------------------------------------------------------------- static EasyMeshLuaObject* New(LuaState* l, int arg_nb); static const LuaObjectLib* GetLib(); //------------------------------------------------------------------------- static int AppendCylinder(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 nsides; LuaFloat h, d1, d2; LuaBool dualside(false, true), smooth(false, true), close(false, true); s >> m >> nsides >> h >> d1 >> d2 >> dualside >> smooth >> close; m->m_instance.AppendCylinder(nsides, h, d1, d2, dualside, smooth, close); return 0; } static int AppendSphere(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 ndivisions; LuaFloat d; s >> m >> ndivisions >> d; m->m_instance.AppendSphere(ndivisions, d); return 0; } static int AppendCapsule(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 ndivisions; LuaFloat h, d; s >> m >> ndivisions >> h >> d; m->m_instance.AppendCapsule(ndivisions, h, d); return 0; } static int AppendTorus(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 ndivisions; LuaFloat d1, d2; s >> m >> ndivisions >> d1 >> d2; m->m_instance.AppendTorus(ndivisions, d1, d2); return 0; } static int AppendBox(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaVec3 size; LuaFloat chamf(0.f, true); LuaBool smooth(false, true); s >> m >> size >> chamf >> smooth; m->m_instance.AppendBox(size, chamf, smooth); return 0; } static int AppendStar(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 nbranches; LuaFloat d1, d2; LuaBool fade(false, true), fade2(false, true); s >> m >> nbranches >> d1 >> d2 >> fade >> fade2; m->m_instance.AppendStar(nbranches, d1, d2, fade, fade2); return 0; } static int AppendExpandedStar(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 nbranches; LuaFloat d1, d2, extrad(0.f, true); s >> m >> nbranches >> d1 >> d2 >> extrad; m->m_instance.AppendExpandedStar(nbranches, d1, d2, extrad); return 0; } static int AppendDisc(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 nsides; LuaFloat d; LuaBool fade(false, true); s >> m >> nsides >> d >> fade; m->m_instance.AppendDisc(nsides, d, fade); return 0; } static int AppendSimpleTriangle(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat d; LuaBool fade(false, true); s >> m >> d >> fade; m->m_instance.AppendSimpleTriangle(d, fade); return 0; } static int AppendSimpleQuad(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat size; LuaBool fade(false, true); s >> m >> size >> fade; m->m_instance.AppendSimpleQuad(size, fade); return 0; } static int AppendCog(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 nbsides; LuaFloat h, sidemul(0.f, true); LuaVec2 d0, d1, d2; LuaBool offset(false, true); s >> m >> nbsides >> h >> d0 >> d1 >> d2 >> sidemul >> offset; m->m_instance.AppendCog(nbsides, h, d0().x, d0().y, d1().x, d1().y, d2().x, d2().y, sidemul, offset); return 0; } //------------------------------------------------------------------------- static int TranslateX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat f; s >> m >> f; m->m_instance.TranslateX(f); return 0; } static int TranslateY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat f; s >> m >> f; m->m_instance.TranslateY(f); return 0; } static int TranslateZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat f; s >> m >> f; m->m_instance.TranslateZ(f); return 0; } static int Translate(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaVec3 v; s >> m >> v; m->m_instance.Translate(v); return 0; } //------------------------------------------------------------------------- static int RotateX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat a; s >> m >> a; m->m_instance.RotateX(a); return 0; } static int RotateY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat a; s >> m >> a; m->m_instance.RotateY(a); return 0; } static int RotateZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat a; s >> m >> a; m->m_instance.RotateZ(a); return 0; } static int Rotate(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat a; LuaVec3 v; s >> m >> a >> v; m->m_instance.Rotate(a, v); return 0; } //------------------------------------------------------------------------- static int ScaleX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x; s >> m >> x; m->m_instance.ScaleX(x); return 0; } static int ScaleY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat y; s >> m >> y; m->m_instance.ScaleY(y); return 0; } static int ScaleZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat z; s >> m >> z; m->m_instance.ScaleZ(z); return 0; } static int Scale(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaVec3 v; s >> m >> v; m->m_instance.Scale(v); return 0; } //------------------------------------------------------------------------- static int RadialJitter(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat f; s >> m >> f; m->m_instance.RadialJitter(f); return 0; } //------------------------------------------------------------------------- static int TaperX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat y, z, xoff(0.f, true); LuaBool abs(true, true); s >> m >> y >> z >> xoff >> abs; m->m_instance.TaperX(y, z, xoff, abs); return 0; } static int TaperY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, z, yoff(0.f, true); LuaBool abs(true, true); s >> m >> x >> z >> yoff >> abs; m->m_instance.TaperY(x, z, yoff, abs); return 0; } static int TaperZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, y, zoff(0.f, true); LuaBool abs(true, true); s >> m >> x >> y >> zoff >> abs; m->m_instance.TaperZ(x, y, zoff, abs); return 0; } //------------------------------------------------------------------------- static int TwistX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.TwistX(t, toff); return 0; } static int TwistY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.TwistY(t, toff); return 0; } static int TwistZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.TwistZ(t, toff); return 0; } //------------------------------------------------------------------------- static int ShearX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat y, z, xoff(0.f, true); LuaBool abs(true, true); s >> m >> y >> z >> xoff >> abs; m->m_instance.ShearX(y, z, xoff, abs); return 0; } static int ShearY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, z, yoff(0.f, true); LuaBool abs(true, true); s >> m >> x >> z >> yoff >> abs; m->m_instance.ShearY(x, z, yoff, abs); return 0; } static int ShearZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, y, zoff(0.f, true); LuaBool abs(true, true); s >> m >> x >> y >> zoff >> abs; m->m_instance.ShearZ(x, y, zoff, abs); return 0; } //------------------------------------------------------------------------- static int StretchX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat y, z, xoff(0.f, true); s >> m >> y >> z >> xoff; m->m_instance.StretchX(y, z, xoff); return 0; } static int StretchY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, z, yoff(0.f, true); s >> m >> x >> z >> yoff; m->m_instance.StretchY(x, z, yoff); return 0; } static int StretchZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat x, y, zoff(0.f, true); s >> m >> x >> y >> zoff; m->m_instance.StretchZ(x, y, zoff); return 0; } //------------------------------------------------------------------------- static int BendXY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendXY(t, toff); return 0; } static int BendXZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendXZ(t, toff); return 0; } static int BendYX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendYX(t, toff); return 0; } static int BendYZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendYZ(t, toff); return 0; } static int BendZX(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendZX(t, toff); return 0; } static int BendZY(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat t, toff(0.f, true); s >> m >> t >> toff; m->m_instance.BendZY(t, toff); return 0; } //------------------------------------------------------------------------- static int MirrorX(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.MirrorX(); return 0; } static int MirrorY(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.MirrorY(); return 0; } static int MirrorZ(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.MirrorZ(); return 0; } //------------------------------------------------------------------------- static int LoopStart(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 loopnb; s >> m >> loopnb; m->m_instance.LoopStart(loopnb); return 0; } static int LoopEnd(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.LoopEnd(); return 0; } static int OpenBrace(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.OpenBrace(); return 0; } static int CloseBrace(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.CloseBrace(); return 0; } //------------------------------------------------------------------------- static int ToggleScaleWinding(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.ToggleScaleWinding(); return 0; } static int ToggleQuadWeighting(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.ToggleQuadWeighting(); return 0; } static int TogglePostBuildNormal(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.TogglePostBuildNormal(); return 0; } static int ToggleVerticeNoCleanup(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.ToggleVerticeNoCleanup(); return 0; } //------------------------------------------------------------------------- static int VerticesMerge(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.VerticesMerge(); return 0; } static int VerticesSeparate(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; m->m_instance.VerticesSeparate(); return 0; } //------------------------------------------------------------------------- static int Duplicate(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaVec3 ds(vec3(1.f)); s >> m >> ds; m->m_instance.DupAndScale(ds, true); return 0; } static int Smooth(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 pass, split_per_pass, smooth_per_pass; s >> m >> pass >> split_per_pass >> smooth_per_pass; m->m_instance.SmoothMesh(pass, split_per_pass, smooth_per_pass); return 0; } static int SplitTriangles(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaInt32 pass; s >> m >> pass; m->m_instance.SplitTriangles(pass); return 0; } static int Chamfer(LuaState* l) { LuaStack s(l); EzMeshPtr m; LuaFloat f; s >> m >> f; m->m_instance.Chamfer(f); return 0; } //------------------------------------------------------------------------- static int SetCurColor(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; LuaVec4 c; if (s.GetArgs() == 1 && !c.IsValid(l, 2)) { LuaString str; s >> str; c = Color::C8BppHexString(str); } m->m_instance.SetCurColor(c); return 0; } static int SetCurColorA(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; LuaVec4 c; if (s.GetArgs() == 1 && !c.IsValid(l, 2)) { LuaString str; s >> str; c = Color::C8BppHexString(str); } m->m_instance.SetCurColorA(c); return 0; } static int SetCurColorB(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; LuaVec4 c; if (s.GetArgs() == 1 && !c.IsValid(l, 2)) { LuaString str; s >> str; c = Color::C8BppHexString(str); } m->m_instance.SetCurColorB(c); return 0; } static int SetVertColor(LuaState* l) { LuaStack s(l); EzMeshPtr m; s >> m; LuaVec4 c; if (s.GetArgs() == 1 && !c.IsValid(l, 2)) { LuaString str; s >> str; c = Color::C8BppHexString(str); } m->m_instance.SetVertColor(c); return 0; } /* (csgu|csgunion) { return token::T_CSGUNION; } (csgs|CsgSub) { return token::T_CSGSUBSTRACT; } (csgsl|CsgSubL) { return token::T_CSGSUBSTRACTLOSS; } (csga|csgand) { return token::T_CSGAND; } (csgx|csgxor) { return token::T_CSGXOR; } */ }; } /* namespace lol */