mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
Update SpineController and SpineController.Builder API
This commit is contained in:
parent
fc4716f749
commit
77778a0e3a
@ -29,8 +29,7 @@ fun AnimationState(nav: NavHostController) {
|
||||
val TAG = "AnimationState"
|
||||
|
||||
val controller = remember {
|
||||
SpineController.Builder()
|
||||
.setOnInitialized { controller ->
|
||||
SpineController { controller ->
|
||||
controller.skeleton.setScaleX(0.5f)
|
||||
controller.skeleton.setScaleY(0.5f)
|
||||
|
||||
@ -108,7 +107,6 @@ fun AnimationState(nav: NavHostController) {
|
||||
})
|
||||
Log.d(TAG, "Current: ${controller.animationState.getCurrent(0)?.getAnimation()?.getName()}");
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
|
||||
@ -47,9 +47,8 @@ fun DebugRendering(nav: NavHostController) {
|
||||
"spineboy.atlas",
|
||||
"spineboy-pro.json",
|
||||
context,
|
||||
SpineController.Builder()
|
||||
.setOnInitialized {
|
||||
it.animationState.setAnimation(0, "walk", true)
|
||||
SpineController.Builder { controller ->
|
||||
controller.animationState.setAnimation(0, "walk", true)
|
||||
}
|
||||
.setOnAfterPaint { controller, canvas, commands ->
|
||||
debugRenderer.render(controller.drawable, canvas, commands)
|
||||
|
||||
@ -75,11 +75,9 @@ fun DressUp(nav: NavHostController) {
|
||||
}
|
||||
|
||||
val controller = remember {
|
||||
SpineController.Builder()
|
||||
.setOnInitialized {
|
||||
it.animationState.setAnimation(0, "dance", true)
|
||||
SpineController { controller ->
|
||||
controller.animationState.setAnimation(0, "dance", true)
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
fun toggleSkin(skinName: String) {
|
||||
|
||||
@ -35,10 +35,9 @@ fun IKFollowing(nav: NavHostController) {
|
||||
val crossHairPosition = remember { mutableStateOf<Point?>(null) }
|
||||
|
||||
val controller = remember {
|
||||
SpineController.Builder()
|
||||
.setOnInitialized {
|
||||
it.animationState.setAnimation(0, "walk", true)
|
||||
it.animationState.setAnimation(1, "aim", true)
|
||||
SpineController.Builder { controller ->
|
||||
controller.animationState.setAnimation(0, "walk", true)
|
||||
controller.animationState.setAnimation(1, "aim", true)
|
||||
}
|
||||
.setOnAfterUpdateWorldTransforms {
|
||||
val worldPosition = crossHairPosition.value ?: return@setOnAfterUpdateWorldTransforms
|
||||
|
||||
@ -36,8 +36,7 @@ fun Physics(nav: NavHostController) {
|
||||
val lastMousePosition = remember { mutableStateOf<Point?>(null) }
|
||||
|
||||
val controller = remember {
|
||||
SpineController.Builder()
|
||||
.setOnInitialized { controller ->
|
||||
SpineController.Builder { controller ->
|
||||
controller.animationState.setAnimation(0, "eyeblink-long", true)
|
||||
controller.animationState.setAnimation(1, "wings-and-feet", true)
|
||||
}
|
||||
|
||||
@ -26,12 +26,9 @@ fun PlayPause(
|
||||
nav: NavHostController
|
||||
) {
|
||||
val controller = remember {
|
||||
SpineController.Builder()
|
||||
.setOnInitialized {
|
||||
it.animationState.setAnimation(0, "flying", true)
|
||||
SpineController { controller ->
|
||||
controller.animationState.setAnimation(0, "flying", true)
|
||||
}
|
||||
|
||||
.build()
|
||||
}
|
||||
|
||||
val isPlaying = remember { mutableStateOf(controller.isPlaying) }
|
||||
|
||||
@ -40,11 +40,9 @@ fun SimpleAnimation(nav: NavHostController) {
|
||||
"spineboy.atlas",
|
||||
"spineboy-pro.json",
|
||||
context,
|
||||
SpineController.Builder()
|
||||
.setOnInitialized {
|
||||
SpineController {
|
||||
it.animationState.setAnimation(0, "walk", true)
|
||||
}
|
||||
.build()
|
||||
)
|
||||
},
|
||||
modifier = Modifier.padding(paddingValues)
|
||||
|
||||
@ -17,15 +17,14 @@ import com.esotericsoftware.spine.android.utils.SpineControllerCallback;
|
||||
public class SpineController {
|
||||
|
||||
public static class Builder {
|
||||
private SpineControllerCallback onInitialized;
|
||||
private final SpineControllerCallback onInitialized;
|
||||
private SpineControllerCallback onBeforeUpdateWorldTransforms;
|
||||
private SpineControllerCallback onAfterUpdateWorldTransforms;
|
||||
private SpineControllerBeforePaintCallback onBeforePaint;
|
||||
private SpineControllerAfterPaintCallback onAfterPaint;
|
||||
|
||||
public Builder setOnInitialized(SpineControllerCallback onInitialized) {
|
||||
public Builder(SpineControllerCallback onInitialized) {
|
||||
this.onInitialized = onInitialized;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setOnBeforeUpdateWorldTransforms(SpineControllerCallback onBeforeUpdateWorldTransforms) {
|
||||
@ -49,8 +48,7 @@ public class SpineController {
|
||||
}
|
||||
|
||||
public SpineController build() {
|
||||
SpineController spineController = new SpineController();
|
||||
spineController.onInitialized = onInitialized;
|
||||
SpineController spineController = new SpineController(onInitialized);
|
||||
spineController.onBeforeUpdateWorldTransforms = onBeforeUpdateWorldTransforms;
|
||||
spineController.onAfterUpdateWorldTransforms = onAfterUpdateWorldTransforms;
|
||||
spineController.onBeforePaint = onBeforePaint;
|
||||
@ -59,7 +57,7 @@ public class SpineController {
|
||||
}
|
||||
}
|
||||
|
||||
private @Nullable SpineControllerCallback onInitialized;
|
||||
private final SpineControllerCallback onInitialized;
|
||||
private @Nullable SpineControllerCallback onBeforeUpdateWorldTransforms;
|
||||
private @Nullable SpineControllerCallback onAfterUpdateWorldTransforms;
|
||||
private @Nullable SpineControllerBeforePaintCallback onBeforePaint;
|
||||
@ -71,6 +69,10 @@ public class SpineController {
|
||||
private double scaleX = 1;
|
||||
private double scaleY = 1;
|
||||
|
||||
public SpineController(SpineControllerCallback onInitialized) {
|
||||
this.onInitialized = onInitialized;
|
||||
}
|
||||
|
||||
protected void init(AndroidSkeletonDrawable drawable) {
|
||||
this.drawable = drawable;
|
||||
if (onInitialized != null) {
|
||||
|
||||
@ -120,12 +120,12 @@ public class SpineView extends View implements Choreographer.FrameCallback {
|
||||
|
||||
public SpineView (Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
this.controller = new SpineController();
|
||||
// TODO Load controller & assets fro attrs
|
||||
}
|
||||
|
||||
public SpineView (Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
this.controller = new SpineController();
|
||||
// TODO Load controller & assets fro attrs
|
||||
}
|
||||
|
||||
public static SpineView loadFromAssets(String atlasFileName, String skeletonFileName, Context context, SpineController controller) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user