From a16ce94158c9cf22a19c0e73dfe2e992a8302af1 Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 8 Dec 2018 22:05:31 +0800 Subject: =?UTF-8?q?*=E5=8E=BB=E9=99=A4shared=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lua/modules/graphics/je_lua_graphics.cpp | 80 ++++++++++++++-------------- 1 file changed, 40 insertions(+), 40 deletions(-) (limited to 'src/lua/modules/graphics/je_lua_graphics.cpp') diff --git a/src/lua/modules/graphics/je_lua_graphics.cpp b/src/lua/modules/graphics/je_lua_graphics.cpp index 40bb4fa..accd209 100644 --- a/src/lua/modules/graphics/je_lua_graphics.cpp +++ b/src/lua/modules/graphics/je_lua_graphics.cpp @@ -208,7 +208,7 @@ namespace JinEngine return 1; } } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Bitmap, new Shared(bitmap, Jin_Lua_Bitmap)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Bitmap, new Shared(bitmap, Jin_Lua_Bitmap)); return 1; } @@ -218,9 +218,8 @@ namespace JinEngine Texture* texture = nullptr; if (luax_istype(L, 1, Jin_Lua_Bitmap)) { - LuaObject* p = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Bitmap); - Shared& refBitmap = p->getShared(); - Bitmap* bitmap = refBitmap.getObject(); + LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Bitmap); + Bitmap* bitmap = luaObj->getObject(); texture = new Texture(bitmap); } else if (luax_isstring(L, 1)) @@ -228,7 +227,7 @@ namespace JinEngine const char* path = luax_checkstring(L, 1); texture = new Texture(path); } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Texture, new Shared(texture, Jin_Lua_Texture)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Texture, new Shared(texture, Jin_Lua_Texture)); return 1; } @@ -242,7 +241,7 @@ namespace JinEngine luax_pushnil(L); return 1; } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Shader, new Shared(jsl, Jin_Lua_Shader)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Shader, new Shared(jsl, Jin_Lua_Shader)); return 1; } @@ -265,7 +264,7 @@ namespace JinEngine luax_pushnil(L); return 1; } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Shader, new Shared(jsl, Jin_Lua_Shader)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Shader, new Shared(jsl, Jin_Lua_Shader)); return 1; } @@ -274,7 +273,7 @@ namespace JinEngine int w = luax_checknumber(L, 1); int h = luax_checknumber(L, 2); Canvas* cvs = new Canvas(w, h); - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Canvas, new Shared(cvs, Jin_Lua_Canvas)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Canvas, new Shared(cvs, Jin_Lua_Canvas)); return 1; } @@ -322,7 +321,7 @@ namespace JinEngine float ox = luax_optnumber(L, 7, 0); float oy = luax_optnumber(L, 8, 0); LuaObject* luaObj = (LuaObject*)luax_toudata(L, 1); - Shared& tex = luaObj->getShared(); + Texture* tex = luaObj->getObject(); tex->render(x, y, sx, sy, r, ox, oy); } @@ -338,8 +337,8 @@ namespace JinEngine float ox = luax_optnumber(L, 7, 0); float oy = luax_optnumber(L, 8, 0); LuaObject* luaObj = (LuaObject*)luax_toudata(L, 1); - Shared& p = luaObj->getShared(); - p->render(x, y, sx, sy, r, ox, oy); + Canvas* canvas = luaObj->getObject(); + canvas->render(x, y, sx, sy, r, ox, oy); } /* jin.graphics.draw(text, font, x, y) */ @@ -444,14 +443,14 @@ namespace JinEngine if (luax_istype(L, 1, Jin_Lua_Texture)) { LuaObject* luaObj = (LuaObject*)luax_toudata(L, 1); - Shared& tex = luaObj->getShared(); + Texture* tex = luaObj->getObject(); tex->render(q, x, y, sx, sy, r, ox, oy); } else if (luax_istype(L, 1, Jin_Lua_Canvas)) { LuaObject* luaObj = (LuaObject*)luax_toudata(L, 1); - Shared& p = luaObj->getShared(); - p->render(q, x, y, sx, sy, r, ox, oy); + Canvas* canvas = luaObj->getObject(); + canvas->render(q, x, y, sx, sy, r, ox, oy); } else { @@ -514,8 +513,8 @@ namespace JinEngine return 0; } LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Canvas); - Shared& shared = luaObj->getShared(); - gl.bindCanvas(shared.getObject()); + Canvas* canvas = luaObj->getObject(); + gl.bindCanvas(canvas); return 0; } @@ -535,8 +534,8 @@ namespace JinEngine if (luax_istype(L, 1, Jin_Lua_Shader)) { LuaObject* luaObj = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Shader); - Shared& shader = luaObj->getShared(); - gl.useShader(shader.getObject()); + Shader* shader = luaObj->getObject(); + gl.useShader(shader); } else { @@ -685,7 +684,7 @@ namespace JinEngine fs->read(path, b); fd = new TTFData(&b, b.size()); } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_TTFData, new Shared(fd, Jin_Lua_TTFData)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_TTFData, new Shared(fd, Jin_Lua_TTFData)); return 1; } @@ -708,7 +707,7 @@ namespace JinEngine unsigned length; const char* data = luax_checklstring(L, 1, &length); Text* text = new Text(encode, data, length); - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Text, new Shared(text, Jin_Lua_Text)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_Text, new Shared(text, Jin_Lua_Text)); return 1; } @@ -736,7 +735,7 @@ namespace JinEngine quad.h = luax_rawgetnumberthenpop(L, 2, 4); int o = luax_checkinteger(L, 3); Origin origin = static_cast(o); - LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, quad, origin), Jin_Lua_Sprite)); + LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, quad, origin), Jin_Lua_Sprite)); p->setDependency((int)SpriteDependency::DEP_GRAPHIC, objGraphic->getShared()); } else if (n == 4) @@ -748,21 +747,21 @@ namespace JinEngine quad.h = luax_rawgetnumberthenpop(L, 2, 4); int ox = luax_checkinteger(L, 3); int oy = luax_checkinteger(L, 4); - LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, quad, ox, oy), Jin_Lua_Sprite)); + LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, quad, ox, oy), Jin_Lua_Sprite)); p->setDependency((int)SpriteDependency::DEP_GRAPHIC, objGraphic->getShared()); } else if (n == 2) { int o = luax_checkinteger(L, 2); Origin origin = static_cast(o); - LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, origin), Jin_Lua_Sprite)); + LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, origin), Jin_Lua_Sprite)); p->setDependency((int)SpriteDependency::DEP_GRAPHIC, objGraphic->getShared()); } else if (n == 3) { int ox = luax_checkinteger(L, 2); int oy = luax_checkinteger(L, 3); - LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, ox, oy), Jin_Lua_Sprite)); + LuaObject* p = luax_newinstance(L, Jin_Lua_Sprite, new Shared(new Sprite(graphic, ox, oy), Jin_Lua_Sprite)); p->setDependency((int)SpriteDependency::DEP_GRAPHIC, objGraphic->getShared()); } else @@ -785,10 +784,10 @@ namespace JinEngine if (objGraphic != nullptr) { Graphic* graphic = objGraphic->getObject(); - Shared* shrSSheet = new Shared(new SpriteSheet(graphic), Jin_Lua_SpriteSheet); - Shared& shrGraphic = objGraphic->getShared(); + Shared* shrSSheet = new Shared(new SpriteSheet(graphic), Jin_Lua_SpriteSheet); + Shared* shrGraphic = objGraphic->getShared(); LuaObject* luaSSheet = luax_newinstance(L, Jin_Lua_SpriteSheet, shrSSheet); - luaSSheet->setDependency((int)SpriteSheetDependency::DEP_GRAPHIC, &shrGraphic); + luaSSheet->setDependency((int)SpriteSheetDependency::DEP_GRAPHIC, shrGraphic); return 1; } else @@ -799,7 +798,8 @@ namespace JinEngine LUA_IMPLEMENT int l_newAnimation(lua_State* L) { int argc = luax_gettop(L); - Shared* shrAnimation = new Shared(new Animation(), Jin_Lua_Animation); + Animation* animation = new Animation(); + Shared* shrAnimation = new Shared(animation, Jin_Lua_Animation); LuaObject* luaAnimation = luax_newinstance(L, Jin_Lua_Animation, shrAnimation); if (argc >= 3) { @@ -815,13 +815,12 @@ namespace JinEngine { luax_rawgeti(L, 1, i); LuaObject* luaSprite = (LuaObject*)luax_checktype(L, -1, Jin_Lua_Sprite); - Shared& shrSprite = luaSprite->getShared(); - (*shrAnimation)->addFrame(shrSprite.getObject()); - int index = (*shrAnimation)->getFrameCount() - 1; - luaAnimation->setDependency((int)AnimationDependency::DEP_SPRITES + index, &shrSprite); + animation->addFrame(luaSprite->getObject()); + int index = animation->getFrameCount() - 1; + luaAnimation->setDependency((int)AnimationDependency::DEP_SPRITES + index, luaSprite->getShared()); } - (*shrAnimation)->setLoop(loop); - (*shrAnimation)->setSpeed(speed); + animation->setLoop(loop); + animation->setSpeed(speed); } luax_pushvalue(L, argc + 1); return 1; @@ -831,14 +830,15 @@ namespace JinEngine LUA_IMPLEMENT int l_newAnimator(lua_State* L) { int argc = luax_gettop(L); - Shared* shrAniamtor = new Shared(new Animator(), Jin_Lua_Animator); + Animator* animator = new Animator(); + Shared* shrAniamtor = new Shared(animator, Jin_Lua_Animator); if (argc >= 1) { LuaObject* luaAnimation = (LuaObject*)luax_checktype(L, 1, Jin_Lua_Animation); - Shared& shrAnimtion = luaAnimation->getShared(); - (*shrAniamtor)->setAnimation(shrAnimtion.getObject()); + Shared* shrAnimtion = luaAnimation->getShared(); + animator->setAnimation(shrAnimtion->getObject()); LuaObject* luaAnimator = luax_newinstance(L, Jin_Lua_Animator, shrAniamtor); - luaAnimator->setDependency((int)AnimatorDependency::DEP_ANIMATION, &shrAnimtion); + luaAnimator->setDependency((int)AnimatorDependency::DEP_ANIMATION, shrAnimtion); return 1; } LuaObject* luaAnimator = luax_newinstance(L, Jin_Lua_Animator, shrAniamtor); @@ -892,13 +892,13 @@ namespace JinEngine // Delete temporary text. delete text; } - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_TextureFont, new Shared(textureFont, Jin_Lua_TextureFont)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_TextureFont, new Shared(textureFont, Jin_Lua_TextureFont)); return 1; } LUA_IMPLEMENT int l_newParticleSystem(lua_State* L) { - LuaObject* luaObj = luax_newinstance(L, Jin_Lua_ParticleSystem, new Shared(new ParticleSystem(), Jin_Lua_ParticleSystem)); + LuaObject* luaObj = luax_newinstance(L, Jin_Lua_ParticleSystem, new Shared(new ParticleSystem(), Jin_Lua_ParticleSystem)); return 1; } -- cgit v1.1-26-g67d0