Salut,
Je viens de programmer un petit programme qui créé le code C à ajouter pour ajouter un objet à une scene irrlicht.
Le programme n'est malheureusement pas compatible linux mais juste windows.
Voici l'exécutable : utilitaire.exe
J'espère que ce programme va pouvoir vous aider.
Gp2mv3
Dernière modification par gp2mv3 (20-08-2007 14:14:14)
Hors ligne
si tu fournis tes sources, il ya des chances qu'on puisse faire tourner ca sous linux
Hors ligne
c'est simple comme programme mais il utilise la bibliotheque windows donc je pense que ce n'est pas gagné mais bon voici la source :
main.c
#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(int argc, char *argv[]) { printf("Bienvenue dans l'utilitaire d'implantation des models 3D de RoM\n"); char nom[20], chemin[200], sortie[30000], sortie0[300], sortie1[300], texture[200], sortie2[300], sortie3[300]; char sortie4[300], Z[10], sortie5[300], sortie6[300], sortie7[300], sortie8[300], sortie10[300], scale[10], X[10], Y[10], sortie9[300]; while(1) { printf("\nVeuillez entrer le nom du model : "); scanf("%s", nom); printf("Veuillez entrer le chemin du model 3D : "); scanf("%s", chemin); printf("Veuillez entrer le chemin de la texture : "); scanf("%s", texture); printf("Veuillez entrer la position X :"); scanf("%s", X); printf("Veuillez entrer la position Y :"); scanf("%s", Y); printf("Veuillez entrer la position Z :"); scanf("%s", Z); printf("Veuillez entrer la valeur du scale (1 par defaut):"); scanf("%s", scale); printf("\nVoici le code a recopier :\n"); sprintf(sortie0, "// %s\n",nom); sprintf(sortie1, "IAnimatedMesh* %s = smgr->getMesh(\"%s\");\n",nom, chemin); sprintf(sortie2, "IAnimatedMeshSceneNode* n%s = smgr->addAnimatedMeshSceneNode(%s);\n", nom, nom); sprintf(sortie3, "n%s->setPosition(core::vector3df(%s,%s,%s));\n", nom, X, Z, Y); sprintf(sortie4, "n%s->setMaterialTexture( 0, driver->getTexture(\"%s\"));\n", nom, texture); sprintf(sortie5, "n%s->setMaterialFlag(EMF_LIGHTING, true);\n", nom); sprintf(sortie6, "n%s->setScale(core::vector3df(%s,%s,%s));\n", nom, scale, scale, scale); sprintf(sortie7, "n%s->setRotation(core::vector3df(0,0,0));\n", nom); sprintf(sortie8, "scene::ITriangleSelector* %sselect = smgr->createOctTreeTriangleSelector(%s->getMesh(0),n%s, 32);\n", nom, nom, nom); sprintf(sortie9, "//smgr->addLightSceneNode (0, core::vector3df(%s,%s,%s), video::SColorf(0.5,0.5,0.35,0.5f), 50.0f);", X, Z, Y); sprintf(sortie10, "metaselect->addTriangleSelector(%sselect);", nom); sprintf(sortie, " %s %s %s %s %s %s %s %s %s %s\n\n //Le metaselecteur\n %s\n\n", sortie0, sortie1, sortie2, sortie3, sortie4, sortie5, sortie6, sortie7, sortie8, sortie9, sortie10); printf("%s\n", sortie); //Copie dans le press papier HANDLE hGlobal; hGlobal = GlobalAlloc(GHND | GMEM_SHARE, sizeof(sortie)+1); char *pointeur; pointeur = (char *)GlobalLock(hGlobal); strcpy(pointeur, sortie); GlobalUnlock(hGlobal); OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_TEXT, hGlobal); CloseClipboard(); printf("Code copie dans le presse papier !\n"); printf("*********************************************************************\n\n"); } return 0; }
Bien amicalement.
Gp2mv3
Hors ligne
tres sympa a toi
a mon avis (rapide) le seul souci c'est le collage dans le presse papier qui utilise l'api windows, (on peut coller dans un fichier au pire) le reste doit etre portable,
Hors ligne
Je me dis la même chose mais je trouve sa très pratique le collage dans le presse papier.
Gp2mv3
Hors ligne
bah sous linux il suffit de selectionner pour copier et de faire Mouse 3 pour coller, donc on est pas a un presse papier pret
Hors ligne
bof, entre un presse papier et les flux c++, je pense que ces derniers sont même plus faciles...
Hors ligne
Pour info, j'ai fais ce petit programme pour insérer des objets dans mon jeu donc si il n'est pas très adapté à vos besoins c'est normal.
Vous pouvez bien sur le modifier à vos besoins.
Gp2mv3
Dernière modification par gp2mv3 (22-08-2007 18:00:33)
Hors ligne