Skip to content

Commit f33aacf

Browse files
committed
3.1.0 - Moved effect and paradox from material to variant. Old models should still work but paradox animation and post process material effect won't work.
1 parent 6f2c3ee commit f33aacf

27 files changed

Lines changed: 748 additions & 584 deletions

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ plugins {
1111
}
1212

1313
group = "gg.generations"
14-
version = "3.0.0"
14+
version = "3.1.0"
1515

1616
java.toolchain.languageVersion.set(JavaLanguageVersion.of(21))
1717

src/library/java/gg/generations/rarecandy/pokeutils/MaterialReference.java

Lines changed: 9 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
public class MaterialReference {
1313
public String parent;
1414
public String shader;
15-
public String effect;
1615

1716
public CullType cull;
1817

@@ -22,10 +21,9 @@ public class MaterialReference {
2221

2322
public MaterialValues values;
2423

25-
public MaterialReference(String parent, String shader, String effect, CullType cull, BlendType blend, MaterialImages images, MaterialValues values) {
24+
public MaterialReference(String parent, String shader, CullType cull, BlendType blend, MaterialImages images, MaterialValues values) {
2625
this.parent = parent;
2726
this.shader = shader;
28-
this.effect = effect;
2927
this.cull = cull;
3028
this.blend = blend;
3129
this.images = images;
@@ -42,7 +40,6 @@ public void complete(Map<String, MaterialReference> materialReferenceMap) {
4240
else {
4341

4442
if (!Objects.equals(shader, reference.shader)) shader = reference.shader;
45-
if (effect == null) effect = reference.effect;
4643
if (!Objects.equals(cull, reference.cull)) cull = reference.cull;
4744
if (!Objects.equals(blend, reference.blend)) blend = reference.blend;
4845

@@ -67,31 +64,21 @@ public void complete(Map<String, MaterialReference> materialReferenceMap) {
6764
public static Material process(MaterialReference reference, List<String> imageNames) {
6865
var images = reference.images.toArray(imageNames);
6966

70-
int method = switch (reference.shader) {
67+
int method = 0;
68+
if (reference.shader != null) {
69+
method = switch (reference.shader) {
7170
case "layered" -> 1;
7271
case "masked" -> 2;
7372
default -> 0;
74-
};
75-
76-
var effectRef = reference.effect;
77-
78-
79-
var effect = switch (reference.effect) {
80-
case "galaxy" -> 1;
81-
case "pastel" -> 2;
82-
case "shadow" -> 3;
83-
case "sketch" -> 4;
84-
case "vintage" -> 5;
85-
case null, default -> 0;
86-
};
73+
};
74+
}
8775

8876
return new Material(
8977
images,
9078
reference.values,
9179
reference.cull,
9280
reference.blend,
93-
method,
94-
effect
81+
method
9582
);
9683
}
9784

@@ -101,8 +88,6 @@ public MaterialReference deserialize(JsonElement json, Type typeOfT, JsonDeseria
10188

10289
String shader = null;
10390

104-
String effect = null;
105-
10691
CullType cull = CullType.None;
10792

10893
BlendType blend = BlendType.None;
@@ -150,20 +135,13 @@ public MaterialReference deserialize(JsonElement json, Type typeOfT, JsonDeseria
150135
switch (shader) {
151136
case "masked_paradox" -> {
152137
shader = "masked";
153-
values.setUseParadox(true);
154138
}
155139
case "paradox", "solid_paradox" -> {
156140
shader = "solid";
157-
values.setUseParadox(true);
158141
}
159142
}
160143
}
161144

162-
if(jsonObject.has("effect")) {
163-
164-
effect = jsonObject.getAsJsonPrimitive("effect").getAsString();
165-
}
166-
167145
if(jsonObject.has("cull")) cull = CullType.from(jsonObject.getAsJsonPrimitive("cull").getAsString());
168146
if(jsonObject.has("blend")) blend = BlendType.from(jsonObject.getAsJsonPrimitive("blend").getAsString());
169147
if(jsonObject.has("images")) images.fill(jsonObject.getAsJsonObject("images"));
@@ -174,7 +152,7 @@ public MaterialReference deserialize(JsonElement json, Type typeOfT, JsonDeseria
174152
}
175153
}
176154

177-
return new MaterialReference(parent, shader, effect, cull, blend, images, values);
155+
return new MaterialReference(parent, shader, cull, blend, images, values);
178156
}
179157
}
180158

@@ -217,7 +195,6 @@ public boolean equals(Object o) {
217195
// Compare simple fields
218196
if (!Objects.equals(parent, that.parent)) return false;
219197
if (!Objects.equals(shader, that.shader)) return false;
220-
if (!Objects.equals(effect, that.effect)) return false;
221198
if (!Objects.equals(cull, that.cull)) return false;
222199
if (!Objects.equals(blend, that.blend)) return false;
223200

@@ -229,7 +206,7 @@ public boolean equals(Object o) {
229206

230207
@Override
231208
public int hashCode() {
232-
return Objects.hash(parent, shader, effect, cull, blend, values, images);
209+
return Objects.hash(parent, shader, cull, blend, values, images);
233210
}
234211

235212
// Helper method to compare images based on exact byte content of key-value pairs

src/library/java/gg/generations/rarecandy/pokeutils/PixelAsset.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@
2424
import java.util.HashMap;
2525
import java.util.List;
2626
import java.util.Map;
27+
import java.util.function.BiConsumer;
2728
import java.util.function.BiFunction;
29+
import java.util.function.Function;
2830
import java.util.stream.Collector;
2931
import java.util.stream.Collectors;
3032

@@ -54,17 +56,20 @@ public class PixelAsset {
5456
var obj = new JsonObject();
5557
if (variantDetails.material() != null) obj.addProperty("material", variantDetails.material());
5658
if (variantDetails.hide() != null) obj.addProperty("hide", variantDetails.hide());
59+
if (variantDetails.paradox() != null) obj.addProperty("paradox", variantDetails.paradox());
5760
if (variantDetails.offset() != null && variantDetails.offset() != AnimationController.NO_OFFSET)
5861
obj.add("transform", ctx.serialize(variantDetails.offset()));
5962

6063
return obj;
6164
}, (jsonElement, ctx) -> {
6265
var obj = jsonElement.getAsJsonObject();
6366
var material = obj.has("material") ? obj.getAsJsonPrimitive("material").getAsString() : null;
67+
var effect = obj.has("effect") ? obj.getAsJsonPrimitive("effect").getAsString() : null;
68+
var paradox = obj.has("paradox") ? obj.getAsJsonPrimitive("paradox").getAsBoolean() : null;
6469
var hide = obj.has("hide") ? obj.getAsJsonPrimitive("hide").getAsBoolean() : null;
6570
Transform offset = obj.has("offset") ? ctx.deserialize(obj.get("offset"), Transform.class) : null;
6671
if(offset == null && obj.has("transform")) offset = ctx.deserialize(obj.get("transform"), Transform.class);
67-
return new VariantDetails(material, hide, offset);
72+
return new VariantDetails(material, effect, paradox, hide, offset);
6873
}))
6974
.registerTypeAdapter(Transform.class, new GenericJsonThing<>((transform, ctx) -> {
7075
if (transform.scale().x == 1 && transform.scale().y == 1) {
@@ -214,12 +219,20 @@ public PixelAsset(Map<String, byte[]> map, String name) {
214219
var json = new String(entry.getValue());
215220

216221
config = GSON.fromJson(json, ModelConfig.class);
222+
223+
config.materials.forEach((s, reference) -> {
224+
var images = reference.images;
225+
226+
images.applyModelName(name);
227+
});
217228
}
218229

219-
files.put(entry.getKey(), entry.getValue());
220-
}
230+
var key = entry.getKey();
221231

232+
key = key.contains(".png") ? name + "-" + key : key;
222233

234+
files.put(key, entry.getValue());
235+
}
223236

224237
updateSettings();
225238

src/library/java/gg/generations/rarecandy/pokeutils/VariantDetails.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,21 @@
22

33
import gg.generations.rarecandy.renderer.animation.Transform;
44

5-
public record VariantDetails(String material, Boolean hide, Transform offset) {
5+
public record VariantDetails(String material, String effect, Boolean paradox, Boolean hide, Transform offset) {
66
public VariantDetails fillIn(VariantDetails filler) {
77
var newMaterial = material;
8+
var newEffect = effect;
9+
var newParadox = paradox;
810
var newHide = hide;
911
var newOffset = offset;
1012

1113
if (newMaterial == null) newMaterial = filler.material;
14+
if (newEffect == null) newEffect = filler.effect;
15+
if (newParadox == null) newParadox = filler.paradox != null ? filler.paradox : false;
1216
if (newHide == null) newHide = filler.hide != null ? filler.hide : false;
1317
if (newOffset == null) newOffset = filler.offset != null ? filler.offset : null;
1418

15-
return new VariantDetails(newMaterial, newHide, newOffset);
19+
return new VariantDetails(newMaterial, newEffect, newParadox, newHide, newOffset);
1620
}
1721

1822
public VariantDetails fillIn() {

src/library/java/gg/generations/rarecandy/pokeutils/reader/ITextureLoader.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,20 @@ public static void setInstance(ITextureLoader instance) {
1919
ITextureLoader.instance = instance;
2020
}
2121

22+
public abstract boolean contains(String name);
23+
2224
public abstract ITexture getTexture(String name);
2325

26+
public ITexture getTexture(String name, String defaultName) {
27+
if(contains(name)) {
28+
return getTexture(name);
29+
} else if(contains(defaultName)) {
30+
return getTexture(defaultName);
31+
} else {
32+
return getDarkFallback();
33+
}
34+
}
35+
2436
public abstract void register(String name, ITexture reference);
2537

2638
public abstract void register(String id, String fileName, byte[] data);

src/library/java/gg/generations/rarecandy/renderer/components/MultiRenderObject.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public abstract class MultiRenderObject {
3939
public SbboOffset vertex;
4040
public SbboOffset index;
4141
public SbboOffset draw;
42+
public SbboOffset material;
43+
public SbboOffset variant;
4244
public SbboOffset target;
4345

4446
public SSBOBuffer instanceBuffer;
@@ -184,9 +186,9 @@ public void updateSSBOs() {
184186

185187
Transform transform = variant.offset();
186188

187-
if (instance instanceof AnimatedObjectInstance animatedInstance) {
189+
var material = variant.material();
188190

189-
var material = variant.material();
191+
if (instance instanceof AnimatedObjectInstance animatedInstance) {
190192

191193
var t = animatedInstance.getTransform(material);
192194

@@ -200,6 +202,8 @@ public void updateSSBOs() {
200202
}
201203

202204
transform.upload(uvTransformBuffer);
205+
uvTransformBuffer.put(instance.variant());
206+
uvTransformBuffer.move(4);
203207
}
204208
}
205209

@@ -230,7 +234,7 @@ private void ensureCapacity() {
230234
uvTransformBuffer.ensureCapacity(
231235
(long) instances.size()
232236
* meshes.length
233-
* Float.BYTES * 4
237+
* (Float.BYTES * 4 + Integer.BYTES * 2)
234238
);
235239
}
236240

src/library/java/gg/generations/rarecandy/renderer/loading/Attribute.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)