diff --git a/editor/trackview.cpp b/editor/trackview.cpp
index 1bdaa6e..3fed9e2 100644
--- a/editor/trackview.cpp
+++ b/editor/trackview.cpp
@@ -734,7 +734,7 @@ void TrackView::editToggleInterpolationType()
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack, int(lower->first), newKey);
syncData->exec(cmd);
- invalidateRange(editTrack, editTrack, lower->first, upper->first);
+ invalidateRange(editTrack, editTrack, int(lower->first), int(upper->first));
}
else MessageBeep(0);
}
diff --git a/sync/device_client.cpp b/sync/device_client.cpp
index 356b5bc..edc432f 100644
--- a/sync/device_client.cpp
+++ b/sync/device_client.cpp
@@ -170,13 +170,38 @@ std::string ClientDevice::getTrackFileName(std::string trackName)
return fileName;
}
+static bool saveTrack(const sync::Track &track, std::string fileName)
+{
+ FILE *fp = fopen(fileName.c_str(), "wb");
+ if (NULL == fp) return false;
+
+ size_t keyFrameCount = track.getKeyFrameCount();
+ fwrite(&keyFrameCount, sizeof(size_t), 1, fp);
+
+ sync::Track::KeyFrameContainer::const_iterator it;
+ for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it)
+ {
+ size_t row = it->first;
+ float value = it->second.value;
+ char interpolationType = char(it->second.interpolationType);
+
+ // write key
+ fwrite(&row, sizeof(size_t), 1, fp);
+ fwrite(&value, sizeof(float), 1, fp);
+ fwrite(&interpolationType, sizeof(char), 1, fp);
+ }
+
+ fclose(fp);
+ fp = NULL;
+ return true;
+}
+
void ClientDevice::saveTracks()
{
sync::Data::TrackContainer::iterator iter;
for (iter = syncData.tracks.begin(); iter != syncData.tracks.end(); ++iter)
{
- std::string fileName = getTrackFileName(iter->first);
- printf("\"%s\"\n", fileName.c_str());
+ saveTrack(syncData.getTrack(iter->second), getTrackFileName(iter->first));
}
}
diff --git a/sync/track.cpp b/sync/track.cpp
index d44beb5..591d3bb 100644
--- a/sync/track.cpp
+++ b/sync/track.cpp
@@ -103,7 +103,7 @@ void Track::setKeyFrame(size_t row, const KeyFrame &keyFrame)
keyFrames[row] = keyFrame;
}
-size_t Track::getFrameCount() const
+size_t Track::getKeyFrameCount() const
{
if (keyFrames.empty()) return 0;
KeyFrameContainer::const_iterator iter = keyFrames.end();
diff --git a/sync/track.h b/sync/track.h
index 7c19cd0..144f309 100644
--- a/sync/track.h
+++ b/sync/track.h
@@ -38,7 +38,7 @@ namespace sync
bool isKeyFrame(size_t row) const;
const KeyFrame *getKeyFrame(size_t row) const;
- size_t getFrameCount() const;
+ size_t getKeyFrameCount() const;
void deleteKeyFrame(size_t row);
void setKeyFrame(size_t row, const KeyFrame &keyFrame);
diff --git a/sync_player.vcproj b/sync_player.vcproj
index aab5559..34b5c35 100644
--- a/sync_player.vcproj
+++ b/sync_player.vcproj
@@ -40,7 +40,7 @@
+
+