Skip to content

Commit 9a1ec35

Browse files
authored
Create id lists as pointers instead (#131)
1 parent 45a4813 commit 9a1ec35

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

defold-rive/src/comp_rive.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ namespace dmRive
206206

207207
for (int i = 0; i < data->m_ArtboardIdLists.Size(); ++i)
208208
{
209-
if (data->m_ArtboardIdLists[i].m_ArtboardNameHash == artboard_id)
209+
if (data->m_ArtboardIdLists[i]->m_ArtboardNameHash == artboard_id)
210210
{
211-
return &data->m_ArtboardIdLists[i];
211+
return data->m_ArtboardIdLists[i];
212212
}
213213
}
214214
return 0x0;

defold-rive/src/res_rive_data.cpp

+13-17
Original file line numberDiff line numberDiff line change
@@ -48,44 +48,36 @@ namespace dmRive
4848
{
4949
rive::Artboard* artboard = scene_data->m_File->artboard(i);
5050

51-
scene_data->m_ArtboardIdLists[i].m_ArtboardNameHash = dmHashString64(artboard->name().c_str());
51+
RiveArtboardIdList* id_list = new RiveArtboardIdList();
52+
scene_data->m_ArtboardIdLists[i] = id_list;
5253

53-
#if 0
54-
dmLogInfo("Artboard[%d]: %s", i, artboard->name().c_str());
55-
#endif
54+
id_list->m_ArtboardNameHash = dmHashString64(artboard->name().c_str());
5655

5756
// Setup state machine ID lists
5857
uint32_t state_machine_count = (uint32_t)artboard->stateMachineCount();
5958
if (state_machine_count)
6059
{
61-
scene_data->m_ArtboardIdLists[i].m_StateMachines.SetCapacity(state_machine_count);
62-
scene_data->m_ArtboardIdLists[i].m_StateMachines.SetSize(state_machine_count);
60+
id_list->m_StateMachines.SetCapacity(state_machine_count);
61+
id_list->m_StateMachines.SetSize(state_machine_count);
6362

6463
for (int j = 0; j < state_machine_count; ++j)
6564
{
6665
rive::StateMachine* state_machine = artboard->stateMachine(j);
67-
scene_data->m_ArtboardIdLists[i].m_StateMachines[j] = dmHashString64(state_machine->name().c_str());
68-
#if 0
69-
dmLogInfo(" State machine[%d]: %s", j, state_machine->name().c_str());
70-
#endif
66+
id_list->m_StateMachines[j] = dmHashString64(state_machine->name().c_str());
7167
}
7268
}
7369

7470
// Setup animation ID lists
7571
uint32_t animation_count = (uint32_t)artboard->animationCount();
7672
if (animation_count)
7773
{
78-
scene_data->m_ArtboardIdLists[i].m_LinearAnimations.SetCapacity(animation_count);
79-
scene_data->m_ArtboardIdLists[i].m_LinearAnimations.SetSize(animation_count);
74+
id_list->m_LinearAnimations.SetCapacity(animation_count);
75+
id_list->m_LinearAnimations.SetSize(animation_count);
8076

8177
for (int j = 0; j < animation_count; ++j)
8278
{
8379
rive::LinearAnimation* animation = artboard->animation(j);
84-
scene_data->m_ArtboardIdLists[i].m_LinearAnimations[j] = dmHashString64(animation->name().c_str());
85-
86-
#if 0
87-
dmLogInfo(" Animation[%d]: %s", j, animation->name().c_str());
88-
#endif
80+
id_list->m_LinearAnimations[j] = dmHashString64(animation->name().c_str());
8981
}
9082
}
9183
}
@@ -127,6 +119,10 @@ namespace dmRive
127119

128120
static void DeleteData(RiveSceneData* scene_data)
129121
{
122+
for (int i = 0; i < scene_data->m_ArtboardIdLists.Size(); ++i)
123+
{
124+
delete scene_data->m_ArtboardIdLists[i];
125+
}
130126
delete scene_data->m_File;
131127
delete scene_data;
132128
}

defold-rive/src/res_rive_data.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace dmRive
3939
rive::File* m_File;
4040
HRenderContext m_RiveRenderContext;
4141
std::unique_ptr<rive::ArtboardInstance> m_ArtboardDefault;
42-
dmArray<RiveArtboardIdList> m_ArtboardIdLists;
42+
dmArray<RiveArtboardIdList*> m_ArtboardIdLists;
4343
};
4444
}
4545

0 commit comments

Comments
 (0)