void Creature::load(const Aurora::GFFStruct &instance, const Aurora::GFFStruct *blueprint) { assert(!_loaded); // General properties if (blueprint) loadProperties(*blueprint); // Blueprint loadProperties(instance); // Instance // Appearance if (_appearance == Aurora::kFieldIDInvalid) throw Common::Exception("Creature without an appearance"); loadAppearance(); // Position setPosition(instance.getDouble("XPosition"), instance.getDouble("YPosition"), instance.getDouble("ZPosition")); // Orientation float bearingX = instance.getDouble("XOrientation"); float bearingY = instance.getDouble("YOrientation"); float o[3]; Common::vector2orientation(bearingX, bearingY, o[0], o[1], o[2]); setOrientation(o[0], o[1], o[2]); _loaded = true; }
void Waypoint::load(const Aurora::GFFStruct &instance, const Aurora::GFFStruct *blueprint) { // General properties if (blueprint) loadProperties(*blueprint); // Blueprint loadProperties(instance); // Instance // Position setPosition(instance.getDouble("XPosition"), instance.getDouble("YPosition"), instance.getDouble("ZPosition")); // Orientation float bearingX = instance.getDouble("XOrientation"); float bearingY = instance.getDouble("YOrientation"); float o[3]; Common::vector2orientation(bearingX, bearingY, o[0], o[1], o[2]); setOrientation(o[0], o[1], o[2]); }
void Situated::load(const Aurora::GFFStruct &instance, const Aurora::GFFStruct *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) throw Common::Exception("Situated object without an appearance"); loadAppearance(); loadSounds(); // Position setPosition(instance.getDouble("X"), instance.getDouble("Y"), instance.getDouble("Z")); // Orientation float bearing = instance.getDouble("Bearing"); setOrientation(0.0, Common::rad2deg(bearing), 0.0); }
void KotORWidget::load(const Aurora::GFFStruct &gff) { gff.getVector("COLOR", _r, _g, _b); _a = gff.getDouble("ALPHA", 1.0); Extend extend = createExtend(gff); _width = extend.w; _height = extend.h; Widget::setPosition(extend.x, extend.y, 0.0); Border border = createBorder(gff); _quad = new Graphics::Aurora::GUIQuad(border.fill, 0.0, 0.0, extend.w, extend.h); _quad->setPosition(extend.x, extend.y, 0.0); _quad->setTag(getTag()); _quad->setClickable(true); if (border.fill.empty()) _quad->setColor(0.0, 0.0, 0.0, 0.0); Text text = createText(gff); if (!text.text.empty() && !text.font.empty()) { _text = new Graphics::Aurora::HighlightableText(FontMan.get(text.font), text.text, text.r, text.g, text.b, 1.0); const float hspan = extend.w - _text->getWidth(); const float vspan = extend.h - _text->getHeight(); const float x = extend.x + text.halign * hspan; const float y = extend.y + text.valign * vspan; _text->setPosition(x, y, -1.0); _text->setTag(getTag()); _text->setClickable(true); } }
void Situated::load(const Aurora::GFFStruct &instance, const Aurora::GFFStruct *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) throw Common::Exception("Situated object without an appearance"); loadAppearance(); loadSounds(); // Position float posX = instance.getDouble("X"); float posY = instance.getDouble("Y"); float posZ = instance.getDouble("Z"); if (instance.hasField("Position")) { const Aurora::GFFStruct &pos = instance.getStruct("Position"); posX = pos.getDouble("x"); posY = pos.getDouble("y"); posZ = pos.getDouble("z"); } setPosition(posX, posY, posZ); // Orientation float bearing = instance.getDouble("Bearing"); float rotX = 0.0; float rotY = Common::rad2deg(bearing); float rotZ = 0.0; if (instance.hasField("Orientation")) { const Aurora::GFFStruct &o = instance.getStruct("Orientation"); float oX = o.getDouble("x"); float oY = o.getDouble("y"); float oZ = o.getDouble("z"); float oW = o.getDouble("w"); // Convert quaternions to roll/pitch/yaw rotY = 180.0f - Common::rad2deg(atan2(2 * (oX*oY + oZ*oW), 1 - 2 * (oY*oY + oZ*oZ))); rotX = 180.0f - Common::rad2deg(asin(2 * (oX*oZ - oW*oY))); rotZ = Common::rad2deg(atan2(2 * (oX*oW + oY*oZ), 1 - 2 * (oZ*oZ + oW*oW))); } setOrientation(rotX, rotY, rotZ); }