/// <summary> /// Sets the effect parameter which the uniform uses as its data source. /// </summary> /// <param name="source">The effect parameter which the uniform will use as its data source.</param> public void SetDataSource(OpenGLEffectParameterData source) { Contract.Require(source, nameof(source)); this.source = source; }
/// <summary> /// Sets the effect parameter which the uniform uses as its data source. /// </summary> /// <param name="source">The effect parameter which the uniform will use as its data source.</param> public void SetDataSource(OpenGLEffectParameterData source) { Contract.Require(source, nameof(source)); this.source = source; }
/// <summary> /// Gets a value indicating whether this instance contains the same data as the specified instance. /// </summary> /// <param name="other">The instance to compare to this instance.</param> /// <returns><see langword="true"/> if both instances contain the same data; otherwise, <see langword="false"/>.</returns> public Boolean ContainsSameData(OpenGLEffectParameterData other) { Contract.Require(other, nameof(other)); if (other.DataType != this.DataType) { return(false); } switch (DataType) { case OpenGLEffectParameterDataType.None: return(true); case OpenGLEffectParameterDataType.Boolean: return(this.valData[0] == other.valData[0]); case OpenGLEffectParameterDataType.Int32: case OpenGLEffectParameterDataType.UInt32: case OpenGLEffectParameterDataType.Single: case OpenGLEffectParameterDataType.Color: return (this.valData[0] == other.valData[0] && this.valData[1] == other.valData[1] && this.valData[2] == other.valData[2] && this.valData[3] == other.valData[3]); case OpenGLEffectParameterDataType.Double: case OpenGLEffectParameterDataType.Vector2: for (int i = 0; i < sizeof(Vector2); i++) { if (this.valData[i] != other.valData[i]) { return(false); } } return(true); case OpenGLEffectParameterDataType.Vector3: for (int i = 0; i < sizeof(Vector3); i++) { if (this.valData[i] != other.valData[i]) { return(false); } } return(true); case OpenGLEffectParameterDataType.Vector4: for (int i = 0; i < sizeof(Vector4); i++) { if (this.valData[i] != other.valData[i]) { return(false); } } return(true); case OpenGLEffectParameterDataType.Matrix: for (int i = 0; i < sizeof(Matrix); i++) { if (this.valData[i] != other.valData[i]) { return(false); } } return(true); case OpenGLEffectParameterDataType.Int32Array: case OpenGLEffectParameterDataType.UInt32Array: case OpenGLEffectParameterDataType.SingleArray: case OpenGLEffectParameterDataType.DoubleArray: case OpenGLEffectParameterDataType.Vector2Array: case OpenGLEffectParameterDataType.Vector3Array: case OpenGLEffectParameterDataType.Vector4Array: case OpenGLEffectParameterDataType.ColorArray: case OpenGLEffectParameterDataType.MatrixArray: case OpenGLEffectParameterDataType.Texture2D: return(this.refData == other.refData); default: throw new NotImplementedException(); } }