コード例 #1
0
//Deprecated. Converts color phases to color ramp
void Particles2D::set_color_phases(int p_phases) {

	//Create color ramp if we have 2 or more phases.
	//Otherwise first phase phase will be assigned to default color.
	if(p_phases > 1 && color_ramp.is_null())
	{
		color_ramp = Ref<ColorRamp>(memnew (ColorRamp()));
	}
	if(color_ramp.is_valid())
	{
		color_ramp->get_points().resize(p_phases);
	}
}
コード例 #2
0
ファイル: PolyGridFX.cpp プロジェクト: rickyharis39/nolf2
LTBOOL CPolyGridFX::CreateObject(ILTClient *pClientDE)
{
	ColorRamp colorRamps[] =
	{
        ColorRamp(LTVector(m_vColor1.x, m_vColor1.y, m_vColor1.z), 0),
        ColorRamp(LTVector(m_vColor2.x, m_vColor2.y, m_vColor2.z), 256)
	};

    if (!CSpecialFX::CreateObject(pClientDE)) return LTFALSE;

    if (!g_pGameClientShell) return LTFALSE;

	CGameSettings* pSettings = g_pInterfaceMgr->GetSettings();
    if (!pSettings) return LTFALSE;

    LTVector vPos;
	g_pLTClient->GetObjectPos(m_hServerObject, &vPos);

    LTRotation rRot;
	g_pLTClient->GetObjectRotation(m_hServerObject, &rRot);

	// Setup the PolyGrid...

	ObjectCreateStruct createStruct;
	INIT_OBJECTCREATESTRUCT(createStruct);

	createStruct.m_ObjectType = OT_POLYGRID;
	createStruct.m_Flags = FLAG_VISIBLE;
	createStruct.m_Pos = vPos;
    createStruct.m_Rotation = rRot;

    uint32 dwSizeX = 2;
	uint32 dwSizeY = 2;

	if ((m_dwNumPoliesX >= 2) && (m_dwNumPoliesY >= 2))
	{
        dwSizeX = m_dwNumPoliesX;
		dwSizeY = m_dwNumPoliesY;

		if (m_nSurfaceType == PGSURFACE_PLASMA_FOUR_RING)
		{
			// Make sure dwSize is a factor of 2 if using four ring plasma...
			dwSizeX = FindClosestPowerOf2(dwSizeX);
			dwSizeY = FindClosestPowerOf2(dwSizeY);

			//make sure they are at least 2 wide
			if(dwSizeX < 2)
				dwSizeX = 2;
			if(dwSizeY < 2)
				dwSizeY = 2;			
		}
	}

	uint32 nFlags = 0;

	if(m_bFresnel)
		nFlags |= PG_FRESNEL;
	if(!m_bBackfaceCull)
		nFlags |= PG_NOBACKFACECULL;
	if(m_bRenderEarly)
		nFlags |= PG_RENDERBEFORETRANSLUCENTS;
	if(m_bNormalMapSprite)
		nFlags |= PG_NORMALMAPSPRITE;

	//load in the dampening buffer if applicable
	LoadDampenImage(dwSizeX, dwSizeY);

	//see if we need to setup a cutout mask
	CPolyGridBuffer<bool> CutoutMask;
	if(m_DampenBuffer.GetWidth() > 0)
	{
		bool bUseCutout = false;

		//resize our buffer
		CutoutMask.Resize(dwSizeX, dwSizeY);

		//now run through and translate the dampening image to the cutout
		uint8* pImage = m_DampenBuffer.GetBuffer();
		uint8* pEnd = pImage + dwSizeY * dwSizeX;
		bool*  pCutout = CutoutMask.GetBuffer();

		while(pImage < pEnd)
		{
			if(*pImage == 0)
			{
				*pCutout = false;
				bUseCutout = true;
			}
			else
			{
				*pCutout = true;
			}

			++pCutout;
			++pImage;
		}
	}

	m_hObject = m_pClientDE->CreateObject(&createStruct);
    m_pClientDE->SetupPolyGrid(m_hObject, dwSizeX, dwSizeY, nFlags, CutoutMask.GetBuffer());

	//update our sizes
	m_dwNumPoliesX = dwSizeX;
	m_dwNumPoliesY = dwSizeY;

	// Set alpha value...

    LTFLOAT r, g, b, a;
	m_pClientDE->GetObjectColor(m_hObject, &r, &g, &b, &a);
	m_pClientDE->SetObjectColor(m_hObject, r, g, b, m_fAlpha);

	if (m_sSurfaceSprite.size( ))
	{
		m_pClientDE->SetPolyGridTexture(m_hObject, m_sSurfaceSprite.c_str( ));
		m_pClientDE->SetPolyGridTextureInfo(m_hObject, m_fXPan, m_fYPan, m_fXScaleMin, m_fYScaleMin, m_fBaseReflection, m_fVolumeIOR);
	}

	if (m_sSurfaceEnvMap.size( ))
	{
		m_pClientDE->SetPolyGridEnvMap(m_hObject, m_sSurfaceEnvMap.c_str());
	}

	m_pClientDE->SetObjectPos(m_hObject, &vPos);
	m_pClientDE->Physics()->SetObjectDims(m_hObject, &m_vDims, 0);

	SetPolyGridPalette(colorRamps, sizeof(colorRamps)/sizeof(colorRamps[0]));

	//handle initializing our appropriate updaters
	switch(m_nSurfaceType)
	{
	case PGSURFACE_PLASMA_NORMAL:
	case PGSURFACE_PLASMA_FOUR_RING:
		PrecalculatePlasma();
		break;
	case PGSURFACE_WAVE_PROP:
		InitWaveProp();
		break;
	default:
	PrecalculatePlasma();
		break;
	}

	// Set blend modes if applicable...

    uint32 dwFlags = 0;

    LTBOOL bFog = LTTRUE;
	if (m_bAdditive)
	{
		dwFlags |= FLAG2_ADDITIVE;
        bFog = LTFALSE;
	}
	else if (m_bMultiply)
	{
		dwFlags |= FLAG2_MULTIPLY;
        bFog = LTFALSE;
	}
    g_pCommonLT->SetObjectFlags(m_hObject, OFT_Flags2, dwFlags, dwFlags);

	//handle any startup frames that we want
	HandleStartupFrames();

    return LTTRUE;
}