Advertisement
Guest User

NodeColor

a guest
Jul 12th, 2014
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.01 KB | None | 0 0
  1. void offshore::Scene::NodeColor(int nodeIndex, osg::Vec3f& color)
  2. {
  3.     int maxColorCoordinate = 255;
  4.  
  5.     ed::string wireColor = getNodeParam(nodeIndex, "WireColor");
  6.     if(wireColor.size() == 0)
  7.         return;
  8.  
  9.     std::reverse(wireColor.begin(), wireColor.end());
  10.     while(wireColor.size() > 6)
  11.         wireColor.pop_back();
  12.     while(wireColor.size() < 6)
  13.         wireColor.push_back('0');
  14.     std::reverse(wireColor.begin(), wireColor.end());
  15.  
  16.     for(size_t i = 0; i != wireColor.size(); i++)
  17.     {
  18.         wireColor[i] = toupper( wireColor[i]);
  19.         if((wireColor[i] < '0') || ((wireColor[i] > '9') && (wireColor[i] < 'A')) || (wireColor[i] > 'F'))
  20.             return;
  21.     }
  22.  
  23.     color.z() = static_cast<float>( strtol( wireColor.c_str() + 4, NULL, 16 ) ) / maxColorCoordinate;
  24.     wireColor.pop_back();
  25.     wireColor.pop_back();
  26.     color.y() = static_cast<float>( strtol( wireColor.c_str() + 2, NULL, 16 ) ) / maxColorCoordinate;
  27.     wireColor.pop_back();
  28.     wireColor.pop_back();
  29.     color.x() = static_cast<float>( strtol( wireColor.c_str(), NULL, 16 ) ) / maxColorCoordinate;
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement