작성
·
95
0
UAnimamtionModifier 에 있는 필수 함수에서 UAnimSequence 를 전달 받습니다.
virtual void OnApply_Implementation(UAnimSequence* Animation) override;
virtual void OnRevert_Implementation(UAnimSequence* Animation) override;
이 함수 안에서
const IAnimationDataModel* Model = Animation->GetDataModel(); 를 하면 데이터 모델 객체를 전달 받는데 이건 인터페이스라서 실체가 무엇인지 알아야 합니다.
두 종류가 있는 것 같습니다.
UAnimationSequencerDataModel
UAnimDataModel
IAnimationDataModel의 실체가 이 둘 중에 무엇인지 어떻게 알 수 있나요???
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
IAnimationDataModel
의 구현체가 UAnimationSequencerDataModel
또는 UAnimDataModel
중 어떤 것인지 알아내는 방법에 대해 질문하셨군요. 이 경우, 실제 객체의 타입을 확인하기 위해 C++의 dynamic_cast
를 사용할 수 있습니다.
UAnimSequence
에서 GetDataModel()
을 통해 가져온 IAnimationDataModel
인터페이스 포인터를 가지고 있을 때, 해당 포인터가 실제로 어떤 구현체를 가리키는지는 다음과 같이 dynamic_cast
를 사용하여 확인할 수 있습니다.
const IAnimationDataModel* Model = Animation->GetDataModel();
// UAnimationSequencerDataModel로 캐스팅 시도
const UAnimationSequencerDataModel* SequencerModel = dynamic_cast<const UAnimationSequencerDataModel*>(Model);
if (SequencerModel != nullptr) {
// 캐스팅 성공, SequencerModel 사용 가능
}
// UAnimDataModel로 캐스팅 시도
const UAnimDataModel* DataModel = dynamic_cast<const UAnimDataModel*>(Model);
if (DataModel != nullptr) {
// 캐스팅 성공, DataModel 사용 가능
}
만약 Model
이 UAnimationSequencerDataModel
의 인스턴스라면 SequencerModel
에 대한 캐스팅이 성공하여 nullptr
이 아닌 값을 가지게 됩니다. 마찬가지로 UAnimDataModel
의 인스턴스라면 DataModel
에 대한 캐스팅이 성공하겠죠.
이 방법을 통해 IAnimationDataModel
인터페이스의 실제 구현체를 알아낼 수 있습니다. 하지만 주어진 정보에는 이에 대한 구체적인 내용이 없으므로, 위 방법을 기반으로 실제 코드 상황에서 적용해 보시기 바랍니다.