11package 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 .*;
54import com .jme3 .animation .Animation ;
65import com .jme3 .animation .LoopMode ;
76import com .jme3 .animation .SkeletonControl ;
8- import com .jme3 .bullet .control .CharacterControl ;
7+ import com .jme3 .bullet .control .BetterCharacterControl ;
98import com .jme3 .bullet .control .RigidBodyControl ;
109import com .jme3 .bullet .control .VehicleControl ;
1110import com .jme3 .bullet .objects .PhysicsRigidBody ;
2322import com .ss .editor .extension .property .EditableProperty ;
2423import com .ss .editor .extension .property .SimpleProperty ;
2524import com .ss .editor .model .undo .editor .ModelChangeConsumer ;
26- import com .ss .editor .ui .control .property .impl .WheelElementModelPropertyControl ;
2725import com .ss .editor .ui .control .property .builder .PropertyBuilder ;
2826import com .ss .editor .ui .control .property .impl .*;
2927import 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 ) {
0 commit comments