|
@@ -1459,13 +1459,23 @@ void Connection::SendSyncPackagesInfo(bool allClients)
|
|
|
{
|
|
{
|
|
|
const Vector<SharedPtr<PackageFile> >& packages = scene_->GetRequiredPackageFiles();
|
|
const Vector<SharedPtr<PackageFile> >& packages = scene_->GetRequiredPackageFiles();
|
|
|
unsigned numPackages = packages.Size();
|
|
unsigned numPackages = packages.Size();
|
|
|
|
|
+
|
|
|
|
|
+ if (numPackages == 0)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ if (!CheckPackagesUpdate())
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ cachedPackages_.Clear();
|
|
|
msg_.Clear();
|
|
msg_.Clear();
|
|
|
msg_.WriteVLE(numPackages);
|
|
msg_.WriteVLE(numPackages);
|
|
|
|
|
|
|
|
for (unsigned i = 0; i < numPackages; ++i)
|
|
for (unsigned i = 0; i < numPackages; ++i)
|
|
|
{
|
|
{
|
|
|
PackageFile* package = packages[i];
|
|
PackageFile* package = packages[i];
|
|
|
- msg_.WriteString(GetFileNameAndExtension(package->GetName()));
|
|
|
|
|
|
|
+ String filename = GetFileNameAndExtension(package->GetName());
|
|
|
|
|
+ cachedPackages_.Push(filename);
|
|
|
|
|
+ msg_.WriteString(filename);
|
|
|
msg_.WriteUInt(package->GetTotalSize());
|
|
msg_.WriteUInt(package->GetTotalSize());
|
|
|
msg_.WriteUInt(package->GetChecksum());
|
|
msg_.WriteUInt(package->GetChecksum());
|
|
|
}
|
|
}
|
|
@@ -1569,4 +1579,24 @@ void Connection::ProcessSyncPackagesInfo(int msgID, MemoryBuffer& msg)
|
|
|
|
|
|
|
|
} // for
|
|
} // for
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+bool Connection::CheckPackagesUpdate()
|
|
|
|
|
+{
|
|
|
|
|
+ if (cachedPackages_.Empty())
|
|
|
|
|
+ return true;
|
|
|
|
|
+
|
|
|
|
|
+ const Vector<SharedPtr<PackageFile> >& packages = scene_->GetRequiredPackageFiles();
|
|
|
|
|
+ unsigned numPackages = packages.Size();
|
|
|
|
|
+
|
|
|
|
|
+ for (unsigned i = 0; i < numPackages; ++i)
|
|
|
|
|
+ {
|
|
|
|
|
+ PackageFile* package = packages[i];
|
|
|
|
|
+ String filename = GetFileNameAndExtension(package->GetName());
|
|
|
|
|
+
|
|
|
|
|
+ if (!cachedPackages_.Contains(filename))
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return false;
|
|
|
|
|
+}
|
|
|
}
|
|
}
|