mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2025-02-03 16:54:57 +01:00
A ticking time bomb
- Add context object back to SimpleTickableVisual#tick - Document base *Visual plan methods
This commit is contained in:
parent
7ef9ce3907
commit
e19cc337fe
4 changed files with 27 additions and 2 deletions
|
@ -3,6 +3,8 @@ package com.jozufozu.flywheel.api.visual;
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
import org.joml.FrustumIntersection;
|
import org.joml.FrustumIntersection;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.api.instance.Instance;
|
||||||
|
import com.jozufozu.flywheel.api.instance.Instancer;
|
||||||
import com.jozufozu.flywheel.api.task.Plan;
|
import com.jozufozu.flywheel.api.task.Plan;
|
||||||
|
|
||||||
import net.minecraft.client.Camera;
|
import net.minecraft.client.Camera;
|
||||||
|
@ -14,6 +16,16 @@ import net.minecraft.client.Camera;
|
||||||
* parameterization.
|
* parameterization.
|
||||||
*/
|
*/
|
||||||
public interface DynamicVisual extends Visual {
|
public interface DynamicVisual extends Visual {
|
||||||
|
/**
|
||||||
|
* Invoked every frame.
|
||||||
|
* <br>
|
||||||
|
* The implementation is free to parallelize the invocation of this plan.
|
||||||
|
* You must ensure proper synchronization if you need to mutate anything outside this visual.
|
||||||
|
* <br>
|
||||||
|
* This plan and the one returned by {@link TickableVisual#planTick} will never be invoked simultaneously.
|
||||||
|
* <br>
|
||||||
|
* {@link Instancer}/{@link Instance} creation/acquisition is safe here.
|
||||||
|
*/
|
||||||
Plan<Context> planFrame();
|
Plan<Context> planFrame();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.jozufozu.flywheel.api.visual;
|
||||||
|
|
||||||
import org.jetbrains.annotations.ApiStatus;
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
|
|
||||||
|
import com.jozufozu.flywheel.api.instance.Instance;
|
||||||
|
import com.jozufozu.flywheel.api.instance.Instancer;
|
||||||
import com.jozufozu.flywheel.api.task.Plan;
|
import com.jozufozu.flywheel.api.task.Plan;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +11,16 @@ import com.jozufozu.flywheel.api.task.Plan;
|
||||||
* the end of every tick.
|
* the end of every tick.
|
||||||
*/
|
*/
|
||||||
public interface TickableVisual extends Visual {
|
public interface TickableVisual extends Visual {
|
||||||
|
/**
|
||||||
|
* Invoked every tick.
|
||||||
|
* <br>
|
||||||
|
* The implementation is free to parallelize the invocation of this plan.
|
||||||
|
* You must ensure proper synchronization if you need to mutate anything outside this visual.
|
||||||
|
* <br>
|
||||||
|
* This plan and the one returned by {@link DynamicVisual#planFrame} will never be invoked simultaneously.
|
||||||
|
* <br>
|
||||||
|
* {@link Instancer}/{@link Instance} creation/acquisition is safe here.
|
||||||
|
*/
|
||||||
Plan<Context> planTick();
|
Plan<Context> planTick();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,7 +18,7 @@ public interface SimpleTickableVisual extends TickableVisual {
|
||||||
* <br>
|
* <br>
|
||||||
* {@link Instancer}/{@link Instance} creation/acquisition is safe here.
|
* {@link Instancer}/{@link Instance} creation/acquisition is safe here.
|
||||||
*/
|
*/
|
||||||
void tick();
|
void tick(Context context);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default Plan<Context> planTick() {
|
default Plan<Context> planTick() {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.jozufozu.flywheel.vanilla;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
import com.jozufozu.flywheel.api.visual.DynamicVisual;
|
||||||
|
import com.jozufozu.flywheel.api.visual.TickableVisual;
|
||||||
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
import com.jozufozu.flywheel.api.visualization.VisualizationContext;
|
||||||
import com.jozufozu.flywheel.lib.instance.InstanceTypes;
|
import com.jozufozu.flywheel.lib.instance.InstanceTypes;
|
||||||
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
import com.jozufozu.flywheel.lib.instance.TransformedInstance;
|
||||||
|
@ -99,7 +100,7 @@ public class MinecartVisual<T extends AbstractMinecart> extends SimpleEntityVisu
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick(TickableVisual.Context context) {
|
||||||
BlockState displayBlockState = entity.getDisplayBlockState();
|
BlockState displayBlockState = entity.getDisplayBlockState();
|
||||||
|
|
||||||
if (displayBlockState != blockState) {
|
if (displayBlockState != blockState) {
|
||||||
|
|
Loading…
Reference in a new issue