From 1493beb79b0df00b522c6308c41c0ffdff1c2cfb Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Tue, 12 Jan 2021 05:55:27 -0500 Subject: [PATCH] Allow placement options for pieces --- .../com/volmit/iris/object/IrisJigsawPiece.java | 11 +++++++++++ .../iris/scaffold/jigsaw/PlannedStructure.java | 16 ++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java b/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java index 93492f0b8..0a8939c74 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPiece.java @@ -1,5 +1,6 @@ package com.volmit.iris.object; +import com.google.gson.Gson; import com.volmit.iris.scaffold.cache.AtomicCache; import com.volmit.iris.util.*; import lombok.AllArgsConstructor; @@ -36,6 +37,10 @@ public class IrisJigsawPiece extends IrisRegistrant @DontObfuscate private ObjectPlaceMode placeMode = ObjectPlaceMode.FAST_MAX_HEIGHT; + @Desc("Configure everything about the object placement. Please don't define this unless you actually need it as using this option will slow down the jigsaw deign stage. Use this where you need it, just avoid using it everywhere to keep things fast.") + @DontObfuscate + private IrisObjectPlacement placementOverrides; + private transient AtomicCache max2dDim = new AtomicCache<>(); private transient AtomicCache max3dDim = new AtomicCache<>(); @@ -86,6 +91,12 @@ public class IrisJigsawPiece extends IrisRegistrant p.setPlaceMode(getPlaceMode()); p.setConnectors(new KList<>()); + if(getPlacementOverrides() != null) + { + // God fucking dammit + p.setPlacementOverrides(new Gson().fromJson(new Gson().toJson(getPlacementOverrides()), IrisObjectPlacement.class)); + } + for(IrisJigsawPieceConnector i : getConnectors()) { p.getConnectors().add(i.copy()); diff --git a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java index cb368bd8b..9ddbb6ee7 100644 --- a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java +++ b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java @@ -64,8 +64,21 @@ public class PlannedStructure { return after; } - public void place(PlannedPiece i, int startHeight, IrisObjectPlacement options, IObjectPlacer placer, EngineParallaxManager e) + public void place(PlannedPiece i, int startHeight, IrisObjectPlacement o, IObjectPlacer placer, EngineParallaxManager e) { + IrisObjectPlacement options = o; + + if(i.getPiece().getPlacementOverrides() != null) + { + options= i.getPiece().getPlacementOverrides(); + options.getRotation().setEnabled(false); + } + + else + { + options.setMode(i.getPiece().getPlaceMode()); + } + IrisObject v = i.getObject(); int sx = (v.getW()/2); int sz = (v.getD()/2); @@ -73,7 +86,6 @@ public class PlannedStructure { int zz = i.getPosition().getZ() + sz; int offset = i.getPosition().getY() - startHeight; int height = placer.getHighest(xx, zz) + offset + (v.getH() / 2); - options.setMode(i.getPiece().getPlaceMode()); if(options.getMode().equals(ObjectPlaceMode.PAINT) || options.isVacuum()) {