Ejemplo n.º 1
0
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");
}
Ejemplo n.º 2
0
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");
}
Ejemplo n.º 3
0
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;

}