void Situated::loadModel() { if (_model) return; if (_modelName.empty()) { warning("Situated object \"%s\" (\"%s\") has no model", _name.c_str(), _tag.c_str()); return; } _model = loadModelObject(_modelName); if (!_model) throw Common::Exception("Failed to load situated object model \"%s\"", _modelName.c_str()); // Positioning float x, y, z; getPosition(x, y, z); setPosition(x, y, z); getOrientation(x, y, z); setOrientation(x, y, z); // Clickable _model->setTag(_tag); _model->setClickable(isClickable()); _ids.push_back(_model->getID()); }
void Situated::loadModel() { if (_model) return; if (_modelName.empty()) { warning("Situated object \"%s\" (\"%s\") has no model", _name.c_str(), _tag.c_str()); return; } _model = loadModelObject(_modelName); if (!_model) throw Common::Exception("Failed to load situated object model \"%s\"", _modelName.c_str()); // Tinting if (ConfigMan.getBool("tint")) ((Graphics::Aurora::Model_NWN2 *) _model)->setTint(_tint); // Positioning float x, y, z; getPosition(x, y, z); setPosition(x, y, z); getOrientation(x, y, z); setOrientation(x, y, z); // Clickable _model->setTag(_tag); _model->setClickable(isClickable()); _ids.push_back(_model->getID()); }
void Creature::loadBody(PartModels &parts) { _model = loadModelObject(parts.body, parts.bodyTexture); if (!_model) return; _ids.push_back(_model->getID()); _model->setTag(_tag); _model->setClickable(isClickable()); }
void Situated::load(const Aurora::GFF3Struct &instance, const Aurora::GFF3Struct *blueprint) { // General properties if (blueprint) loadProperties(*blueprint); // Blueprint loadProperties(instance); // Instance // Specialized object properties if (blueprint) loadObject(*blueprint); // Blueprint loadObject(instance); // Instance // Appearance if (_appearanceID == Aurora::kFieldIDInvalid) warning("Situated object \"%s\" without an appearance", _tag.c_str()); loadAppearance(); loadSounds(); // Model if (!_modelName.empty()) { _model.reset(loadModelObject(_modelName)); if (!_model) throw Common::Exception("Failed to load situated object model \"%s\"", _modelName.c_str()); } else warning("Situated object \"%s\" (\"%s\") has no model", _name.c_str(), _tag.c_str()); if (_model) { // Clickable _model->setTag(_tag); _model->setClickable(isClickable()); // ID _ids.push_back(_model->getID()); } // Position setPosition(instance.getDouble("X"), instance.getDouble("Y"), instance.getDouble("Z")); // Orientation float bearing = instance.getDouble("Bearing"); setOrientation(0.0f, 0.0f, 1.0f, Common::rad2deg(bearing)); }
void Creature::loadBody() { const Aurora::TwoDARow &appearance = TwoDAReg.get2DA("appearance").getRow(_appearance); const Common::UString bodyModel = appearance.getString(Common::UString("MODELA")); _model.reset(loadModelObject(bodyModel)); if (!_model) return; _ids.push_back(_model->getID()); _model->setTag(_tag); _model->setClickable(isClickable()); }
void Creature::loadModel() { if (!_modelParts.empty()) return; if (_appearanceID == Aurora::kFieldIDInvalid) { warning("Creature \"%s\" has no appearance", _tag.c_str()); return; } Common::UString body = getBaseModel("NWN2_Model_Body"); if (body.empty()) { warning("Creature \"%s\" has no body", _tag.c_str()); return; } // Main body model loadArmorModel(body, "BODY", _armorVisualType, _armorVariation); const Aurora::TwoDARow &appearance = TwoDAReg.get2DA("appearance").getRow(_appearanceID); if (appearance.getInt("BodyType") == 1) { // Creature with more part models than just the body loadHeadModel(_appearanceHead); loadHairModel(_appearanceMHair); loadHairModel(_appearanceFHair); loadArmorModel(body, "BOOTS" , _bootsVisualType, _bootsVariation); if (!loadArmorModel(body, "GLOVES", 10, 0)) loadArmorModel(body, "GLOVES", 0, 0); } // Positioning float x, y, z, angle; getPosition(x, y, z); setPosition(x, y, z); getOrientation(x, y, z, angle); setOrientation(x, y, z, angle); for (std::list<Graphics::Aurora::Model *>::iterator m = _modelParts.begin(); m != _modelParts.end(); ++m) { (*m)->setTag(_tag); (*m)->setClickable(isClickable()); _ids.push_back((*m)->getID()); } }
/************************************************************************* Initialise the state for hovering over main segment area *************************************************************************/ void ListHeaderSegment::initSegmentHoverState(void) { // reset sizing area hover state if needed. if (d_splitterHover) { d_splitterHover = false; MouseCursor::getSingleton().setImage(getMouseCursor()); invalidate(); } // set segment hover state if not already set. if ((!d_segmentHover) && isClickable()) { d_segmentHover = true; invalidate(); } }
void Placeable::load(const Aurora::GFF3Struct &instance, const Aurora::GFF3Struct *blueprint = 0) { if (blueprint) loadProperties(*blueprint); loadProperties(instance); const Aurora::GDAFile &gda = getMGDA(kWorksheetPlaceables); _model = loadModelObject(gda.getString(gda.findRow(_appearanceID), "ModelName")); if (_model) { _model->setTag(_tag); _model->setClickable(isClickable()); _ids.push_back(_model->getID()); } syncPosition(); syncOrientation(); }
void Creature::loadBody(PartModels &parts) { // Model "P_BastilaBB" has broken animations. Replace it with the // correct one. if (parts.body.stricmp("P_BastilaBB") == 0) parts.body = "P_BastilaBB02"; GfxMan.lockFrame(); _model.reset(loadModelObject(parts.body, parts.bodyTexture)); GfxMan.unlockFrame(); if (!_model) return; _ids.clear(); _ids.push_back(_model->getID()); _model->setTag(_tag); _model->setClickable(isClickable()); if (_modelType != "B" && _modelType != "P") _model->addAnimationChannel(Graphics::Aurora::kAnimationChannelHead); }
void Creature::setUsable(bool usable) { Object::setUsable(usable); if (_model) _model->setClickable(isClickable()); }
QStyleOptionHeader HierarchicalHeaderView::styleOptionForCell(int logicalInd) const { QStyleOptionHeader opt; initStyleOption(&opt); if (window()->isActiveWindow()) opt.state |= QStyle::State_Active; opt.textAlignment = Qt::AlignCenter; opt.iconAlignment = Qt::AlignVCenter; opt.section = logicalInd; int visual = visualIndex(logicalInd); if (count() == 1) opt.position = QStyleOptionHeader::OnlyOneSection; else { if (visual == 0) opt.position = QStyleOptionHeader::Beginning; else opt.position=(visual==count()-1 ? QStyleOptionHeader::End : QStyleOptionHeader::Middle); } if(isClickable()) { /* if (logicalIndex == d->hover) state |= QStyle::State_MouseOver; if (logicalIndex == d->pressed) { state |= QStyle::State_Sunken; } else*/ { if(highlightSections() && selectionModel()) { if(orientation()==Qt::Horizontal) { if(selectionModel()->columnIntersectsSelection(logicalInd, rootIndex())) opt.state |= QStyle::State_On; if(selectionModel()->isColumnSelected(logicalInd, rootIndex())) opt.state |= QStyle::State_Sunken; } else { if(selectionModel()->rowIntersectsSelection(logicalInd, rootIndex())) opt.state |= QStyle::State_On; if(selectionModel()->isRowSelected(logicalInd, rootIndex())) opt.state |= QStyle::State_Sunken; } } } } if(selectionModel()) { bool previousSelected=false; if(orientation()==Qt::Horizontal) previousSelected = selectionModel()->isColumnSelected(logicalIndex(visual - 1), rootIndex()); else previousSelected = selectionModel()->isRowSelected(logicalIndex(visual - 1), rootIndex()); bool nextSelected=false; if(orientation()==Qt::Horizontal) nextSelected = selectionModel()->isColumnSelected(logicalIndex(visual + 1), rootIndex()); else nextSelected = selectionModel()->isRowSelected(logicalIndex(visual + 1), rootIndex()); if (previousSelected && nextSelected) opt.selectedPosition = QStyleOptionHeader::NextAndPreviousAreSelected; else { if (previousSelected) opt.selectedPosition = QStyleOptionHeader::PreviousIsSelected; else { if (nextSelected) opt.selectedPosition = QStyleOptionHeader::NextIsSelected; else opt.selectedPosition = QStyleOptionHeader::NotAdjacent; } } } return opt; }
string PlayerMessage::getText() const { if (isClickable()) return text.substr(0, text.size() - 1); return text; }
void Creature::loadModel() { if (_model) return; if (_appearanceID == Aurora::kFieldIDInvalid) { warning("Creature \"%s\" has no appearance", _tag.c_str()); return; } const Aurora::TwoDARow &appearance = TwoDAReg.get2DA("appearance").getRow(_appearanceID); if (_portrait.empty()) _portrait = appearance.getString("PORTRAIT"); _environmentMap = appearance.getString("ENVMAP"); if (appearance.getString("MODELTYPE") == "P") { getArmorModels(); getPartModels(); _model = loadModelObject(_partsSuperModelName); for (size_t i = 0; i < kBodyPartMAX; i++) { if (_bodyParts[i].modelName.empty()) continue; TextureMan.startRecordNewTextures(); // Try to load in the corresponding part model Graphics::Aurora::Model *partModel = loadModelObject(_bodyParts[i].modelName, _bodyParts[i].textureName); if (!partModel) continue; // Add the loaded model to the appropriate part node Graphics::Aurora::ModelNode *partNode = _model->getNode(kBodyPartNodes[i]); if (partNode) partNode->addChild(partModel); std::list<Common::UString> newTextures; TextureMan.stopRecordNewTextures(newTextures); for (std::list<Common::UString>::const_iterator t = newTextures.begin(); t != newTextures.end(); ++t) { Graphics::Aurora::TextureHandle texture = TextureMan.getIfExist(*t); if (texture.empty()) continue; _bodyParts[i].textures.push_back(texture); } finishPLTs(_bodyParts[i].textures); } } else _model = loadModelObject(appearance.getString("RACE")); // Positioning float x, y, z, angle; getPosition(x, y, z); setPosition(x, y, z); getOrientation(x, y, z, angle); setOrientation(x, y, z, angle); // Clickable if (_model) { _model->setTag(_tag); _model->setClickable(isClickable()); _ids.push_back(_model->getID()); if (!_environmentMap.empty()) { Common::UString environmentMap = _environmentMap; if (environmentMap.equalsIgnoreCase("default")) environmentMap = _area ? _area->getEnvironmentMap() : ""; _model->setEnvironmentMap(environmentMap); } } }