diff options
Diffstat (limited to 'src/imgui_ui_timeline.cpp')
-rw-r--r-- | src/imgui_ui_timeline.cpp | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/imgui_ui_timeline.cpp b/src/imgui_ui_timeline.cpp index f8c5258..aa4d0cd 100644 --- a/src/imgui_ui_timeline.cpp +++ b/src/imgui_ui_timeline.cpp @@ -114,7 +114,7 @@ ImGui_Timeline_GraphInfo(project_data *File, project_state *State, memory *Memor while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &c, &i)) { block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (!Layer->IsSelected) + if (!(Layer->IsSelected & 0x01)) continue; block_string *String = (block_string *)Memory_Block_AddressAtIndex(Memory, F_Strings, Layer->Block_String_Index); @@ -243,7 +243,7 @@ ImGui_Timeline_DrawGraph(project_data *File, project_state *State, memory *Memor for (int i = 0; i < SortedCompStart.LayerCount; i++) { sorted_layer_array *SortedLayer = &SortedLayerStart[i]; block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, SortedLayer->Block_Layer_Index); - if (!Layer->IsSelected) + if (!(Layer->IsSelected & 0x01)) continue; int32 Frame_Offset = Layer->Frame_Offset; @@ -442,7 +442,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem int32 Frame_Offset = Layer->Frame_Offset; real32 Vertical_Offset = SortEntry.SortedOffset + SortEntry.DisplayOffset; - if (Layer->IsSelected) + if (Layer->IsSelected & 0x01) Interact_Evaluate_Layer(Memory, State, Index_Physical, SortedCompStart, SortedLayerStart, &Frame_Start, &Frame_End, &Frame_Offset); ImVec2 Layer_LocalPos = ImVec2(Frame_Start + Frame_Offset, Vertical_Offset); @@ -483,10 +483,10 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem draw_list->AddText(ImVec2(TextX, Layer_ScreenPos_Min.y), 0xFFFFFFFF, buf); } - if (Layer->IsSelected == 1) { + if (Layer->IsSelected & 0x01) { draw_list->AddRectFilled(Layer_ScreenPos_Min, Layer_ScreenPos_Max, ImColor(0.25f, 0.25f, 0.25f, 0.5f), 2); draw_list->AddRect(Layer_ScreenPos_Min, Layer_ScreenPos_Max, ImColor(1.0f, 1.0f, 1.0f, 0.5f), 2); - } else if (Layer->IsSelected == 2) { + } else if (Layer->IsSelected & 0x02) { // draw_list->AddRectFilled(Layer_ScreenPos_Min, Layer_ScreenPos_Max, ImColor(0.25f, 0.25f, 0.25f, 0.5f), 2); draw_list->AddRect(Layer_ScreenPos_Min, Layer_ScreenPos_Max, ImColor(0.0f, 0.9f, 0.0f, 0.9f), 4); } @@ -511,11 +511,11 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem Test &= (Layer_ScreenPos_Min.x <= io.MouseClickedPos[0].x && Layer_ScreenPos_Max.x >= io.MousePos.x); if (Test) { - if (!Layer->IsSelected && !Layer->IsLocked) { + if (!(Layer->IsSelected & 0x01) && !(Layer->IsSelected & 0x02) && !Layer->IsLocked) { Layer_Select(Memory, State, Index_Physical); } } else if (!io.KeyShift) { - Layer->IsSelected = false; + Layer->IsSelected = 0x00; } } @@ -535,14 +535,14 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem } } if (ImGui::IsItemActivated()) { - if (!Layer->IsSelected && !Layer->IsLocked) { + if (!(Layer->IsSelected & 0x01) && !Layer->IsLocked) { if (!io.KeyShift) Layer_DeselectAll(File, State, Memory); Layer_Select(Memory, State, Index_Physical); } } if (ImGui::IsItemActive()) { if (ImGui::IsMouseDragging(ImGuiMouseButton_Left, -1)) { - Assert(Layer->IsSelected); + Assert(Layer->IsSelected & 0x01); State->Interact_Active = interact_type_layer_timeadjust; ImVec2 DragDelta = ImGui::GetMouseDragDelta(); DragDelta = DragDelta + (ImVec2(State->Warp_X, State->Warp_Y) * TimelineSize); @@ -557,7 +557,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem int h = 0, c = 0, i = 0; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &c, &i)) { block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (Layer->IsSelected) { + if (Layer->IsSelected & 0x01) { // NOTE(fox): Some data on the tree could be saved here. History_Action_Swap(Memory, F_Layers, sizeof(Layer->Frame_Start), &Layer->Frame_Start); History_Action_Swap(Memory, F_Layers, sizeof(Layer->Frame_End), &Layer->Frame_End); @@ -585,7 +585,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem } if (ImGui::IsItemActivated()) { - if (!Layer->IsSelected && !Layer->IsLocked) { + if (!(Layer->IsSelected & 0x01) && !Layer->IsLocked) { if (!io.KeyShift) Layer_DeselectAll(File, State, Memory); Layer_Select(Memory, State, Index_Physical); Layer_Select_RecurseUp(Memory, State, Index_Physical, RecursionIdx, Recursions); @@ -599,7 +599,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem int h = 0, z = 0, i = 0; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &z, &i)) { block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (Layer->IsSelected) { + if (Layer->IsSelected & 0x01) { if (!Commit) { History_Entry_Commit(Memory, "Toggle visibility"); Commit = true; @@ -617,14 +617,14 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem bool32 Commit = false; int h = 0, z = 0, i = 0; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &z, &i)) { - block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (Layer->IsSelected == 1 || Layer->IsLocked) { + block_layer *CurLayer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); + if ((CurLayer->IsSelected & 0x01) || (Layer == CurLayer)) { if (!Commit) { History_Entry_Commit(Memory, "Toggle lock"); Commit = true; } - History_Action_Swap(Memory, F_Layers, sizeof(Layer->IsLocked), &Layer->IsLocked); - Layer->IsLocked ^= 1; + History_Action_Swap(Memory, F_Layers, sizeof(CurLayer->IsLocked), &CurLayer->IsLocked); + CurLayer->IsLocked ^= 1; } } if (Commit) { @@ -655,7 +655,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem int h = 0, z = 0, i = 0; while (Block_Loop(Memory, F_Layers, File->Layer_Count, &h, &z, &i)) { block_layer *Layer = (block_layer *)Memory_Block_AddressAtIndex(Memory, F_Layers, i); - if (Layer->IsSelected == 1) { + if (Layer->IsSelected & 0x01) { Layer->ColIndex = c; } } @@ -726,7 +726,7 @@ ImGui_Timeline_DrawPrecomp(project_data *File, project_state *State, memory *Mem // NOTE(fox): Some data on the tree could be saved here. History_Action_Swap(Memory, F_Layers, sizeof(Layer->Vertical_Offset), &Layer->Vertical_Offset); Layer->Vertical_Offset = SortEntry.SortedOffset; - if (Layer->IsSelected) { + if (Layer->IsSelected & 0x01) { History_Action_Swap(Memory, F_Layers, sizeof(Layer->Frame_Offset), &Layer->Frame_Offset); Interact_Evaluate_Layer(Memory, State, Index_Physical, SortedCompStart, SortedLayerStart, &Layer->Frame_Start, &Layer->Frame_End, &Layer->Frame_Offset); } @@ -1087,7 +1087,8 @@ ImGui_Timeline(project_data *File, project_state *State, memory *Memory, ui *UI, if (LeftClick) { if (IsItemActivated) { - if (!io.KeyShift && State->TimelineMode == timeline_mode_default) Layer_DeselectAll(File, State, Memory); + if (!io.KeyShift && State->TimelineMode == timeline_mode_default) + Layer_DeselectAll(File, State, Memory); if (State->Interact_Active == interact_type_keyframe_move || State->Interact_Active == interact_type_keyframe_rotate || State->Interact_Active == interact_type_keyframe_scale) { |