// This file is part of FexTracker and (C) 2006 by Hajo Krabbenhöft (tentacle) // All rights reserved but the aegisub project is allowed to use it. // FexMovement.cpp: implementation of the FexMovement class. // ////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #include "stdio.h" #include #include #include #include //#include ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// FexMovement::FexMovement() { FileName = 0; } FexMovement::~FexMovement() { if( FileName ) delete []FileName; } FEXTRACKER_API FexMovement* CreateMovement() { return new FexMovement(); } FEXTRACKER_API void LoadMovement( FexMovement* me, const wchar_t* Filename ) { me->Frames.nVal = 0; me->FileName = new WCHAR[ wcslen(Filename)+1 ]; wcscpy( me->FileName, Filename ); FILE *fi = _wfopen( Filename, L"rt" ); if( !fi ) return; int CurFeat = -1; char Line[512]; while( !feof(fi) ) { Line[0]=0; fgets( Line, 510, fi ); if( !Line[0] ) break; FexMovementFrame f; int r = sscanf( Line, "(%f %f)(%f %f %f)(%f %f)", &f.Pos.x, &f.Pos.y, &f.Rot.x, &f.Rot.y, &f.Rot.z, &f.Scale.x, &f.Scale.y ); if( r != 7 ) continue; me->Frames.Add( f ); } fclose( fi ); } FEXTRACKER_API void SaveMovement( FexMovement* me, const wchar_t* Filename ) { FILE *fi = _wfopen( Filename, L"wt" ); if( !fi ) return; for( int i=0;iFrames.size();i++ ) { const FexMovementFrame f = me->Frames[i]; fprintf( fi, "(%f %f)(%f %f %f)(%f %f)\n", f.Pos.x, f.Pos.y, f.Rot.x, f.Rot.y, f.Rot.z, f.Scale.x, f.Scale.y ); } fclose( fi ); } FEXTRACKER_API void DeleteMovement( FexMovement* delme ) { delete delme; }