Package com.ngt.jopenmetaverse.shared.protocol.primitives

Examples of com.ngt.jopenmetaverse.shared.protocol.primitives.TextureEntryFace


    }

    // Draw the prim faces
    for (int j = 0; j < Faces.size(); j++)
    {
      TextureEntryFace teFace = Prim.Textures.GetFace(j);
      Face face = Faces.get(j);
      FaceData data = (FaceData)face.UserData;

      if (data == null)
        continue;

      if (teFace == null)
        continue;

      // Don't render transparent faces
      Color4 RGBA = teFace.getRGBA();

      if (data.TextureInfo.FullAlpha || RGBA.getA() <= 0.01f) continue;

      boolean switchedLightsOff = false;

      if (pass == RenderPass.Picking)
      {
        data.PickingID = pickingID;
        byte[] primNrBytes = new byte[2];
        Utils.uint16ToBytes(pickingID, primNrBytes, 0);
        //                    byte[] faceColor = new byte[] { primNrBytes[0], primNrBytes[1], (byte)j, (byte)255 };
        GL11.glColor4f( primNrBytes[0], primNrBytes[1], (byte)j, (byte)255);
      }
      else if (pass == RenderPass.Invisible)
      {
        if (!data.TextureInfo.IsInvisible) continue;
        HasInvisibleFaces = true;
      }
      else
      {
        //        System.out.println("Pass is Simple..");
        if (data.TextureInfo.IsInvisible)
        {
          System.out.println("Primitive is invisible.. so skipping texturing...");
          continue;
        }
        boolean belongToAlphaPass = (RGBA.getA() < 0.99f) || (data.TextureInfo.HasAlpha && !data.TextureInfo.IsMask);
        //TODO only for debugging
        if (belongToAlphaPass && pass != RenderPass.Alpha) continue;
        if (!belongToAlphaPass && pass == RenderPass.Alpha) continue;

        //        System.out.println("Going to Activate Texture");

        if (pass == RenderPass.Simple)
        {
          HasSimpleFaces = true;
        }
        else if (pass == RenderPass.Alpha)
        {
          HasAlphaFaces = true;
        }

        if (teFace.getFullbright())
        {
          GL11.glDisable(GL11.GL_LIGHTING );
          switchedLightsOff = true;
        }

        float shiny = 0f;
        switch (teFace.getShiny())
        {
        case High:
          shiny = 0.96f;
          break;

        case Medium:
          shiny = 0.64f;
          break;

        case Low:
          shiny = 0.24f;
          break;
        }

        if (shiny > 0f)
        {
          //TODO need to handle
          //                        scene.StartShiny();
        }
        GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, shiny);
        GL11.glColor4f(RGBA.getR(), RGBA.getG(), RGBA.getB(), RGBA.getA());

        //Optmized by keeping a instance buffer, as materialData is constant
        //        float[] materialData = new float[] { 0.5f, 0.5f, 0.5f, 1f };
        //        final FloatBuffer materialDataBuffer = ByteBuffer
        //            .allocateDirect(materialData.length*4).order(ByteOrder.nativeOrder()).asFloatBuffer();
        //        materialDataBuffer.put(materialData);
        materialDataBuffer.position(0);
        GL11.glMaterial(GL11.GL_FRONT, GL11.GL_SPECULAR, materialDataBuffer);

        //        System.out.println("Trying to Activate the Texture " + data.TextureInfo.TextureID
        //            + " --> "+ data.TextureInfo.TexturePointer);

        if (data.TextureInfo.TexturePointer == 0)
        {
          TextureInfo teInfo;
          if ((teInfo = scene.textureManager.getTextureInfo(teFace.getTextureID()))!=null)
          {
            data.TextureInfo = teInfo;
          }
        }

        if (data.TextureInfo.TexturePointer == 0)
        {
          System.out.println("Texture pointer is 0 .. requesting to download.." + teFace.getTextureID());
          GL11.glDisable(GL11.GL_TEXTURE_2D);
          if (!data.TextureInfo.FetchFailed)
          {                         
            scene.textureManager.requestDownloadTexture(new TextureLoadItem(data, this.Prim, teFace));
          }
          else
          {
            System.out.println("Texture Download failed for " + teFace.getTextureID());
          }
        }
        else
        {
          //          System.out.println("Texture pointer is not 0 ..");
View Full Code Here


      primMesher.MeshPrim(rprim, true, DetailLevel.High, DetailLevel.High, DetailLevel.Highest);
     
      Primitive prim = rprim.getBasePrim();
      for(int i =0;  i < rprim.Faces.size(); i ++)
    {
      TextureEntryFace tef = prim.Textures.GetFace(i);
      System.out.println(String.format("\t\tFace Index: %d, Texture ID: %s", i, tef.getTextureID()));
      textureManager.requestDownloadTexture(new TextureLoadItem((FaceData)rprim.Faces.get(i).UserData,
          prim, prim.Textures.GetFace(i)));
    }
     
    }
View Full Code Here

    // Calculate bounding volumes for each prim and adjust textures
    rprim.BoundingVolume = new BoundingVolume();
    for (int j = 0; j < rprim.Faces.size(); j++)
    {
      TextureEntryFace teFace = prim.Textures.GetFace(j);
      if (teFace == null) continue;

      Face face = rprim.Faces.get(j);
      FaceData data = new FaceData();
      data.TextureInfo.TextureID = teFace.getTextureID();
      data.BoundingVolume.CreateBoundingVolume(face, prim.Scale);
      rprim.BoundingVolume.AddVolume(data.BoundingVolume, prim.Scale);

      // With linear texture animation in effect, texture repeats and offset are ignored
      if ((TextureAnimMode.and(prim.TextureAnim.Flags, TextureAnimMode.ANIM_ON)) != 0
          && (TextureAnimMode.and(prim.TextureAnim.Flags, TextureAnimMode.ROTATE)) == 0
          && (prim.TextureAnim.Face == 255 || prim.TextureAnim.Face == j))
      {
        teFace.setRepeatU(1);
        teFace.setRepeatV(1);
        teFace.setOffsetU(0);
        teFace.setOffsetV(0);
      }

      // Need to adjust UV for spheres as they are sort of half-prim
      if (prim.PrimData.getProfileCurve() == ProfileCurve.HalfCircle)
      {
        teFace = (TextureEntryFace)teFace.clone();
        teFace.setRepeatV(teFace.getRepeatV() * 2);
        teFace.setOffsetV(teFace.getOffsetV() 0.5f);
      }

      // Sculpt UV vertically flipped compared to prims. Flip back
      if (prim.Sculpt != null && !prim.Sculpt.SculptTexture.equals(UUID.Zero)
          && prim.Sculpt.getType() != SculptType.Mesh)
      {
        teFace = (TextureEntryFace)teFace.clone();
        teFace.setRepeatV(teFace.getRepeatV() *  -1);
      }

      // Texture transform for this face
      TransformTexCoords(face.Vertices, face.Center, teFace, prim.Scale);

View Full Code Here

      for (int i = 0; i < Textures.length; i++)
      {
        if ((i == 0 || i == 5 || i == 6) && !Client.settings.CLIENT_IDENTIFICATION_TAG.equals(UUID.Zero))
        {
          TextureEntryFace face = te.CreateFace(i);
          face.setTextureID(Client.settings.CLIENT_IDENTIFICATION_TAG);
          JLogger.debug("Sending client identification tag: " + Client.settings.CLIENT_IDENTIFICATION_TAG);
        }
        else if (!Textures[i].TextureID.equals(UUID.Zero))
        {
          TextureEntryFace face = te.CreateFace(i);
          face.setTextureID(Textures[i].TextureID);
          JLogger.debug("Sending texture entry for " + AvatarTextureIndex.get(i) + " to " + Textures[i].TextureID);
        }
      }

      set.ObjectData.TextureEntry = te.GetBytes();
View Full Code Here

                }

                TextureEntry textureEntry = new TextureEntry(appearance.ObjectData.TextureEntry, 0,
                        appearance.ObjectData.TextureEntry.length);

                TextureEntryFace defaultTexture = textureEntry.DefaultTexture;
                TextureEntryFace[] faceTextures = textureEntry.FaceTextures;

//              Avatar av = simulator.ObjectsAvatars.Find((Avatar a) => { return a.ID == appearance.Sender.ID; });
                final Avatar[] tmpAvatar = new Avatar[]{null};
                simulator.ObjectsAvatars.foreach(new Action<Entry<Long, Avatar>>(){
View Full Code Here

                if (prim.Textures.FaceTextures != null)
                {
                    for (int i = 0; i < prim.Textures.FaceTextures.length; i++)
                    {
                        TextureEntryFace face = prim.Textures.FaceTextures[i];
                        //TODO need to verify following
                        if (face != null)
                            textureList.put(face.getTextureID(), textureList.get(face.getTextureID()));
                    }
                }
            }
        }
View Full Code Here

TOP

Related Classes of com.ngt.jopenmetaverse.shared.protocol.primitives.TextureEntryFace

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.