static std::shared_ptr<asd::AnimationClip> CreateAnimation() { auto factory = new asd::AnimationSystem_Imp(); auto clip = factory->CreateAnimationClip(); auto source = factory->CreateAnimationSource(); auto key = factory->CreateKeyframeAnimation(); asd::FCurveKeyframe k1; k1.KeyValue.X = 0.0; k1.KeyValue.Y = 20; k1.LeftHandle = k1.KeyValue; k1.RightHandle = k1.KeyValue; asd::FCurveKeyframe k2; k2.KeyValue.X = 10.0; k2.KeyValue.Y = -20; k2.LeftHandle = k2.KeyValue; k2.RightHandle = k2.KeyValue; key->SetName(asd::ToAString("no2.rot.z").c_str()); key->AddKeyframe(k1); key->AddKeyframe(k2); source->AddAnimation(key); clip->SetSource(source); delete factory; return clip; }
bool SMDImporter::Import ( char *in_szFilename ) { FILE *f = fopen ( in_szFilename, "rb" ); if ( !f ) { LPWSTR l_wszModelName; DSA2W(&l_wszModelName,in_szFilename); XSI::CString cstr = L"SMDImport: Cannot open the file "; cstr += l_wszModelName; XSILogMessage ( (unsigned short*)cstr.GetWideString(), XSI::siErrorMsg ); return false; } memset ( m_szActionName, 0, 1024 ); _splitpath ( in_szFilename, NULL, NULL, m_szActionName, NULL ); char drive[1024]; char dirc[1024]; memset ( m_szDirectory, 0, 1024 ); if ( strlen(___gTexturePathOverride)) { sprintf ( ___gTexturePathOverride, "%s\\", ___gTexturePathOverride ); _splitpath ( ___gTexturePathOverride, drive, dirc, NULL, NULL ); sprintf ( m_szDirectory, "%s\\%s\\", drive, dirc ); } else { _splitpath ( in_szFilename, drive, dirc, NULL, NULL ); sprintf ( m_szDirectory, "%s\\%s\\", drive, dirc ); } bool Success = Parse ( f ); fclose (f); if ( !Success ) { return Success; } DetectModel(); CreateHierarchy(); CreateGeometry(); WeightGeometry(); CreateShapeClips(); CreateAnimationSource(); return true; }