QByteArray Quick3DBuffer::convertToRawData(const QJSValue &jsValue) { initEngines(); Q_ASSERT(m_v4engine); QV4::Scope scope(m_v4engine); QV4::Scoped<QV4::TypedArray> typedArray(scope, QJSValuePrivate::convertedToValue(m_v4engine, jsValue)); if (!typedArray) return QByteArray(); char *dataPtr = reinterpret_cast<char *>(typedArray->arrayData()->data()); dataPtr += typedArray->d()->byteOffset; uint byteLength = typedArray->byteLength(); return QByteArray(dataPtr, byteLength); }
Game::Game(): mCurrentMap(nullptr), mMapName(""), mValidSpeed(true), mNextAdjustTime(cur_time + adjustDelay), mAdjustLevel(0), mAdjustPerfomance(config.getBoolValue("adjustPerfomance")), mLowerCounter(0), mPing(0), mTime(cur_time + 1) { touchManager.setInGame(true); spellManager = new SpellManager; spellShortcut = new SpellShortcut; // assert(!mInstance); if (mInstance) logger->log("error: double game creation"); mInstance = this; config.incValue("gamecount"); disconnectedDialog = nullptr; // Create the viewport viewport = new Viewport; viewport->setSize(mainGraphics->mWidth, mainGraphics->mHeight); PlayerInfo::clear(); gcn::Container *const top = static_cast<gcn::Container*>(gui->getTop()); if (top) top->add(viewport); viewport->requestMoveToBottom(); AnimatedSprite::setEnableCache(mainGraphics->getOpenGL() && config.getBoolValue("enableDelayedAnimations")); CompoundSprite::setEnableDelay( config.getBoolValue("enableCompoundSpriteDelay")); createGuiWindows(); windowMenu = new WindowMenu(nullptr); if (windowContainer) windowContainer->add(windowMenu); initEngines(); // Initialize beings if (actorManager) actorManager->setPlayer(player_node); Net::getGameHandler()->ping(tick_time); if (setupWindow) setupWindow->setInGame(true); clearKeysArray(); if (guildManager && GuildManager::getEnableGuildBot()) guildManager->requestGuildInfo(); if (player_node) player_node->updatePets(); }