/// <summary> /// Initializes a new instance of the <see cref="LSLListVectorExpr" /> class. /// </summary> /// <param name="x">The x component.</param> /// <param name="y">The y component.</param> /// <param name="z">The z component.</param> /// <exception cref="System.ArgumentException"> /// X is not an LSLFloat or LSLVariable.;x /// or /// Y is not an LSLFloat or LSLVariable.;y /// or /// Z is not an LSLFloat or LSLVariable.;z /// </exception> public LSLListVectorExpr(ILSLListExpr x, ILSLListExpr y, ILSLListExpr z) { var intX = x as LSLListIntegerExpr; if (!(x is LSLListFloatExpr || x is LSLListVariableExpr || intX != null)) { throw new ArgumentException("X is not an LSLFloat or LSLVariable.", "x"); } var intY = y as LSLListIntegerExpr; if (!(y is LSLListFloatExpr || y is LSLListVariableExpr || intY != null)) { throw new ArgumentException("Y is not an LSLFloat or LSLVariable.", "y"); } var intZ = z as LSLListIntegerExpr; if (!(z is LSLListFloatExpr || z is LSLListVariableExpr || intZ != null)) { throw new ArgumentException("Z is not an LSLFloat or LSLVariable.", "z"); } X = intX != null ? new LSLListFloatExpr(intX.ValueString) : x; Y = intY != null ? new LSLListFloatExpr(intY.ValueString) : y; Z = intZ != null ? new LSLListFloatExpr(intZ.ValueString) : z; }