use of blusunrize.immersiveengineering.client.models.IOBJModelCallback in project ImmersiveEngineering by BluSunrize.
the class ItemRendererIEOBJ method renderByItem.
@Override
public void renderByItem(ItemStack stack, float partialTicks) {
GlStateManager.enableCull();
partialTicks = mc().getRenderPartialTicks();
if (stack.getItem() instanceof IOBJModelCallback) {
IOBJModelCallback<ItemStack> callback = (IOBJModelCallback<ItemStack>) stack.getItem();
World w = IESmartObjModel.tempEntityStatic != null ? IESmartObjModel.tempEntityStatic.world : null;
IBakedModel model = mc().getRenderItem().getItemModelWithOverrides(stack, w, IESmartObjModel.tempEntityStatic);
if (model instanceof IESmartObjModel) {
GlStateManager.disableCull();
ItemStack shader = ItemStack.EMPTY;
ShaderCase sCase = null;
if (!stack.isEmpty() && stack.hasCapability(CapabilityShader.SHADER_CAPABILITY, null)) {
CapabilityShader.ShaderWrapper wrapper = stack.getCapability(CapabilityShader.SHADER_CAPABILITY, null);
if (wrapper != null) {
shader = wrapper.getShaderItem();
if (!shader.isEmpty() && shader.getItem() instanceof IShaderItem)
sCase = ((IShaderItem) shader.getItem()).getShaderCase(shader, stack, wrapper.getShaderType());
}
}
IESmartObjModel obj = (IESmartObjModel) model;
Map<String, Boolean> visible = new HashMap<>(((OBJModel.OBJState) obj.getState()).getVisibilityMap());
Tessellator tes = Tessellator.getInstance();
BufferBuilder bb = tes.getBuffer();
ItemCameraTransforms.TransformType transformType = obj.lastCameraTransform;
List<Pair<BakedQuad, ShaderLayer>> quads = new ArrayList<>();
for (String[] groups : callback.getSpecialGroups(stack, transformType, IESmartObjModel.tempEntityStatic)) {
GlStateManager.pushMatrix();
Matrix4 mat = callback.getTransformForGroups(stack, groups, transformType, mc().player, ItemRendererIEOBJ.mat, partialTicks);
GlStateManager.multMatrix(mat.toFloatBuffer(transform));
boolean wasLightmapEnabled, wasLightingEnabled;
{
GlStateManager.setActiveTexture(OpenGlHelper.lightmapTexUnit);
wasLightmapEnabled = GL11.glIsEnabled(GL11.GL_TEXTURE_2D);
GlStateManager.setActiveTexture(OpenGlHelper.defaultTexUnit);
wasLightingEnabled = GL11.glIsEnabled(GL11.GL_LIGHTING);
}
boolean bright = callback.areGroupsFullbright(stack, groups);
if (bright) {
GlStateManager.disableLighting();
ClientUtils.setLightmapDisabled(true);
}
renderQuadsForGroups(groups, callback, obj, quads, stack, sCase, shader, bb, tes, visible, partialTicks);
if (bright) {
if (wasLightingEnabled)
GlStateManager.enableLighting();
if (wasLightmapEnabled)
ClientUtils.setLightmapDisabled(false);
}
GlStateManager.popMatrix();
}
renderQuadsForGroups(visible.keySet().toArray(new String[0]), callback, obj, quads, stack, sCase, shader, bb, tes, visible, partialTicks);
GlStateManager.enableCull();
}
}
}
use of blusunrize.immersiveengineering.client.models.IOBJModelCallback in project Immersive-Tech by FerroO2000.
the class BlockITTileProvider method getExtendedState.
@Override
public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) {
state = super.getExtendedState(state, world, pos);
if (state instanceof IExtendedBlockState) {
IExtendedBlockState extended = (IExtendedBlockState) state;
TileEntity te = world.getTileEntity(pos);
if (te != null) {
if (te instanceof IConfigurableSides)
for (int i = 0; i < 6; i++) if (extended.getUnlistedNames().contains(IEProperties.SIDECONFIG[i]))
extended = extended.withProperty(IEProperties.SIDECONFIG[i], ((IConfigurableSides) te).getSideConfig(i));
if (te instanceof IAdvancedHasObjProperty)
extended = extended.withProperty(Properties.AnimationProperty, ((IAdvancedHasObjProperty) te).getOBJState());
else if (te instanceof IHasObjProperty)
extended = extended.withProperty(Properties.AnimationProperty, new OBJState(((IHasObjProperty) te).compileDisplayList(), true));
if (te instanceof IDynamicTexture)
extended = extended.withProperty(IEProperties.OBJ_TEXTURE_REMAP, ((IDynamicTexture) te).getTextureReplacements());
if (te instanceof IOBJModelCallback)
extended = extended.withProperty(IOBJModelCallback.PROPERTY, (IOBJModelCallback) te);
if (te.hasCapability(CapabilityShader.SHADER_CAPABILITY, null))
extended = extended.withProperty(CapabilityShader.BLOCKSTATE_PROPERTY, te.getCapability(CapabilityShader.SHADER_CAPABILITY, null));
if (te instanceof IPropertyPassthrough && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.TILEENTITY_PASSTHROUGH))
extended = extended.withProperty(IEProperties.TILEENTITY_PASSTHROUGH, te);
if (te instanceof TileEntityImmersiveConnectable && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.CONNECTIONS))
extended = extended.withProperty(IEProperties.CONNECTIONS, ((TileEntityImmersiveConnectable) te).genConnBlockstate());
}
state = extended;
}
return state;
}
use of blusunrize.immersiveengineering.client.models.IOBJModelCallback in project ImmersiveEngineering by BluSunrize.
the class BlockIETileProvider method getExtendedState.
@Override
public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) {
state = super.getExtendedState(state, world, pos);
if (state instanceof IExtendedBlockState) {
IExtendedBlockState extended = (IExtendedBlockState) state;
TileEntity te = world.getTileEntity(pos);
if (te != null) {
if (te instanceof IConfigurableSides)
for (int i = 0; i < 6; i++) if (extended.getUnlistedNames().contains(IEProperties.SIDECONFIG[i]))
extended = extended.withProperty(IEProperties.SIDECONFIG[i], ((IConfigurableSides) te).getSideConfig(i));
if (te instanceof IAdvancedHasObjProperty)
extended = extended.withProperty(Properties.AnimationProperty, ((IAdvancedHasObjProperty) te).getOBJState());
else if (te instanceof IHasObjProperty)
extended = extended.withProperty(Properties.AnimationProperty, new OBJState(((IHasObjProperty) te).compileDisplayList(), true));
if (te instanceof IDynamicTexture)
extended = extended.withProperty(IEProperties.OBJ_TEXTURE_REMAP, ((IDynamicTexture) te).getTextureReplacements());
if (te instanceof IOBJModelCallback)
extended = extended.withProperty(IOBJModelCallback.PROPERTY, (IOBJModelCallback) te);
if (te.hasCapability(CapabilityShader.SHADER_CAPABILITY, null))
extended = extended.withProperty(CapabilityShader.BLOCKSTATE_PROPERTY, te.getCapability(CapabilityShader.SHADER_CAPABILITY, null));
if (te instanceof IPropertyPassthrough && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.TILEENTITY_PASSTHROUGH))
extended = extended.withProperty(IEProperties.TILEENTITY_PASSTHROUGH, te);
if (te instanceof TileEntityImmersiveConnectable && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.CONNECTIONS))
extended = extended.withProperty(IEProperties.CONNECTIONS, ((TileEntityImmersiveConnectable) te).genConnBlockstate());
}
state = extended;
}
return state;
}
Aggregations