QVariantMap ShowMenu::toJsonObject() { QVariantMap object = Action::toJsonObject(); if (sceneObject()) object.insert("object", sceneObject()->toJsonObject()); return object; }
QVariantMap Show::toJsonObject() { QVariantMap data = ChangeVisibility::toJsonObject(); if (sceneObject() && qobject_cast<Character*>(sceneObject())) data.insert("state", mCharacterState); return data; }
QString Show::displayText() const { QString text(""); if (sceneObject()) text += sceneObject()->objectName(); Character* character = qobject_cast<Character*>(sceneObject()); if (character) text += QString(" (%1)").arg(character->currentState()); return text; }
void draw() const { if (renderable) { material.program().use(); material.program().set("world", sceneObject().transform().worldMatrix()); renderable->draw(); } }
QString ChangeVisibility::displayText() const { if (! sceneObject()) return ""; QString text(""); if (sceneObject()) text += sceneObject()->objectName() + " "; Character* character = qobject_cast<Character*>(sceneObject()); if (character && toShow()) { const Show* _this = qobject_cast<const Show*>(this); if (_this) { text += QString("(%1) ").arg(_this->characterState()); } } const Fade* fade = fadeAction(); const Slide* slide = slideAction(); double duration = 0.0; if (fade && fade->duration() || slide && slide->duration()) { text += tr("with") + " "; if (fade && fade->duration()) { text += QString("%1%2").arg("fade").arg(fade->fadeTypeString()); if (fade->duration() > duration) duration = fade->duration(); } if (fade && fade->duration() && slide && slide->duration()) text += " " + tr("and") + " "; if (slide && slide->duration()) { text += tr("slide"); if (slide->duration() > duration) duration = slide->duration(); } text += QString(" %1 %2s").arg(tr("in")).arg(QString::number(duration,'f', 2)); } return text; }
ShowMenu::ShowMenu(const QVariantMap& data, QObject *parent) : Action(data, parent) { init(); if (data.contains("object") && data.value("object").type() == QVariant::Map) { Object* object = ResourceManager::instance()->createResource(data.value("object").toMap(), false); setSceneObject(object); } //in case of an invalid Menu object if (sceneObject()) { Menu * menu = qobject_cast<Menu*>(sceneObject()); if (! menu) { sceneObject()->deleteLater(); setSceneObject(0); } } if (! sceneObject()) { setSceneObject(new Menu(this)); } }
CameraFlyer::CameraFlyer(const HSceneObject& parent) :Component(parent), mPitch(0.0f), mYaw(0.0f), mLastButtonState(false) { setName("CameraFlyer"); mCamera = sceneObject()->getComponent<CCamera>(); mCamera->setNearClipDistance(5); mMoveForward = VirtualButton("Forward"); mMoveBack = VirtualButton("Back"); mMoveLeft = VirtualButton("Left"); mMoveRight = VirtualButton("Right"); mFastMove = VirtualButton("FastMove"); mRotateCam = VirtualButton("RotateCam"); mHorizontalAxis = VirtualAxis("Horizontal"); mVerticalAxis = VirtualAxis("Vertical"); }
CameraFlyer::CameraFlyer(const HSceneObject& parent) :Component(parent), mPitch(0.0f), mYaw(0.0f), mLastButtonState(false) { // Set a name for the component, so we can find it later if needed setName("CameraFlyer"); // Find the camera component we're influencing (must be on the same SceneObject we're on) mCamera = sceneObject()->getComponent<CCamera>(); mCamera->setNearClipDistance(5); // Get handles for key bindings. Actual keys attached to these bindings will be registered during app start-up. mMoveForward = VirtualButton("Forward"); mMoveBack = VirtualButton("Back"); mMoveLeft = VirtualButton("Left"); mMoveRight = VirtualButton("Right"); mFastMove = VirtualButton("FastMove"); mRotateCam = VirtualButton("RotateCam"); mHorizontalAxis = VirtualAxis("Horizontal"); mVerticalAxis = VirtualAxis("Vertical"); }
void ShowMenu::focusOut() { if (sceneObject() && SceneManager::currentScene()) { SceneManager::currentScene()->removeObject(sceneObject(), false, true); } }
void ShowMenu::focusIn() { if (sceneObject() && SceneManager::currentScene()) SceneManager::currentScene()->appendObject(sceneObject(), true, true); }