/// <summary> /// Creates a new parameter /// </summary> /// <param name="_Name"></param> /// <param name="_Type"></param> /// <returns></returns> public Parameter CreateParameter(string _Name, PARAMETER_TYPE _Type) { Parameter Result = null; switch (_Type) { case PARAMETER_TYPE.BOOL: Result = new ParameterBool(this, _Name); break; case PARAMETER_TYPE.INT: Result = new ParameterInt(this, _Name); break; case PARAMETER_TYPE.FLOAT: Result = new ParameterFloat(this, _Name); break; case PARAMETER_TYPE.FLOAT2: Result = new ParameterFloat2(this, _Name); break; case PARAMETER_TYPE.FLOAT3: Result = new ParameterFloat3(this, _Name); break; case PARAMETER_TYPE.FLOAT4: Result = new ParameterFloat4(this, _Name); break; case PARAMETER_TYPE.MATRIX4: Result = new ParameterMatrix4(this, _Name); break; case PARAMETER_TYPE.TEXTURE2D: Result = new ParameterTexture2D(this, _Name); break; default: throw new Exception("Unsupported parameter type !"); } // Add it... m_Parameters.Add(Result); m_Name2Parameter.Add(Result.Name, Result); return(Result); }
/// <summary> /// Loads parameters from a stream /// </summary> /// <param name="_Owner"></param> /// <param name="_Reader"></param> internal MaterialParameters(Scene _Owner, System.IO.BinaryReader _Reader) { m_Owner = _Owner; m_ID = _Reader.ReadInt32(); m_Name = _Reader.ReadString(); m_ShaderURL = _Reader.ReadString(); int ParametersCount = _Reader.ReadInt32(); for (int ParameterIndex = 0; ParameterIndex < ParametersCount; ParameterIndex++) { string Name = _Reader.ReadString(); PARAMETER_TYPE Type = (PARAMETER_TYPE)_Reader.ReadByte(); Parameter NewParam = CreateParameter(Name, Type); // De-serialize the parameter NewParam.Load(_Reader); } }
/// <summary> /// Blanket method for retrieving Symbol information. All returns are passed through /// their respective arguments. /// </summary> public void GetSymbolInfo(out string name, out int scope, out SYMBOL_TYPE SymType, out STORAGE_TYPE StorType, out PARAMETER_TYPE ParType, out int memoffset, out int value, out int baseoff, out int arrEnd, out int relOff) { name = m_sName; scope = m_iScope; SymType = m_SymType; StorType = m_StorType; ParType = m_ParType; memoffset = m_iMemOff; value = m_iVal; baseoff = m_iBaseOff; arrEnd = m_iArrEnd; relOff = m_iRelativeOff; }
private SYMBOL_TYPE m_SymType; // type #endregion Fields #region Constructors /// <summary> /// Constructor /// </summary> public Symbol(string name, int scope, SYMBOL_TYPE SymType, STORAGE_TYPE StorType, PARAMETER_TYPE ParType, int memoffset, int value = 0, int baseoff = 0, int arrEnd = 0, int relOff = 0) { m_sName = name; m_iScope = scope; m_SymType = SymType; m_StorType = StorType; m_ParType = ParType; m_iMemOff = memoffset; m_iVal = value; m_iBaseOff = baseoff; m_iArrEnd = arrEnd; m_iRelativeOff = relOff; }
/// <summary> /// Creates a new parameter /// </summary> /// <param name="_Name"></param> /// <param name="_Type"></param> /// <returns></returns> public Parameter CreateParameter( string _Name, PARAMETER_TYPE _Type ) { Parameter Result = null; switch ( _Type ) { case PARAMETER_TYPE.BOOL: Result = new ParameterBool( this, _Name ); break; case PARAMETER_TYPE.INT: Result = new ParameterInt( this, _Name ); break; case PARAMETER_TYPE.FLOAT: Result = new ParameterFloat( this, _Name ); break; case PARAMETER_TYPE.FLOAT2: Result = new ParameterFloat2( this, _Name ); break; case PARAMETER_TYPE.FLOAT3: Result = new ParameterFloat3( this, _Name ); break; case PARAMETER_TYPE.FLOAT4: Result = new ParameterFloat4( this, _Name ); break; case PARAMETER_TYPE.MATRIX4: Result = new ParameterMatrix4( this, _Name ); break; case PARAMETER_TYPE.TEXTURE2D: Result = new ParameterTexture2D( this, _Name ); break; default: throw new Exception( "Unsupported parameter type !" ); } // Add it... m_Parameters.Add( Result ); m_Name2Parameter.Add( Result.Name, Result ); return Result; }