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");
    }
  }
示例#2
0
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();
  }
示例#4
0
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();
    
  }
示例#6
0
// 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;
}