Skip to content

Commit e9acef5

Browse files
committed
Merge remote-tracking branch 'origin/0.9.2'
2 parents e89ca2c + d49b6f3 commit e9acef5

File tree

347 files changed

+10911
-3333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

347 files changed

+10911
-3333
lines changed

.idea/runConfigurations/Editor.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build-native.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<project name="jME SpaceShift Editor" default="do-deploy" basedir="build"
33
xmlns:fx="javafx:com.sun.javafx.tools.ant">
44

5-
<property name="editor.version" value="0.9.1.2" />
5+
<property name="editor.version" value="0.9.2" />
66

77
<target name="init-fx-tasks">
88
<path id="fxant">
@@ -245,6 +245,7 @@
245245
<fx:jvmarg value="-XX:+UseTLAB"/>
246246
<fx:jvmarg value="-Dprism.lcdtext=false"/>
247247
<fx:jvmarg value="-Dprism.text=t2k"/>
248+
<fx:jvmarg value="-Djavafx.animation.fullspeed=true"/>
248249
<!--<fx:jvmarg value="-agentlib:jdwp=transport=dt_socket,server=n,address=192.168.94.210:6005,suspend=y"/>-->
249250
</fx:platform>
250251

jme3-spaceshift-extension/jme3-spaceshift-extension.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<exclude-output />
55
<content url="file://$MODULE_DIR$">
66
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
7+
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
78
</content>
89
<orderEntry type="inheritedJdk" />
910
<orderEntry type="sourceFolder" forTests="false" />

jme3-spaceshift-extension/src/com/ss/extension/loader/SceneLoader.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.ss.extension.loader;
22

33
import com.jme3.app.Application;
4+
import com.jme3.app.state.AppStateManager;
45
import com.jme3.asset.AssetInfo;
56
import com.jme3.asset.AssetManager;
67
import com.jme3.export.InputCapsule;
@@ -11,6 +12,7 @@
1112
import org.jetbrains.annotations.NotNull;
1213

1314
import java.io.IOException;
15+
import java.util.Objects;
1416

1517
/**
1618
* The implementation of jME Importer to load scenes.
@@ -33,6 +35,17 @@ public static void install(@NotNull final Application application) {
3335
final AssetManager assetManager = application.getAssetManager();
3436
assetManager.unregisterLoader(BinaryImporter.class);
3537
assetManager.registerLoader(SceneLoader.class, "j3o", "j3f", "j3s");
38+
SceneLoader.application = application;
39+
}
40+
41+
@NotNull
42+
public static AssetManager tryToGetAssetManager() {
43+
return Objects.requireNonNull(application).getAssetManager();
44+
}
45+
46+
@NotNull
47+
public static AppStateManager tryToGetStateManager() {
48+
return Objects.requireNonNull(application).getStateManager();
3649
}
3750

3851
@NotNull
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ss.extension.scene.app.state.property;
1+
package com.ss.extension.property;
22

33
import org.jetbrains.annotations.NotNull;
44
import org.jetbrains.annotations.Nullable;
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ss.extension.scene.app.state.property;
1+
package com.ss.extension.property;
22

33
/**
44
* The enum with list editable property types.
@@ -12,7 +12,11 @@ public enum EditablePropertyType {
1212
VECTOR_2F,
1313
VECTOR_3F,
1414
QUATERNION,
15-
COLOR,;
15+
COLOR,
16+
ENUM,
17+
STRING,
18+
DIRECTION_LIGHT_FROM_SCENE,
19+
POINT_LIGHT_FROM_SCENE;
1620

1721
private static final EditablePropertyType[] TYPES = values();
1822

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ss.extension.scene.app.state.property;
1+
package com.ss.extension.property;
22

33
import org.jetbrains.annotations.NotNull;
44
import org.jetbrains.annotations.Nullable;

jme3-spaceshift-extension/src/com/ss/extension/scene/SceneLayer.java

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
import com.jme3.export.JmeImporter;
66
import com.jme3.export.OutputCapsule;
77
import com.jme3.scene.Node;
8-
import com.jme3.util.clone.Cloner;
8+
import com.jme3.scene.Spatial;
99

1010
import org.jetbrains.annotations.NotNull;
1111
import org.jetbrains.annotations.Nullable;
1212

1313
import java.io.IOException;
14-
import java.util.Objects;
1514

1615
/**
1716
* The implementation of a scene layer.
@@ -20,11 +19,30 @@
2019
*/
2120
public class SceneLayer extends Node {
2221

22+
public static final String KEY = SceneLayer.class.getName();
23+
24+
public static final SceneLayer NO_LAYER = new SceneLayer();
25+
2326
/**
24-
* The parent scene node.
27+
* Get a layer of a spatial.
28+
*
29+
* @param spatial the spatial.
30+
* @return the layer or null.
2531
*/
2632
@Nullable
27-
private SceneNode sceneNode;
33+
public static SceneLayer getLayer(@NotNull final Spatial spatial) {
34+
return spatial.getUserData(KEY);
35+
}
36+
37+
/**
38+
* Set a layer to a spatial.
39+
*
40+
* @param layer the layer.
41+
* @param spatial the spatial.
42+
*/
43+
public static void setLayer(@Nullable final SceneLayer layer, @NotNull final Spatial spatial) {
44+
spatial.setUserData(KEY, layer == NO_LAYER ? null : layer);
45+
}
2846

2947
/**
3048
* The flag that layer is builtin.
@@ -73,27 +91,11 @@ public boolean isShowed() {
7391
return showed;
7492
}
7593

76-
/**
77-
* @param sceneNode The parent scene node.
78-
*/
79-
public void setSceneNode(@Nullable final SceneNode sceneNode) {
80-
this.sceneNode = sceneNode;
81-
}
82-
83-
/**
84-
* @return the parent scene node.
85-
*/
86-
@NotNull
87-
public SceneNode getSceneNode() {
88-
return Objects.requireNonNull(sceneNode);
89-
}
90-
9194
/**
9295
* Hide this layer.
9396
*/
9497
public void hide() {
9598
if (!isShowed()) return;
96-
removeFromParent();
9799
setShowed(false);
98100
}
99101

@@ -102,7 +104,6 @@ public void hide() {
102104
*/
103105
public void show() {
104106
if (isShowed()) return;
105-
getSceneNode().attachChild(this);
106107
setShowed(true);
107108
}
108109

@@ -123,11 +124,4 @@ public void read(@NotNull final JmeImporter importer) throws IOException {
123124
setShowed(capsule.readBoolean("showed", false));
124125
setBuiltIn(capsule.readBoolean("builtIn", false));
125126
}
126-
127-
@Override
128-
public void cloneFields(@NotNull final Cloner cloner, @NotNull final Object original) {
129-
super.cloneFields(cloner, original);
130-
131-
sceneNode = cloner.clone(sceneNode);
132-
}
133127
}

jme3-spaceshift-extension/src/com/ss/extension/scene/SceneNode.java

Lines changed: 57 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.jme3.scene.Node;
99
import com.jme3.util.clone.Cloner;
1010
import com.ss.extension.scene.app.state.SceneAppState;
11+
import com.ss.extension.scene.filter.SceneFilter;
1112

1213
import org.jetbrains.annotations.NotNull;
1314

@@ -25,6 +26,7 @@ public class SceneNode extends Node {
2526

2627
public static final SceneLayer[] EMPTY_LAYERS = new SceneLayer[0];
2728
public static final SceneAppState[] EMPTY_STATES = new SceneAppState[0];
29+
public static final SceneFilter<?>[] EMPTY_FILTERS = new SceneFilter[0];
2830

2931
/**
3032
* The scene layers.
@@ -38,10 +40,17 @@ public class SceneNode extends Node {
3840
@NotNull
3941
private Array<SceneAppState> appStates;
4042

43+
/**
44+
* The scene filters.
45+
*/
46+
@NotNull
47+
private Array<SceneFilter<?>> filters;
48+
4149
public SceneNode() {
4250
super("Empty scene");
4351
this.layers = ArrayFactory.newArray(SceneLayer.class);
4452
this.appStates = ArrayFactory.newArray(SceneAppState.class);
53+
this.filters = ArrayFactory.newArray(SceneFilter.class);
4554
}
4655

4756
/**
@@ -50,7 +59,6 @@ public SceneNode() {
5059
* @param layer the layer.
5160
*/
5261
public void addLayer(@NotNull final SceneLayer layer) {
53-
layer.setSceneNode(this);
5462
layers.add(layer);
5563
}
5664

@@ -60,9 +68,6 @@ public void addLayer(@NotNull final SceneLayer layer) {
6068
* @param layer the layer.
6169
*/
6270
public void removeLayer(@NotNull final SceneLayer layer) {
63-
if (layer.getSceneNode() == this) {
64-
layer.setSceneNode(null);
65-
}
6671
layers.slowRemove(layer);
6772
}
6873

@@ -81,6 +86,7 @@ public Array<SceneLayer> getLayers() {
8186
*/
8287
public void addAppState(@NotNull final SceneAppState appState) {
8388
appStates.add(appState);
89+
appState.setSceneNode(this);
8490
}
8591

8692
/**
@@ -90,6 +96,7 @@ public void addAppState(@NotNull final SceneAppState appState) {
9096
*/
9197
public void removeAppState(@NotNull final SceneAppState appState) {
9298
appStates.slowRemove(appState);
99+
appState.setSceneNode(null);
93100
}
94101

95102
/**
@@ -100,50 +107,74 @@ public Array<SceneAppState> getAppStates() {
100107
return appStates;
101108
}
102109

110+
/**
111+
* Add a new filter.
112+
*
113+
* @param filter the scene filter.
114+
*/
115+
public void addFilter(@NotNull final SceneFilter filter) {
116+
filters.add(filter);
117+
}
118+
119+
/**
120+
* Remove an old filter.
121+
*
122+
* @param filter the scene filter.
123+
*/
124+
public void removeFilter(@NotNull final SceneFilter filter) {
125+
filters.slowRemove(filter);
126+
}
127+
128+
/**
129+
* Get a list of filters.
130+
*
131+
* @return the list of filters.
132+
*/
133+
@NotNull
134+
public Array<SceneFilter<?>> getFilters() {
135+
return filters;
136+
}
137+
103138
@Override
104139
public void write(@NotNull final JmeExporter exporter) throws IOException {
105140

106141
final OutputCapsule capsule = exporter.getCapsule(this);
107142
final SceneLayer[] layers = getLayers().toArray(SceneLayer.class);
108143
final SceneAppState[] appStates = getAppStates().toArray(SceneAppState.class);
144+
final SceneFilter<?>[] filters = getFilters().toArray(SceneFilter.class);
109145

110-
for (final SceneLayer layer : layers) {
111-
if (!layer.isShowed()) continue;
112-
detachChild(layer);
113-
}
146+
capsule.write(layers, "layers", EMPTY_LAYERS);
114147

115148
super.write(exporter);
116149

117-
for (final SceneLayer layer : layers) {
118-
if (!layer.isShowed()) continue;
119-
attachChild(layer);
120-
}
121-
122-
capsule.write(layers, "layers", EMPTY_LAYERS);
123150
capsule.write(appStates, "appStates", EMPTY_STATES);
151+
capsule.write(filters, "filters", EMPTY_FILTERS);
124152
}
125153

126154
@Override
127155
public void read(@NotNull final JmeImporter importer) throws IOException {
128156

129157
final InputCapsule capsule = importer.getCapsule(this);
130158

131-
super.read(importer);
132-
133159
final Savable[] importedLayers = capsule.readSavableArray("layers", EMPTY_LAYERS);
134160

135161
for (final Savable savable : importedLayers) {
136-
final SceneLayer layer = (SceneLayer) savable;
137-
layer.setSceneNode(this);
138-
layers.add(layer);
139-
if (layer.isShowed()) attachChild(layer);
162+
layers.add((SceneLayer) savable);
140163
}
141164

165+
super.read(importer);
166+
142167
final Savable[] importedAppStates = capsule.readSavableArray("appStates", EMPTY_STATES);
143168

144169
for (final Savable savable : importedAppStates) {
145170
appStates.add((SceneAppState) savable);
146171
}
172+
173+
final Savable[] importedFilters = capsule.readSavableArray("filters", EMPTY_FILTERS);
174+
175+
for (final Savable savable : importedFilters) {
176+
filters.add((SceneFilter) savable);
177+
}
147178
}
148179

149180
@Override
@@ -161,5 +192,11 @@ public void cloneFields(final Cloner cloner, final Object original) {
161192
for (int i = 0; i < appStates.size(); i++) {
162193
appStates.set(i, cloner.clone(appStates.get(i)));
163194
}
195+
196+
filters = cloner.clone(filters);
197+
198+
for (int i = 0; i < filters.size(); i++) {
199+
filters.set(i, cloner.clone(filters.get(i)));
200+
}
164201
}
165202
}

jme3-spaceshift-extension/src/com/ss/extension/scene/app/state/EditableSceneAppState.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.ss.extension.scene.app.state;
22

3-
import com.ss.extension.scene.app.state.property.EditableProperty;
3+
import com.ss.extension.property.EditableProperty;
4+
import com.ss.extension.scene.filter.SceneFilter;
45

56
import org.jetbrains.annotations.NotNull;
67
import org.jetbrains.annotations.Nullable;
@@ -34,7 +35,18 @@ public interface EditableSceneAppState extends SceneAppState {
3435
* @return null of can create or message with description.
3536
*/
3637
@Nullable
37-
default String canCreate(@NotNull final Array<SceneAppState> exists) {
38+
default String checkStates(@NotNull final Array<SceneAppState> exists) {
39+
return null;
40+
}
41+
42+
/**
43+
* Check filter dependencies.
44+
*
45+
* @param exists the current exists filters.
46+
* @return null of can create or message with description.
47+
*/
48+
@Nullable
49+
default String checkFilters(@NotNull final Array<SceneFilter<?>> exists) {
3850
return null;
3951
}
4052
}

0 commit comments

Comments
 (0)