Привет, продолжаю разбираться с анриэлом и сейчас застрял на таком моменте. У меня есть компонент сплайна. Я хочу сделать так чтобы когда сплайн изменялся то срабатывал бы соответствующий обработчик события в акторе.
Пока что лучшее что я смог сделать это наследоваться от оригинального сплайнкомпонента, добавить в него диспатчер который выстреливает когда сплайн редактируют и в акторе добавить делегата к этому диспатчеру. Как то так:
void UMySplineComponent::PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) {
OnSplineChanged.ExecuteIfBound();
Super::PostEditChangeChainProperty(PropertyChangedEvent);
}
И в конструкторе актора:
spline->OnSplineChanged.BindUFunction(this, GET_FUNCTION_NAME_CHECKED(MyActor, OnSplineChanged));
К сожалению это работает только для настроек самого сплайна но никак не реагирует на редактирование контрол пойнтов.
Пробовал добавить кастомный USplineMetadata но она работает только на добавление и удаление новых котнрол пойнтов.
В идеал нунжно выстреливать диспатчер в USplineComponent::UpdateSpline но этот метод не виртуальный.
Может кото-нибудь что-нибудь посоветовать пожалуйста?