void ParticleEditor::refresh_state_ui() { per_state_info_.clear(); TwRemoveAllVars(state_window_); TwAddVarCB(state_window_, "State Index", TW_TYPE_INT32, TweakBarParticleSetState, TweakBarParticleGetState, nullptr, ""); TwAddButton(state_window_, "Remove State", TweakBarRemoveState, &state_index_, ""); Reflection::Metadata* stateMeta = FindType(ParticleDescription); ParticleCallbackInfo stateInfo; stateInfo.baseData = FindType(ParticleDescription); stateInfo.type = ParticleUiType::State; //once for particle for(auto& it : stateMeta->GetMembers()) { add_members(stateInfo, &it.second, state_window_, "state"); } //once for variance stateInfo.type = ParticleUiType::Variance; for(auto& it : stateMeta->GetMembers()) { add_members(stateInfo, &it.second, state_window_, "variance"); } }
void UiPropertyGrid::DeleteGrid() { TwRemoveAllVars(m_panel); ClearElementList(); ClearPanelPropertyMapping(this); m_propertyList.ClearPropertyList(); }
void ParticleEditor::refresh_emitter_ui() { per_emitter_info_.clear(); indices_for_tweakbar_.clear(); TwRemoveAllVars(emitter_window_); TwAddVarCB(emitter_window_, "Emitter Index", TW_TYPE_INT32, TweakBarParticleSetEmitter, TweakBarParticleGetEmitter, nullptr, ""); TwAddButton(emitter_window_, "Remove Emitter", TweakBarRemoveEmitter, &emitter_index_, ""); TwAddButton(emitter_window_, "Add State", TweakBarAddState, nullptr, ""); Reflection::Metadata* emitterMeta = FindType(ParticleEmitter); ParticleCallbackInfo emitterInfo; emitterInfo.baseData = emitterMeta; emitterInfo.type = ParticleUiType::Emitter; //first typical bullshit for(auto& it : emitterMeta->GetMembers()) { add_members(emitterInfo, &it.second, emitter_window_); } //so here we have to add controls to toggle interpolation //either something interpolates or it doesn't no selective interpolation for certain states Reflection::Metadata* stateMeta = FindType(ParticleDescription); ParticleCallbackInfo stateInfo; stateInfo.baseData = FindType(ParticleDescription); stateInfo.type = ParticleUiType::State; per_emitter_info_.push_back(stateInfo); void* dataToSend = &per_emitter_info_.back(); int index = 0; for(auto& it : stateMeta->GetMembers()) { indices_for_tweakbar_.push_back(index); ++index; TwAddVarCB(emitter_window_, it.second.GetName().c_str(), TW_TYPE_STDSTRING, TweakBarParticleSetRegistered, TweakBarParticleGetRegistered, &indices_for_tweakbar_.back(), "group = 'registered vars'"); } refresh_state_ui(); }
void Gui::FillTweakBar() { TwRemoveAllVars(m_tweakbar); m_tweaker->ClearEntries(); m_scene.AddToTweaker(*m_tweaker, [this](){ FillTweakBar(); }); m_game.AddToTweaker(*m_tweaker, [this](){ FillTweakBar(); }); m_camera.AddToTweaker(*m_tweaker); m_timer.AddToTweaker(*m_tweaker); }
void ParticleEditor::refresh_system_ui() { per_system_info_.clear(); TwRemoveAllVars(system_window_); TwAddVarCB(system_window_, "System Index", TW_TYPE_INT32, TweakBarParticleSetSystem, TweakBarParticleGetSystem, nullptr, ""); TwAddButton(system_window_, "Remove System", TweakBarRemoveSystem, &system_index_, ""); TwAddButton(system_window_, "Add Emitter", TweakBarAddEmitter, nullptr, ""); Reflection::Metadata* systemMeta = FindType(ParticleSystem); ParticleCallbackInfo systemInfo; systemInfo.baseData = FindType(ParticleSystem); systemInfo.type = ParticleUiType::System; for(auto& it : systemMeta->GetMembers()) { add_members(systemInfo, &it.second, system_window_); } refresh_emitter_ui(); }
// NOTE: here are our tweak bar definitions int updateTweakBarVars(int scene) { int EE=0; if (!EE) EE |= !TwRemoveAllVars(gctx->tbar); if (!EE) EE |= !TwAddVarRW(gctx->tbar, "Ka", TW_TYPE_FLOAT, &(gctx->geom[0]->Ka), " label='Ka' min=0.0 max=1.0 step=0.005"); if (!EE) EE |= !TwAddVarRW(gctx->tbar, "Kd", TW_TYPE_FLOAT, &(gctx->geom[0]->Kd), " label='Kd' min=0.0 max=1.0 step=0.005"); if (!EE) EE |= !TwAddVarRW(gctx->tbar, "Ks", TW_TYPE_FLOAT, &(gctx->geom[0]->Ks), " label='Ks' min=0.0 max=1.0 step=0.005"); if (!EE) EE |= !TwAddVarRW(gctx->tbar, "shexp", TW_TYPE_FLOAT, &(gctx->geom[0]->shexp), " label='shexp' min=0.0 max=100.0 step=0.05"); /* if (!EE) EE |= !TwAddVarCB(gctx->tbar, "shader", twShaders, setShaderCallback, getShaderCallback, &(gctx->program), " label='shader'"); */ if (!EE) EE |= !TwAddVarCB(gctx->tbar, "planet", twObjects, setObjectCallback, getObjectCallback, &(gctx->gi), " label='planet'"); /* if (!EE) EE |= !TwAddVarCB(gctx->tbar, "cubemap", twCubeMaps, setCubeMapCallback, getCubeMapCallback, &(gctx->cubeMapId), " label='cubemap'"); */ if (!EE) EE |= !TwAddVarRW(gctx->tbar, "bgColor", TW_TYPE_COLOR3F, &(gctx->bgColor), " label='bkgr color' "); /* switch (scene) { case 1: if (!EE) EE |= !TwAddVarRW( gctx->tbar, "shading", TW_TYPE_BOOL8, &(gctx->gouraudMode), " label='shading' true=Gouraud false=Phong "); break; case 2: if (!EE) EE |= !TwAddVarCB( gctx->tbar, "perVertexTexturing", TW_TYPE_BOOL8, setPerVertexTexturingCallback, getPerVertexTexturingCallback, &(gctx->perVertexTexturingMode), " label='per-vertex texturing' true=Enabled false=Disabled "); if (!EE) EE |= !TwAddVarRW( gctx->tbar, "seamFix", TW_TYPE_BOOL8, &(gctx->seamFix), " label='seam fix' true=Enabled false=Disabled "); break; case 3: if (!EE) EE |= !TwAddVarCB( gctx->tbar, "filteringMode", twFilteringModes, setFilteringCallback, getFilteringCallback, &(gctx->filteringMode), " label='filtering mode' "); break; case 4: if (!EE) EE |= !TwAddVarCB( gctx->tbar, "bumpMappingMode", twBumpMappingModes, setBumpMappingCallback, getBumpMappingCallback, &(gctx->bumpMappingMode), " label='bump mapping' "); break; default: break; } */ return EE; }