J’ai réussi à créer un ISmartItemModel mais je voudrais savoir comment faire l’équivalent de
| "display": { |
| "thirdperson": { |
| "rotation": [ -90, 0, 0 ], |
| "translation": [ 0, 1, -3 ], |
| "scale": [ 0.55, 0.55, 0.55 ] |
| }, |
| "firstperson": { |
| "rotation": [ 0, -135, 25 ], |
| "translation": [ 0, 4, 2 ], |
| "scale": [ 1.7, 1.7, 1.7 ] |
| } |
| } |
à partir de la class du model.
[EDIT] :
J’ai trouvé une piste mais j’ai un petit problème.
En implémentant IPerspectiveAwareModel à mon rendu, ça ajoute 2 fonctions dont public Pair handlePerspective(TransformType cameraTransformType) qui permet de définir la rotation, translation et l’échelle en fonction du point de vue (thirdperson, firstperson, …). J’ai donc mis ça :
| @Override |
| public Pair handlePerspective(TransformType cameraTransformType) |
| { |
| if(baseModel instanceof IPerspectiveAwareModel) |
| { |
| IPerspectiveAwareModel flexiModel = (IPerspectiveAwareModel)baseModel; |
| return flexiModel.handlePerspective(cameraTransformType); |
| } |
| |
| ItemTransformVec3f itemTransformVec3f = null; |
| switch (cameraTransformType) |
| { |
| case FIRST_PERSON: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().firstPerson; |
| case THIRD_PERSON: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().thirdPerson; |
| case GUI: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().gui; |
| case HEAD: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().head; |
| case GROUND: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().ground; |
| case FIXED: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().fixed; |
| default: |
| itemTransformVec3f = null; |
| } |
| return Pair.of(this, TRSRTransformation.getMatrix(itemTransformVec3f)); |
| |
| |
| } |
Cela fonctionne très bien sauf que on ne voit plus les modifications qu’apporte mon model, c’est comme si un avait l’item avec le rendu de base, sans mon model. Si quelqu’un sais pourquoi ça fait ça ou sais comment corriger ça, je suis preneur !
[EDIT 2] :
J’ai enfin trouvé comment faire :
| @Override |
| public Pair handlePerspective(TransformType cameraTransformType) |
| { |
| if(baseModel instanceof IPerspectiveAwareModel) |
| { |
| IPerspectiveAwareModel flexiModel = (IPerspectiveAwareModel)baseModel; |
| Pair pair = flexiModel.handlePerspective(cameraTransformType); |
| return pair.of(this, pair.getRight()); |
| } |
| |
| ItemTransformVec3f itemTransformVec3f; |
| switch (cameraTransformType) |
| { |
| case FIRST_PERSON: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().firstPerson; |
| break; |
| case THIRD_PERSON: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().thirdPerson; |
| break; |
| case GUI: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().gui; |
| break; |
| case HEAD: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().head; |
| break; |
| case GROUND: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().ground; |
| break; |
| case FIXED: |
| itemTransformVec3f = baseModel.getItemCameraTransforms().fixed; |
| break; |
| default: |
| itemTransformVec3f = null; |
| break; |
| } |
| if(itemTransformVec3f != null) |
| { |
| return Pair.of(this, TRSRTransformation.getMatrix(itemTransformVec3f)); |
| } |
| else |
| { |
| return Pair.of(this, null); |
| } |
| |
| } |
Enfin, j’ai un question qui vas surement être la dernière :
Comment afficher un item dans un GUI mais avec une taille différente (8 fois plus gros, juste à partir d’un ItemStack enregistré dans les paramètres du GUI) ?