static int lgetwpos(lua_State *L) { struct sprite *s = self(L); if (s->type == TYPE_ANCHOR) { struct matrix* mat = s->s.mat; lua_pushnumber(L,mat->m[4] /(float)SCREEN_SCALE); lua_pushnumber(L,mat->m[5] /(float)SCREEN_SCALE); return 2; } else { struct srt srt; fill_srt(L,&srt,2); struct matrix tmp; sprite_matrix(s, &tmp); int pos[2]; if (sprite_pos(s, &srt, &tmp, pos) == 0) { lua_pushinteger(L, pos[0]); lua_pushinteger(L, pos[1]); return 2; } else { return 0; } } return luaL_error(L, "Only anchor can get world matrix"); }
static int lgetwpos(lua_State *L) { struct sprite *s = self(L); if (s->type == TYPE_ANCHOR) { struct matrix* mat = s->s.mat; lua_pushnumber(L,mat->m[4] /(float)SCREEN_SCALE); lua_pushnumber(L,mat->m[5] /(float)SCREEN_SCALE); return 2; } else { struct srt srt; fill_srt(L,&srt,2); struct sprite *t = (struct sprite *)lua_touserdata(L, 3); if (t == NULL) { luaL_error(L, "Need target sprite"); } int pos[2]; if (sprite_pos(s, &srt, t, pos) == 0) { lua_pushinteger(L, pos[0]); lua_pushinteger(L, pos[1]); return 2; } else { return 0; } } return luaL_error(L, "Only anchor can get world matrix"); }
bool GameSpriteDemo::LoadContent(void) { // Make every GameObject hot-reloadable when 'A' is pressed for (unsigned i = 0; i < s_goCount; ++i) { m_gameObjects[i].AddComponent(new GocTest()); m_gameObjects[i].AddComponent(new GocGamepad()); } Vec3 sprite_pos(200.0f, 100.0f, 0.0f); for (unsigned i = 0; i < s_spriteFilesCount && i < s_goCount; ++i) { GocSprite * sprite = new GocSprite(); m_gameObjects[i].AddComponent(sprite); bool success = sprite->BuildFromDatafile(s_spriteFiles[i]); ASSERT(success); m_gameObjects[i].AddComponent(new GocJumpMan()); m_gameObjects[i].AddComponent(new GocLeverDashMan()); m_gameObjects[i].AddComponent(new GocCamera()); dynamic_cast<GocCamera *>(m_gameObjects[0].GetComponent(GOC_TYPE_CAMERA))->GetCamera().Setup(); //m_gameObjects[i].AddComponent(new GocDebugLines()); ////// // { Vec3 scale; scale.x = scale.y = 1.6f; scale.z = 1.6f; m_gameObjects[i].GetTransform().SetScale(scale); } // ///// m_gameObjects[i].GetTransform().SetPosition(sprite_pos); sprite_pos.x += 100.0f; sprite_pos.y += 50.0f; } dynamic_cast<GocCamera *>(m_gameObjects[0].GetComponent(GOC_TYPE_CAMERA))->SetAsActiveCamera(); // -- go3 -- { GameObject & go3 = m_gameObjects[s_goCount - 1]; go3.GetTransform().SetPosition(Vec3(300.0f, 200.0f, 0.0f)); //go3.GetTransform().SetScale(XMFLOAT2(3.0f, 3.0f)); GocLevel * level = new GocLevel(); go3.AddComponent(level); level->LoadLevel(s_levelFile); //go3.AddComponent(new GocDebugLines()); } return true; }