From 2622a8622ae94500cfab59ec8599e9348891c8f8 Mon Sep 17 00:00:00 2001
From: Mattes D
@@ -131,9 +986,53 @@ various events. See below for further information. ]], Functions = { - Trace = { Params = "{{cWorld}}, Callbacks, StartX, StartY, StartZ, EndX, EndY, EndZ", Return = "bool", IsStatic = true, Notes = "Performs the trace on the specified line. Returns true if the entire trace was processed (no callback returned true)" }, + Trace = + { + IsStatic = true, + Params = + { + { + Name = "World", + Type = "cWorld", + }, + { + Name = "Callbacks", + Type = "table", + }, + { + Name = "StartX", + Type = "number", + }, + { + Name = "StartY", + Type = "number", + }, + { + Name = "StartZ", + Type = "number", + }, + { + Name = "EndX", + Type = "number", + }, + { + Name = "EndY", + Type = "number", + }, + { + Name = "EndZ", + Type = "number", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Performs the trace on the specified line. Returns true if the entire trace was processed (no callback returned true)", + }, }, - AdditionalInfo = { { @@ -205,26 +1104,23 @@ end
]], }, - }, -- AdditionalInfo - }, -- cLineBlockTracer - - + }, + }, cTracer = { Desc = [[ A cTracer object is used to trace lines in the world. One thing you can use the cTracer for, is tracing what block a player is looking at, but you can do more with it if you want.- The cTracer is still a work in progress.
+ The cTracer is still a work in progress and is not documented at all.See also the {{cLineBlockTracer}} class for an alternative approach using callbacks. ]], Functions = { - }, - }, -- cTracer - + }, + }, Vector3d = { Desc = [[ @@ -235,67 +1131,489 @@ end ]], Functions = { + Abs = + { + Notes = "Updates each coord to its absolute value.", + }, + abs = + { + Notes = "OBSOLETE, use Abs() instead.", + }, + Clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "Clamps each coord into the specified range.", + }, + clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "OBSOLETE, use Clamp() instead.", + }, constructor = { - { Params = "{{Vector3f}}", Return = "Vector3d", Notes = "Creates a new Vector3d object by copying the coords from the given Vector3f." }, - { Params = "", Return = "Vector3d", Notes = "Creates a new Vector3d object with all its coords set to 0." }, - { Params = "X, Y, Z", Return = "Vector3d", Notes = "Creates a new Vector3d object with its coords set to the specified values." }, + { + Params = + { + { + Name = "Vector", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Creates a new Vector3d object by copying the coords from the given Vector3f.", + }, + { + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Creates a new Vector3d object with all its coords set to 0.", + }, + { + Params = + { + { + Name = "X", + Type = "number", + }, + { + Name = "Y", + Type = "number", + }, + { + Name = "Z", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Creates a new Vector3d object with its coords set to the specified values.", + }, + }, + Cross = + { + Params = + { + { + Name = "Other", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d that is a {{http://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector.", + }, + Dot = + { + Params = + { + { + Name = "Other", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the dot product of this vector and the specified vector.", + }, + Equals = + { + Params = + { + { + Name = "AnotherVector", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if this vector is exactly equal to the specified vector. Note that this is subject to (possibly imprecise) floating point math.", + }, + EqualsEps = + { + Params = + { + { + Name = "AnotherVector", + Type = "Vector3d", + }, + { + Name = "Eps", + Type = "number", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified are less than the specified Eps.", + }, + Floor = + { + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords.", + }, + HasNonZeroLength = + { + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math.", + }, + Length = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of the vector.", + }, + LineCoeffToXYPlane = + { + Params = + { + { + Name = "Vector3d", + Type = "Vector3d", + }, + { + Name = "Z", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToXZPlane = + { + Params = + { + { + Name = "Vector3d", + Type = "Vector3d", + }, + { + Name = "Y", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToYZPlane = + { + Params = + { + { + Name = "Vector3d", + Type = "Vector3d", + }, + { + Name = "X", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + Move = + { + { + Params = + { + { + Name = "X", + Type = "number", + }, + { + Name = "Y", + Type = "number", + }, + { + Name = "Z", + Type = "number", + }, + }, + Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets.", + }, + { + Params = + { + { + Name = "Diff", + Type = "Vector3d", + }, + }, + Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.", + }, + }, + Normalize = + { + Notes = "Changes this vector so that it keeps current direction but is exactly 1 unit long. FIXME: Fails for a zero vector.", + }, + NormalizeCopy = + { + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new vector that has the same direction as this but is exactly 1 unit long. FIXME: Fails for a zero vector.", }, operator_div = { - { Params = "{{Vector3d}}", Return = "{{Vector3d}}", Notes = "Returns a new Vector3d object with each coord divided by the corresponding coord from the given vector." }, - { Params = "number", Return = "Vector3d", Notes = "Returns a new Vector3d object with each coord divided by the specified number." }, + { + Params = + { + { + Name = "ParCoordDivisors", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object with each coord divided by the corresponding coord from the given vector.", + }, + { + Params = + { + { + Name = "Divisor", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object with each coord divided by the specified number.", + }, }, operator_mul = { - { Params = "{{Vector3d}}", Return = "{{Vector3d}}", Notes = "Returns a new Vector3d object with each coord multiplied by the corresponding coord from the given vector." }, - { Params = "number", Return = "Vector3d", Notes = "Returns a new Vector3d object with each coord multiplied." }, + { + Params = + { + { + Name = "PerCoordMultiplier", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object with each coord multiplied by the corresponding coord from the given vector.", + }, + { + Params = + { + { + Name = "Multiplier", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object with each coord multiplied.", + }, + }, + operator_plus = + { + Params = + { + { + Name = "Addend", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d containing the sum of this vector and the specified vector", }, - operator_plus = {Params = "Vector3d", Return = "Vector3d", Notes = "Returns a new Vector3d containing the sum of this vector and the specified vector" }, operator_sub = { - { Params = "{{Vector3d}}", Return = "{{Vector3d}}", Notes = "Returns a new Vector3d object containing the difference between this object and the specified vector." }, - { Params = "", Return = "{{Vector3d}}", Notes = "Returns a new Vector3d object that is a negative of this vector (all coords multiplied by -1)." }, - }, - abs = { Params = "", Return = "", Notes = "OBSOLETE, use Abs() instead." }, - clamp = { Params = "min, max", Return = "", Notes = "OBSOLETE, use Clamp() instead." }, - Abs = { Params = "", Return = "", Notes = "Updates each coord to its absolute value." }, - Clamp = { Params = "min, max", Return = "", Notes = "Clamps each coord into the specified range." }, - Cross = { Params = "Vector3d", Return = "Vector3d", Notes = "Returns a new Vector3d that is a {{http://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector." }, - Dot = { Params = "Vector3d", Return = "number", Notes = "Returns the dot product of this vector and the specified vector." }, - Equals = { Params = "Vector3d", Return = "bool", Notes = "Returns true if this vector is exactly equal to the specified vector. Note that this is subject to (possibly imprecise) floating point math." }, - EqualsEps = { Params = "{{Vector3d|Rhs}}, Eps", Return = "boolean", Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps." }, - Floor = { Params = "", Return = "{{Vector3i}}", Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords." }, - HasNonZeroLength = { Params = "", Return = "boolean", Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math." }, - Length = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of the vector." }, - LineCoeffToXYPlane = { Params = "Vector3d, Z", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToXZPlane = { Params = "Vector3d, Y", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToYZPlane = { Params = "Vector3d, X", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection." }, - Move = + { + Params = + { + { + Name = "Subtrahend", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object containing the difference between this object and the specified vector.", + }, + { + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d object that is a negative of this vector (all coords multiplied by -1).", + }, + }, + Set = { - { Params = "X, Y, Z", Return = "", Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets." }, - { Params = "{{Vector3d|Diff}}", Return = "", Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result." }, + Params = + { + { + Name = "X", + Type = "number", + }, + { + Name = "Y", + Type = "number", + }, + { + Name = "Z", + Type = "number", + }, + }, + Notes = "Sets all the coords in this object.", + }, + SqrLength = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison. ", + }, + TurnCCW = + { + Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", + }, + TurnCW = + { + Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", }, - Normalize = { Params = "", Return = "", Notes = "Changes this vector so that it keeps current direction but is exactly 1 unit long. FIXME: Fails for a zero vector." }, - NormalizeCopy = { Params = "", Return = "Vector3d", Notes = "Returns a new vector that has the same direction as this but is exactly 1 unit long. FIXME: Fails for a zero vector." }, - Set = { Params = "X, Y, Z", Return = "", Notes = "Sets all the coords in this object." }, - SqrLength = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison. " }, - TurnCCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, - TurnCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, }, Constants = { - EPS = { Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al)." }, - NO_INTERSECTION = { Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane." }, + EPS = + { + Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al).", + }, + NO_INTERSECTION = + { + Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.", + }, }, Variables = { - x = { Type = "number", Notes = "The X coord of the vector." }, - y = { Type = "number", Notes = "The Y coord of the vector." }, - z = { Type = "number", Notes = "The Z coord of the vector." }, + x = + { + Type = "number", + Notes = "The X coord of the vector.", + }, + y = + { + Type = "number", + Notes = "The Y coord of the vector.", + }, + z = + { + Type = "number", + Notes = "The Z coord of the vector.", + }, }, - }, -- Vector3d - + }, Vector3f = { Desc = [[ @@ -306,69 +1624,521 @@ end ]], Functions = { + Abs = + { + Notes = "Updates each coord to its absolute value.", + }, + abs = + { + Notes = "OBSOLETE, use Abs() instead.", + }, + Clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "Clamps each coord into the specified range.", + }, + clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "OBSOLETE, use Clamp() instead.", + }, constructor = { - { Params = "", Return = "Vector3f", Notes = "Creates a new Vector3f object with zero coords" }, - { Params = "x, y, z", Return = "Vector3f", Notes = "Creates a new Vector3f object with the specified coords" }, - { Params = "Vector3f", Return = "Vector3f", Notes = "Creates a new Vector3f object as a copy of the specified vector" }, - { Params = "{{Vector3d}}", Return = "Vector3f", Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3d}}" }, - { Params = "{{Vector3i}}", Return = "Vector3f", Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3i}}" }, + { + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Creates a new Vector3f object with zero coords", + }, + { + Params = + { + { + Name = "x", + Type = "number", + }, + { + Name = "y", + Type = "number", + }, + { + Name = "z", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Creates a new Vector3f object with the specified coords", + }, + { + Params = + { + { + Name = "Vector3f", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Creates a new Vector3f object as a copy of the specified vector", + }, + { + Params = + { + { + Name = "Vector3d", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3d}}", + }, + { + Params = + { + { + Name = "Vector3i", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Creates a new Vector3f object as a copy of the specified {{Vector3i}}", + }, + }, + Cross = + { + Params = + { + { + Name = "Other", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object that holds the cross product of this vector and the specified vector.", + }, + Dot = + { + Params = + { + { + Name = "Other", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the dot product of this vector and the specified vector.", + }, + Equals = + { + Params = + { + { + Name = "Other", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the specified vector is exactly equal to this vector. Note that this is subject to (possibly imprecise) floating point math.", + }, + EqualsEps = + { + Params = + { + { + Name = "Other", + Type = "Vector3f", + }, + { + Name = "Eps", + Type = "number", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps.", + }, + Floor = + { + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords.", + }, + HasNonZeroLength = + { + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math.", + }, + Length = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of this vector", + }, + LineCoeffToXYPlane = + { + Params = + { + { + Name = "Vector3f", + Type = "Vector3f", + }, + { + Name = "Z", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToXZPlane = + { + Params = + { + { + Name = "Vector3f", + Type = "Vector3f", + }, + { + Name = "Y", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToYZPlane = + { + Params = + { + { + Name = "Vector3f", + Type = "Vector3f", + }, + { + Name = "X", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + Move = + { + { + Params = + { + { + Name = "X", + Type = "number", + }, + { + Name = "Y", + Type = "number", + }, + { + Name = "Z", + Type = "number", + }, + }, + Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets.", + }, + { + Params = + { + { + Name = "Diff", + Type = "Vector3f", + }, + }, + Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.", + }, + }, + Normalize = + { + Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). FIXME: Fails for zero vectors.", + }, + NormalizeCopy = + { + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). FIXME: Fails for zero vectors.", }, operator_div = { - { Params = "{{Vector3f}}", Return = "{{Vector3f}}", Notes = "Returns a new Vector3f object with each coord divided by the corresponding coord from the given vector." }, - { Params = "number", Return = "{{Vector3f}}", Notes = "Returns a new Vector3f object with each coord divided by the specified number." }, + { + Params = + { + { + Name = "PerCoordDivisor", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object with each coord divided by the corresponding coord from the given vector.", + }, + { + Params = + { + { + Name = "Divisor", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object with each coord divided by the specified number.", + }, }, operator_mul = { - { Params = "number", Return = "{{Vector3f}}", Notes = "Returns a new Vector3f object that has each of its coords multiplied by the specified number" }, - { Params = "{{Vector3f}}", Return = "{{Vector3f}}", Notes = "Returns a new Vector3f object that has each of its coords multiplied by the respective coord of the specified vector." }, + { + Params = + { + { + Name = "PerCoordMultiplier", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object that has each of its coords multiplied by the specified number", + }, + { + Params = + { + { + Name = "Multiplier", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object that has each of its coords multiplied by the respective coord of the specified vector.", + }, + }, + operator_plus = + { + Params = + { + { + Name = "Other", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector.", }, - operator_plus = { Params = "Vector3f", Return = "Vector3f", Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector." }, operator_sub = { - { Params = "Vector3f", Return = "Vector3f", Notes = "Returns a new Vector3f object that holds the vector differrence between this vector and the specified vector." }, - { Params = "", Return = "{{Vector3f}}", Notes = "Returns a new Vector3f that is a negative of this vector (all coords multiplied by -1)." }, - }, - abs = { Params = "", Return = "", Notes = "OBSOLETE, use Abs() instead." }, - clamp = { Params = "min, max", Return = "", Notes = "OBSOLETE, use Clamp() instead." }, - Abs = { Params = "", Return = "", Notes = "Updates each coord to its absolute value." }, - Clamp = { Params = "min, max", Return = "", Notes = "Clamps each coord into the specified range." }, - Cross = { Params = "Vector3f", Return = "Vector3f", Notes = "Returns a new Vector3f object that holds the cross product of this vector and the specified vector." }, - Dot = { Params = "Vector3f", Return = "number", Notes = "Returns the dot product of this vector and the specified vector." }, - Equals = { Params = "Vector3f", Return = "bool", Notes = "Returns true if the specified vector is exactly equal to this vector. Note that this is subject to (possibly imprecise) floating point math." }, - EqualsEps = { Params = "{{Vector3f|Rhs}}, Eps", Return = "boolean", Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps." }, - Floor = { Params = "", Return = "{{Vector3i}}", Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords." }, - HasNonZeroLength = { Params = "", Return = "boolean", Notes = "Returns true if the vector has at least one coord non-zero. Note that this is subject to (possibly imprecise) floating point math." }, - Length = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of this vector" }, - LineCoeffToXYPlane = { Params = "Vector3f, Z", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToXZPlane = { Params = "Vector3f, Y", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToYZPlane = { Params = "Vector3f, X", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection." }, - Move = + { + Params = + { + { + Name = "Subtrahend", + Type = "Vector3f", + }, + }, + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f object that holds the vector differrence between this vector and the specified vector.", + }, + { + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a new Vector3f that is a negative of this vector (all coords multiplied by -1).", + }, + }, + Set = + { + Params = + { + { + Name = "x", + Type = "number", + }, + { + Name = "y", + Type = "number", + }, + { + Name = "z", + Type = "number", + }, + }, + Notes = "Sets all the coords of the vector at once.", + }, + SqrLength = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison.", + }, + TurnCCW = + { + Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", + }, + TurnCW = { - { Params = "X, Y, Z", Return = "", Notes = "Adds the specified offsets to each coord, effectively moving the vector by the specified coord offsets." }, - { Params = "{{Vector3f|Diff}}", Return = "", Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result." }, + Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", }, - Normalize = { Params = "", Return = "", Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). FIXME: Fails for zero vectors." }, - NormalizeCopy = { Params = "", Return = "Vector3f", Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). FIXME: Fails for zero vectors." }, - Set = { Params = "x, y, z", Return = "", Notes = "Sets all the coords of the vector at once." }, - SqrLength = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison." }, - TurnCCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, - TurnCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, }, Constants = { - EPS = { Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al)." }, - NO_INTERSECTION = { Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane." }, + EPS = + { + Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al).", + }, + NO_INTERSECTION = + { + Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.", + }, }, Variables = { - x = { Type = "number", Notes = "The X coord of the vector." }, - y = { Type = "number", Notes = "The Y coord of the vector." }, - z = { Type = "number", Notes = "The Z coord of the vector." }, + x = + { + Type = "number", + Notes = "The X coord of the vector.", + }, + y = + { + Type = "number", + Notes = "The Y coord of the vector.", + }, + z = + { + Type = "number", + Notes = "The Z coord of the vector.", + }, }, - }, -- Vector3f - + }, Vector3i = { Desc = [[ @@ -379,68 +2149,487 @@ end ]], Functions = { + Abs = + { + Notes = "Updates each coord to its absolute value.", + }, + abs = + { + Notes = "OBSOLETE, use Abs() instead.", + }, + Clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "Clamps each coord into the specified range.", + }, + clamp = + { + Params = + { + { + Name = "min", + Type = "number", + }, + { + Name = "max", + Type = "number", + }, + }, + Notes = "OBSOLETE, use Clamp() instead.", + }, constructor = { - { Params = "", Return = "Vector3i", Notes = "Creates a new Vector3i object with zero coords." }, - { Params = "x, y, z", Return = "Vector3i", Notes = "Creates a new Vector3i object with the specified coords." }, - { Params = "{{Vector3d}}", Return = "Vector3i", Notes = "Creates a new Vector3i object with coords copied and floor()-ed from the specified {{Vector3d}}." }, + { + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Creates a new Vector3i object with zero coords.", + }, + { + Params = + { + { + Name = "x", + Type = "number", + }, + { + Name = "y", + Type = "number", + }, + { + Name = "z", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Creates a new Vector3i object with the specified coords.", + }, + { + Params = + { + { + Name = "Vector3d", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Creates a new Vector3i object with coords copied and floor()-ed from the specified {{Vector3d}}.", + }, + }, + Cross = + { + Params = + { + { + Name = "Other", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "Vector3d", + }, + }, + Notes = "Returns a new Vector3d that is a {{http://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector.", + }, + Dot = + { + Params = + { + { + Name = "Other", + Type = "Vector3d", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the dot product of this vector and the specified vector.", + }, + Equals = + { + Params = + { + { + Name = "Other", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if this vector is exactly the same as the specified vector.", + }, + EqualsEps = + { + Params = + { + { + Name = "Other", + Type = "Vector3i", + }, + { + Name = "Eps", + Type = "number", + }, + }, + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps. Normally not too useful for integer-only vectors, but still included for API completeness.", + }, + Floor = + { + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords. Normally not too useful with integer-only vectors, but still included for API completeness.", + }, + HasNonZeroLength = + { + Returns = + { + { + Type = "boolean", + }, + }, + Notes = "Returns true if the vector has at least one coord non-zero.", + }, + Length = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of this vector.", + }, + LineCoeffToXYPlane = + { + Params = + { + { + Name = "Vector3i", + Type = "Vector3i", + }, + { + Name = "Z", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToXZPlane = + { + Params = + { + { + Name = "Vector3i", + Type = "Vector3i", + }, + { + Name = "Y", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + LineCoeffToYZPlane = + { + Params = + { + { + Name = "Vector3i", + Type = "Vector3i", + }, + { + Name = "X", + Type = "number", + }, + }, + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection.", + }, + Move = + { + { + Params = + { + { + Name = "x", + Type = "number", + }, + { + Name = "y", + Type = "number", + }, + { + Name = "z", + Type = "number", + }, + }, + Notes = "Moves the vector by the specified amount in each axis direction.", + }, + { + Params = + { + { + Name = "Diff", + Type = "Vector3i", + }, + }, + Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result.", + }, + }, + Normalize = + { + Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors.", + }, + NormalizeCopy = + { + Returns = + { + { + Type = "Vector3f", + }, + }, + Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors.", }, operator_div = { - { Params = "number", Return = "Vector3i", Notes = "Returns a new Vector3i object that has each of its coords divided by the specified number" }, - { Params = "Vector3i", Return = "Vector3i", Notes = "Returns a new Vector3i object that has each of its coords divided by the respective coord of the specified vector." }, + { + Params = + { + { + Name = "Divisor", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i object that has each of its coords divided by the specified number", + }, + { + Params = + { + { + Name = "PerCoordDivisors", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i object that has each of its coords divided by the respective coord of the specified vector.", + }, }, operator_mul = { - { Params = "number", Return = "Vector3i", Notes = "Returns a new Vector3i object that has each of its coords multiplied by the specified number" }, - { Params = "Vector3i", Return = "Vector3i", Notes = "Returns a new Vector3i object that has each of its coords multiplied by the respective coord of the specified vector." }, + { + Params = + { + { + Name = "Multiplier", + Type = "number", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i object that has each of its coords multiplied by the specified number", + }, + { + Params = + { + { + Name = "PerCoordMultipliers", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i object that has each of its coords multiplied by the respective coord of the specified vector.", + }, + }, + operator_plus = + { + Params = + { + { + Name = "Addend", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector.", }, - operator_plus = { Params = "Vector3i", Return = "Vector3i", Notes = "Returns a new Vector3f object that holds the vector sum of this vector and the specified vector." }, operator_sub = { - { Params = "Vector3i", Return = "Vector3i", Notes = "Returns a new Vector3i object that holds the vector differrence between this vector and the specified vector." }, - { Params = "", Return = "{{Vector3i}}", Notes = "Returns a new Vector3i that is a negative of this vector (all coords multiplied by -1)." }, - }, - abs = { Params = "", Return = "", Notes = "OBSOLETE, use Abs() instead." }, - clamp = { Params = "min, max", Return = "", Notes = "OBSOLETE, use Clamp() instead." }, - Abs = { Params = "", Return = "", Notes = "Updates each coord to its absolute value." }, - Clamp = { Params = "min, max", Return = "", Notes = "Clamps each coord into the specified range." }, - Cross = { Params = "Vector3d", Return = "Vector3d", Notes = "Returns a new Vector3d that is a {{http://en.wikipedia.org/wiki/Cross_product|cross product}} of this vector and the specified vector." }, - Dot = { Params = "Vector3d", Return = "number", Notes = "Returns the dot product of this vector and the specified vector." }, - Equals = { Params = "Vector3i", Return = "bool", Notes = "Returns true if this vector is exactly the same as the specified vector." }, - EqualsEps = { Params = "{{Vector3i|Rhs}}, Eps", Return = "boolean", Notes = "Returns true if the differences between each corresponding coords of this vector and the one specified, are less than the specified Eps. Normally not too useful for integer-only vectors, but still included for API completeness." }, - Floor = { Params = "", Return = "{{Vector3i}}", Notes = "Returns a new {{Vector3i}} object with coords set to math.floor of this vector's coords. Normally not too useful with integer-only vectors, but still included for API completeness." }, - HasNonZeroLength = { Params = "", Return = "boolean", Notes = "Returns true if the vector has at least one coord non-zero." }, - Length = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of this vector." }, - LineCoeffToXYPlane = { Params = "Vector3i, Z", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Z coord. The result satisfies the following equation: (this + Result * (Param - this)).z = Z. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToXZPlane = { Params = "Vector3i, Y", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified Y coord. The result satisfies the following equation: (this + Result * (Param - this)).y = Y. Returns the NO_INTERSECTION constant if there's no intersection." }, - LineCoeffToYZPlane = { Params = "Vector3i, X", Return = "number", Notes = "Returns the coefficient for the line from the specified vector through this vector to reach the specified X coord. The result satisfies the following equation: (this + Result * (Param - this)).x = X. Returns the NO_INTERSECTION constant if there's no intersection." }, - Move = + { + Params = + { + { + Name = "Subtrahend", + Type = "Vector3i", + }, + }, + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i object that holds the vector differrence between this vector and the specified vector.", + }, + { + Returns = + { + { + Type = "Vector3i", + }, + }, + Notes = "Returns a new Vector3i that is a negative of this vector (all coords multiplied by -1).", + }, + }, + Set = + { + Params = + { + { + Name = "x", + Type = "number", + }, + { + Name = "y", + Type = "number", + }, + { + Name = "z", + Type = "number", + }, + }, + Notes = "Sets all the coords of the vector at once", + }, + SqrLength = + { + Returns = + { + { + Type = "number", + }, + }, + Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison.", + }, + TurnCCW = { - { Params = "x, y, z", Return = "", Notes = "Moves the vector by the specified amount in each axis direction." }, - { Params = "{{Vector3i|Diff}}", Return = "", Notes = "Adds the specified vector to this vector. Is slightly better performant than adding with a \"+\" because this doesn't create a new object for the result." }, + Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", + }, + TurnCW = + { + Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down.", }, - Normalize = { Params = "", Return = "", Notes = "Normalizes this vector (makes it 1 unit long while keeping the direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors." }, - NormalizeCopy = { Params = "", Return = "Vector3f", Notes = "Returns a copy of this vector that is normalized (1 unit long while keeping the same direction). Quite useless for integer-only vectors, since the normalized vector will almost always truncate to zero vector. FIXME: Fails for zero vectors." }, - Set = { Params = "x, y, z", Return = "", Notes = "Sets all the coords of the vector at once" }, - SqrLength = { Params = "", Return = "number", Notes = "Returns the (euclidean) length of this vector, squared. This operation is slightly less computationally expensive than Length(), while it conserves some properties of Length(), such as comparison." }, - TurnCCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees counterclockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, - TurnCW = { Params = "", Return = "", Notes = "Rotates the vector 90 degrees clockwise around the vertical axis. Note that this is specific to minecraft's axis ordering, which is X+ left, Z+ down." }, }, Constants = { - EPS = { Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al). Quite useless with integer-only vector." }, - NO_INTERSECTION = { Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane." }, + EPS = + { + Notes = "The max difference between two coords for which the coords are assumed equal (in LineCoeffToXYPlane() et al). Quite useless with integer-only vector.", + }, + NO_INTERSECTION = + { + Notes = "Special return value for the LineCoeffToXYPlane() et al meaning that there's no intersection with the plane.", + }, }, Variables = { - x = { Type = "number", Notes = "The X coord of the vector." }, - y = { Type = "number", Notes = "The Y coord of the vector." }, - z = { Type = "number", Notes = "The Z coord of the vector." }, + x = + { + Type = "number", + Notes = "The X coord of the vector.", + }, + y = + { + Type = "number", + Notes = "The Y coord of the vector.", + }, + z = + { + Type = "number", + Notes = "The Z coord of the vector.", + }, }, - }, -- Vector3i + }, } - - - - -- cgit v1.2.3