void SjSee::Player_init() { SEE_value temp; // Create the "Player.prototype" object, this is used as a template for the instances m_Player_prototype = (SEE_object *)alloc_player_object(m_interpr); SEE_native_init((SEE_native *)m_Player_prototype, m_interpr, &player_inst_class, m_interpr->Object_prototype); PUT_FUNC(m_Player_prototype, player, play, 0); PUT_FUNC(m_Player_prototype, player, pause, 0); PUT_FUNC(m_Player_prototype, player, stop, 0); PUT_FUNC(m_Player_prototype, player, prev, 0); PUT_FUNC(m_Player_prototype, player, next, 0); PUT_FUNC(m_Player_prototype, player, isPlaying, 0); PUT_FUNC(m_Player_prototype, player, isPaused, 0); PUT_FUNC(m_Player_prototype, player, isStopped, 0); PUT_FUNC(m_Player_prototype, player, hasPrev, 0); PUT_FUNC(m_Player_prototype, player, hasNext, 0); PUT_FUNC(m_Player_prototype, player, getUrlAtPos, 0); PUT_FUNC(m_Player_prototype, player, getAutoplayAtPos, 0); PUT_FUNC(m_Player_prototype, player, getPlayCountAtPos, 0); PUT_FUNC(m_Player_prototype, player, getArtistAtPos, 0); PUT_FUNC(m_Player_prototype, player, getAlbumAtPos, 0); PUT_FUNC(m_Player_prototype, player, getTitleAtPos, 0); PUT_FUNC(m_Player_prototype, player, getDurationAtPos, 0); PUT_FUNC(m_Player_prototype, player, addAtPos, 0); PUT_FUNC(m_Player_prototype, player, removeAtPos, 0); PUT_FUNC(m_Player_prototype, player, removeAll, 0); // create the "Player" object SEE_object* Player = (SEE_object *)SEE_malloc(m_interpr, sizeof(SEE_native)); SEE_native_init((SEE_native *)Player, m_interpr, &player_constructor_class, m_interpr->Object_prototype); PUT_OBJECT(Player, str_prototype, m_Player_prototype) // now we can add the globals PUT_OBJECT(m_interpr->Global, str_Player, Player); m_player = Player_new(); PUT_OBJECT(m_interpr->Global, str_player, m_player); }
NBody* NBody_new() { NBody* self = calloc(1, sizeof(NBody)); self->window = Window_new(); if (self->window == NULL) { goto error; } self->player = Player_new(); self->player->position = Vector_init(0.0f, 0.0f, 5.0f); // Turn on alpha blending for transparency glEnable(GL_BLEND); // Turn Blending On glEnable(GL_TEXTURE_2D); // Turn on textures glDisable(GL_DEPTH_TEST); // Turn Depth Testing Off glBlendFunc(GL_SRC_ALPHA, GL_ONE); // Load up star texture glGenTextures(1, &self->star_texture); glBindTexture(GL_TEXTURE_2D, self->star_texture); float* pixels = load_star_texture(); glTexImage2D( GL_TEXTURE_2D, // target 0, // level GL_ALPHA, // internalFormat STAR_TEXTURE_SIZE, // width STAR_TEXTURE_SIZE, // height 0, // border GL_ALPHA, // format GL_FLOAT, // type pixels // data ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); free(pixels); for (size_t i = 0; i < NUM_STARS; ++i) { self->stars[i] = Star_random(); } return self; error: NBody_destroy(self); return NULL; }