Fixed minor race condition between mouse clicks and TESR in the animation example.
This commit is contained in:
parent
e929199758
commit
960717eb0c
|
@ -26,6 +26,8 @@ public enum Animation implements IResourceManagerReloadListener
|
||||||
{
|
{
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
|
|
||||||
|
private float clientPartialTickTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the global world time for the current tick, in seconds.
|
* Get the global world time for the current tick, in seconds.
|
||||||
*/
|
*/
|
||||||
|
@ -42,6 +44,14 @@ public enum Animation implements IResourceManagerReloadListener
|
||||||
return (world.getTotalWorldTime() + tickProgress) / 20;
|
return (world.getTotalWorldTime() + tickProgress) / 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current partialTickTime.
|
||||||
|
*/
|
||||||
|
public static float getPartialTickTime()
|
||||||
|
{
|
||||||
|
return INSTANCE.clientPartialTickTime;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a new instance if AnimationStateMachine at specified location, with specified custom parameters.
|
* Load a new instance if AnimationStateMachine at specified location, with specified custom parameters.
|
||||||
*/
|
*/
|
||||||
|
@ -176,6 +186,16 @@ public enum Animation implements IResourceManagerReloadListener
|
||||||
|
|
||||||
private final ModelBlockAnimation defaultModelBlockAnimation = new ModelBlockAnimation(ImmutableMap.<String, ImmutableMap<String, float[]>>of(), ImmutableMap.<String, ModelBlockAnimation.MBClip>of());
|
private final ModelBlockAnimation defaultModelBlockAnimation = new ModelBlockAnimation(ImmutableMap.<String, ImmutableMap<String, float[]>>of(), ImmutableMap.<String, ModelBlockAnimation.MBClip>of());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iternal hook, do not use.
|
||||||
|
*/
|
||||||
|
public static void setClientPartialTickTime(float clientPartialTickTime) {
|
||||||
|
Animation.INSTANCE.clientPartialTickTime = clientPartialTickTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iternal hook, do not use.
|
||||||
|
*/
|
||||||
public void onResourceManagerReload(IResourceManager manager)
|
public void onResourceManagerReload(IResourceManager manager)
|
||||||
{
|
{
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
|
|
|
@ -47,6 +47,7 @@ import net.minecraft.util.IThreadListener;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.storage.SaveHandler;
|
import net.minecraft.world.storage.SaveHandler;
|
||||||
import net.minecraft.world.storage.WorldInfo;
|
import net.minecraft.world.storage.WorldInfo;
|
||||||
|
import net.minecraftforge.client.model.animation.Animation;
|
||||||
import net.minecraftforge.common.ForgeVersion;
|
import net.minecraftforge.common.ForgeVersion;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.fml.common.eventhandler.EventBus;
|
import net.minecraftforge.fml.common.eventhandler.EventBus;
|
||||||
|
@ -337,6 +338,7 @@ public class FMLCommonHandler
|
||||||
|
|
||||||
public void onRenderTickStart(float timer)
|
public void onRenderTickStart(float timer)
|
||||||
{
|
{
|
||||||
|
Animation.setClientPartialTickTime(timer);
|
||||||
bus().post(new TickEvent.RenderTickEvent(Phase.START, timer));
|
bus().post(new TickEvent.RenderTickEvent(Phase.START, timer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -314,7 +314,7 @@ public class ModelAnimationDebug
|
||||||
}*/
|
}*/
|
||||||
else if(asm.currentState().equals("default"))
|
else if(asm.currentState().equals("default"))
|
||||||
{
|
{
|
||||||
float time = Animation.getWorldTime(getWorld());
|
float time = Animation.getWorldTime(getWorld(), Animation.getPartialTickTime());
|
||||||
clickTime.setValue(time);
|
clickTime.setValue(time);
|
||||||
//offset.setValue(time);
|
//offset.setValue(time);
|
||||||
//asm.transition("moving");
|
//asm.transition("moving");
|
||||||
|
@ -322,7 +322,7 @@ public class ModelAnimationDebug
|
||||||
}
|
}
|
||||||
else if(asm.currentState().equals("moving"))
|
else if(asm.currentState().equals("moving"))
|
||||||
{
|
{
|
||||||
clickTime.setValue(Animation.getWorldTime(getWorld()));
|
clickTime.setValue(Animation.getWorldTime(getWorld(), Animation.getPartialTickTime()));
|
||||||
asm.transition("stopping");
|
asm.transition("stopping");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue