void CAA_DragonFire::init(FloatRect dragonRect, bool bOrientation, CGame * pGame, int WormID, int TeamID) { m_pGame = pGame; m_WormID = WormID; m_TeamID = TeamID; m_bOrientation = bOrientation; m_pSprite = g_pSpritepool->at(SPRITEID::DRAGONFIRE); FloatRect FR; CVec dir(0.0f,0.0f); setIsSolid(true); setCanMove(true); FR = m_pSprite->GetRect(); if (m_bOrientation == OLEFT) { FR.x = dragonRect.x; dir.x = -500.0f; } else { FR.x = dragonRect.x+dragonRect.w-FR.w; dir.x = 500.0f; } FR.y = dragonRect.y; if (m_bOrientation == OLEFT)//Physical rect is smaller then sprite ;) --> looks better FR.y -= 20.0f; else FR.w -= 20.0f; setDir(dir); setRect(FR); setHasGravity(false); initKillTime(1.5f); }
void CIFlag::init() {//MBE maybe its better to init sprites in inits (if not null... but where to set null?) this->CItem::init(); setIsSolid(true); setName("Flag"); setIcon(g_pSpritepool->at(SPRITEID::ICONFLAG)); setSprite(g_pSpritepool->at(SPRITEID::FLAG)); FloatRect FR; FR = m_pSprite->GetRect(); setRect( FR ); g_pLogfile->Textout("</ br>inited Flag!"); }
void CIDragon::init(CGame * pGame) { m_pGame = pGame; m_fAnimPhase = 0.0f; this->CItem::init(); setIsSolid(true); setName("Dragon"); setDropable(true); //TODO: for debug only: setOwner(NULL); setIcon(g_pSpritepool->at(SPRITEID::ICONDRAGON)); m_pSpriteBody = g_pSpritepool->at(SPRITEID::DRAGONBODY); m_pSpriteWings = g_pSpritepool->at(SPRITEID::DRAGONWINGS); FloatRect FR; FR = m_pSpriteBody->GetRect(); setRect(FR); m_bActive = false; m_fLastShot = 0.0f; }
void Base3DOverlay::setProperties(const QScriptValue& properties) { Overlay::setProperties(properties); QScriptValue drawInFront = properties.property("drawInFront"); if (drawInFront.isValid()) { bool value = drawInFront.toVariant().toBool(); setDrawInFront(value); } QScriptValue drawOnHUD = properties.property("drawOnHUD"); if (drawOnHUD.isValid()) { bool value = drawOnHUD.toVariant().toBool(); setDrawOnHUD(value); } QScriptValue position = properties.property("position"); // if "position" property was not there, check to see if they included aliases: point, p1 if (!position.isValid()) { position = properties.property("p1"); if (!position.isValid()) { position = properties.property("point"); } } if (position.isValid()) { QScriptValue x = position.property("x"); QScriptValue y = position.property("y"); QScriptValue z = position.property("z"); if (x.isValid() && y.isValid() && z.isValid()) { glm::vec3 newPosition; newPosition.x = x.toVariant().toFloat(); newPosition.y = y.toVariant().toFloat(); newPosition.z = z.toVariant().toFloat(); setPosition(newPosition); } } if (properties.property("lineWidth").isValid()) { setLineWidth(properties.property("lineWidth").toVariant().toFloat()); } QScriptValue rotation = properties.property("rotation"); if (rotation.isValid()) { glm::quat newRotation; // size, scale, dimensions is special, it might just be a single scalar, or it might be a vector, check that here QScriptValue x = rotation.property("x"); QScriptValue y = rotation.property("y"); QScriptValue z = rotation.property("z"); QScriptValue w = rotation.property("w"); if (x.isValid() && y.isValid() && z.isValid() && w.isValid()) { newRotation.x = x.toVariant().toFloat(); newRotation.y = y.toVariant().toFloat(); newRotation.z = z.toVariant().toFloat(); newRotation.w = w.toVariant().toFloat(); setRotation(newRotation); } } if (properties.property("isSolid").isValid()) { setIsSolid(properties.property("isSolid").toVariant().toBool()); } if (properties.property("isFilled").isValid()) { setIsSolid(properties.property("isSolid").toVariant().toBool()); } if (properties.property("isWire").isValid()) { setIsSolid(!properties.property("isWire").toVariant().toBool()); } if (properties.property("solid").isValid()) { setIsSolid(properties.property("solid").toVariant().toBool()); } if (properties.property("filled").isValid()) { setIsSolid(properties.property("filled").toVariant().toBool()); } if (properties.property("wire").isValid()) { setIsSolid(!properties.property("wire").toVariant().toBool()); } if (properties.property("isDashedLine").isValid()) { setIsDashedLine(properties.property("isDashedLine").toVariant().toBool()); } if (properties.property("dashed").isValid()) { setIsDashedLine(properties.property("dashed").toVariant().toBool()); } if (properties.property("ignoreRayIntersection").isValid()) { setIgnoreRayIntersection(properties.property("ignoreRayIntersection").toVariant().toBool()); } }
void Base3DOverlay::setProperties(const QVariantMap& properties) { Overlay::setProperties(properties); bool needRenderItemUpdate = false; auto drawInFront = properties["drawInFront"]; if (drawInFront.isValid()) { bool value = drawInFront.toBool(); setDrawInFront(value); needRenderItemUpdate = true; } auto position = properties["position"]; // if "position" property was not there, check to see if they included aliases: point, p1 if (!position.isValid()) { position = properties["p1"]; if (!position.isValid()) { position = properties["point"]; } } if (position.isValid()) { setPosition(vec3FromVariant(position)); needRenderItemUpdate = true; } if (properties["lineWidth"].isValid()) { setLineWidth(properties["lineWidth"].toFloat()); needRenderItemUpdate = true; } auto rotation = properties["rotation"]; if (rotation.isValid()) { setRotation(quatFromVariant(rotation)); needRenderItemUpdate = true; } if (properties["isSolid"].isValid()) { setIsSolid(properties["isSolid"].toBool()); } if (properties["isFilled"].isValid()) { setIsSolid(properties["isSolid"].toBool()); } if (properties["isWire"].isValid()) { setIsSolid(!properties["isWire"].toBool()); } if (properties["solid"].isValid()) { setIsSolid(properties["solid"].toBool()); } if (properties["filled"].isValid()) { setIsSolid(properties["filled"].toBool()); } if (properties["wire"].isValid()) { setIsSolid(!properties["wire"].toBool()); } if (properties["isDashedLine"].isValid()) { setIsDashedLine(properties["isDashedLine"].toBool()); } if (properties["dashed"].isValid()) { setIsDashedLine(properties["dashed"].toBool()); } if (properties["ignoreRayIntersection"].isValid()) { setIgnoreRayIntersection(properties["ignoreRayIntersection"].toBool()); } // Communicate changes to the renderItem if needed if (needRenderItemUpdate) { auto itemID = getRenderItemID(); if (render::Item::isValidID(itemID)) { render::ScenePointer scene = qApp->getMain3DScene(); render::PendingChanges pendingChanges; pendingChanges.updateItem(itemID); scene->enqueuePendingChanges(pendingChanges); } } }