PR #48 added support to multiple replicated ActorComponents in one Actor. However, if the ActorComponents are SceneComponent, it won't work, as the SceneComponentStates still share the same NetGUID (Actor).
To make it work, we need to:
Add the compName field for all the states of the ActorComponent that inherit SceneComponent;
Generate the ComponentStates message to aggregate all the component state mentioned above, and map them by the compName
The design above should have some performance issue, as the component states are wrapped in two levels of map in the Global channel data, and to avoid that, there's another design:
Use the Actor NetGUID + Component Name to globally index the actor component;
So the component state map in the Global channel data should be like this: map<string, unrealpb.SceneComponentState> sceneComponentStates
PR #48 added support to multiple replicated ActorComponents in one Actor. However, if the ActorComponents are
SceneComponent
, it won't work, as the SceneComponentStates still share the same NetGUID (Actor).To make it work, we need to:
compName
field for all the states of the ActorComponent that inheritSceneComponent
;ComponentStates
message to aggregate all the component state mentioned above, and map them by thecompName
The design above should have some performance issue, as the component states are wrapped in two levels of map in the Global channel data, and to avoid that, there's another design:
map<string, unrealpb.SceneComponentState> sceneComponentStates