인프런 커뮤니티 질문&답변

themoon007님의 프로필 이미지
themoon007

작성한 질문수

UAnimationModifier 에서 IAnimationDataModel 를 얻을 때 실체.

작성

·

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 사용 가능
}

만약 ModelUAnimationSequencerDataModel의 인스턴스라면 SequencerModel에 대한 캐스팅이 성공하여 nullptr이 아닌 값을 가지게 됩니다. 마찬가지로 UAnimDataModel의 인스턴스라면 DataModel에 대한 캐스팅이 성공하겠죠.

이 방법을 통해 IAnimationDataModel 인터페이스의 실제 구현체를 알아낼 수 있습니다. 하지만 주어진 정보에는 이에 대한 구체적인 내용이 없으므로, 위 방법을 기반으로 실제 코드 상황에서 적용해 보시기 바랍니다.

themoon007님의 프로필 이미지
themoon007

작성한 질문수

질문하기