use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class BlockHighlightRenderHandler method drawSkinnableBlockHelper.
private void drawSkinnableBlockHelper(World world, int x, int y, int z, int side, EntityPlayer player, float partialTicks, ISkinPointer skinPointer) {
// int meta = world.getBlockMetadata(x, y, z);
// Rectangle3D[][][] blockGrid;
Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer, false);
if (skin != null) {
// blockGrid = skin.getParts().get(0).getBlockGrid();
} else {
return;
}
double xOff = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks;
double yOff = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks;
double zOff = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks;
float f1 = 0.002F;
float scale = 0.0625F;
ForgeDirection dir = UtilPlayer.getDirectionSide(player).getOpposite();
for (int ix = 0; ix < 3; ix++) {
for (int iy = 0; iy < 3; iy++) {
for (int iz = 0; iz < 3; iz++) {
float[] bounds = TileEntitySkinnable.getBlockBounds(skin, -ix + 2, iy, iz, dir);
if (bounds != null) {
double minX = bounds[0];
double minY = bounds[1];
double minZ = bounds[2];
double maxX = bounds[3];
double maxY = bounds[4];
double maxZ = bounds[5];
AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(minX, minY, minZ, maxX, maxY, maxZ);
aabb.offset(-xOff - 1, -yOff, -zOff - 1);
aabb.offset(dir.offsetX * -1, 0, dir.offsetZ * -1);
aabb.offset(x, y, z);
aabb.offset(ix, iy, iz);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F);
if (!world.isAirBlock(x + ix - 1 - dir.offsetX, y + iy, z + iz - 1 - dir.offsetZ)) {
GL11.glColor4f(1.0F, 0.0F, 0.0F, 0.75F);
}
GL11.glLineWidth(1F);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDepthMask(false);
GL11.glDisable(GL11.GL_DEPTH_TEST);
RenderGlobal.drawOutlinedBoundingBox(aabb.contract(f1, f1, f1), -1);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_BLEND);
}
}
}
}
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class ClientSkinCache method getModelCount.
public int getModelCount() {
int count = 0;
synchronized (skinIDMap) {
Object[] keySet = skinIDMap.getKeySet().toArray();
for (int i = 0; i < keySet.length; i++) {
ISkinIdentifier key = (ISkinIdentifier) keySet[i];
Skin skin = skinIDMap.getQuiet(key);
if (skin != null) {
count += skin.getModelCount();
}
}
}
return count;
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class ClientSkinCache method clearCache.
public void clearCache() {
synchronized (skinIDMap) {
Object[] keySet = skinIDMap.getKeySet().toArray();
for (int i = 0; i < keySet.length; i++) {
ISkinIdentifier key = (ISkinIdentifier) keySet[i];
Skin customArmourItemData = skinIDMap.get(key);
skinIDMap.remove(key);
customArmourItemData.cleanUpDisplayLists();
}
}
synchronized (requestedSkinIDs) {
requestedSkinIDs.clear();
}
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class ItemStackRenderHelper method renderSkinWithoutHelper.
public static void renderSkinWithoutHelper(ISkinPointer skinPointer, boolean doLodLoading) {
Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer);
if (skin == null) {
return;
}
float scale = 1F / 16F;
for (int i = 0; i < skin.getParts().size(); i++) {
GL11.glPushMatrix();
SkinPart skinPart = skin.getParts().get(i);
IPoint3D offset = skinPart.getPartType().getOffset();
GL11.glTranslated(offset.getX() * scale, (offset.getY() + 1) * scale, offset.getZ() * scale);
SkinPartRenderer.INSTANCE.renderPart(skinPart, 0.0625F, skinPointer.getSkinDye(), null, doLodLoading);
GL11.glPopMatrix();
}
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class ModelRendererAttachment method render.
@Override
public void render(float scale) {
if (ClientProxy.getSkinRenderType() != SkinRenderType.MODEL_ATTACHMENT) {
return;
}
mc.mcProfiler.startSection("armourers player render");
SkinModelRenderer modelRenderer = SkinModelRenderer.INSTANCE;
EntityPlayer player = modelRenderer.targetPlayer;
if (player == null) {
mc.mcProfiler.endSection();
return;
}
if (player instanceof MannequinFakePlayer) {
mc.mcProfiler.endSection();
return;
}
double distance = Minecraft.getMinecraft().thePlayer.getDistance(player.posX, player.posY, player.posZ);
if (distance > ConfigHandlerClient.maxSkinRenderDistance) {
return;
}
EquipmentWardrobeData ewd = ClientProxy.equipmentWardrobeHandler.getEquipmentWardrobeData(new PlayerPointer(player));
byte[] extraColours = null;
if (ewd != null) {
Color skinColour = new Color(ewd.skinColour);
Color hairColour = new Color(ewd.hairColour);
extraColours = new byte[] { (byte) skinColour.getRed(), (byte) skinColour.getGreen(), (byte) skinColour.getBlue(), (byte) hairColour.getRed(), (byte) hairColour.getGreen(), (byte) hairColour.getBlue() };
}
for (int skinIndex = 0; skinIndex < ExPropsPlayerSkinData.MAX_SLOTS_PER_SKIN_TYPE; skinIndex++) {
Skin data = modelRenderer.getPlayerCustomArmour(player, skinType, skinIndex);
if (data == null) {
continue;
}
ISkinDye skinDye = modelRenderer.getPlayerDyeData(player, skinType, skinIndex);
MovementType movmentType = MovementType.valueOf(SkinProperties.PROP_WINGS_MOVMENT_TYPE.getValue(data.getProperties()));
int size = data.getParts().size();
for (int i = 0; i < size; i++) {
SkinPart partData = data.getParts().get(i);
if (partData.getPartType() == skinPart) {
GL11.glPushMatrix();
if (skinType == SkinTypeRegistry.skinLegs && skinPart.getRegistryName().equals("armourers:legs.skirt")) {
GL11.glTranslatef(0, 12 * scale, 0);
if (player.isSneaking()) {
GL11.glRotatef(-30, 1, 0, 0);
GL11.glTranslatef(0, -1.25F * scale, -2F * scale);
}
if (player.isRiding()) {
GL11.glRotated(-70, 1F, 0F, 0F);
}
}
if (skinType == SkinTypeRegistry.skinWings) {
GL11.glTranslated(0, 0, scale * 2);
double angle = SkinUtils.getFlapAngleForWings(player, data);
Point3D point = new Point3D(0, 0, 0);
ForgeDirection axis = ForgeDirection.DOWN;
if (partData.getMarkerCount() > 0) {
point = partData.getMarker(0);
axis = partData.getMarkerSide(0);
}
GL11.glTranslated(scale * 0.5F, scale * 0.5F, scale * 0.5F);
GL11.glTranslated(scale * point.getX(), scale * point.getY(), scale * point.getZ());
if (skinPart.getRegistryName().equals("armourers:wings.rightWing")) {
angle = -angle;
}
switch(axis) {
case UP:
GL11.glRotated(angle, 0, 1, 0);
break;
case DOWN:
GL11.glRotated(angle, 0, -1, 0);
break;
case SOUTH:
GL11.glRotated(angle, 0, 0, -1);
break;
case NORTH:
GL11.glRotated(angle, 0, 0, 1);
break;
case EAST:
GL11.glRotated(angle, 1, 0, 0);
break;
case WEST:
GL11.glRotated(angle, -1, 0, 0);
break;
case UNKNOWN:
break;
}
GL11.glTranslated(scale * -point.getX(), scale * -point.getY(), scale * -point.getZ());
GL11.glTranslated(scale * -0.5F, scale * -0.5F, scale * -0.5F);
}
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glEnable(GL11.GL_BLEND);
SkinPartRenderer.INSTANCE.renderPart(partData, scale, skinDye, extraColours, distance, true);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
break;
}
}
}
if (ClientProxy.useSafeTextureRender()) {
if (player instanceof AbstractClientPlayer) {
AbstractClientPlayer clientPlayer = (AbstractClientPlayer) player;
Minecraft.getMinecraft().renderEngine.bindTexture(clientPlayer.getLocationSkin());
}
}
mc.mcProfiler.endSection();
}
Aggregations