pick 97420a31d The big reformat of 2020
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
package appeng.client.render.model;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.google.common.cache.Cache;
|
||||
@@ -34,187 +34,159 @@ import appeng.api.util.AEColor;
|
||||
import appeng.client.render.cablebus.CubeBuilder;
|
||||
import appeng.core.AELog;
|
||||
|
||||
class MemoryCardBakedModel implements IBakedModel {
|
||||
private static final AEColor[] DEFAULT_COLOR_CODE = new AEColor[] { AEColor.TRANSPARENT, AEColor.TRANSPARENT,
|
||||
AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT,
|
||||
AEColor.TRANSPARENT, };
|
||||
|
||||
class MemoryCardBakedModel implements IBakedModel
|
||||
{
|
||||
private static final AEColor[] DEFAULT_COLOR_CODE = new AEColor[] {
|
||||
AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT,
|
||||
AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT, AEColor.TRANSPARENT,
|
||||
};
|
||||
private final IBakedModel baseModel;
|
||||
|
||||
private final IBakedModel baseModel;
|
||||
private final TextureAtlasSprite texture;
|
||||
|
||||
private final TextureAtlasSprite texture;
|
||||
private final AEColor[] colorCode;
|
||||
|
||||
private final AEColor[] colorCode;
|
||||
private final Cache<CacheKey, MemoryCardBakedModel> modelCache;
|
||||
|
||||
private final Cache<CacheKey, MemoryCardBakedModel> modelCache;
|
||||
private final ImmutableList<BakedQuad> generalQuads;
|
||||
|
||||
private final ImmutableList<BakedQuad> generalQuads;
|
||||
MemoryCardBakedModel(IBakedModel baseModel, TextureAtlasSprite texture) {
|
||||
this(baseModel, texture, DEFAULT_COLOR_CODE, createCache());
|
||||
}
|
||||
|
||||
MemoryCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture )
|
||||
{
|
||||
this( baseModel, texture, DEFAULT_COLOR_CODE, createCache() );
|
||||
}
|
||||
private MemoryCardBakedModel(IBakedModel baseModel, TextureAtlasSprite texture, AEColor[] hash,
|
||||
Cache<CacheKey, MemoryCardBakedModel> modelCache) {
|
||||
this.baseModel = baseModel;
|
||||
this.texture = texture;
|
||||
this.colorCode = hash;
|
||||
this.generalQuads = ImmutableList.copyOf(this.buildGeneralQuads());
|
||||
this.modelCache = modelCache;
|
||||
}
|
||||
|
||||
private MemoryCardBakedModel( IBakedModel baseModel, TextureAtlasSprite texture, AEColor[] hash, Cache<CacheKey, MemoryCardBakedModel> modelCache )
|
||||
{
|
||||
this.baseModel = baseModel;
|
||||
this.texture = texture;
|
||||
this.colorCode = hash;
|
||||
this.generalQuads = ImmutableList.copyOf( this.buildGeneralQuads() );
|
||||
this.modelCache = modelCache;
|
||||
}
|
||||
private static Cache<CacheKey, MemoryCardBakedModel> createCache() {
|
||||
return CacheBuilder.newBuilder().maximumSize(100).build();
|
||||
}
|
||||
|
||||
private static Cache<CacheKey, MemoryCardBakedModel> createCache()
|
||||
{
|
||||
return CacheBuilder.newBuilder().maximumSize( 100 ).build();
|
||||
}
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand) {
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand )
|
||||
{
|
||||
List<BakedQuad> quads = this.baseModel.getQuads(state, side, rand, EmptyModelData.INSTANCE);
|
||||
|
||||
List<BakedQuad> quads = this.baseModel.getQuads( state, side, rand, EmptyModelData.INSTANCE );
|
||||
if (side != null) {
|
||||
return quads;
|
||||
}
|
||||
|
||||
if( side != null )
|
||||
{
|
||||
return quads;
|
||||
}
|
||||
List<BakedQuad> result = new ArrayList<>(quads.size() + this.generalQuads.size());
|
||||
result.addAll(quads);
|
||||
result.addAll(this.generalQuads);
|
||||
return result;
|
||||
}
|
||||
|
||||
List<BakedQuad> result = new ArrayList<>( quads.size() + this.generalQuads.size() );
|
||||
result.addAll( quads );
|
||||
result.addAll( this.generalQuads );
|
||||
return result;
|
||||
}
|
||||
private List<BakedQuad> buildGeneralQuads() {
|
||||
CubeBuilder builder = new CubeBuilder();
|
||||
|
||||
private List<BakedQuad> buildGeneralQuads()
|
||||
{
|
||||
CubeBuilder builder = new CubeBuilder();
|
||||
builder.setTexture(this.texture);
|
||||
|
||||
builder.setTexture( this.texture );
|
||||
for (int x = 0; x < 4; x++) {
|
||||
for (int y = 0; y < 2; y++) {
|
||||
final AEColor color = this.colorCode[x + y * 4];
|
||||
|
||||
for( int x = 0; x < 4; x++ )
|
||||
{
|
||||
for( int y = 0; y < 2; y++ )
|
||||
{
|
||||
final AEColor color = this.colorCode[x + y * 4];
|
||||
builder.setColorRGB(color.mediumVariant);
|
||||
builder.addCube(7 + x, 8 + (1 - y), 7.5f, 7 + x + 1, 8 + (1 - y) + 1, 8.5f);
|
||||
}
|
||||
}
|
||||
|
||||
builder.setColorRGB( color.mediumVariant );
|
||||
builder.addCube( 7 + x, 8 + ( 1 - y ), 7.5f, 7 + x + 1, 8 + ( 1 - y ) + 1, 8.5f );
|
||||
}
|
||||
}
|
||||
return builder.getOutput();
|
||||
}
|
||||
|
||||
return builder.getOutput();
|
||||
}
|
||||
@Override
|
||||
public boolean isAmbientOcclusion() {
|
||||
return this.baseModel.isAmbientOcclusion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAmbientOcclusion()
|
||||
{
|
||||
return this.baseModel.isAmbientOcclusion();
|
||||
}
|
||||
@Override
|
||||
public boolean isGui3d() {
|
||||
return this.baseModel.isGui3d();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGui3d()
|
||||
{
|
||||
return this.baseModel.isGui3d();
|
||||
}
|
||||
@Override
|
||||
public boolean func_230044_c_() {
|
||||
return false;// TODO
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean func_230044_c_()
|
||||
{
|
||||
return false;//TODO
|
||||
}
|
||||
@Override
|
||||
public boolean isBuiltInRenderer() {
|
||||
return this.baseModel.isBuiltInRenderer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBuiltInRenderer()
|
||||
{
|
||||
return this.baseModel.isBuiltInRenderer();
|
||||
}
|
||||
@Override
|
||||
public TextureAtlasSprite getParticleTexture() {
|
||||
return this.baseModel.getParticleTexture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureAtlasSprite getParticleTexture()
|
||||
{
|
||||
return this.baseModel.getParticleTexture();
|
||||
}
|
||||
@Override
|
||||
public ItemCameraTransforms getItemCameraTransforms() {
|
||||
return this.baseModel.getItemCameraTransforms();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemCameraTransforms getItemCameraTransforms()
|
||||
{
|
||||
return this.baseModel.getItemCameraTransforms();
|
||||
}
|
||||
@Override
|
||||
public ItemOverrideList getOverrides() {
|
||||
return new ItemOverrideList() {
|
||||
@Override
|
||||
public IBakedModel getModelWithOverrides(IBakedModel originalModel, ItemStack stack, World world,
|
||||
LivingEntity entity) {
|
||||
try {
|
||||
if (stack.getItem() instanceof IMemoryCard) {
|
||||
final IMemoryCard memoryCard = (IMemoryCard) stack.getItem();
|
||||
final AEColor[] colors = memoryCard.getColorCode(stack);
|
||||
|
||||
@Override
|
||||
public ItemOverrideList getOverrides()
|
||||
{
|
||||
return new ItemOverrideList()
|
||||
{
|
||||
@Override
|
||||
public IBakedModel getModelWithOverrides( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity )
|
||||
{
|
||||
try
|
||||
{
|
||||
if( stack.getItem() instanceof IMemoryCard )
|
||||
{
|
||||
final IMemoryCard memoryCard = (IMemoryCard) stack.getItem();
|
||||
final AEColor[] colors = memoryCard.getColorCode( stack );
|
||||
return MemoryCardBakedModel.this.modelCache.get(new CacheKey(colors),
|
||||
() -> new MemoryCardBakedModel(MemoryCardBakedModel.this.baseModel,
|
||||
MemoryCardBakedModel.this.texture, colors,
|
||||
MemoryCardBakedModel.this.modelCache));
|
||||
}
|
||||
} catch (ExecutionException e) {
|
||||
AELog.error(e);
|
||||
}
|
||||
|
||||
return MemoryCardBakedModel.this.modelCache.get( new CacheKey( colors ),
|
||||
() -> new MemoryCardBakedModel( MemoryCardBakedModel.this.baseModel, MemoryCardBakedModel.this.texture, colors, MemoryCardBakedModel.this.modelCache ) );
|
||||
}
|
||||
}
|
||||
catch( ExecutionException e )
|
||||
{
|
||||
AELog.error( e );
|
||||
}
|
||||
return MemoryCardBakedModel.this;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return MemoryCardBakedModel.this;
|
||||
}
|
||||
};
|
||||
}
|
||||
@Override
|
||||
public IBakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
||||
baseModel.handlePerspective(cameraTransformType, mat);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat )
|
||||
{
|
||||
baseModel.handlePerspective( cameraTransformType, mat );
|
||||
return this;
|
||||
}
|
||||
private static class CacheKey {
|
||||
private final AEColor[] key;
|
||||
|
||||
private static class CacheKey
|
||||
{
|
||||
private final AEColor[] key;
|
||||
CacheKey(AEColor[] key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
CacheKey( AEColor[] key )
|
||||
{
|
||||
this.key = key;
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + Arrays.hashCode(this.key);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + Arrays.hashCode( this.key );
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if( this == obj )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if( obj == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if( this.getClass() != obj.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
CacheKey other = (CacheKey) obj;
|
||||
return Arrays.equals( this.key, other.key );
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (this.getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
CacheKey other = (CacheKey) obj;
|
||||
return Arrays.equals(this.key, other.key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user