369 lines
10 KiB
C++
369 lines
10 KiB
C++
|
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||
|
//
|
||
|
// This program is free software: you can redistribute it and/or modify
|
||
|
// it under the terms of the GNU Affero General Public License as
|
||
|
// published by the Free Software Foundation, either version 3 of the
|
||
|
// License, or (at your option) any later version.
|
||
|
//
|
||
|
// This program is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
// GNU Affero General Public License for more details.
|
||
|
//
|
||
|
// You should have received a copy of the GNU Affero General Public License
|
||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||
|
|
||
|
#include "std3d.h"
|
||
|
|
||
|
|
||
|
#include "nel/3d/u_material.h"
|
||
|
#include "nel/3d/u_driver.h"
|
||
|
#include "nel/3d/texture_user.h"
|
||
|
#include "nel/3d/driver_user.h"
|
||
|
|
||
|
|
||
|
namespace NL3D
|
||
|
{
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::isSupportedByDriver(UDriver &drv, bool forceBaseCaps)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->isSupportedByDriver(*(NLMISC::safe_cast<CDriverUser *>(&drv)->getDriver()), forceBaseCaps);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setAlphaTest(bool active)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setAlphaTest(active);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::getAlphaTest() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getAlphaTest();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setAlphaTestThreshold(float threshold)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setAlphaTestThreshold(threshold);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
float UMaterial::getAlphaTestThreshold() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getAlphaTestThreshold();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setTexture(UTexture* ptex)
|
||
|
{
|
||
|
setTexture (0, ptex);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setTexture(uint stage, UTexture* ptex)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
CTextureUser *text= dynamic_cast<CTextureUser*>(ptex);
|
||
|
if (text != NULL)
|
||
|
{
|
||
|
object->setTexture (stage, text->getITexture());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
object->setTexture (stage, NULL);
|
||
|
}
|
||
|
// NB: _Material smartpoint to this ITexture. But this is correct because so does CTextureUser.
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::texturePresent()
|
||
|
{
|
||
|
return texturePresent (0);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::texturePresent (uint stage)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->texturePresent (stage);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::selectTextureSet(uint id)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->selectTextureSet(id);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setBlend(bool active)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setBlend(active);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setBlendFunc(TBlend src, TBlend dst)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setBlendFunc((CMaterial::TBlend)(uint32)src, (CMaterial::TBlend)(uint32)dst);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setSrcBlend(TBlend val)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setSrcBlend((CMaterial::TBlend)(uint32)val);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setDstBlend(TBlend val)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setDstBlend((CMaterial::TBlend)(uint32)val);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::getBlend() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getBlend();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
UMaterial::TBlend UMaterial::getSrcBlend(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return (UMaterial::TBlend)(uint32)object->getSrcBlend();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
UMaterial::TBlend UMaterial::getDstBlend(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return (UMaterial::TBlend)(uint32)object->getDstBlend();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvOpRGB(uint stage, TTexOperator ope)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvOpRGB(stage, (CMaterial::TTexOperator)(uint32)ope);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg0RGB (uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg0RGB (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg1RGB (uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg1RGB (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg2RGB (uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg2RGB (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvOpAlpha(uint stage, TTexOperator ope)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvOpAlpha (stage, (CMaterial::TTexOperator)(uint32)ope);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg0Alpha(uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg0Alpha (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg1Alpha(uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg1Alpha (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::texEnvArg2Alpha(uint stage, TTexSource src, TTexOperand oper)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->texEnvArg2Alpha (stage, (CMaterial::TTexSource)(uint32)src, (CMaterial::TTexOperand)(uint32)oper);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setZFunc(ZFunc val)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setZFunc((CMaterial::ZFunc)(uint32) val);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setZWrite(bool active)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setZWrite(active);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setZBias(float val)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setZBias(val);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
UMaterial::ZFunc UMaterial::getZFunc(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return (UMaterial::ZFunc)(uint32)object->getZFunc();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::getZWrite(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getZWrite();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
float UMaterial::getZBias(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getZBias();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setColor(CRGBA rgba)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setColor(rgba);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
CRGBA UMaterial::getColor(void) const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getColor();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::setDoubleSided(bool doubleSided)
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->setDoubleSided(doubleSided);
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
bool UMaterial::getDoubleSided() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getDoubleSided();
|
||
|
}
|
||
|
|
||
|
// ***************************************************************************
|
||
|
|
||
|
void UMaterial::initUnlit()
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
object->initUnlit();
|
||
|
}
|
||
|
|
||
|
|
||
|
// ***************************************************************************
|
||
|
bool UMaterial::isLighted() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->isLighted();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
CRGBA UMaterial::getEmissive() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getEmissive();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
CRGBA UMaterial::getAmbient() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getAmbient();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
CRGBA UMaterial::getDiffuse() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getDiffuse();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
uint8 UMaterial::getOpacity() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getOpacity();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
CRGBA UMaterial::getSpecular() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getSpecular();
|
||
|
}
|
||
|
// ***************************************************************************
|
||
|
float UMaterial::getShininess() const
|
||
|
{
|
||
|
CMaterial *object = getObjectPtr();
|
||
|
return object->getShininess();
|
||
|
}
|
||
|
|
||
|
} // NL3D
|