From: Eunki, Hong Date: Tue, 14 Mar 2023 05:03:13 +0000 (+0900) Subject: Load facial animation from json X-Git-Tag: dali_2.2.18~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb068791e12fd81d1cd2dae11f8eb8f80c7e8061;p=platform%2Fcore%2Fuifw%2Fdali-csharp-binder.git Load facial animation from json Bind facial animation generator Change-Id: I45aef3c6d26a0fac50bfc0c076c5bc3f6336fe8d Signed-off-by: Eunki, Hong --- diff --git a/dali-csharp-binder/src/model-wrap.cpp b/dali-csharp-binder/src/model-wrap.cpp index 382cd33..8b22301 100644 --- a/dali-csharp-binder/src/model-wrap.cpp +++ b/dali-csharp-binder/src/model-wrap.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ // EXTERNAL INCLUDES #include #include +#include // INTERNAL INCLUDES #include "common.h" @@ -386,7 +387,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_GenerateCamera(void* csModel, uns SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_Model_ApplyCamera(void* csModel, unsigned int index, void* csCameraActor) { - Dali::Scene3D::Model* model = (Dali::Scene3D::Model*)csModel; + Dali::Scene3D::Model* model = (Dali::Scene3D::Model*)csModel; Dali::CameraActor* cameraActor = (Dali::CameraActor*)csCameraActor; bool result; @@ -431,14 +432,46 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_LoadBvhAnimation_1(void* csModel, // csScale is option. if(csScale != nullptr) { - scale = Dali::Vector3(*static_cast(csScale)); + scale = Dali::Vector3(*static_cast(csScale)); + } + std::string filename(csFileName); + { + try + { + Dali::Scene3D::Loader::AnimationDefinition animationDefinition = Dali::Scene3D::Loader::LoadBvh(filename, "LoadedBvhAnimation", scale); + Dali::Scene3D::Loader::AnimatedProperty::GetActor getActor = [&model](const Dali::Scene3D::Loader::AnimatedProperty& property) -> Dali::Actor { + return model->FindChildByName(property.mNodeName); + }; + result = animationDefinition.ReAnimate(getActor); + } + CALL_CATCH_EXCEPTION(0); } + + return new Dali::Animation((const Dali::Animation&)result); +} + +SWIGEXPORT void* SWIGSTDCALL CSharp_Dali_Model_LoadFacialAnimation_1(void* csModel, char* csFileName) +{ + Dali::Scene3D::Model* model = (Dali::Scene3D::Model*)csModel; + Dali::Animation result; + + if(!model) + { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null Dali::Scene3D::Model", 0); + return 0; + } + if(!csFileName) + { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "null string for filename", 0); + return 0; + } + std::string filename(csFileName); { try { - Dali::Scene3D::Loader::AnimationDefinition animationDefinition = Dali::Scene3D::Loader::LoadBvh(filename, "LoadedBvhAnimation", scale); - Dali::Scene3D::Loader::AnimatedProperty::GetActor getActor = [&model](const Dali::Scene3D::Loader::AnimatedProperty& property)->Dali::Actor{ + Dali::Scene3D::Loader::AnimationDefinition animationDefinition = Dali::Scene3D::Loader::LoadFacialAnimation(filename); + Dali::Scene3D::Loader::AnimatedProperty::GetActor getActor = [&model](const Dali::Scene3D::Loader::AnimatedProperty& property) -> Dali::Actor { return model->FindChildByName(property.mNodeName); }; result = animationDefinition.ReAnimate(getActor);