1 /////////////////////////////////////////////////
2 //Este archivo forma parte del Revolution Engine.
4 /////////////////////////////////////////////////
6 El Revolution Engine se proporciona "Tal Cual", es decir, no se ofrece ningun tipo de garantia
7 sobre su correcto funcionamiento. El autor no se hace responsable del uso que se haga de este
8 software ni de modificaciones o variaciones del mismo, ni de las consecuencias de dicho uso.
9 No obstante se intentara dar apoyo a cualquier duda o pregunta que se tenga sobre el, sobre su
10 uso o sobre su funcionamiento, pero sin ofrecer garantias de ello.
11 Una vez has obtenido una copia de la totalidad o parte de este software, podras redistribuirlo
12 siempre y cuando se cite al autor original del codigo (technik) y se añada una nota con la
13 procedencia original del codigo (www.revolutiongameengine.blogspot.com a fecha de 24 de julio de 2008).
14 Puedes modificar este codigo tanto como quieras siempre que las modificaciones sean notificadas al autor
15 y/o su resultado sea un codigo fuente publico, sobre el cual el autor del codigo original (este) tendra
16 derecho de copia, modificacion, inclusion en proyectos, o cualquier uso de forma totalmente libre y gratuita.
17 No se obliga a nadie a pagar por este software.
18 Cualquier redistribucion del software debe llevar al menos una copia de esta licencia.
19 El autor se reserva el derecho a modificar esta licencia en el futuro tanto como crea conveniente.
20 Se permite el uso de la totalidad o parte de este software en cualquier proyecto no comercial siempre que
21 se respete y conserve esta licencia.
22 Para el uso de la totalidad o parte de este software para cualquier fin comercial o que requiera de otra
23 licencia distinta sera necesario ponerse en contacto con el autor del software (technik) cuya autorizacion
24 expresa es indispensable.
27 /***Demo de Carga de Modelos***/
28 //En esta demo se carga un Modelo Estatico, un puntero, y se usa una camara.
29 //La camara se mueve con el puntero y la cruceta.
36 #include <wiiuse/wpad.h>//Hasta aqui los archivos tipicos que solemos incluir
38 #include "REV.h"//Esto lo incluimos para usar el Engine
42 VIDEO_Init();//Iniciamos Libogc
43 WPAD_Init();//Iniciamos Wpad, para el mando.
44 REV_Init();//Iniciamos el Revolution Engine
46 WPAD_SetDataFormat(0, WPAD_FMT_BTNS_ACC_IR
);//Codigo para el Wiimote, no se explicara aqui
48 f32 posx
= 320, posy
= 240;
50 ROOT
* mRoot
= NewRoot();//Creamos una raiz.
52 MESH
* WiiMesh
= AbrirMesh("wii.rms");//Cargamos el modelo
53 MATERIAL
* WiiMat
= MatFromImg("wiitextcm7.png", Blanco
, 32);//Cargamos su textura
54 OBJECT
* WiiObj
= NewObj(WiiMesh
,WiiMat
, (Vector
){0.0, 0.0, 31.0}, (Vector
){0.0, 0.0, 0.0}, 9);
55 //Ni los modelos ni las texturas valen de nada si no estan enlazados y se les concede
56 //una posicion en el espacio. Esta es la funcion de un OBJECT, tambien conocidos como Entitys
57 //en algunos sitios. Creamos el object con nuestro MESH (WiiMesh), nuestro MATERIAL (WiiMat)
58 //y un par de vectores que indican posicion y orientacion en el espacio. El ultimo parametro es
59 //un identificador, aun no es util, podeis poner un numero entero al azar.
60 AddObj(mRoot
, WiiObj
);
61 //Con AddObj añadimos un objeto nuevo a la raiz, ningun objeto que creemos aparecera en escena
62 //hasta que lo añadamos a la raiz.
64 IMAGE
* Puntero
= AbrirImagen("puntero.png");
65 PANEL
* panel1
= NewPanel(Puntero
, 220, 240, 3, 1);
66 AddPnl(mRoot
, panel1
);
67 //Esto ya se vio en la demo de panels, es un buen ejemplo
68 //de como funciona el engine, creas las cosas, las añades, y listo.
70 CAMERA mCamera
;//Creamos una camara
71 mCamera
.cam
= (Vector
){0.0, -100.0, 31.0};
72 mCamera
.look
= (Vector
){0.0, -99.0, 31.0};
73 mCamera
.up
= (Vector
){0.0, 0.0, 1.0};
74 //Damos valores a sus 3 vectores base
75 //Asi definimos su posicion y orientacion iniciales.
77 while(1) {//Ahora el bucle principal.
81 if (WPAD_ButtonsDown(0) & WPAD_BUTTON_HOME
) exit(0);//Salir si pulsamos home
83 wiimote
= WPAD_Data(0);
86 posx
= wiimote
->ir
.x
; //asignamos la posicion x
87 posy
= wiimote
->ir
.y
; //asignamos la posicion y
90 }//Hasta aqui es como en la demo de panels
92 ////////////Actualizamos la posicion de la camara
94 MoveCam(&mCamera
, ((300.0 - (f32
)posy
)/180.0), 0.0, 0.0);
96 MoveCam(&mCamera
, ((180.0 - (f32
)posy
)/180.0), 0.0, 0.0);
98 RotateCamByAxis(&mCamera
, 0.0, 0.0, 1.0, ((200.0 - (f32
)posx
)/2000.0));
100 RotateCamByAxis(&mCamera
, 0.0, 0.0, 1.0, ((440.0 - (f32
)posx
)/2000.0));
101 if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_UP
)
102 MoveCam(&mCamera
, 0.0, 0.0, 1.0);
103 if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_DOWN
)
104 MoveCam(&mCamera
, 0.0, 0.0, -1.0);
105 if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_LEFT
)
106 MoveCam(&mCamera
, 0.0, 1.0, 0.0);
107 if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_RIGHT
)
108 MoveCam(&mCamera
, 0.0, -1.0, 0.0);
111 REV_Process(*mRoot
, &mCamera
);//llamamos al engine para que haga el trabajo por nosotros.