mirror of
https://github.com/ocornut/imgui.git
synced 2026-04-02 13:37:40 -05:00
Updated Tips (markdown)
38
Tips.md
38
Tips.md
@@ -13,3 +13,41 @@ ImGui::BeginChild("##scrolling");
|
||||
ImGui::SetScrollFromPosY(ImGui::GetCursorStartPos().y + (goto_addr / Rows) * line_height);
|
||||
ImGui::End();
|
||||
```
|
||||
|
||||
**Tip: use Stride for easily plotting a field in array of structures**<br>
|
||||
https://github.com/ocornut/imgui/issues/271
|
||||
|
||||
Here I've got some code sampling joints of an animation as e.g 60 hz.
|
||||
And I can plot that directly from the joint structure without copying the data around one more time
|
||||
|
||||
```cpp
|
||||
int stride = skel.getBoneCount() * sizeof(JointTransform);
|
||||
ImGui::PlotLines("RightFoot y", &all_sampled_joints[skel.getBoneIndex("RightFoot")].translation.y, samples, 0, NULL, FLT_MAX, FLT_MAX, ImVec2(0,0), stride);
|
||||
ImGui::PlotLines("RightToeBase y", &all_sampled_joints[skel.getBoneIndex("RightToeBase")].translation.y, samples, 0, NULL, FLT_MAX, FLT_MAX, ImVec2(0,0), stride);
|
||||
ImGui::PlotLines("LeftFoot y", &all_sampled_joints[skel.getBoneIndex("LeftFoot")].translation.y, samples, 0, NULL, FLT_MAX, FLT_MAX, ImVec2(0,0), stride);
|
||||
ImGui::PlotLines("LeftToeBase y", &all_sampled_joints[skel.getBoneIndex("LeftToeBase")].translation.y, samples, 0, NULL, FLT_MAX, FLT_MAX, ImVec2(0,0), stride);
|
||||
```
|
||||
|
||||

|
||||
|
||||
**Tip: use c++11 lambas with Combo/ListBox/Plot functions**
|
||||
|
||||
```cpp
|
||||
void SelectBoneByName(const char* label, int* bone_idx, const Skeleton* skeleton)
|
||||
{
|
||||
ImGui::Combo(label, bone_idx,
|
||||
[](void* data, int idx, const char** out_text) { *out_text = skeleton->GetBoneName(idx); return *out_text != NULL; },
|
||||
(void*)skeleton, skeleton->GetBoneCount());
|
||||
}
|
||||
```
|
||||
|
||||
```cpp
|
||||
ImGui::PlotLines("Sin", [](void*data, int idx) { return sinf(idx*0.2f); }, NULL, 100);
|
||||
ImGui::PlotLines("Cos", [](void*data, int idx) { return cosf(idx*0.2f); }, NULL, 100);
|
||||
```
|
||||
|
||||

|
||||
|
||||
Bit awkward with sample indices to plot an actual math function. Ideally here we could introduce variants of plot that use all floats. Will probably add something.
|
||||
|
||||
Likewise for combo boxes, don't copy data around creating list of strings! Use a function to retrieve your data from whatever format it is naturally. The whole plot API is a little awkward and could be reworked along with adding some form of iterator scheme for sparse combo / list-box.
|
||||
|
||||
Reference in New Issue
Block a user