GlRotatef



  • J'ai un petit problème avec mon bloc qui ne veut pas se rotate avec mon bloc directionnel.



  • Essaie de debugger les cases de ton switch *TileEntityLogPileSpecialRenderer#renderTileEntityTileLogPileAt *avec des System.out.println pour voir si c'est quand même appelé. Regarde aussi si tu as bien enregistré ta TileEntity dans ta méthode init avec cette ligne.
    [font=monospaceGameRegistry][font=monospace.][font=monospaceregisterTileEntity][font=monospace(][font=monospaceTileEntityTutorial][font=monospace.][font=monospaceclass][font=monospace,] [font=monospace"TileEntityTutorial"][font=monospace);]
    Sinon je sais pas, faudrait que je me penche + sur tes sources 🙂



  • elles sont appelé mes cases

    mes blocs se trouvent dans les blocs de laine bleu



  • Où est le problème en fait ? Je ne comprends pas, ton bloc est orientable (si je me fie au screen) ?



  • ba je n'arrive pas a le mettre correctement, le rotate ne veut pas s'appliquer
    j'ai essayé de nombreuse valeurs sans resultat dans le glRotatef.


  • Administrateurs

    Genre, mon message n'est pas partie.
    Ta fonction onBlockPlacedBy devait être comme ça :

    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
    {
    TileEntity tile = world.getTileEntity(x, y, z);
    if(tile instanceof TileLogPile)
    {
    int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
    ((TileLogPile)tile).setDirection((byte)direction);
    }
    }
    


  • elle est présente dans mon ma class de mon bloc…..


  • Administrateurs

    Ah non, ce n'est pas la même discussion. C'était elle où j'avais répondu : http://minecraftforgefrance.fr/showthread.php?tid=2740
    Pourquoi l'avoir passé en résolu si ce n'est pas le cas ?



  • Elle est resolut mais j'ai un autre problème :
    je n'arrive pas rotate mes blocs correctement
    mais le bloc directionnel fonctionne.

    les model sont pas aligné avec le bloc

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


  • Administrateurs

    Pourquoi tu as changé l'axe de rotation en fonction de la direction ? ça doit toujours être y.
    à quoi ressemble ton modèle sur techne ?



  • quel axe de rotation? celui de glRotatef ?


  • Administrateurs

    Tu ne devrais pas avoir de switch en fonction de la direction.
    Il devrait avoir juste un glRotate(90F * tile.getDirection(), 0.0F, 1.0F, 0.0F) pour tous les cas.



  • ça ne fonctionne pas 😕
    GL11.glRotatef(90F * tile.getDirection(), 0.0F, 1.0F, 0.0F);

    ↓↓↓↓↓↓↓↓↓↓


  • Modérateurs

    Après la rotation mais avant le rendu, ajoute glTranslatef(0,0,1); (essaie aussi avec glTranslatef(0,0,-1); )
    Et dis nous si ça marche

    Sent from my GT-I9000 using Tapatalk 2



  • ça ne change rien


  • Modérateurs

    Envoies ton code de rendu directement sur le forum entouré des balises [java][/java] (sans les * bien sur)

    Sent from my GT-I9000 using Tapatalk 2



  • en zip


  • Administrateurs

    TileEntityLogPileSpecialRenderer :

    private void renderTileEntityTileLogPileAt(TileLogPile tile, double x, double y, double z, float partialRenderTick)
    {
    GL11.glPushMatrix();
    GL11.glTranslated(x + 0.5D, y + 1.5D, z + 0.5D);
    GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
    GL11.glRotatef(90F * tile.getDirection(), 0.0F, 1.0F, 0.0F);
    this.bindTexture(logPileTexture);
    modelLogPile.renderAll();
    GL11.glPopMatrix();
    }
    

    Fonction renderAll dans la classe de ton modèle :

    public void renderAll()
    {
    Shape1.render(0.0625F);
    Shape2.render(0.0625F);
    Shape3.render(0.0625F);
    }
    

    Voila, ça fonctionnera mieux comme ça.


Log in to reply