Skip to content

Commit fd0a553

Browse files
committed
ProjectPlayer: Add a Repeater for clones
1 parent 0c2560a commit fd0a553

File tree

1 file changed

+30
-3
lines changed

1 file changed

+30
-3
lines changed

src/ProjectPlayer.qml

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ ProjectScene {
3636
fileName: root.fileName
3737
stageWidth: root.stageWidth
3838
stageHeight: root.stageHeight
39+
3940
onLoadingFinished: {
4041
priv.loading = false;
4142

@@ -44,7 +45,25 @@ ProjectScene {
4445
else
4546
failedToLoad();
4647
}
48+
4749
onStageChanged: stage.loadCostume();
50+
51+
onCloneCreated: (cloneModel)=> clones.model.append({"spriteModel": cloneModel})
52+
53+
onCloneDeleted: (cloneModel)=> {
54+
// TODO: Removing the clone from C++ would probably be faster
55+
let i;
56+
57+
for(i = 0; i < clones.model.count; i++) {
58+
if(clones.model.get(i).spriteModel === cloneModel)
59+
break;
60+
}
61+
62+
if(i === clones.model.count)
63+
console.error("error: deleted clone doesn't exist");
64+
else
65+
clones.model.remove(i);
66+
}
4867
}
4968

5069
function start() {
@@ -78,12 +97,14 @@ ProjectScene {
7897

7998
RenderedTarget {
8099
id: target
81-
engine: loader.engine
82-
spriteModel: modelData
83100
mouseArea: sceneMouseArea
84101
stageScale: root.stageScale
85102
transform: Scale { xScale: mirrorHorizontally ? -1 : 1 }
86-
Component.onCompleted: modelData.renderedTarget = this
103+
Component.onCompleted: {
104+
engine = loader.engine;
105+
spriteModel = modelData;
106+
spriteModel.renderedTarget = this;
107+
}
87108
}
88109
}
89110

@@ -93,6 +114,12 @@ ProjectScene {
93114
delegate: renderedSprite
94115
}
95116

117+
Repeater {
118+
id: clones
119+
model: ListModel {}
120+
delegate: renderedSprite
121+
}
122+
96123
Loader {
97124
anchors.fill: parent
98125
active: showLoadingProgress && loading

0 commit comments

Comments
 (0)