Editor Plugins: Component-Properties überschreiben

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Dienste bereitzustellen und die Zugriffe auf unsere Website zu analysieren. Außerdem werden durch unsere Partner Informationen zu Ihrer Nutzung für soziale Medien, Werbung und Analysen erfasst. Weitere Informationen

  • Editor Plugins: Component-Properties überschreiben

    Heyo,

    Ich hab mal ein bissl mit den Editor Plugins gebastelt. Nun ist mein Problem, dass z.B. die Rotation nicht gespeichert bleibt (sobald die Karte im WB erneut geladen wird, ist die Rotation resetted) ... (hier mal ein kleiner Ausschnitt)

    C-Quellcode

    1. float RotX = qsf::Random::getRandomFloat(0.f, 4 * glm::pi<float>());
    2. entity->getOrCreateComponent<qsf::TransformComponent>()->setRotation(entity->getOrCreateComponent<qsf::TransformComponent>()->getRotation()*qsf::EulerAngles::eulerToQuaternion(glm::vec3(RotX, 0, 0)));
    außerdem gibt es ja die verschiedenen "Operationen" (bewirken, dass man Undo und Redo im Editor verwenden kann). Hat jemand ne Idee wie ich diese korrekt nutze?


    Have a nice Day :thumbup:
  • Kein Thema ;)
    Es werden dafür auf jeden Fall die Operations

    benötigt. Über Operations erzeugt man im Grunde einen Ablaufplan, den
    der Editor dann durchführt - das ist vor allem für Undo/Redo wichtig,
    aber auch damit die Entity-Daten wirklich sauber gespeichert werden.
    Abschauen kannst du dir die Verwendung im EntityOperationHelper (im Anhang!). Der ist leider recht füllig, aber wirklich interessant wären da eh nur ein paar eher überschaubare Methoden:
    - buildCreateEntityOperation
    - und das darin aufgerufene buildCreateEntityOperationInternal
    Die buildCreateEntityOperation-Methode erzeugt eine Operation, die eine Vorlage für ein neues Entity (und ggf. Child-Entities) enthält. Die wird kopiert aus wahlweise einem Entity in der Map oder einem Prefab.
    Den Code kannst du dir gerne kopieren und an deine eigenen Anforderungen anpassen, also z.B. auch die Rotation und Skalierung setzen.
    Eine gute Stelle dafür wäre nach dem Aufruf "usedPrefabContent->processForEntityInstancing" (in Zeile 2057). Über "usedPrefabContent->GetMainPrototype()" kommst du an den Prototype und kannst den an der Stelle noch manipulieren.
    Um die fertige Operation dann an den Editor zu übergeben:
    QSF_EDITOR_OPERATION.push(EntityOperationHelper::buildCreateEntityOperation(...));

    Vlt hilfts ja mal irgendjamend der sich auch damit beschäftigt xD
    Dateien