History

Load mapping and use it for offset, joint mappings, blendshape mappings.

Andrzej Kapolka committed 13 years ago

Commit 57567331 parent fad114d4 files · +170 −88Browse files

Showing the changes to interface/src/renderer/GeometryCache.cpp (1 of 4 files). Show all

Unified · Split

interface/src/renderer/GeometryCache.cpp+57−25
@@ -250,21 +250,37 @@ QSharedPointer<NetworkGeometry> GeometryCache::getGeometry(const QUrl& url) { · 249 unmodified lines
250250 return geometry;
251251 }
252252
253−NetworkGeometry::NetworkGeometry(const QUrl& url) : _reply(NULL) {
253+NetworkGeometry::NetworkGeometry(const QUrl& url) :
254+ _modelReply(NULL),
255+ _mappingReply(NULL)
256+{
254257 if (!url.isValid()) {
255258 return;
256259 }
257− QNetworkRequest request(url);
258− request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
259− _reply = Application::getInstance()->getNetworkAccessManager()->get(request);
260+ QNetworkRequest modelRequest(url);
261+ modelRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
262+ _modelReply = Application::getInstance()->getNetworkAccessManager()->get(modelRequest);
260263
261− connect(_reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(handleDownloadProgress(qint64,qint64)));
262− connect(_reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(handleReplyError()));
264+ connect(_modelReply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(maybeReadModelWithMapping()));
265+ connect(_modelReply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(handleModelReplyError()));
266+
267+ QUrl mappingURL = url;
268+ QString path = url.path();
269+ mappingURL.setPath(path.left(path.lastIndexOf('.')) + ".fst");
270+ QNetworkRequest mappingRequest(mappingURL);
271+ mappingRequest.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
272+ _mappingReply = Application::getInstance()->getNetworkAccessManager()->get(mappingRequest);
273+
274+ connect(_mappingReply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(maybeReadModelWithMapping()));
275+ connect(_mappingReply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(handleMappingReplyError()));
263276 }
264277
265278 NetworkGeometry::~NetworkGeometry() {
266− if (_reply != NULL) {
267− delete _reply;
279+ if (_modelReply != NULL) {
280+ delete _modelReply;
281+ }
282+ if (_mappingReply != NULL) {
283+ delete _mappingReply;
268284 }
269285 foreach (const NetworkMesh& mesh, _meshes) {
270286 glDeleteBuffers(1, &mesh.indexBufferID);
@@ -272,19 +288,43 @@ NetworkGeometry::~NetworkGeometry() { · 1 unmodified line
272288 }
273289 }
274290
275−void NetworkGeometry::handleDownloadProgress(qint64 bytesReceived, qint64 bytesTotal) {
276− if (bytesReceived < bytesTotal && !_reply->isFinished()) {
291+void NetworkGeometry::handleModelReplyError() {
292+ qDebug() << _modelReply->errorString() << "\n";
293+
294+ _modelReply->disconnect(this);
295+ _modelReply->deleteLater();
296+ _modelReply = NULL;
297+}
298+
299+void NetworkGeometry::handleMappingReplyError() {
300+ _mappingReply->disconnect(this);
301+ _mappingReply->deleteLater();
302+ _mappingReply = NULL;
303+
304+ maybeReadModelWithMapping();
305+}
306+
307+void NetworkGeometry::maybeReadModelWithMapping() {
308+ if (_modelReply == NULL || !_modelReply->isFinished() || (_mappingReply != NULL && !_mappingReply->isFinished())) {
277309 return;
278310 }
279−
280− QUrl url = _reply->url();
281− QByteArray entirety = _reply->readAll();
282− _reply->disconnect(this);
283− _reply->deleteLater();
284− _reply = NULL;
311+
312+ QUrl url = _modelReply->url();
313+ QByteArray model = _modelReply->readAll();
314+ _modelReply->disconnect(this);
315+ _modelReply->deleteLater();
316+ _modelReply = NULL;
317+
318+ QByteArray mapping;
319+ if (_mappingReply != NULL) {
320+ mapping = _mappingReply->readAll();
321+ _mappingReply->disconnect(this);
322+ _mappingReply->deleteLater();
323+ _mappingReply = NULL;
324+ }
285325
286326 try {
287− _geometry = extractFBXGeometry(parseFBX(entirety));
327+ _geometry = readFBX(model, mapping);
288328
289329 } catch (const QString& error) {
290330 qDebug() << "Error reading " << url << ": " << error << "\n";
@@ -338,11 +378,3 @@ void NetworkGeometry::handleDownloadProgress(qint64 bytesReceived, qint64 bytesT · 47 unmodified lines
338378 _meshes.append(networkMesh);
339379 }
340380 }
341−
342−void NetworkGeometry::handleReplyError() {
343− qDebug() << _reply->errorString() << "\n";
344−
345− _reply->disconnect(this);
346− _reply->deleteLater();
347− _reply = NULL;
348−}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t