コード例 #1
0
ファイル: MoonManager.cpp プロジェクト: JdeRobot/ThirdParty
  void MoonManager::create()
  {
    if (mCreated)
    {
      return;
    }

    mMoonMaterial = static_cast<Ogre::MaterialPtr>(
        Ogre::MaterialManager::getSingleton().getByName("SkyX_Moon"));

    if (mMoonMaterial.isNull())
    {
      SkyXLOG("Error while creating SkyX::MoonManager, material not found");
      return;
    }

    mMoonSceneNode = mSkyX->getSceneManager()->getRootSceneNode()->
                     createChildSceneNode();

    mMoonBillboard = mSkyX->getSceneManager()->createBillboardSet(
        "SkyXMoonBillboardSet", 1);
    mMoonBillboard->setMaterialName(
        mSkyX->getGPUManager()->getMoonMaterialName());
    mMoonBillboard->setBillboardType(Ogre::BBT_ORIENTED_COMMON);
    mMoonBillboard->setRenderQueueGroup(
        mSkyX->getRenderQueueGroups().skydome+1);
    mMoonBillboard->setCastShadows(false);

    mMoonBillboard->createBillboard(Ogre::Vector3(0, 0, 0));

    mMoonSceneNode->attachObject(mMoonBillboard);

    mCreated = true;
  }
コード例 #2
0
	void LightningManager::create()
	{
		remove();

		mVolCloudsLightningMaterial = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName("SkyX_VolClouds_Lightning"));
		mLightningMaterial = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().getByName("SkyX_Lightning"));

		if (mLightningMaterial.isNull())
		{
			SkyXLOG("Error while creating SkyX::VClouds::LightningManager, material not found");
			return;
		}

		if (mEnabled)
		{
			mVClouds->getGeometryManager()->_setMaterialName("SkyX_VolClouds_Lightning");
		}
		else
		{
			mVClouds->getGeometryManager()->_setMaterialName("SkyX_VolClouds");
		}

		mCreated = true;

		setLightningColor(mLightningColor);
	}
コード例 #3
0
ファイル: VClouds.cpp プロジェクト: IkerZamora/gazebo-deb
void VClouds::notifyCameraRender(Ogre::Camera* c,
    const Ogre::Real& timeSinceLastCameraFrame)
{
  if (!mCreated)
  {
    return;
  }

  mCamera = c;

  // Check if the camera is registered
  bool isRegistered = false;
  for (Ogre::uint32 k = 0; k < mCamerasData.size(); k++)
  {
    if (mCamerasData.at(k).camera == c)
    {
      isRegistered = true;
      break;
    }
  }

  if (!isRegistered)
  {
    mCamerasData.push_back(CameraData(c));
    SkyXLOG("VClouds warning: unregistered camera registered, "
            "manual unregistering is needed before camera destruction");
  }

  mGeometryManager->updateGeometry(c, timeSinceLastCameraFrame);
  mLightningManager->updateMaterial();
}
コード例 #4
0
ファイル: VClouds.cpp プロジェクト: IkerZamora/gazebo-deb
void VClouds::create()
{
  remove();

  mVolCloudsMaterial = static_cast<Ogre::MaterialPtr>(
      Ogre::MaterialManager::getSingleton().getByName("SkyX_VolClouds"));
  mVolCloudsLightningMaterial = static_cast<Ogre::MaterialPtr>(
      Ogre::MaterialManager::getSingleton().getByName(
        "SkyX_VolClouds_Lightning"));

  if (mVolCloudsMaterial.isNull() || mVolCloudsLightningMaterial.isNull())
  {
    SkyXLOG("Error while creating SkyX::VClouds::VClouds,"
            "materials are not found");
    return;
  }

  // Data manager
  mDataManager->create(128, 128, 20);

  // Geometry manager
  mGeometryManager->create(mGeometrySettings.Height,
      mGeometrySettings.Radius, mGeometrySettings.Alpha,
      mGeometrySettings.Beta, mGeometrySettings.NumberOfBlocks,
      mGeometrySettings.Na, mGeometrySettings.Nb, mGeometrySettings.Nc);

  mGeometryManager->getSceneNode()->setVisible(mVisible);

  mVolCloudsMaterial
    ->getTechnique(0)->getPass(0)->getVertexProgramParameters()->
    setNamedConstant("uRadius", mGeometrySettings.Radius);
  mVolCloudsLightningMaterial->
    getTechnique(0)->getPass(0)->getVertexProgramParameters()->
    setNamedConstant("uRadius", mGeometrySettings.Radius);

  // Lightning manager
  mLightningManager->create();

  mCreated = true;

  // Update material parameters
  setSunColor(mSunColor);
  setAmbientColor(mAmbientColor);
  setLightResponse(mLightResponse);
  setAmbientFactors(mAmbientFactors);

  // Set current wheater
  setWheater(mWheater.x, mWheater.y, mDelayedResponse);
}
コード例 #5
0
ファイル: ColorGradient.cpp プロジェクト: xDusk/lostisland04
  const Ogre::Vector3 ColorGradient::getColor(const Ogre::Real& p) const
  {
    if(mMalFormed)
    {
      SkyXLOG("Mal-formed ColorGradient");
      return Ogre::Vector3(0, 0, 0);
    }

    if(CFrameVector.size() == 0)
    {
      return Ogre::Vector3(0, 0, 0);
    }
    else if(CFrameVector.size() == 1)
    {
      return CFrameVector.at(0).first;
    }

    std::pair<int, Ogre::Real> minBound, maxBound;
    // Min value
    minBound.first = 0;
    minBound.second = -1;

    for(unsigned int k = 0; k < CFrameVector.size(); k++)
    {
      if(CFrameVector.at(k).second < p && CFrameVector.at(k).second > minBound.second)
      {
        minBound.first = k;
        minBound.second = CFrameVector.at(k).second;
      }
    }

    // Max value
    maxBound.first = 0;
    maxBound.second = 2;

    for(unsigned int k = 0; k < CFrameVector.size(); k++)
    {
      if(CFrameVector.at(k).second > p && CFrameVector.at(k).second < maxBound.second)
      {
        maxBound.first = k;
        maxBound.second = CFrameVector.at(k).second;
      }
    }

    float range = maxBound.second - minBound.second,
          rangepoint = (p - minBound.second) / range;
    return CFrameVector.at(minBound.first).first * (1 - rangepoint) + CFrameVector.at(maxBound.first).first * rangepoint;
  }