コード例 #1
0
int CNodeSubtract::UpdateInputsValid()
{
	int baseLevel = BaseClass::UpdateInputsValid();
	int locallevel = ERRORLEVEL_NONE;

	int vartype_jack_0 = GetJack_In( 0 )->GetSmartType();
	int vartype_jack_1 = GetJack_In( 1 )->GetSmartType();

	int autoTest = TestJackFlags_In();

	if ( autoTest == ERRORLEVEL_NONE )
	{
		if ( vartype_jack_0 != vartype_jack_1 )
		{
			bool bOneIsF1 = ( vartype_jack_0 == HLSLVAR_FLOAT1 ) ||
							( vartype_jack_1 == HLSLVAR_FLOAT1 );
			if ( !bOneIsF1 )
				locallevel = ERRORLEVEL_FAIL;
		}
		else if ( vartype_jack_0 >= HLSLVAR_MATRIX3X3 ||
			vartype_jack_1 >= HLSLVAR_MATRIX3X3 )
				locallevel = ERRORLEVEL_FAIL;
	}

	return max( locallevel, baseLevel );
}
コード例 #2
0
int CNodeInvert::UpdateInputsValid()
{
	int baseLevel = BaseClass::UpdateInputsValid();
	int locallevel = TestJackFlags_In();

	return max( locallevel, baseLevel );
}
コード例 #3
0
int CNodeMultiply::UpdateInputsValid()
{
	int baseLevel = BaseClass::UpdateInputsValid();
	int locallevel = ERRORLEVEL_NONE;

	int vartype_jack_0 = GetJack_In( 0 )->GetSmartType();
	int vartype_jack_1 = GetJack_In( 1 )->GetSmartType();

	int autoTest = TestJackFlags_In();

	if ( autoTest == ERRORLEVEL_NONE )
	{
		if ( vartype_jack_0 != vartype_jack_1 )
		{
			bool bOneIsF1 = ( vartype_jack_0 == HLSLVAR_FLOAT1 ) ||
							( vartype_jack_1 == HLSLVAR_FLOAT1 );
			if ( !bOneIsF1 )
			{
				// unequal types && none is float1
				// 3 * 3x3 -> float3
				// 3 * 4x3 - append 1 -> float3
				// 4 * 4x3 -> float3
				// 3 * 4x4 - append 1 -> float4
				// 4 * 4x4 -> float4
				if ( vartype_jack_0 != HLSLVAR_FLOAT3 &&
					vartype_jack_0 != HLSLVAR_FLOAT4 &&
					vartype_jack_0 != HLSLVAR_MATRIX3X3 &&
					vartype_jack_0 != HLSLVAR_MATRIX4X3 )
					locallevel = ERRORLEVEL_FAIL;
				else if ( vartype_jack_0 == HLSLVAR_FLOAT3 &&
					vartype_jack_1 != HLSLVAR_MATRIX3X3 &&
					vartype_jack_1 != HLSLVAR_MATRIX4X3 &&
					vartype_jack_1 != HLSLVAR_MATRIX4X4 )
					locallevel = ERRORLEVEL_FAIL;
				else if ( vartype_jack_0 == HLSLVAR_FLOAT4 &&
					vartype_jack_1 != HLSLVAR_MATRIX4X3 &&
					vartype_jack_1 != HLSLVAR_MATRIX4X4 )
					locallevel = ERRORLEVEL_FAIL;
				else if ( vartype_jack_0 == HLSLVAR_MATRIX3X3 &&
					vartype_jack_1 != HLSLVAR_FLOAT3 )
					locallevel = ERRORLEVEL_FAIL;
			}
		}
		else
		{
			// equal types:
			// 1 * 1
			// 2 * 2
			// 3 * 3
			// 4 * 4
			// 3x3 * 3x3
			// 4x4 * 4x4
			if ( vartype_jack_0 == HLSLVAR_MATRIX4X3 )
				locallevel = ERRORLEVEL_FAIL;
		}
	}

	return max( locallevel, baseLevel );
}
コード例 #4
0
int CNodeUtility_Assign::UpdateInputsValid()
{
	int vartype_jack_0 = GetJack_In( 0 )->GetSmartType();
	int vartype_jack_1 = GetJack_In( 1 )->GetSmartType();
	int autoTest = TestJackFlags_In();

	if ( autoTest == ERRORLEVEL_NONE )
	{
		if ( vartype_jack_0 != vartype_jack_1 )
			return ERRORLEVEL_FAIL;
	}

	return max( autoTest, BaseClass::UpdateInputsValid() );
}