Skip to content

Commit

Permalink
add support for non exportable view model instances
Browse files Browse the repository at this point in the history
adds support for not exporting view model instances
and removes defaultInstanceId core property from runtime by exporting the defaul viewmodel instance first

Diffs=
fa0e111996 add support for non exportable view model instances (#9005)

Co-authored-by: hernan <[email protected]>
  • Loading branch information
bodymovin and bodymovin committed Feb 8, 2025
1 parent eb80612 commit 55b1fc9
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 46 deletions.
2 changes: 1 addition & 1 deletion .rive_head
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b2886f2449acf5a4680a929b55dc72632205aec9
fa0e111996800b35420c873cc334621f3bb366e1
16 changes: 15 additions & 1 deletion dev/defs/viewmodel/viewmodel.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,21 @@
"int": 564,
"string": "defaultinstanceid"
},
"description": "The default instance attached to the view model."
"description": "The default instance attached to the view model.",
"runtime": false
},
"editingInstanceId": {
"type": "Id",
"typeRuntime": "uint",
"initialValue": "Core.missingId",
"initialValueRuntime": "-1",
"key": {
"int": 741,
"string": "editinginstanceid"
},
"description": "The selected inspector instance. Saves to local editor properties.",
"runtime": false,
"coop": false
}
}
}
20 changes: 20 additions & 0 deletions dev/defs/viewmodel/viewmodel_instance.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,26 @@
},
"description": "Whether it is visible on stage or not.",
"runtime": false
},
"order": {
"type": "FractionalIndex",
"initialValue": "FractionalIndex.invalid",
"key": {
"int": 739,
"string": "order"
},
"description": "View model instance display order",
"runtime": false
},
"export": {
"type": "bool",
"initialValue": "false",
"key": {
"int": 740,
"string": "export"
},
"description": "Whether the instance should be exported for runtime.",
"runtime": false
}
}
}
8 changes: 0 additions & 8 deletions include/rive/generated/core_registry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -784,9 +784,6 @@ class CoreRegistry
case ViewModelPropertyEnumSystemBase::enumTypePropertyKey:
object->as<ViewModelPropertyEnumSystemBase>()->enumType(value);
break;
case ViewModelBase::defaultInstanceIdPropertyKey:
object->as<ViewModelBase>()->defaultInstanceId(value);
break;
case DataEnumSystemBase::enumTypePropertyKey:
object->as<DataEnumSystemBase>()->enumType(value);
break;
Expand Down Expand Up @@ -2195,8 +2192,6 @@ class CoreRegistry
case ViewModelPropertyEnumSystemBase::enumTypePropertyKey:
return object->as<ViewModelPropertyEnumSystemBase>()
->enumType();
case ViewModelBase::defaultInstanceIdPropertyKey:
return object->as<ViewModelBase>()->defaultInstanceId();
case DataEnumSystemBase::enumTypePropertyKey:
return object->as<DataEnumSystemBase>()->enumType();
case ViewModelPropertyViewModelBase::
Expand Down Expand Up @@ -3151,7 +3146,6 @@ class CoreRegistry
case ViewModelPropertyEnumCustomBase::enumIdPropertyKey:
case ViewModelInstanceEnumBase::propertyValuePropertyKey:
case ViewModelPropertyEnumSystemBase::enumTypePropertyKey:
case ViewModelBase::defaultInstanceIdPropertyKey:
case DataEnumSystemBase::enumTypePropertyKey:
case ViewModelPropertyViewModelBase::
viewModelReferenceIdPropertyKey:
Expand Down Expand Up @@ -3676,8 +3670,6 @@ class CoreRegistry
return object->is<ViewModelInstanceEnumBase>();
case ViewModelPropertyEnumSystemBase::enumTypePropertyKey:
return object->is<ViewModelPropertyEnumSystemBase>();
case ViewModelBase::defaultInstanceIdPropertyKey:
return object->is<ViewModelBase>();
case DataEnumSystemBase::enumTypePropertyKey:
return object->is<DataEnumSystemBase>();
case ViewModelPropertyViewModelBase::
Expand Down
35 changes: 0 additions & 35 deletions include/rive/generated/viewmodel/viewmodel_base.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#ifndef _RIVE_VIEW_MODEL_BASE_HPP_
#define _RIVE_VIEW_MODEL_BASE_HPP_
#include "rive/core/field_types/core_uint_type.hpp"
#include "rive/viewmodel/viewmodel_component.hpp"
namespace rive
{
Expand Down Expand Up @@ -28,43 +27,9 @@ class ViewModelBase : public ViewModelComponent

uint16_t coreType() const override { return typeKey; }

static const uint16_t defaultInstanceIdPropertyKey = 564;

protected:
uint32_t m_DefaultInstanceId = -1;

public:
inline uint32_t defaultInstanceId() const { return m_DefaultInstanceId; }
void defaultInstanceId(uint32_t value)
{
if (m_DefaultInstanceId == value)
{
return;
}
m_DefaultInstanceId = value;
defaultInstanceIdChanged();
}

Core* clone() const override;
void copy(const ViewModelBase& object)
{
m_DefaultInstanceId = object.m_DefaultInstanceId;
ViewModelComponent::copy(object);
}

bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
{
switch (propertyKey)
{
case defaultInstanceIdPropertyKey:
m_DefaultInstanceId = CoreUintType::deserialize(reader);
return true;
}
return ViewModelComponent::deserialize(propertyKey, reader);
}

protected:
virtual void defaultInstanceIdChanged() {}
};
} // namespace rive

Expand Down
7 changes: 6 additions & 1 deletion src/viewmodel/viewmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ void ViewModel::addInstance(ViewModelInstance* value)

ViewModelInstance* ViewModel::defaultInstance()
{
return m_Instances[defaultInstanceId()];
if (m_Instances.size() > 0)
{

return m_Instances[0];
}
return nullptr;
}

ViewModelInstance* ViewModel::instance(size_t index)
Expand Down

0 comments on commit 55b1fc9

Please sign in to comment.