diff --git a/editor/editor.vcproj b/editor/editor.vcproj
index dee7738..ea1af99 100644
--- a/editor/editor.vcproj
+++ b/editor/editor.vcproj
@@ -188,6 +188,10 @@
>
+
+
diff --git a/editor/syncdocument.cpp b/editor/syncdocument.cpp
new file mode 100644
index 0000000..62312e8
--- /dev/null
+++ b/editor/syncdocument.cpp
@@ -0,0 +1,106 @@
+#include "syncdocument.h"
+
+#import named_guids
+
+bool SyncDocument::load(const std::string &fileName)
+{
+ MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
+ try
+ {
+ doc->load(fileName.c_str());
+ MSXML2::IXMLDOMNodeListPtr trackNodes = doc->documentElement->selectNodes("track");
+ for (int i = 0; i < trackNodes->Getlength(); ++i)
+ {
+ MSXML2::IXMLDOMNodePtr trackNode = trackNodes->Getitem(i);
+ MSXML2::IXMLDOMNamedNodeMapPtr attribs = trackNode->Getattributes();
+
+ std::string name = attribs->getNamedItem("name")->Gettext();
+ sync::Track &t = getTrack(name);
+
+ MSXML2::IXMLDOMNodeListPtr rowNodes = trackNode->GetchildNodes();
+ for (int i = 0; i < rowNodes->Getlength(); ++i)
+ {
+ MSXML2::IXMLDOMNodePtr keyNode = rowNodes->Getitem(i);
+ std::string baseName = keyNode->GetbaseName();
+ if (baseName == "key")
+ {
+ MSXML2::IXMLDOMNamedNodeMapPtr rowAttribs = keyNode->Getattributes();
+ std::string rowString = rowAttribs->getNamedItem("row")->Gettext();
+ std::string valueString = rowAttribs->getNamedItem("value")->Gettext();
+ std::string interpolationString = rowAttribs->getNamedItem("interpolation")->Gettext();
+
+ sync::Track::KeyFrame keyFrame(
+ float(atof(valueString.c_str())),
+ sync::Track::KeyFrame::InterpolationType(
+ atoi(interpolationString.c_str())
+ )
+ );
+ t.setKeyFrame(atoi(rowString.c_str()), keyFrame);
+ }
+ }
+ }
+ }
+ catch(_com_error &e)
+ {
+ char temp[256];
+ _snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
+ MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
+ return false;
+ }
+ return true;
+}
+
+bool SyncDocument::save(const std::string &fileName)
+{
+ MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
+ try
+ {
+ _variant_t varNodeType((short)MSXML2::NODE_ELEMENT);
+ MSXML2::IXMLDOMNodePtr rootNode = doc->createNode(varNodeType, _T("tracks"), _T(""));
+ doc->appendChild(rootNode);
+
+ sync::Data::TrackContainer::iterator iter;
+ for (iter = tracks.begin(); iter != tracks.end(); ++iter)
+ {
+ size_t index = iter->second;
+ const sync::Track &track = getTrack(index);
+
+ MSXML2::IXMLDOMElementPtr trackElem = doc->createElement(_T("track"));
+ trackElem->setAttribute(_T("name"), iter->first.c_str());
+ rootNode->appendChild(trackElem);
+
+ sync::Track::KeyFrameContainer::const_iterator it;
+ for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it)
+ {
+ char temp[256];
+ size_t row = it->first;
+ float value = it->second.value;
+ char interpolationType = char(it->second.interpolationType);
+
+ MSXML2::IXMLDOMElementPtr keyElem = doc->createElement(_T("key"));
+
+ _snprintf(temp, 256, "%d", row);
+ keyElem->setAttribute(_T("row"), temp);
+
+ _snprintf(temp, 256, "%f", value);
+ keyElem->setAttribute(_T("value"), temp);
+
+ _snprintf(temp, 256, "%d", interpolationType);
+ keyElem->setAttribute(_T("interpolation"), temp);
+
+ trackElem->appendChild(keyElem);
+ }
+ }
+
+ doc->save(fileName.c_str());
+ }
+ catch(_com_error &e)
+ {
+ char temp[256];
+ _snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
+ MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
+ return false;
+ }
+ return true;
+}
+
diff --git a/editor/syncdocument.h b/editor/syncdocument.h
index 79bd3b7..5e6c901 100644
--- a/editor/syncdocument.h
+++ b/editor/syncdocument.h
@@ -9,9 +9,6 @@
#include
#include
-
-#import named_guids
-
class SyncDocument : public sync::Data
{
public:
@@ -253,108 +250,10 @@ public:
else cmd = new InsertCommand(track, row, key);
return cmd;
}
-
- bool load(const std::string &fileName)
- {
- MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
- try
- {
- doc->load(fileName.c_str());
- MSXML2::IXMLDOMNodeListPtr trackNodes = doc->documentElement->selectNodes("track");
- for (int i = 0; i < trackNodes->Getlength(); ++i)
- {
- MSXML2::IXMLDOMNodePtr trackNode = trackNodes->Getitem(i);
- MSXML2::IXMLDOMNamedNodeMapPtr attribs = trackNode->Getattributes();
-
- std::string name = attribs->getNamedItem("name")->Gettext();
- sync::Track &t = getTrack(name);
-
- MSXML2::IXMLDOMNodeListPtr rowNodes = trackNode->GetchildNodes();
- for (int i = 0; i < rowNodes->Getlength(); ++i)
- {
- MSXML2::IXMLDOMNodePtr keyNode = rowNodes->Getitem(i);
- std::string baseName = keyNode->GetbaseName();
- if (baseName == "key")
- {
- MSXML2::IXMLDOMNamedNodeMapPtr rowAttribs = keyNode->Getattributes();
- std::string rowString = rowAttribs->getNamedItem("row")->Gettext();
- std::string valueString = rowAttribs->getNamedItem("value")->Gettext();
- std::string interpolationString = rowAttribs->getNamedItem("interpolation")->Gettext();
-
- sync::Track::KeyFrame keyFrame(
- float(atof(valueString.c_str())),
- sync::Track::KeyFrame::InterpolationType(
- atoi(interpolationString.c_str())
- )
- );
- t.setKeyFrame(atoi(rowString.c_str()), keyFrame);
- }
- }
- }
- }
- catch(_com_error &e)
- {
- char temp[256];
- _snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
- MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
- return false;
- }
- return true;
- }
-
- bool save(const std::string &fileName)
- {
- MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
- try
- {
- _variant_t varNodeType((short)MSXML2::NODE_ELEMENT);
- MSXML2::IXMLDOMNodePtr rootNode = doc->createNode(varNodeType, _T("tracks"), _T(""));
- doc->appendChild(rootNode);
-
- sync::Data::TrackContainer::iterator iter;
- for (iter = tracks.begin(); iter != tracks.end(); ++iter)
- {
- size_t index = iter->second;
- const sync::Track &track = getTrack(index);
-
- MSXML2::IXMLDOMElementPtr trackElem = doc->createElement(_T("track"));
- trackElem->setAttribute(_T("name"), iter->first.c_str());
- rootNode->appendChild(trackElem);
-
- sync::Track::KeyFrameContainer::const_iterator it;
- for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it)
- {
- char temp[256];
- size_t row = it->first;
- float value = it->second.value;
- char interpolationType = char(it->second.interpolationType);
-
- MSXML2::IXMLDOMElementPtr keyElem = doc->createElement(_T("key"));
-
- _snprintf(temp, 256, "%d", row);
- keyElem->setAttribute(_T("row"), temp);
-
- _snprintf(temp, 256, "%f", value);
- keyElem->setAttribute(_T("value"), temp);
-
- _snprintf(temp, 256, "%d", interpolationType);
- keyElem->setAttribute(_T("interpolation"), temp);
-
- trackElem->appendChild(keyElem);
- }
- }
-
- doc->save(fileName.c_str());
- }
- catch(_com_error &e)
- {
- char temp[256];
- _snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
- MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
- return false;
- }
- return true;
- }
+
+ bool load(const std::string &fileName);
+ bool save(const std::string &fileName);
+
SOCKET clientSocket;
std::map clientRemap;
diff --git a/editor/synctracker2.cpp b/editor/synctracker2.cpp
index d521c13..cdfd1d2 100644
--- a/editor/synctracker2.cpp
+++ b/editor/synctracker2.cpp
@@ -8,6 +8,7 @@
#define WIN32_LEAN_AND_MEAN
#include
#include
+#include
#include "trackview.h"
#include