Java 类net.minecraftforge.common.model.IModelPart 实例源码

项目:CustomWorldGen    文件:B3DLoader.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    // TODO make more use of Optional
    if(!part.isPresent())
    {
        if(parent != null)
        {
            return parent.apply(part);
        }
        return Optional.absent();
    }
    if(!(part.get() instanceof NodeJoint))
    {
        return Optional.absent();
    }
    Node<?> node = ((NodeJoint)part.get()).getNode();
    TRSRTransformation nodeTransform;
    if(progress < 1e-5 || frame == nextFrame)
    {
        nodeTransform = getNodeMatrix(node, frame);
    }
    else if(progress > 1 - 1e-5)
    {
        nodeTransform = getNodeMatrix(node, nextFrame);
    }
    else
    {
        nodeTransform = getNodeMatrix(node, frame);
        nodeTransform = nodeTransform.slerp(getNodeMatrix(node, nextFrame), progress);
    }
    if(parent != null && node.getParent() == null)
    {
        return Optional.of(parent.apply(part).or(TRSRTransformation.identity()).compose(nodeTransform));
    }
    return Optional.of(nodeTransform);
}
项目:CustomWorldGen    文件:Clips.java   
/**
 * IModelState wrapper for a Clip, sampled at specified time.
 */
public static Pair<IModelState, Iterable<Event>> apply(final IClip clip, final float lastPollTime, final float time)
{
    return Pair.<IModelState, Iterable<Event>>of(new IModelState()
    {
        public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
        {
            if(!part.isPresent() || !(part.get() instanceof IJoint))
            {
                return Optional.absent();
            }
            IJoint joint = (IJoint)part.get();
            // TODO: Cache clip application?
            TRSRTransformation jointTransform = clip.apply(joint).apply(time).compose(joint.getInvBindPose());
            Optional<? extends IJoint> parent = joint.getParent();
            while(parent.isPresent())
            {
                TRSRTransformation parentTransform = clip.apply(parent.get()).apply(time);
                jointTransform = parentTransform.compose(jointTransform);
                parent = parent.get().getParent();
            }
            return Optional.of(jointTransform);
        }
    }, clip.pastEvents(lastPollTime, time));
}
项目:BetterWithAddons    文件:ModelToolShardInner.java   
@Override
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();
    Optional<TRSRTransformation> transform = state.apply(Optional.<IModelPart>absent());
    for(int i = 0; i < textures.size(); i++)
    {
        ResourceLocation tex = textures.get(i);
        if(tex.toString().equals("minecraft:missingno"))
            continue;
        TextureAtlasSprite sprite = bakedTextureGetter.apply(tex);

        String breakLocation = new ResourceLocation(Reference.MOD_ID,"items/breakmask").toString();
        TextureAtlasSprite breakTemplate = Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(breakLocation);

        builder.addAll(getQuadsForSprite(i, breakTemplate, sprite, format, transform));
        //builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, breakTemplate, sprite, NORTH_Z + Z_OFFSET * i, EnumFacing.NORTH, 0xffffffff));
       // builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, breakTemplate, sprite, SOUTH_Z - Z_OFFSET * i, EnumFacing.SOUTH, 0xffffffff));
    }
    TextureAtlasSprite particle = bakedTextureGetter.apply(textures.isEmpty() ? new ResourceLocation("missingno") : textures.get(0));
    ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> map = IPerspectiveAwareModel.MapWrapper.getTransforms(state);
    return new BakedItemModel(builder.build(), particle, map, null);
}
项目:Qbar    文件:VisibilityModelState.java   
@Override
public Optional<TRSRTransformation> apply(final Optional<? extends IModelPart> part)
{
    if (part.isPresent())
    {
        final UnmodifiableIterator<String> parts = Models.getParts(part.get());
        if (parts.hasNext())
        {
            final String name = parts.next();
            if (!parts.hasNext() && this.blacklist && this.parts.contains(name)
                    || !this.blacklist && !this.parts.contains(name))
                return this.value;
        }
    }
    return Optional.empty();
}
项目:LP2    文件:BlockGenericPipe.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
      {
          if(part.isPresent())
          {
              // This whole thing is subject to change, but should do for now.
              UnmodifiableIterator<String> parts = Models.getParts(part.get());
              if(parts.hasNext())
              {
                  String name = parts.next();
                  // only interested in the root level
                  if(!parts.hasNext() && hidden.contains(name))
                  {
                      return value;
                  }
              }
          }
          return Optional.absent();
      }
项目:Extra-Food    文件:NBTFoodModel.java   
@Override
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
    ImmutableMap<ItemCameraTransforms.TransformType, TRSRTransformation> transformMap = IPerspectiveAwareModel.MapWrapper.getTransforms(state);
    TRSRTransformation transform = state.apply(Optional.<IModelPart>absent()).or(TRSRTransformation.identity());

    TextureAtlasSprite base = bakedTextureGetter.apply(new ResourceLocation(nbtFood.defualtIcon));
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();

    ImmutableList.Builder<ResourceLocation> objectBuilder = ImmutableList.builder();
    objectBuilder.add(new ResourceLocation(nbtFood.defualtIcon));
    for (String a : nbtFoodAddivites) {
        try {
            ResourceLocation r = new ResourceLocation(nbtFood.additives.get(a));
            objectBuilder.add(r);
        }
        catch (NullPointerException e) {

        }
    }

    IBakedModel model = new ItemLayerModel(objectBuilder.build()).bake(state, format, bakedTextureGetter);
    builder.addAll(model.getQuads(null, null, 0));

    return new BakedNBTFoodModel(this, builder.build(), base, format, transformMap);
}
项目:CustomWorldGen    文件:MultiModelState.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    Optional<TRSRTransformation> normal = state.apply(part);
    Optional<TRSRTransformation> multi = state.apply(Optional.of(new PartPart(model, index, part)));
    if(normal.isPresent() && multi.isPresent())
    {
        return Optional.of(normal.get().compose(multi.get()));
    }
    return normal.or(multi);
}
项目:CustomWorldGen    文件:ModelStateComposition.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    Optional<TRSRTransformation> f = first.apply(part), s = second.apply(part);
    if(f.isPresent() && s.isPresent())
    {
        return Optional.of(f.get().compose(s.get()));
    }
    return f.or(s);
}
项目:CustomWorldGen    文件:ItemLayerModel.java   
public IBakedModel bake(IModelState state, final VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter)
{
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();
    Optional<TRSRTransformation> transform = state.apply(Optional.<IModelPart>absent());
    for(int i = 0; i < textures.size(); i++)
    {
        TextureAtlasSprite sprite = bakedTextureGetter.apply(textures.get(i));
        builder.addAll(getQuadsForSprite(i, sprite, format, transform));
    }
    TextureAtlasSprite particle = bakedTextureGetter.apply(textures.isEmpty() ? new ResourceLocation("missingno") : textures.get(0));
    ImmutableMap<TransformType, TRSRTransformation> map = IPerspectiveAwareModel.MapWrapper.getTransforms(state);
    return new BakedItemModel(builder.build(), particle, map, overrides, null);
}
项目:CustomWorldGen    文件:SimpleModelState.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    if(!part.isPresent())
    {
        return def;
    }
    if(!map.containsKey(part.get()))
    {
        return Optional.absent();
    }
    return Optional.fromNullable(map.get(part.get()));
}
项目:Qbar    文件:CompositeModelState.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    Optional<TRSRTransformation> f = first.apply(part), s = second.apply(part);
    if (f.isPresent() && s.isPresent())
        return Optional.of(f.get().compose(s.get()));
    return f.isPresent() ? f : s;
}
项目:CodeChickenLib    文件:CCModelState.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part) {
    if (!part.isPresent() || !(part.get() instanceof TransformType) || !map.containsKey(part.get())) {
        return defaultTransform;
    }
    return Optional.ofNullable(map.get(part.get()));
}
项目:MCAnm    文件:ModelLoader.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part) {
    if (!part.isPresent()) {
        return Optional.absent();
    }
    IModelPart modelPart = part.get();
    if (modelPart instanceof Bone) {
        return getTransformForBone((Bone) modelPart);
    }
    if (modelPart instanceof TransformType) {
        return getTransformForView((TransformType) modelPart);
    }
    return Optional.absent();
}
项目:OpenModsLib    文件:BakedEvalModel.java   
@Override
public IBakedModel load(final Map<String, Float> key) throws Exception {
    final IModelState clipTransform = part -> {
        if (!part.isPresent()) return Optional.empty();

        final IModelPart maybeJoint = part.get();
        if (!(maybeJoint instanceof IJoint)) return Optional.empty();

        final IJoint joint = (IJoint)part.get();
        return Optional.of(evaluator.evaluate(joint, key));
    };
    return bakeModelWithTransform(clipTransform);
}
项目:pnc-repressurized    文件:TintedOBJModel.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    if (parent != null) return parent.apply(part);
    return Optional.empty();
}
项目:CustomWorldGen    文件:ForgeHooksClient.java   
@SuppressWarnings("deprecation")
public static Optional<TRSRTransformation> applyTransform(net.minecraft.client.renderer.block.model.ItemTransformVec3f transform, Optional<? extends IModelPart> part)
{
    if(part.isPresent()) return Optional.absent();
    return Optional.of(TRSRTransformation.blockCenterToCorner(new TRSRTransformation(transform)));
}
项目:CustomWorldGen    文件:ForgeHooksClient.java   
public static Optional<TRSRTransformation> applyTransform(Matrix4f matrix, Optional<? extends IModelPart> part)
{
    if(part.isPresent()) return Optional.absent();
    return Optional.of(new TRSRTransformation(matrix));
}
项目:CustomWorldGen    文件:MultiModelState.java   
public PartPart(IModel model, int index, Optional<? extends IModelPart> part)
{
    this.model = model;
    this.index = index;
    this.part = part;
}
项目:CustomWorldGen    文件:OBJModel.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    if (parent != null) return parent.apply(part);
    return Optional.absent();
}
项目:CustomWorldGen    文件:ModelDynBucket.java   
@Override
public IBakedModel bake(IModelState state, VertexFormat format,
                                Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter)
{

    ImmutableMap<TransformType, TRSRTransformation> transformMap = IPerspectiveAwareModel.MapWrapper.getTransforms(state);

    // if the fluid is a gas wi manipulate the initial state to be rotated 180? to turn it upside down
    if (flipGas && fluid != null && fluid.isGaseous())
    {
        state = new ModelStateComposition(state, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(null, new Quat4f(0, 0, 1, 0), null, null)));
    }

    TRSRTransformation transform = state.apply(Optional.<IModelPart>absent()).or(TRSRTransformation.identity());
    TextureAtlasSprite fluidSprite = null;
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();

    if(fluid != null) {
        fluidSprite = bakedTextureGetter.apply(fluid.getStill());
    }

    if (baseLocation != null)
    {
        // build base (insidest)
        IBakedModel model = (new ItemLayerModel(ImmutableList.of(baseLocation))).bake(state, format, bakedTextureGetter);
        builder.addAll(model.getQuads(null, null, 0));
    }
    if (liquidLocation != null && fluidSprite != null)
    {
        TextureAtlasSprite liquid = bakedTextureGetter.apply(liquidLocation);
        // build liquid layer (inside)
        builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, liquid, fluidSprite, NORTH_Z_FLUID, EnumFacing.NORTH, fluid.getColor()));
        builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, liquid, fluidSprite, SOUTH_Z_FLUID, EnumFacing.SOUTH, fluid.getColor()));
    }
    if (coverLocation != null)
    {
        // cover (the actual item around the other two)
        TextureAtlasSprite base = bakedTextureGetter.apply(coverLocation);
        builder.add(ItemTextureQuadConverter.genQuad(format, transform, 0, 0, 16, 16, NORTH_Z_BASE, base, EnumFacing.NORTH, 0xffffffff));
        builder.add(ItemTextureQuadConverter.genQuad(format, transform, 0, 0, 16, 16, SOUTH_Z_BASE, base, EnumFacing.SOUTH, 0xffffffff));
    }


    return new BakedDynBucket(this, builder.build(), fluidSprite, format, Maps.immutableEnumMap(transformMap), Maps.<String, IBakedModel>newHashMap());
}
项目:CustomWorldGen    文件:MapModelState.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    if(!part.isPresent() || !map.containsKey(part.get())) return def.apply(part);
    return map.get(part.get()).apply(Optional.<IModelPart>absent());
}
项目:CustomWorldGen    文件:ModelFluid.java   
public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter)
{
    ImmutableMap<TransformType, TRSRTransformation> map = IPerspectiveAwareModel.MapWrapper.getTransforms(state);
    return new BakedFluid(state.apply(Optional.<IModelPart>absent()), map, format, fluid.getColor(), bakedTextureGetter.apply(fluid.getStill()), bakedTextureGetter.apply(fluid.getFlowing()), fluid.isGaseous(), Optional.<IExtendedBlockState>absent());
}
项目:CustomWorldGen    文件:SimpleModelState.java   
public SimpleModelState(ImmutableMap<? extends IModelPart, TRSRTransformation> map)
{
    this(map, Optional.<TRSRTransformation>absent());
}
项目:CustomWorldGen    文件:SimpleModelState.java   
public SimpleModelState(ImmutableMap<? extends IModelPart, TRSRTransformation> map, Optional<TRSRTransformation> def)
{
    this.map = map;
    this.def = def;
}
项目:Qbar    文件:QBarOBJState.java   
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
{
    if (parent != null)
        return parent.apply(part);
    return Optional.empty();
}
项目:taam    文件:OBJModel.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part)
      {
          if (this.parent != null) return parent.apply(part);
          return Optional.absent();
      }
项目:Extra-Food    文件:OBJModel.java   
public com.google.common.base.Optional<TRSRTransformation> apply(com.google.common.base.Optional<? extends IModelPart> part)
{
    if (parent != null) return parent.apply(part);
    return com.google.common.base.Optional.absent();
}
项目:Extra-Food    文件:ModelDynGlassbottle.java   
@Override
public IBakedModel bake(IModelState state, VertexFormat format,
                        Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter)
{

    ImmutableMap<TransformType, TRSRTransformation> transformMap = IPerspectiveAwareModel.MapWrapper.getTransforms(state);

    // if the fluid is a gas wi manipulate the initial state to be rotated 180? to turn it upside down
    if (flipGas && fluid != null && fluid.isGaseous())
    {
        state = new ModelStateComposition(state, TRSRTransformation.blockCenterToCorner(new TRSRTransformation(null, new Quat4f(0, 0, 1, 0), null, null)));
    }

    TRSRTransformation transform = state.apply(Optional.<IModelPart>absent()).or(TRSRTransformation.identity());
    TextureAtlasSprite fluidSprite = null;
    ImmutableList.Builder<BakedQuad> builder = ImmutableList.builder();

    if(fluid != null) {
        fluidSprite = bakedTextureGetter.apply(fluid.getStill());
    }

    if (baseLocation != null)
    {
        // build base (insidest)
        IBakedModel model = (new ItemLayerModel(ImmutableList.of(baseLocation))).bake(state, format, bakedTextureGetter);
        builder.addAll(model.getQuads(null, null, 0));
    }
    if (liquidLocation != null && fluidSprite != null)
    {
        TextureAtlasSprite liquid = bakedTextureGetter.apply(liquidLocation);
        // build liquid layer (inside)
        builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, liquid, fluidSprite, NORTH_Z_FLUID, EnumFacing.NORTH, fluid.getColor()));
        builder.addAll(ItemTextureQuadConverter.convertTexture(format, transform, liquid, fluidSprite, SOUTH_Z_FLUID, EnumFacing.SOUTH, fluid.getColor()));
    }
    if (coverLocation != null)
    {
        // cover (the actual item around the other two)
        TextureAtlasSprite base = bakedTextureGetter.apply(coverLocation);
        builder.add(ItemTextureQuadConverter.genQuad(format, transform, 0, 0, 16, 16, NORTH_Z_BASE, base, EnumFacing.NORTH, 0xffffffff));
        builder.add(ItemTextureQuadConverter.genQuad(format, transform, 0, 0, 16, 16, SOUTH_Z_BASE, base, EnumFacing.SOUTH, 0xffffffff));
    }


    return new BakedDynBucketz(this, builder.build(), fluidSprite, format, Maps.immutableEnumMap(transformMap), Maps.<String, IBakedModel>newHashMap());
}
项目:EnderIO    文件:UVLock.java   
@Override
public Optional<TRSRTransformation> apply(Optional<? extends IModelPart> part) {
  return parent.apply(part);
}