Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Thunder.qbs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ Project {
"worldeditor/worldeditor.qbs",
"builder/builder.qbs",
"build/install.qbs",
"build/qbsinstall.qbs",
"tests/tests.qbs"
]
}
Expand Down
77 changes: 0 additions & 77 deletions build/qbsinstall.qbs

This file was deleted.

39 changes: 24 additions & 15 deletions modules/editor/grapheditor/editor/graph/statenode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,41 @@
#include <recttransform.h>
#include <layout.h>

void StateNode::updateName() {
if(m_nodeWidget) {
NodeWidget *nodeWidget = static_cast<NodeWidget *>(m_nodeWidget);
nodeWidget->updateName();
}
}

Widget *StateNode::widget() {
if(m_nodeWidget == nullptr) {
Actor *nodeActor = Engine::composeActor<NodeWidget>(name());
if(nodeActor) {
NodeWidget *nodeWidget = nodeActor->getComponent<NodeWidget>();

RectTransform *rect = nodeWidget->rectTransform();
rect->setVerticalPolicy(RectTransform::Fixed);
rect->setHorizontalPolicy(RectTransform::Fixed);
if(nodeWidget) {
RectTransform *rect = nodeWidget->rectTransform();
rect->setVerticalPolicy(RectTransform::Fixed);
rect->setHorizontalPolicy(RectTransform::Fixed);

Frame *title = nodeWidget->title();
Vector4 corners(title->corners());
corners.z = corners.w = corners.x;
title->setCorners(corners);
Frame *title = nodeWidget->title();
Vector4 corners(title->corners());
corners.z = corners.w = corners.x;
title->setCorners(corners);

RectTransform *titleRect = title->rectTransform();
titleRect->setMargin(Vector4(5.0f));
titleRect->setAnchors(Vector2(0.0f), Vector2(1.0f));
RectTransform *titleRect = title->rectTransform();
titleRect->setMargin(Vector4(5.0f));
titleRect->setAnchors(Vector2(0.0f), Vector2(1.0f));

Layout *layout = rect->layout();
layout->invalidate();
layout->update();
Layout *layout = rect->layout();
layout->invalidate();
layout->update();

nodeWidget->setGraphNode(this);
nodeWidget->setGraphNode(this);

m_nodeWidget = nodeWidget;
m_nodeWidget = nodeWidget;
}
}
}

Expand Down
4 changes: 3 additions & 1 deletion modules/editor/grapheditor/editor/graph/statenode.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
class NODEGRAPH_EXPORT StateNode : public GraphNode {
A_OBJECT(StateNode, GraphNode, Graph)

private:
protected:
void updateName();

Widget *widget() override;

};
Expand Down
54 changes: 26 additions & 28 deletions modules/editor/motiontools/converter/animationcontrollergraph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,44 +222,42 @@ Variant AnimationControllerGraph::data() const {
}
machine.push_back(variables);
// Pack transitions
TString entry;
VariantList transitions;
for(auto it : m_links) {
StateLink *link = dynamic_cast<StateLink *>(it);
if(link) {
VariantList transition;
transition.push_back(link->sender->name());
transition.push_back(link->receiver->name());
transition.push_back(link->duration());

Variant condition(link->property(gCondition));
if(condition.isValid()) {
VariantList conditions;
for(auto &it : condition.toList()) {
VariantMap map(it.toMap());

VariantList data;
data.push_back(map[gName]);
data.push_back(map[gType]);
data.push_back(map[gValue]);
conditions.push_back(data);
}
if(!conditions.empty()) {
transition.push_back(conditions);
if(link->sender != m_entryState) {
VariantList transition;
transition.push_back(link->sender->name());
transition.push_back(link->receiver->name());
transition.push_back(link->property(gDuration).toFloat());

Variant condition(link->property(gCondition));
if(condition.isValid()) {
VariantList conditions;
for(auto &it : condition.toList()) {
VariantMap map(it.toMap());

VariantList data;
data.push_back(map[gName]);
data.push_back(map[gType]);
data.push_back(map[gValue]);
conditions.push_back(data);
}
if(!conditions.empty()) {
transition.push_back(conditions);
}
}
}

transitions.push_back(transition);
transitions.push_back(transition);
} else {
entry = it->receiver->name();
}
}
}
machine.push_back(transitions);
// Set initial state
TString entry;
for(const auto it : m_links) {
if(it->sender == m_entryState) {
entry = it->receiver->name();
break;
}
}
machine.push_back(entry);

result[gMachine] = machine;
Expand Down
8 changes: 7 additions & 1 deletion modules/editor/motiontools/converter/basestate.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class BaseState : public StateNode {
A_OBJECT(BaseState, StateNode, Motion)

A_PROPERTIES(
A_PROPERTY(TString, Name, BaseState::name, BaseState::setName),
A_PROPERTY(TString, Name, BaseState::name, BaseState::setBaseName),
A_PROPERTYEX(AnimationClip *, Clip, BaseState::clip, BaseState::setClip, "editor=Asset"),
A_PROPERTY(bool, Loop, BaseState::loop, BaseState::setLoop)
)
Expand All @@ -33,6 +33,12 @@ class BaseState : public StateNode {
m_loop = loop;
}

void setBaseName(const TString &name) {
setName(name);

updateName();
}

protected:
Vector2 defaultSize() const override {
return Vector2(170.0f, 40.0f);
Expand Down
28 changes: 12 additions & 16 deletions modules/editor/motiontools/converter/statelink.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,12 @@ namespace {
class StateLink : public GraphLink {
A_OBJECT(StateLink, GraphLink, Graph)

A_PROPERTIES(
A_PROPERTY(float, duration, StateLink::duration, StateLink::setDuration)
)

public:
float duration() const {
return m_duration;
}

void setDuration(float duration) {
m_duration = duration;
}

private:
void toXml(pugi::xml_node &element) override {
element.append_attribute(gDuration) = m_duration;
Variant duration = property(gDuration);
if(duration.isValid()) {
element.append_attribute(gDuration) = duration.toFloat();
}

AnimationControllerGraph *graph = static_cast<AnimationControllerGraph *>(sender->graph());
if(graph) {
Expand All @@ -56,7 +46,10 @@ class StateLink : public GraphLink {
}

void fromXml(const pugi::xml_node &element) override {
m_duration = element.attribute(gDuration).as_float();
pugi::xml_attribute duration = element.attribute(gDuration);
if(duration) {
m_duration = duration.as_float();
}

VariantList conditions;

Expand Down Expand Up @@ -85,14 +78,17 @@ class StateLink : public GraphLink {
sub = sub.next_sibling();
}

setProperty(gCondition, conditions);
if(!conditions.empty()) {
setProperty(gCondition, conditions);
}
}

void setEndpoints(GraphNode *sender, NodePort *oport, GraphNode *receiver, NodePort *iport) override {
GraphLink::setEndpoints(sender, oport, receiver, iport);

EntryState *entry = dynamic_cast<EntryState *>(sender);
if(entry == nullptr) {
setProperty(gDuration, 0.0f);
setProperty(gCondition, VariantList());
setDynamicPropertyInfo(gCondition, "editor=Condition");
}
Expand Down
Loading
Loading