Skip to content

Commit 574340c

Browse files
(v2) Scene editor: change texture of sprite.
1 parent 1a00b5b commit 574340c

File tree

2 files changed

+61
-5
lines changed

2 files changed

+61
-5
lines changed

source/v2/phasereditor/phasereditor.scene.ui/src/phasereditor/scene/ui/editor/properties/AnimationsSection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Control createContent(Composite parent) {
7373
_browseBtn = new Button(comp, 0);
7474
_browseBtn.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
7575
_browseBtn.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> {
76-
this.browseAnimation();
76+
this.selectAnimation();
7777
}));
7878

7979
_clearBtn = new Button(comp, 0);
@@ -104,7 +104,7 @@ private void clearAnimation() {
104104
update_UI_from_Model();
105105
}
106106

107-
private void browseAnimation() {
107+
private void selectAnimation() {
108108
var dlg = new QuickSelectAssetDialog(getEditor().getEditorSite().getShell());
109109
dlg.setTitle("Select Animation");
110110

source/v2/phasereditor/phasereditor.scene.ui/src/phasereditor/scene/ui/editor/properties/TextureSection.java

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,24 @@
2121
// USE OR OTHER DEALINGS IN THE SOFTWARE.
2222
package phasereditor.scene.ui.editor.properties;
2323

24+
import java.util.ArrayList;
25+
2426
import org.eclipse.core.resources.IFile;
27+
import org.eclipse.jface.window.Window;
2528
import org.eclipse.swt.SWT;
29+
import org.eclipse.swt.events.SelectionListener;
2630
import org.eclipse.swt.layout.GridData;
2731
import org.eclipse.swt.layout.GridLayout;
32+
import org.eclipse.swt.widgets.Button;
2833
import org.eclipse.swt.widgets.Composite;
2934
import org.eclipse.swt.widgets.Control;
3035
import org.eclipse.swt.widgets.Label;
3136

37+
import phasereditor.assetpack.core.AssetPackCore;
38+
import phasereditor.assetpack.core.AtlasAssetModel;
3239
import phasereditor.assetpack.core.IAssetFrameModel;
3340
import phasereditor.assetpack.core.ImageAssetModel;
41+
import phasereditor.assetpack.core.MultiAtlasAssetModel;
3442
import phasereditor.assetpack.ui.preview.SingleFrameCanvas;
3543
import phasereditor.scene.core.TextureComponent;
3644

@@ -42,6 +50,7 @@ public class TextureSection extends ScenePropertySection {
4250

4351
private SingleFrameCanvas _frameCanvas;
4452
private Label _frameLabel;
53+
private Button _frameBtn;
4554

4655
public TextureSection(ScenePropertyPage page) {
4756
super("Texture", page);
@@ -66,6 +75,12 @@ public Control createContent(Composite parent) {
6675
_frameCanvas.setLayoutData(gd);
6776
}
6877

78+
{
79+
_frameBtn = new Button(comp, 0);
80+
_frameBtn.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> selectFrame()));
81+
_frameBtn.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
82+
}
83+
6984
{
7085
_frameLabel = new Label(comp, SWT.WRAP);
7186
_frameLabel.setText("Frame");
@@ -76,6 +91,39 @@ public Control createContent(Composite parent) {
7691
return comp;
7792
}
7893

94+
private void selectFrame() {
95+
96+
var list = new ArrayList<>();
97+
98+
for (var pack : AssetPackCore.getAssetPackModels(getEditor().getProject())) {
99+
for (var asset : pack.getAssets()) {
100+
if (asset instanceof ImageAssetModel || asset instanceof AtlasAssetModel
101+
|| asset instanceof MultiAtlasAssetModel) {
102+
list.addAll(asset.getAllFrames());
103+
}
104+
}
105+
}
106+
107+
var dlg = new QuickSelectAssetDialog(getEditor().getEditorSite().getShell());
108+
dlg.setTitle("Select Texture");
109+
110+
dlg.setInput(list);
111+
112+
if (dlg.open() == Window.OK) {
113+
var frame = (IAssetFrameModel) dlg.getResult();
114+
115+
wrapOperation(() -> {
116+
getModels().forEach(model -> {
117+
TextureComponent.set_frame(model, frame);
118+
});
119+
}, getModels(), true);
120+
121+
getEditor().setDirty(true);
122+
123+
update_UI_from_Model();
124+
}
125+
}
126+
79127
@Override
80128
public void update_UI_from_Model() {
81129
var models = getModels();
@@ -85,17 +133,23 @@ public void update_UI_from_Model() {
85133

86134
if (frame == null) {
87135
_frameLabel.setText("Frame");
136+
_frameBtn.setText("Select Texture");
88137
} else {
89138
var sb = new StringBuilder();
139+
90140
if (frame instanceof ImageAssetModel.Frame) {
91-
sb.append("key: " + frame.getKey());
141+
sb.append(frame.getKey());
92142
} else {
93-
sb.append("key: " + frame.getAsset().getKey() + " / frame: " + frame.getKey());
143+
sb.append(frame.getKey() + " @ " + frame.getAsset().getKey());
94144
}
95145

146+
_frameBtn.setText(sb.toString());
147+
96148
var fd = frame.getFrameData();
97149

98-
sb.append("\nsize: " + fd.srcSize.x + "x" + fd.srcSize.y);
150+
sb.setLength(0);
151+
152+
sb.append("size: " + fd.srcSize.x + "x" + fd.srcSize.y);
99153

100154
IFile file = frame.getImageFile();
101155

@@ -104,6 +158,8 @@ public void update_UI_from_Model() {
104158
}
105159

106160
_frameLabel.setText(sb.toString());
161+
162+
107163
}
108164

109165
_frameCanvas.setModel(frame);

0 commit comments

Comments
 (0)