Skip to content

Commit f86f3cb

Browse files
committed
Merge remote-tracking branch 'bitbucket/develop' into develop
2 parents 006311d + aef9a09 commit f86f3cb

19 files changed

+129
-198
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ ext.applicationMainClass = "com.ss.editor.JfxApplication"
2828
ext.applicationVendor = "[email protected]"
2929
ext.applicationTitle = "jMonkeyBuilder"
3030
ext.jmeVersion = "v3.3.dev-SNAPSHOT"
31-
ext.jmbExtVersion = "2.0.2"
31+
ext.jmbExtVersion = "2.1.0"
3232
ext.jme3_xbuf_version = '0.9.1'
3333
ext.junitPlatformVersion = "1.0.0"
3434
ext.junitJupiterVersion = "5.0.0"

src/main/java/com/ss/editor/JfxApplication.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import static com.ss.editor.config.DefaultSettingsProvider.Defaults.PREF_DEFAULT_STOP_RENDER_ON_LOST_FOCUS;
77
import static com.ss.editor.config.DefaultSettingsProvider.Preferences.*;
88
import static com.ss.rlib.util.ObjectUtils.notNull;
9+
import static com.ss.rlib.util.Utils.run;
10+
import static java.nio.file.Files.createDirectories;
911
import static java.nio.file.Files.newOutputStream;
1012
import com.jme3.renderer.Renderer;
1113
import com.jme3.system.JmeContext;
@@ -40,7 +42,9 @@
4042
import com.ss.editor.util.OpenGLVersion;
4143
import com.ss.editor.util.svg.SvgImageLoaderFactory;
4244
import com.ss.rlib.logging.Logger;
45+
import com.ss.rlib.logging.LoggerLevel;
4346
import com.ss.rlib.logging.LoggerManager;
47+
import com.ss.rlib.logging.impl.FolderFileListener;
4448
import com.ss.rlib.manager.InitializeManager;
4549
import com.ss.rlib.util.ArrayUtils;
4650
import com.ss.rlib.util.array.Array;
@@ -62,8 +66,11 @@
6266
import javax.imageio.ImageIO;
6367
import java.io.IOException;
6468
import java.io.PrintStream;
69+
import java.nio.file.Files;
70+
import java.nio.file.Path;
6571
import java.nio.file.Paths;
6672
import java.util.Collection;
73+
import java.util.logging.Level;
6774

6875
/**
6976
* The starter of the JavaFX application.
@@ -96,6 +103,7 @@ public class JfxApplication extends Application {
96103
* @throws IOException the io exception
97104
*/
98105
public static void main(final String[] args) {
106+
configureLogger();
99107

100108
// need to disable to work on macos
101109
Configuration.GLFW_CHECK_THREAD0.set(false);
@@ -155,6 +163,31 @@ public static void main(final String[] args) {
155163
() -> startJmeApplication(application), "LWJGL Render").start();
156164
}
157165

166+
@FxThread
167+
private static void configureLogger() {
168+
169+
// disable the standard logger
170+
if (!Config.DEV_DEBUG) {
171+
java.util.logging.Logger.getLogger("").setLevel(Level.WARNING);
172+
}
173+
174+
// configure our logger
175+
LoggerLevel.DEBUG.setEnabled(Config.DEV_DEBUG);
176+
LoggerLevel.INFO.setEnabled(true);
177+
LoggerLevel.ERROR.setEnabled(true);
178+
LoggerLevel.WARNING.setEnabled(true);
179+
180+
final Path logFolder = Config.getFolderForLog();
181+
182+
if (!Files.exists(logFolder)) {
183+
run(() -> createDirectories(logFolder));
184+
}
185+
186+
if (!LoggerLevel.DEBUG.isEnabled()) {
187+
LoggerManager.addListener(new FolderFileListener(logFolder));
188+
}
189+
}
190+
158191
/**
159192
* Start the new jME application.
160193
*

src/main/java/com/ss/editor/JmeApplication.java

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import static com.ss.editor.config.DefaultSettingsProvider.Defaults.*;
55
import static com.ss.editor.config.DefaultSettingsProvider.Preferences.*;
66
import static com.ss.rlib.util.ObjectUtils.notNull;
7-
import static com.ss.rlib.util.Utils.run;
8-
import static java.nio.file.Files.createDirectories;
97
import com.jme3.app.DebugKeysAppState;
108
import com.jme3.asset.AssetManager;
119
import com.jme3.asset.AssetNotFoundException;
@@ -50,18 +48,13 @@
5048
import com.ss.editor.ui.event.impl.WindowChangeFocusEvent;
5149
import com.ss.editor.util.EditorUtil;
5250
import com.ss.rlib.logging.Logger;
53-
import com.ss.rlib.logging.LoggerLevel;
5451
import com.ss.rlib.logging.LoggerManager;
55-
import com.ss.rlib.logging.impl.FolderFileListener;
5652
import com.ss.rlib.util.os.OperatingSystem;
5753
import jme3_ext_xbuf.XbufLoader;
5854
import org.jetbrains.annotations.NotNull;
5955
import org.jetbrains.annotations.Nullable;
6056

61-
import java.nio.file.Files;
62-
import java.nio.file.Path;
6357
import java.util.concurrent.locks.StampedLock;
64-
import java.util.logging.Level;
6558

6659
/**
6760
* The implementation of the {@link com.jme3.app.Application} of this Editor.
@@ -105,10 +98,9 @@ public void done(final LightProbe result) {
10598
static @NotNull JmeApplication prepareToStart() {
10699

107100
if (Config.DEV_DEBUG) {
108-
System.err.println("config is loaded.");
101+
System.err.println("config was loaded.");
109102
}
110103

111-
configureLogger();
112104
try {
113105

114106
final EditorConfig config = EditorConfig.getInstance();
@@ -127,31 +119,6 @@ public void done(final LightProbe result) {
127119
return JME_APPLICATION;
128120
}
129121

130-
@JmeThread
131-
private static void configureLogger() {
132-
133-
// disable the standard logger
134-
if (!Config.DEV_DEBUG) {
135-
java.util.logging.Logger.getLogger("").setLevel(Level.WARNING);
136-
}
137-
138-
// configure our logger
139-
LoggerLevel.DEBUG.setEnabled(Config.DEV_DEBUG);
140-
LoggerLevel.INFO.setEnabled(true);
141-
LoggerLevel.ERROR.setEnabled(true);
142-
LoggerLevel.WARNING.setEnabled(true);
143-
144-
final Path logFolder = Config.getFolderForLog();
145-
146-
if (!Files.exists(logFolder)) {
147-
run(() -> createDirectories(logFolder));
148-
}
149-
150-
if (!LoggerLevel.DEBUG.isEnabled()) {
151-
LoggerManager.addListener(new FolderFileListener(logFolder));
152-
}
153-
}
154-
155122
/**
156123
* The main synchronizer of this application.
157124
*/

src/main/java/com/ss/editor/Messages.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,8 @@ public class Messages {
353353
public static final String MODEL_PROPERTY_FALL_SPEED;
354354
public static final String MODEL_PROPERTY_GRAVITY;
355355
public static final String MODEL_PROPERTY_JUMP_SPEED;
356+
public static final String MODEL_PROPERTY_JUMP_FORCE;
357+
public static final String MODEL_PROPERTY_PHYSICS_DAMPING;
356358
public static final String MODEL_PROPERTY_MAX_SLOPE;
357359
public static final String MODEL_PROPERTY_IS_APPLY_PHYSICS_LOCAL;
358360
public static final String MODEL_PROPERTY_IS_USE_VIEW_DIRECTION;
@@ -1051,6 +1053,8 @@ public class Messages {
10511053
MODEL_PROPERTY_FALL_SPEED = bundle.getString("ModelPropertyFallSpeed");
10521054
MODEL_PROPERTY_GRAVITY = bundle.getString("ModelPropertyGravity");
10531055
MODEL_PROPERTY_JUMP_SPEED = bundle.getString("ModelPropertyJumpSpeed");
1056+
MODEL_PROPERTY_JUMP_FORCE = bundle.getString("ModelPropertyJumpForce");
1057+
MODEL_PROPERTY_PHYSICS_DAMPING = bundle.getString("ModelPropertyPhysicsDamping");
10541058
MODEL_PROPERTY_MAX_SLOPE = bundle.getString("ModelPropertyMaxSlope");
10551059
MODEL_PROPERTY_IS_APPLY_PHYSICS_LOCAL = bundle.getString("ModelPropertyIsApplyPhysicsLocal");
10561060
MODEL_PROPERTY_IS_USE_VIEW_DIRECTION = bundle.getString("ModelPropertyIsUseViewDirection");

src/main/java/com/ss/editor/ui/control/property/builder/impl/CollisionShapePropertyBuilder.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ public class CollisionShapePropertyBuilder extends AbstractPropertyBuilder<Model
2626
@NotNull
2727
private static final PropertyBuilder INSTANCE = new CollisionShapePropertyBuilder();
2828

29-
/**
30-
* Get the single instance.
31-
*
32-
* @return the single instance
33-
*/
3429
@FromAnyThread
3530
public static @NotNull PropertyBuilder getInstance() {
3631
return INSTANCE;
@@ -49,7 +44,9 @@ protected void buildForImpl(@NotNull final Object object, @Nullable final Object
4944
build((ChildCollisionShape) object, container, changeConsumer);
5045
}
5146

52-
if (!(object instanceof CollisionShape)) return;
47+
if (!(object instanceof CollisionShape)) {
48+
return;
49+
}
5350

5451
if (object instanceof BoxCollisionShape) {
5552
build((BoxCollisionShape) object, container, changeConsumer);

src/main/java/com/ss/editor/ui/control/property/builder/impl/DefaultControlPropertyBuilder.java

Lines changed: 28 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package com.ss.editor.ui.control.property.builder.impl;
22

3-
import static com.ss.editor.extension.property.EditablePropertyType.ENUM;
4-
import static com.ss.editor.extension.property.EditablePropertyType.LIGHT_FROM_SCENE;
3+
import static com.ss.editor.extension.property.EditablePropertyType.*;
54
import com.jme3.animation.Animation;
65
import com.jme3.animation.LoopMode;
76
import com.jme3.animation.SkeletonControl;
8-
import com.jme3.bullet.control.CharacterControl;
7+
import com.jme3.bullet.control.BetterCharacterControl;
98
import com.jme3.bullet.control.RigidBodyControl;
109
import com.jme3.bullet.control.VehicleControl;
1110
import com.jme3.bullet.objects.PhysicsRigidBody;
@@ -23,7 +22,6 @@
2322
import com.ss.editor.extension.property.EditableProperty;
2423
import com.ss.editor.extension.property.SimpleProperty;
2524
import com.ss.editor.model.undo.editor.ModelChangeConsumer;
26-
import com.ss.editor.ui.control.property.impl.WheelElementModelPropertyControl;
2725
import com.ss.editor.ui.control.property.builder.PropertyBuilder;
2826
import com.ss.editor.ui.control.property.impl.*;
2927
import com.ss.rlib.ui.util.FXUtils;
@@ -50,11 +48,6 @@ public class DefaultControlPropertyBuilder extends EditableModelObjectPropertyBu
5048
@NotNull
5149
private static final LoopMode[] LOOP_MODES = LoopMode.values();
5250

53-
/**
54-
* Get the single instance.
55-
*
56-
* @return the single instance
57-
*/
5851
@FxThread
5952
public static @NotNull PropertyBuilder getInstance() {
6053
return INSTANCE;
@@ -77,7 +70,9 @@ protected void buildForImpl(@NotNull final Object object, @Nullable final Object
7770
build((Animation) object, container, changeConsumer);
7871
}
7972

80-
if (!(object instanceof Control)) return;
73+
if (!(object instanceof Control)) {
74+
return;
75+
}
8176

8277
if (object instanceof AbstractControl) {
8378
build((AbstractControl) object, container, changeConsumer);
@@ -87,8 +82,6 @@ protected void buildForImpl(@NotNull final Object object, @Nullable final Object
8782

8883
if (object instanceof SkeletonControl) {
8984
build((SkeletonControl) object, container, changeConsumer);
90-
} else if (object instanceof CharacterControl) {
91-
build((CharacterControl) object, container, changeConsumer);
9285
} else if (object instanceof RigidBodyControl) {
9386
build((RigidBodyControl) object, container, changeConsumer);
9487
} else if (object instanceof VehicleControl) {
@@ -118,6 +111,29 @@ protected void buildForImpl(@NotNull final Object object, @Nullable final Object
118111
LightControl::getLight, LightControl::setLight));
119112

120113
return result;
114+
115+
} else if(object instanceof BetterCharacterControl) {
116+
117+
final BetterCharacterControl control = (BetterCharacterControl) object;
118+
119+
final List<EditableProperty<?, ?>> result = new ArrayList<>(2);
120+
result.add(new SimpleProperty<>(VECTOR_3F, Messages.MODEL_PROPERTY_GRAVITY, control,
121+
BetterCharacterControl::getGravity, BetterCharacterControl::setGravity));
122+
result.add(new SimpleProperty<>(VECTOR_3F, Messages.MODEL_PROPERTY_VELOCITY, control,
123+
BetterCharacterControl::getVelocity));
124+
result.add(new SimpleProperty<>(VECTOR_3F, Messages.MODEL_PROPERTY_GRAVITY, control,
125+
BetterCharacterControl::getViewDirection, BetterCharacterControl::setViewDirection));
126+
result.add(new SimpleProperty<>(VECTOR_3F, Messages.MODEL_PROPERTY_WALK_DIRECTION, control,
127+
BetterCharacterControl::getWalkDirection, BetterCharacterControl::setWalkDirection));
128+
result.add(new SimpleProperty<>(VECTOR_3F, Messages.MODEL_PROPERTY_JUMP_FORCE, control,
129+
BetterCharacterControl::getJumpForce, BetterCharacterControl::setJumpForce));
130+
result.add(new SimpleProperty<>(FLOAT, Messages.MODEL_PROPERTY_WALK_DIRECTION, control,
131+
BetterCharacterControl::getDuckedFactor, BetterCharacterControl::setDuckedFactor));
132+
result.add(new SimpleProperty<>(FLOAT, Messages.MODEL_PROPERTY_PHYSICS_DAMPING, control,
133+
BetterCharacterControl::getPhysicsDamping, BetterCharacterControl::setPhysicsDamping));
134+
135+
return result;
136+
121137
}
122138

123139
return super.getProperties(object);
@@ -221,99 +237,6 @@ private void build(@NotNull final MotionEvent control, @NotNull final VBox conta
221237
FXUtils.addToPane(rotationControl, container);
222238
}
223239

224-
@FxThread
225-
private void build(@NotNull final CharacterControl control, @NotNull final VBox container,
226-
@NotNull final ModelChangeConsumer changeConsumer) {
227-
228-
final Vector3f viewDirection = control.getViewDirection();
229-
final Vector3f walkDirection = control.getWalkDirection();
230-
231-
final float fallSpeed = control.getFallSpeed();
232-
final float gravity = control.getGravity();
233-
final float jumpSpeed = control.getJumpSpeed();
234-
final float maxSlope = control.getMaxSlope();
235-
236-
final boolean applyPhysicsLocal = control.isApplyPhysicsLocal();
237-
final boolean useViewDirection = control.isUseViewDirection();
238-
final boolean enabled = control.isEnabled();
239-
240-
final BooleanPropertyControl<ModelChangeConsumer, CharacterControl> enabledControl =
241-
new BooleanPropertyControl<>(enabled, Messages.MODEL_PROPERTY_IS_ENABLED, changeConsumer);
242-
243-
enabledControl.setApplyHandler(CharacterControl::setEnabled);
244-
enabledControl.setSyncHandler(CharacterControl::isEnabled);
245-
enabledControl.setEditObject(control);
246-
247-
final Vector3FPropertyControl<ModelChangeConsumer, CharacterControl> viewDirectionControl =
248-
new Vector3FPropertyControl<>(viewDirection, Messages.MODEL_PROPERTY_VIEW_DIRECTION, changeConsumer);
249-
250-
viewDirectionControl.setApplyHandler(CharacterControl::setViewDirection);
251-
viewDirectionControl.setSyncHandler(CharacterControl::getViewDirection);
252-
viewDirectionControl.setEditObject(control);
253-
254-
final Vector3FPropertyControl<ModelChangeConsumer, CharacterControl> walkDirectionControl =
255-
new Vector3FPropertyControl<>(walkDirection, Messages.MODEL_PROPERTY_WALK_DIRECTION, changeConsumer);
256-
257-
walkDirectionControl.setApplyHandler(CharacterControl::setWalkDirection);
258-
walkDirectionControl.setSyncHandler(CharacterControl::getWalkDirection);
259-
walkDirectionControl.setEditObject(control);
260-
261-
final FloatPropertyControl<ModelChangeConsumer, CharacterControl> fallSpeedControl =
262-
new FloatPropertyControl<>(fallSpeed, Messages.MODEL_PROPERTY_FALL_SPEED, changeConsumer);
263-
264-
fallSpeedControl.setApplyHandler(CharacterControl::setFallSpeed);
265-
fallSpeedControl.setSyncHandler(CharacterControl::getFallSpeed);
266-
fallSpeedControl.setEditObject(control);
267-
268-
final FloatPropertyControl<ModelChangeConsumer, CharacterControl> gravityControl =
269-
new FloatPropertyControl<>(gravity, Messages.MODEL_PROPERTY_GRAVITY, changeConsumer);
270-
271-
gravityControl.setApplyHandler(CharacterControl::setGravity);
272-
gravityControl.setSyncHandler(CharacterControl::getGravity);
273-
gravityControl.setEditObject(control);
274-
275-
final FloatPropertyControl<ModelChangeConsumer, CharacterControl> jumpSpeedControl =
276-
new FloatPropertyControl<>(jumpSpeed, Messages.MODEL_PROPERTY_JUMP_SPEED, changeConsumer);
277-
278-
jumpSpeedControl.setApplyHandler(CharacterControl::setJumpSpeed);
279-
jumpSpeedControl.setSyncHandler(CharacterControl::getJumpSpeed);
280-
jumpSpeedControl.setEditObject(control);
281-
282-
final FloatPropertyControl<ModelChangeConsumer, CharacterControl> maxSlopeControl =
283-
new FloatPropertyControl<>(maxSlope, Messages.MODEL_PROPERTY_MAX_SLOPE, changeConsumer);
284-
285-
maxSlopeControl.setApplyHandler(CharacterControl::setMaxSlope);
286-
maxSlopeControl.setSyncHandler(CharacterControl::getMaxSlope);
287-
maxSlopeControl.setEditObject(control);
288-
289-
final BooleanPropertyControl<ModelChangeConsumer, CharacterControl> applyPhysicsLocalControl =
290-
new BooleanPropertyControl<>(applyPhysicsLocal, Messages.MODEL_PROPERTY_IS_APPLY_PHYSICS_LOCAL, changeConsumer);
291-
292-
applyPhysicsLocalControl.setApplyHandler(CharacterControl::setApplyPhysicsLocal);
293-
applyPhysicsLocalControl.setSyncHandler(CharacterControl::isApplyPhysicsLocal);
294-
applyPhysicsLocalControl.setEditObject(control);
295-
296-
final BooleanPropertyControl<ModelChangeConsumer, CharacterControl> useViewDirectionControl =
297-
new BooleanPropertyControl<>(useViewDirection, Messages.MODEL_PROPERTY_IS_USE_VIEW_DIRECTION, changeConsumer);
298-
299-
useViewDirectionControl.setApplyHandler(CharacterControl::setUseViewDirection);
300-
useViewDirectionControl.setSyncHandler(CharacterControl::isUseViewDirection);
301-
useViewDirectionControl.setEditObject(control);
302-
303-
FXUtils.addToPane(enabledControl, container);
304-
FXUtils.addToPane(applyPhysicsLocalControl, container);
305-
FXUtils.addToPane(useViewDirectionControl, container);
306-
FXUtils.addToPane(fallSpeedControl, container);
307-
FXUtils.addToPane(gravityControl, container);
308-
FXUtils.addToPane(jumpSpeedControl, container);
309-
FXUtils.addToPane(maxSlopeControl, container);
310-
311-
buildSplitLine(container);
312-
313-
FXUtils.addToPane(viewDirectionControl, container);
314-
FXUtils.addToPane(walkDirectionControl, container);
315-
}
316-
317240
@FxThread
318241
private void build(@NotNull final SkeletonControl control, @NotNull final VBox container,
319242
@NotNull final ModelChangeConsumer changeConsumer) {

src/main/java/com/ss/editor/ui/control/property/builder/impl/EditableControlPropertyBuilder.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ public class EditableControlPropertyBuilder extends EditableModelObjectPropertyB
2020
@NotNull
2121
private static final EditableControlPropertyBuilder INSTANCE = new EditableControlPropertyBuilder();
2222

23-
/**
24-
* Get the single instance.
25-
*
26-
* @return the single instance
27-
*/
2823
@FromAnyThread
2924
public static @NotNull EditableControlPropertyBuilder getInstance() {
3025
return INSTANCE;

0 commit comments

Comments
 (0)