begin process at 2012 05 29 21:33:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

GUI

 > 

Problème Ogre/OIS


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème Ogre/OIS

jeudi 5 juin 2008 à 00:04:10 | Problème Ogre/OIS

Mxjugg

Bonjour à tous!
Je début dans la programmation avec Ogre et je sèche sur la gestion des périphériques avec OIS
Apparemment mes fontions de callback ne sont pas appelées (faut dire que la doc OIS est pas très explicite)
Je vous balance mon code:

myapp.hpp
#ifndef myapp_hpp
#define myapp_hpp

#include <OGRE/Ogre.h>
#include <OIS/OIS.h>

classmMouseListener:publicOIS::MouseListener
{
public:
mMouseListener(){}
virtual~mMouseListener(){}
virtualboolmouseMoved(constOIS::MouseEvent&arg);
virtualboolmousePressed(constOIS::MouseEvent&arg,OIS::MouseButtonIDid);
virtualboolmouseReleased(constOIS::MouseEvent&arg,OIS::MouseButtonIDid);
};

classmKeyListener:publicOIS::KeyListener
{
public:
mKeyListener(){}
virtual~mKeyListener(){}
virtualboolkeyPressed(constOIS::KeyEvent&arg);
virtualboolkeyReleased(constOIS::KeyEvent&arg);
};

classmFrameListener:publicOgre::FrameListener
{
public:
virtualboolframeStarted(constOgre::FrameEvent&);
};

classmyApp:publicmMouseListener,publicmKeyListener,publicmFrameListener
{
private:
Ogre::Root*root;
Ogre::RenderWindow*window;
Ogre::SceneManager*scenemanager;
Ogre::Camera*camera;
Ogre::Viewport*viewport;


OIS::InputManager*inputmanager;
OIS::Mouse*mouse;
OIS::Keyboard*keyboard;
mFrameListener*framelistener;
mMouseListener*mouselistener;
mKeyListener*keylistener;

public:
myApp(constOgre::String&name,constOgre::String&plugin="plugins.cfg",constOgre::Realpx=0.,constOgre::Realpy=0.,constOgre::Realpz=0.,constOgre::Realvx=0.,constOgre::Realvy=0.,constOgre::Realvz=0.,constOgre::Realnc=1.,constOgre::Realfc=100.);
voidaddMesh(constOgre::String&,constOgre::String&);
voidaddResourceFile(constOgre::String&);
voidaddOverlay(constOgre::String&);
voidloadListeners();
voidrun();
};

#endif

la doc OIS indique clairement qu'il faut dériver ses listeners. C'est fait.

Ensuite vient le fichier
myapp.cpp

#include "myapp.hpp"

myApp::myApp(constOgre::String&name,constOgre::String&plugin,constOgre::Realpx,constOgre::Realpy,constOgre::Realpz,constOgre::Realvx,constOgre::Realvy,constOgre::Realvz,constOgre::Realnc,constOgre::Realfc)
{
/* initialise Ogre::root */
root=newOgre::Root(plugin,"ogre.cfg","ogre.log");
if(!root->restoreConfig())/* le fichier de config ogre.cfg exist ? */
{
if(!root->showConfigDialog())/* affiche un menu 'ogre' de configuration du système de rendu et enregistre les paramètres dans ogre.cfg : pas besoin de reconfigurer à chaque fois */
{
throwOgre::Exception(0,"ConfigDialogError","showConfigDialog()");
}
}

/* initialise la fenetre */
window=root->initialise(true,name);/* bool autoCreateWindow, const String &windowTitle="OGRE Render Window" */

/* créer le gestionnaire de scène */
scenemanager=root->createSceneManager(Ogre::ST_GENERIC,"SceneManager");/* const String &typeName, const String &instanceName=StringUtil::BLANK */

/* créer la caméra et la configure */
camera=scenemanager->createCamera("Camera");/* createCamera (const String &name) */
camera->setPosition(Ogre::Vector3(px,py,pz));
camera->lookAt(Ogre::Vector3(vx,vy,vz));
camera->setNearClipDistance(nc);
camera->setFarClipDistance(fc);

/* créer la vue */
viewport=window->addViewport(camera);/* la caméra est attachée au viewport de la fenetre */
viewport->setBackgroundColour(Ogre::ColourValue(0.0f,0.0f,0.0f));/* fixer la couleur d'arrière plan */
camera->setAspectRatio(Ogre::Real(viewport->getActualWidth())/Ogre::Real(viewport->getActualHeight()));/* fixer le ratio de la cam */

/* lancer les listeners */
loadListeners();
}

boolmMouseListener::mouseMoved(constOIS::MouseEvent&arg)
{
returntrue;
}

boolmMouseListener::mousePressed(constOIS::MouseEvent&arg,OIS::MouseButtonIDid)
{
returntrue;
}

boolmMouseListener::mouseReleased(constOIS::MouseEvent&arg,OIS::MouseButtonIDid)
{
returntrue;
}

boolmKeyListener::keyPressed(constOIS::KeyEvent&arg)
{
std::cout<<"keyPressed"<<std::endl;/* pti test; jamais vu sur le terminal */
returntrue;
}

boolmKeyListener::keyReleased(constOIS::KeyEvent&arg)
{
returntrue;
}

boolmFrameListener::frameStarted(constOgre::FrameEvent&ev)
{
staticfloattime=0.0f;
time+=ev.timeSinceLastFrame;

if(time>=10.f)
returnfalse;

/* vu que les périphes marchent pas, ils faut bien pouvoir quitter l'appli (= */

returntrue;
}

voidmyApp::loadListeners()
{
size_tw;
window->getCustomAttribute("WINDOW",&w);

/* create OIS input manager system */
inputmanager=OIS::InputManager::createInputSystem(w);

/* create mouse and keyboard w/ input manager */
mouse=static_cast<OIS::Mouse*>(inputmanager->createInputObject(OIS::OISMouse,true));
keyboard=static_cast<OIS::Keyboard*>(inputmanager->createInputObject(OIS::OISKeyboard,true));

/* set mouse */
unsignedintwidth,height,depth;
inttop,left;
window->getMetrics(width,height,depth,left,top);
constOIS::MouseState&mousestate=mouse->getMouseState();
mousestate.width=width;
mousestate.height=height;

/* add a frame listener */
framelistener=newmFrameListener;
root->addFrameListener(framelistener);

/* add mouse and keyboard listener */
mouselistener=newmMouseListener;
keylistener=newmKeyListener;
mouse->setEventCallback(mouselistener);
keyboard->setEventCallback(keylistener);

/* C'EST ICI QUE CA PÈCHE ? , pourtant il me semble que c'est ce qui est indiquer dans la doc OIS (en tout cas ca compile) */
}



Voila. j'espère qu'il y a quelqu'un qui m'aidera a résoudre ce problème.
ps: j'ai lu des tuto sur des wiki concernant ogre/ois et faire un programme en dérivant un classe example ca ne m'interresse pas!
Cya
mercredi 6 août 2008 à 02:24:30 | Re : Problème Ogre/OIS

koda_12

C'est un bon choix de se passer d'exemple app
j'ai le même porblème que toi
je cherche si je trouve je poste
si t'as trouvé postes

merci
mercredi 6 août 2008 à 02:44:57 | Re : Problème Ogre/OIS

koda_12


 				/* create mouse and keyboard w/ input manager */ 				
mouse = static_cast < OIS :: Mouse *> ( inputmanager -> createInputObject ( OIS :: OISMouse , true ));
keyboard = static_cast < OIS :: Keyboard *> ( inputmanager -> createInputObject ( OIS :: OISKeyboard , true ));

t'as true et true
tu mets false et false
les event se déclencheront
la doc OIS est un peu légère à ce niveau je te le concède

A oui dans mon code avec false et true ça faisait nimp mais on a pas le même code brrrrref...


mardi 12 août 2008 à 12:15:26 | Re : Problème Ogre/OIS

koda_12

/* create mouse and keyboard w/ input manager */                 
mouse     = static_cast<OI::Mouse *>(inputmanager->createInputObject (OIS ::OISMouse , true));                 
keyboard =     static_cast < OIS::Keyboard*>(inputmanager -> createInputObject ( OIS ::OISKeyboard , true ));

le cop colle du code a foiré
mardi 19 août 2008 à 14:19:16 | Re : Problème Ogre/OIS

larles

Tu ne fais pas tes captures d'evenements, alors tu ne recois rien.
OIS te demande de forcer les capture via les methodes capture. Il te suffit a chaque frame de faire un capture()  sur ton OIS::Keyboard et ton OIS::Mouse pour que tes methodes surchargees soient appelles.


Cette discussion est classée dans : string, ogre, ois, constogre, constois


Répondre à ce message

Sujets en rapport avec ce message

Compilation d'une scène Ogre avec c++ [ par sk3lling ] Bonjour tout le monde, je veux créer une scène avec Ogre. Lorsque je l'ai compile tout marche c'est quand j'arrive pour le démarrer (Play). Il m'appar Exportation de string sur dll [ par wasaikos ] Bonjour,Je suis sur un projet où je développe une application IHM sous WinDev11 qui fait appel à des DLL en C++ (codées sous Visual 6.0).Seulement je convertir int en string [ par wasaikos ] salut a toustout est dans le titre mais je vous mache le travail voici ma fonction:string fonction(int chiffre){    string lettre="P";    string lettr convertir string en int [ par wasaikos ] salut a tous,tout est dans le titre mis e vais être plus précis, ce que j'ai besoin de faire c'est de convertir une variable de type string en une var Recupérer des string par lecture. [ par CicinhoRaul ] Bonjour à tous, désolé de vous déranger mais j'ai un problème en C++ à resoudre à propos de la lecture d'un fichier; (je reconnais, le C++ n'est pas t Appel d'une fonction [ par eldran64 ] Bonjour,  je n'arrive pas à appeler une fonction, c'est la fonction print. C'est une fonction qui doit faire appel à l'accesseur pour afficher la v écriture classe dans un fichier texte [ par nord666 ] Salut tout le monde!J'ai besoin d'aide pour l'écriture dans un fichier. Je voudrais que l'extension du fichier soit .city. Ce que je veux écrire dans c++ urgence svp [ par yanlou ] maximus salut,j'ai u fichier txt qui contient des chaine de caracté, exemple :RFRPAD7RFRPAD8/A8 Conversion string en const char * [ par wallie0703 ] Bonjour j'ai un problème dans mon code : error C2664: 'C843_GcsGetAnswer' : impossible de convertir le paramètre 2 de 'std::string' en 'char *'Voici m error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'existe pas de conversion acceptable) [ par wallie0703 ] Voilà j'ai cette erreur :error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'ex


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,482 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales