/* * OsgMainApp.hpp * * Created on: 29/05/2011 * Author: Jorge Izquierdo Ciges */ #ifndef OSGMAINAPP_HPP_ #define OSGMAINAPP_HPP_ //Android log #include #include #include #include //Standard libraries #include //osg #include #include #include #include #include #include #include //osgText #include //osgDB #include #include #include #include //osg_viewer #include #include #include //osgGA #include #include #include #include #include #include #include #include #include #include //Self headers #include "OsgAndroidNotifyHandler.hpp" //Static plugins Macro USE_OSGPLUGIN(ive) USE_OSGPLUGIN(osg) USE_OSGPLUGIN(osg2) USE_OSGPLUGIN(terrain) USE_OSGPLUGIN(rgb) USE_OSGPLUGIN(OpenFlight) USE_OSGPLUGIN(dds) //Static DOTOSG USE_DOTOSGWRAPPER_LIBRARY(osg) USE_DOTOSGWRAPPER_LIBRARY(osgFX) USE_DOTOSGWRAPPER_LIBRARY(osgParticle) USE_DOTOSGWRAPPER_LIBRARY(osgTerrain) USE_DOTOSGWRAPPER_LIBRARY(osgText) USE_DOTOSGWRAPPER_LIBRARY(osgViewer) USE_DOTOSGWRAPPER_LIBRARY(osgVolume) //Static serializer USE_SERIALIZER_WRAPPER_LIBRARY(osg) USE_SERIALIZER_WRAPPER_LIBRARY(osgAnimation) USE_SERIALIZER_WRAPPER_LIBRARY(osgFX) USE_SERIALIZER_WRAPPER_LIBRARY(osgManipulator) USE_SERIALIZER_WRAPPER_LIBRARY(osgParticle) USE_SERIALIZER_WRAPPER_LIBRARY(osgTerrain) USE_SERIALIZER_WRAPPER_LIBRARY(osgText) USE_SERIALIZER_WRAPPER_LIBRARY(osgVolume) #define LOG_TAG "osgNativeLib" #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) struct Model{ std::string filename; std::string name; }; class OsgMainApp{ private: osg::ref_ptr _viewer; osg::ref_ptr _root; osg::ref_ptr _state; osg::ref_ptr _manipulator; float _lodScale; unsigned int _prevFrame; bool _initialized; bool _clean_scene; OsgAndroidNotifyHandler *_notifyHandler; std::vector _vModels; std::vector _vModelsToLoad; std::vector _vModelsToDelete; void loadModels(); void deleteModels(); public: OsgMainApp(); ~OsgMainApp(); //Initialization function void initOsgWindow(int x,int y,int width,int height); //Draw void draw(); //Events void mouseButtonPressEvent(float x,float y,int button); void mouseButtonReleaseEvent(float x,float y,int button); void mouseMoveEvent(float x,float y); void keyboardDown(int key); void keyboardUp(int key); //Loading and unloading void loadObject(std::string filePath); void loadObject(std::string name,std::string filePath); void unLoadObject(int number); void clearScene(); //Other functions int getNumberObjects(); std::string getObjectName(int nunmber); void setClearColor(osg::Vec4f color); osg::Vec4f getClearColor(); }; #endif /* OSGMAINAPP_HPP_ */