// save anim set file BOOL CSeriousSkaStudioApp::SaveAnimSetFile(CAnimSet &as, BOOL bConvert) { DisableRendering(); CTFileName fnAnimSet = as.GetName(); fnAnimSet = fnAnimSet.NoExt() + ".aal"; try { fnAnimSet.RemoveApplicationPath_t(); } catch(char *){} // back up current skeleton list file CTString strBackUp; try { strBackUp.Load_t(fnAnimSet); } catch(char*){} CTFileStream ostrFile; try { ostrFile.Create_t(fnAnimSet,CTStream::CM_TEXT); SaveAnimSet_t(as,ostrFile); ostrFile.Close(); } catch(char *strError) { ErrorMessage(strError); EnableRendering(); return FALSE; } if(bConvert) { ConvertAnimSet(fnAnimSet); } EnableRendering(); return TRUE; }
// reload root model instance for this document void CSeriousSkaStudioApp::ReloadRootModelInstance() { DisableRendering(); CSeriousSkaStudioDoc *pDoc = GetDocument(); CModelInstance *pmi=NULL; if(pDoc==NULL) pmi = NULL; else pmi = pDoc->m_ModelInstance; // flag for parser to remember source file names CModelInstance::EnableSrcRememberFN(TRUE); // if model instance is valid if(pmi != NULL) { // clear current model instance pDoc->m_ModelInstance->Clear(); // try parsing smc file try { pDoc->m_ModelInstance = ParseSmcFile_t(pDoc->m_ModelInstance->mi_fnSourceFile); } catch(char *strError) { // error in parsing occured ErrorMessage("%s",strError); if(pDoc->m_ModelInstance != NULL) pDoc->m_ModelInstance->Clear(); pDoc->m_ModelInstance = NULL; } UpdateRootModelInstance(); } else { m_dlgBarTreeView.ResetControls(); pmiSelected = NULL; } // NotificationMessage("Root model instance updated"); EnableRendering(); }
// Save smc file void CSeriousSkaStudioApp::SaveSmcFile(CModelInstance &mi,BOOL bSaveChildren) { CSeriousSkaStudioDoc *pDoc = GetDocument(); // first get first model instance that has its file CModelInstance *pmiParent=NULL; CModelInstance *pmiFirst=&mi; CTFileName fnSmc = mi.mi_fnSourceFile; CModelInstance *pfmi = mi.GetFirstNonReferencedParent(GetDocument()->m_ModelInstance); if(pfmi!=NULL) { pmiParent = pfmi->GetParent(pDoc->m_ModelInstance); pmiFirst = pfmi; fnSmc = pfmi->mi_fnSourceFile; } DisableRendering(); try { fnSmc.RemoveApplicationPath_t(); } catch(char *){} CTFileStream ostrFile; // try to save model instance try { ostrFile.Create_t(fnSmc,CTStream::CM_TEXT); SaveModelInstance_t(pmiFirst,pmiParent,ostrFile,bSaveChildren); ostrFile.Close(); NotificationMessage("Smc '%s' saved.",pmiFirst->mi_fnSourceFile); } catch(char *strError) { ErrorMessage(strError); } EnableRendering(); }
void SceneEntitySprite::OnLoaded() { m_pTexture = new graphics::Texture(GetBuffer(), GetSize()); EnableUpdating(); EnableRendering(); EnableAnimating(); }
// save skeleton list file BOOL CSeriousSkaStudioApp::SaveSkeletonListFile(CSkeleton &skl, BOOL bConvert) { DisableRendering(); CTFileName fnSkeletonList = skl.GetName(); fnSkeletonList = fnSkeletonList.NoExt() + ".asl"; try { fnSkeletonList.RemoveApplicationPath_t(); } catch(char *){} // back up current skeleton list file CTString strBackUp; try { strBackUp.Load_t(fnSkeletonList); } catch(char*){} CTFileStream ostrFile; try { ostrFile.Create_t(fnSkeletonList,CTStream::CM_TEXT); SaveSkeletonList_t(skl,ostrFile); ostrFile.Close(); } catch(char *strError) { ErrorMessage(strError); EnableRendering(); return FALSE; } if(bConvert) { if(!ConvertSkeleton(fnSkeletonList)) { // convert failed if(strBackUp.Length()>0) { // try returning old mesh list file try { strBackUp.Save_t(fnSkeletonList); } catch(char*){} } } } EnableRendering(); return TRUE; }
// convert only one animation in animset BOOL CSeriousSkaStudioApp::ConvertAnimationInAnimSet(CAnimSet *pas,Animation *pan) { DisableRendering(); CTFileName fnTemp = (CTString)"Temp/animset"; // try to save model instance CTString strAnimSet; CTString strCustomSpeed; CTString strCompresion = "FALSE"; if(pan->an_bCompresed) strCompresion = "TRUE"; if(pan->an_bCustomSpeed) strCustomSpeed.PrintF(" ANIMSPEED %g;",pan->an_fSecPerFrame); strAnimSet.PrintF("ANIMSETLIST\n{\n TRESHOLD %g;\n COMPRESION %s;\n%s\n #INCLUDE \"%s\"\n}\n", pan->an_fTreshold,(const char*)strCompresion,(const char*)strCustomSpeed,(const char*)pan->an_fnSourceFile); try { strAnimSet.Save_t(fnTemp + ".aal"); if(!ConvertAnimSet(fnTemp + ".aal")) { EnableRendering(); return FALSE; } CAnimSet as; // load new animset as.Load_t(fnTemp + ".ba"); if(as.as_Anims.Count()>0) { Animation &anNew = as.as_Anims[0]; // overwrite old animation with new one *pan = anNew; } // clear new animset as.Clear(); } catch(char *strErr) { ErrorMessage(strErr); EnableRendering(); return FALSE; } EnableRendering(); return TRUE; }
// save mesh list file BOOL CSeriousSkaStudioApp::SaveMeshListFile(MeshInstance &mshi, BOOL bConvert) { DisableRendering(); // get mesh list filename CTFileName fnMeshList = mshi.mi_pMesh->GetName(); fnMeshList = fnMeshList.NoExt() + ".aml"; try { fnMeshList.RemoveApplicationPath_t(); } catch(char *){} CTString strBackUp; try { // back up current mesh list file strBackUp.Load_t(fnMeshList); } catch(char*){} // save mesh instance in new mesh list file CTFileStream ostrFile; try { ostrFile.Create_t(fnMeshList,CTStream::CM_TEXT); SaveMeshInstance_t(mshi,ostrFile); ostrFile.Close(); } catch(char *strError) { ErrorMessage(strError); EnableRendering(); return FALSE; } // if new mesh list file needs to be converted if(bConvert) { if(!ConvertMesh(fnMeshList)) { // convert failed if(strBackUp.Length()>0) { // try returning old mesh list file try { strBackUp.Save_t(fnMeshList); } catch(char*){} } } } EnableRendering(); return TRUE; }