--- a/easy3d/application.cpp Mon Apr 28 11:56:21 2008 +0200
+++ b/easy3d/application.cpp Tue Apr 29 09:39:18 2008 +0200
@@ -361,7 +361,7 @@ namespace easy3d
if (running_events)
{
- trace("\n");
+ //trace("\n");
handleEvent(events);
}
--- a/easy3d/easy3d_galaxy.cpp Mon Apr 28 11:56:21 2008 +0200
+++ b/easy3d/easy3d_galaxy.cpp Tue Apr 29 09:39:18 2008 +0200
@@ -100,12 +100,22 @@ void SceneGalaxy::initCubeSet(int maxCub
void SceneGalaxy::initCubeSet(int maxCube)
{
EASY3D_ASSERT(maxCube);
- Galaxy* gxy = LoadUniverse::instance()->galaxyVector[mGalaxyId];
-
- mCubeDiffuse = osg::Vec4(1, 1, 1, 1);
- mCubeDiffuseBlended = osg::Vec4(1, 1, 1, 1);
- VarsEditor::instance()->get("galaxy_cube_diffuse_" + std::string(gxy->id), mCubeDiffuse);
- VarsEditor::instance()->get("galaxy_cube_diffuse_" + std::string(gxy->id) + "_when_blended", mCubeDiffuseBlended);
+ Galaxy *galaxy = LoadUniverse::instance()->galaxyVector[mGalaxyId];
+
+ if (galaxy->color) {
+ mCubeDiffuse = *galaxy->color;
+ } else {
+ mCubeDiffuse = osg::Vec4(1, 1, 1, 1);
+ VarsEditor::instance()->get("galaxy_cube_diffuse_" + std::string(galaxy->id), mCubeDiffuse);
+ }
+
+ if (galaxy->color_when_blended) {
+ mCubeDiffuseBlended = *galaxy->color_when_blended;
+ } else {
+ mCubeDiffuseBlended = osg::Vec4(1, 1, 1, 1);
+ VarsEditor::instance()->get("galaxy_cube_diffuse_" + std::string(galaxy->id) + "_when_blended", mCubeDiffuseBlended);
+ }
+
// setup cube set
mCubeSet = new EasyCubeSet(maxCube);
@@ -119,9 +129,9 @@ void SceneGalaxy::initCubeSet(int maxCub
mCubeSet->getCube(i)->mIcons->getStateSet()->removeAttribute(osg::StateAttribute::MATERIAL);
if (i == getMainItemIndex()) {
- initCubeSetItem(getMainItemIndex(), mCubeDiffuse, gxy->icon_filename);
+ initCubeSetItem(getMainItemIndex(), mCubeDiffuse, galaxy->icon_filename);
} else {
- initCubeSetItem(i, mCubeDiffuse, gxy->planetVector[i]->icon_filename);
+ initCubeSetItem(i, mCubeDiffuse, galaxy->planetVector[i]->icon_filename);
}
}
}
--- a/easy3d/easy3d_universe.cpp Mon Apr 28 11:56:21 2008 +0200
+++ b/easy3d/easy3d_universe.cpp Tue Apr 29 09:39:18 2008 +0200
@@ -33,6 +33,7 @@
#include "easy3d_background.h"
#include "easy3d_item.h"
+#include "utils.h"
#include <osg/BlendFunc>
#include <osg/Math>
@@ -111,13 +112,13 @@ void SceneUniverse::load()
float currentRatio = osg::Renderer::instance()->getViewport()->aspectRatio();
float screenBaseRatio = 5/4.0;
- VarsEditor::instance()->get("screen_base_ratio",screenBaseRatio);
+ VarsEditor::instance()->get("screen_base_ratio", screenBaseRatio);
float screenRatioConvert = currentRatio / screenBaseRatio;
- int maxCube = 0;
+ unsigned int maxCube = 0;
for (unsigned int i = 0; i < LoadUniverse::instance()->galaxyVector.size(); i++) {
- if (LoadUniverse::instance()->galaxyVector[i]->hidden == false)
- maxCube++;
+ if (LoadUniverse::instance()->galaxyVector[i]->hidden == false)
+ maxCube++;
}
mTransform = new osg::MatrixTransform;
@@ -143,42 +144,45 @@ void SceneUniverse::load()
// add the "cliquer" text on cube
osg::MatrixTransform* transformText = createTextSelectedItem("universe_");
- for (int i = 0; i < maxCube; i++) {
-
- if (LoadUniverse::instance()->galaxyVector[i]->hidden)
- continue;
-
- mCubeSet->setIconTexture(i, LoadUniverse::instance()->galaxyVector[i]->icon_filename);
-
- // one item
- mItems[i].create();
-
- mItems[i].getAnimationIdleTransform()->addChild(mCubeSet->getGeode(i));
- mTransform->addChild(mItems[i].getRootTransform());
-
- if (transformText)
- mItems[i].getAnimationIdleTransform()->addChild(transformText);
-
-
- mItems[i].setIndex(i);
- mItems[i].loadSettings();
-
- mItems[i].getText()->setAlignment(osgText::Text::CENTER_CENTER);
- mItems[i].getText()->setText(LoadUniverse::instance()->galaxyVector[i]->name,osgText::String::ENCODING_UTF8);
-
- if (LoadUniverse::instance()->galaxyVector[i]->position)
- {
- LoadUniverse::instance()->galaxyVector[i]->position->_v[0] *= screenRatioConvert;
- mItems[i].getRootTransform()->setMatrix(osg::Matrix::translate(*LoadUniverse::instance()->galaxyVector[i]->position));
- }
- else
- {
- osg::Vec3 pos;
- std::string xmlnode_string = "universe_pos_icone_" + LoadUniverse::instance()->galaxyVector[i]->id;
- VarsEditor::instance()->get(xmlnode_string, pos);
- pos[0] *= screenRatioConvert;
- mItems[i].getRootTransform()->setMatrix(osg::Matrix::translate(pos));
- }
+ for (unsigned int i = 0; i < maxCube; i++) {
+
+ Galaxy *galaxy = LoadUniverse::instance()->galaxyVector[i];
+
+ if (galaxy->hidden)
+ continue;
+
+ mCubeSet->setIconTexture(i, galaxy->icon_filename);
+
+ // one item
+ mItems[i].create();
+
+ mItems[i].getAnimationIdleTransform()->addChild(mCubeSet->getGeode(i));
+ mTransform->addChild(mItems[i].getRootTransform());
+
+ if (transformText)
+ mItems[i].getAnimationIdleTransform()->addChild(transformText);
+
+
+ mItems[i].setIndex(i);
+ mItems[i].loadSettings();
+
+ mItems[i].getText()->setAlignment(osgText::Text::CENTER_CENTER);
+ mItems[i].getText()->setText(galaxy->name, osgText::String::ENCODING_UTF8);
+
+ osg::Vec3 pos;
+ if (galaxy->position)
+ {
+ trace("Using position from the easyneuf.xml\n");
+ pos = *galaxy->position;
+ }
+ else
+ {
+ trace("Using position from the easy3d.xml\n");
+ std::string xmlnode_string = "universe_pos_icone_" + galaxy->id;
+ VarsEditor::instance()->get(xmlnode_string, pos);
+ }
+ pos[0] *= screenRatioConvert;
+ mItems[i].getRootTransform()->setMatrix(osg::Matrix::translate(pos));
initItemTransitionPosition(i);
}
@@ -357,21 +361,30 @@ void SceneUniverse::ManageClick()
float currentRatio = osg::Renderer::instance()->getViewport()->aspectRatio();
float screenBaseRatio = 5/4.0;
- VarsEditor::instance()->get("screen_base_ratio",screenBaseRatio);
+ VarsEditor::instance()->get("screen_base_ratio", screenBaseRatio);
float ratio = currentRatio / screenBaseRatio;
+ Galaxy *galaxy = LoadUniverse::instance()->galaxyVector[mSelectedGalaxy];
+
dest[0] *= ratio;
- mCubeDiffuseDestination = osg::Vec4(1,1,1,1);
- VarsEditor::instance()->get("galaxy_cube_diffuse_"+LoadUniverse::instance()->galaxyVector[mSelectedGalaxy]->id, mCubeDiffuseDestination);
+
+ if (galaxy->color)
+ {
+ mCubeDiffuseDestination = osg::Vec4(*galaxy->color);
+ trace("Using color from the easyneuf.xml (%f,%f,%f,%f)\n", mCubeDiffuseDestination[0], mCubeDiffuseDestination[1], mCubeDiffuseDestination[2], mCubeDiffuseDestination[3]);
+ }
+ else
+ {
+ mCubeDiffuseDestination = osg::Vec4(1,1,1,1);
+ VarsEditor::instance()->get("galaxy_cube_diffuse_" + galaxy->id, mCubeDiffuseDestination);
+ }
osg::Vec3 currentPos = mItems[focus].getRootTransform()->getMatrix().getTrans();
- std::cout << "mCubeDiffuseDestination " << mCubeDiffuseDestination << std::endl;
dest = dest-currentPos;
mItems[focus].setTransitionOutPositionDestination(dest);
// sent events
- Galaxy *galaxy = LoadUniverse::instance()->galaxyVector[mSelectedGalaxy];
Easy3dEvents::pushEventBackgroundFadeTo(galaxy->bg_filename, galaxy->name);
float idle1, idle2;
--- a/easy3d/load_universe.cpp Mon Apr 28 11:56:21 2008 +0200
+++ b/easy3d/load_universe.cpp Tue Apr 29 09:39:18 2008 +0200
@@ -47,7 +47,12 @@ bool Satellite::isGoto() { return !go_t
Satellite::Satellite() {}
Planet::Planet() {}
-Galaxy::Galaxy() { hidden = false; position = NULL; }
+Galaxy::Galaxy() {
+ hidden = false;
+ position = NULL;
+ color = NULL;
+ color_when_blended = NULL;
+}
Satellite* LoadUniverse::loadSatellite(xmlDocPtr doc, xmlNodePtr cur) {