diff --git a/.gitignore b/.gitignore
index d9473065585..fc8f4137175 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,8 +24,9 @@ tools/editor/editor_icons.cpp
make.bat
log.txt
-# Doxygen generated documentation
-doc/doxygen/*
+# Documentation generated by doxygen or scripts
+doc/doxygen/
+doc/html/
# Javascript specific
*.bc
@@ -189,9 +190,6 @@ AutoTest.Net/
# Installshield output folder
[Ee]xpress/
-# dumpdoc generated files
-doc/html/class_list
-
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
diff --git a/doc/core_classes.xml b/doc/core_classes.xml
deleted file mode 100644
index c37b50f1226..00000000000
--- a/doc/core_classes.xml
+++ /dev/null
@@ -1,2654 +0,0 @@
-
-
-
-
- Vector class, which performs basic 3D vector math operations.
-
-
- Vector3 is one of the core classes of the engine, and includes several built-in helper functions to perform basic vecor math operations.
-
-
-
-
-
-
- Sum.
-
-
- Add two vectors.
-
-
-
-
-
-
- Difference.
-
-
- Substract two vectors.
-
-
-
-
-
-
- Quotient.
-
-
- Divide two vectors (component wise).
-
-
-
-
-
-
- Product.
-
-
- Multiply two vectors (components wise).
-
-
-
-
- Axis Index.
-
-
- Value.
-
-
- Set an individual axis (0 is X, 1 is Y and 2 is Z). the enum constants Vector.AXIS_X, Vector.AXIS_Y, and Vector.AXIS_Z, are also valid. This is specially useful for for-loops.
-
-
-
-
- Axis Index.
-
-
- Value.
-
-
- Set an individual axis (0 is X, 1 is Y and 2 is Z). the enum constants Vector.AXIS_X, Vector.AXIS_Y, and Vector.AXIS_Z, are also valid. This is specially useful for for-loops.
-
-
-
-
- Length: sqrt(x^2+y^2+z^2)
-
-
- Return the length of the vector.
-
-
-
-
- Squared Length: x^2+y^2+z^2.
-
-
- Return the length of the vector, without the square root step.
-
-
-
-
- Normalize the vector to unit length. This is the same as v = v / v.length()
-
-
-
-
-
-
- Return a copy of the normalized vector to unit length. This is the same as v / v.length()
-
-
-
-
- Inverse: 1/v
-
-
- Returns the inverse of the vector. this is the same as Vector3( 1.0 / v.x, 1.0 / v.y, 1.0 / v.z )
-
-
-
-
- Set x,y and z to 0.
-
-
-
-
-
-
- Snap the vector in each axis the the lowest nearest multiple. ie: 4,5,7 snapped to 2 equals 4,4,6.
-
-
-
-
-
-
- Snapped copy.
-
-
- Return a copy of the vector, snapped to the lowest neared multiple.
-
-
-
-
-
-
-
-
-
-
- Linearly interpolates the vector to a given one (b), by the given amount (i)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Perform a cubic interpolation between vectors a,b,c,d (b is current), by the given amount (i).
-
-
-
-
-
-
- Cross product.
-
-
- Return the cross product with b.
-
-
-
-
-
-
-
-
- Return the dot product with b.
-
-
-
-
-
-
-
-
- Return the distance to b.
-
-
-
-
-
-
-
-
- Return the squared distance (distance minus the last square root) to b.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Axis-Aligned-Bounding-Box.
-
-
- AABB stands for "Axis Aligned Bounding Box". It consits of a position and a size, which for an box that is always aligned to the x, y and z axis, which goes from "pos" to "pos+size".
-
-
-
-
-
-
- Returns true if the AABB volume is empty (even if it has a surface). Holds true if size.x,y or z is 0.
-
-
-
-
-
-
- Return true if size is 0,0,0.
-
-
-
-
-
-
- Compute the volume of the AABB.
-
-
-
-
-
-
-
-
- Returns true if this AABB shares a portion of space with b.
-
-
-
-
-
-
-
-
- Returns true if this AABB completely encloses b.
-
-
-
-
-
-
- Expand this AABB to also enclose the area of b.
-
-
-
-
-
-
-
-
- Return the shared portion of space with b (empty if they don't intersect).
-
-
-
-
-
-
-
-
- result (if they intersect)
-
-
- normal (if they intersect)
-
-
-
-
- Returns true if this AABB intersects segment "a" towards "b". Also, return the point and normal of intersection.
-
-
-
-
-
-
-
-
- Returns true if this AABB intersects the plane b.
-
-
-
-
-
-
-
-
- Return true if this AABB contains point "p".
-
-
-
-
- Axis direction
-
-
- Get the normal of the longest axis in this AABB.
-
-
-
-
-
-
- Get the index of the longest axis in this AABB.
-
-
-
-
- Get the length of the longest axis in this AABB.
-
-
-
-
-
-
-
-
-
-
- Get one of the edges (0 to 11) of this AABB in "ra" and "rb".
-
-
-
-
-
-
- Grow this AABB, by expanding its margin, by "s".
-
-
-
-
-
-
- Expand this AABB to contain point "p".
-
-
-
-
-
- Position of the AABB.
-
-
- Suze of the AABB (should always be positive).
-
-
-
-
-
- Plane in hessian form.
-
-
- Plane represents a normalized plane equation. Basically, "normal" is the normal of the plane (a,b,c normalized), and "d" is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing.
-
-
-
-
- Normalize the plane (although it will be often normalized already).
-
-
-
-
-
-
- Returns a copy of the plane, normalized.
-
-
-
-
-
-
-
-
- Returns true if "p" is located above the plane.
-
-
-
-
-
-
-
-
- Returns the orthogonal distance from "p" to the plane. If positive, "p" is above, if negative, "p" is below.
-
-
-
-
-
-
-
-
- Returns true if "p" is inside the plane (by a very minimum treshold).
-
-
-
-
-
-
-
-
-
-
-
-
- Returns true if this plane intersects with planes "a" and "b". The resulting intersectin is placed in "r".
-
-
-
-
-
-
-
-
-
-
-
-
- Returns true if ray consiting of position "p" and direction normal "d" intersects this plane. If true, the result is placed in "r".
-
-
-
-
-
-
-
-
-
-
-
-
- Returns true if segment from position "sa" to position "sb" intersects this plane. If true, the result is placed in "r".
-
-
-
-
-
-
-
-
-
- Returns the orthogonal projection of point "p" into a point in the plane.
-
-
-
-
-
-
-
-
- Returns true if plane "b" is very similar to this one.
-
-
-
-
-
- Plane normal vector (a,c and d in the plane equation normalized).
-
-
- Plane distance (d in the plane equation).
-
-
-
-
-
- Quaternion.
-
-
- Quaternion is a 4 dimensional vector that is used to represet a rotation. It mainly exists to perform SLERP (spherical-linear interpolation) between to rotations obtained by a Matrix3 cheaply. Adding quaternions also cheaply adds the rotations, however quaternions need to be often normalized, or else they suffer from precision issues.
-
-
-
-
-
-
- Returns the length of the quaternion.
-
-
-
-
-
-
- Returns the length of the quaternion, minus the square root.
-
-
-
-
- Normalize the quaternion to unit length.
-
-
-
-
-
-
- Returns a copy of the quaternion, normalized to unit length.
-
-
-
-
-
-
- Returns the inverse of the quaternion (applies to the inverse rotatio too).
-
-
-
-
-
-
-
-
- Returns the dot product between two quaternions.
-
-
-
-
-
-
- Create a quaternion from euler rotation "e", as yaw, pitch, roll.
-
-
-
-
-
-
-
-
-
-
- Perform a spherical-linear interpolation with another quaternion.
-
-
-
-
-
-
-
-
- Peform multiplication between two quaternions.
-
-
-
-
-
- x-axis
-
-
- y-axis
-
-
- z-axis
-
-
- w-axis
-
-
-
-
-
- 3x3 Matrix.
-
-
- Matrix represent a 3x3 (3 rows by 3 columns) transformation matrix. it is used mainly to represent and accumulate transformations such as rotation or scale when used as an OCS (oriented coordinate system).
-
-
-
-
- Invert the matrix (transformations are reversed).
-
-
-
-
- Transpose the matrix (transformations are reversed only for orthogonal matrices).
-
-
-
-
-
-
- Returns the inverse of the matrix.
-
-
-
-
-
-
- Returns the transposition of the matrix.
-
-
-
-
-
-
-
-
- Rotates the matrix in normalized "axis" by amount "phi" in radians. (This is equivalent to glRotate from OpenGL).
-
-
-
-
-
-
- Scale each axis of the rotated matrix by 's".
-
-
-
-
-
-
- Get the scale of the matrix.
-
-
-
-
-
-
- Create an orthogonal matrix from euler angles "e", as yaw, pitch, roll.
-
-
-
-
-
-
- Computes and returns the euler engles for an orthogonal matrix, as yaw, pitch, roll.
-
-
-
-
-
-
-
-
- Computes and returns a dot product with transposed axis x.
-
-
-
-
-
-
-
-
- Computes and returns a dot product with transposed axis y.
-
-
-
-
-
-
-
-
- Computes and returns a dot product with transposed axis z.
-
-
-
-
-
-
-
-
- Transforms vector "v" by this matrix (as M x V) and returns the result.
-
-
-
-
-
-
-
-
- Inverse-transforms vector "v" by this matrix (as V x M) and returns the result.
-
-
-
-
-
-
-
-
- Get an axis of the OCS. (0 is X, 1 is Y and 2 is Z). The enum constants Vector.AXIS_X, Vector.AXIS_Y, and Vector.AXIS_Z, are also valid. This is equivalent to get_column().
-
-
-
-
-
-
-
-
- Set an axis of the OCS. (0 is X, 1 is Y and 2 is Z). The enum constants Vector.AXIS_X, Vector.AXIS_Y, and Vector.AXIS_Z, are also valid. This is equivalent to set_column()
-
-
-
-
-
-
-
-
- Get a matrix row.
-
-
-
-
-
-
-
-
- Set a matrix row.
-
-
-
-
-
-
-
-
- Get a matrix column. This is equivalent to get_axis()
-
-
-
-
-
-
-
- Set a matrix column. This is equivalent to set_axis
-
-
-
-
-
-
-
-
-
- Perform a matrix multiplication (M x N) and return the result.
-
-
-
-
-
-
-
-
- Perform a transposed-matrix multiplication (Mt x N) and return the result.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Transformation.
-
-
- Transform is used to store transformations, including translations. It consists of a Matrix3 "basis" and Vector3 "origin". Transform is used to represent transformations of any object in space. It is similar to a 4x3 matrix.
-
-
-
-
- Invert the transform.
-
-
-
-
-
-
-
- Returns the inverse of the transform.
-
-
-
-
-
-
-
-
- Rotates the transform in normalized "axis" by amount "phi" in radians. (This is equivalent to glRotate from OpenGL).
-
-
-
-
-
-
- Scales the whole transform by "s" (including the origin)
-
-
-
-
-
-
- Get the basis.
-
-
-
-
-
-
- Translate the transform by "v".
-
-
-
-
- "Eye" Position.
-
-
- "Target" Position.
-
-
- "Up" Normal Vector.
-
-
- Creates a transform positioned at "eye", looking towards "target". "up" represents the direction where "up" is. This function is useful for setting up cameras.
-
-
-
-
-
-
-
-
- Transforms vector "v" by this transform.
-
-
-
-
-
-
-
-
- Inverse-transforms vector "v" by this transform.
-
-
-
-
-
-
-
-
- Transforms AABB "a" by this transform. The resulting aabb will often be larger, so succesive transforms are not recommended.
-
-
-
-
-
-
-
-
- Inverse-transforms AABB "a" by this transform. The resulting aabb will often be larger, so succesive transforms are not recommended.
-
-
-
-
-
-
-
-
- Transform plane "p" by this transform.
-
-
-
-
-
-
-
-
- Inverse-transforms plane "p" by this transform.
-
-
-
-
-
- Transform "basis" or OCS.
-
-
- Transform origin.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vector used for 2D Math.
-
-
- Vector class, which performs basic 2D vector math operations.
-
-
-
-
-
-
-
-
- Add two vectors.
-
-
-
-
-
-
-
-
- Substract two vectors.
-
-
-
-
-
-
-
-
- Divide two vectors.
-
-
-
-
-
-
-
-
- Multiply two vectors.
-
-
-
-
-
-
- Returns the length of the vector.
-
-
-
-
-
-
- Returns the squared length of the vector.
-
-
-
-
- Normalizes the vector to unit length.
-
-
-
-
-
-
- Returns a normalized vector to unit length.
-
-
-
-
- Sets x and y to 0.
-
-
-
-
-
-
-
-
-
-
- Returns the result of the linear interpolation between this vector and "b", by amount "i".
-
-
-
-
-
-
-
-
- Returns the dot product with vector "b".
-
-
-
-
-
-
-
-
- Returns the distance to vector "b".
-
-
-
-
-
-
- Remove the fractional part of x and y.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Positioned rectangle in 2D.
-
-
- Rect2 represets a positioned rectangle of position "pos" and "size".
-
-
-
-
-
-
- Returns "true" if the rectangle has no area.
-
-
-
-
-
-
-
-
- Returns true if v is contained within the rectangle.
-
-
-
-
-
-
- Extend the rectangle to enclose "b".
-
-
-
-
-
-
-
-
- Return the interection with rectangle "b"
-
-
-
-
-
-
- Extend the rectangle margin by "m".
-
-
-
-
-
- Position of the rectangle.
-
-
- Size of the rectangle.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Color in RGBA format.
-
-
- A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency.
-
-
-
-
-
-
- Convert the color to a 32 its integer (each byte represets a RGBA).
-
-
-
-
-
-
- Convert the color to gray.
-
-
-
-
-
-
- Compute the "hue" of the color.
-
-
-
-
-
-
- Compute the "saturation" of the color.
-
-
-
-
-
-
- Compute the "value" of the color.
-
-
-
-
-
-
-
-
-
-
- Set the color from the HSV format.
-
-
-
-
- Invert the color.
-
-
-
-
- Contrast the color.
-
-
-
-
-
-
- (0 to 1)
-
-
- Linearly blend with color "c", by amount "i".
-
-
-
-
-
- Red.
-
-
- Green.
-
-
- Blue.
-
-
- Alpha.
-
-
-
-
-
- Two Dimensional Image.
-
-
- Image represents a two-dimensional representation of an image, composed by a color per pixel.
-
-
-
-
-
-
- Returns the width of the image (in pixels).
-
-
-
-
-
-
- Returns the height of the image (in pixels).
-
-
-
-
-
-
-
-
-
-
- Get the color of the pixel at position (x,y).
-
-
-
-
-
-
-
-
-
-
- Sets the color of the pixel at position (x,y).
-
-
-
-
-
-
- Convert the image to a new format (valid values in the FORMAT_* enumeration).
-
-
-
-
-
-
- Get the image format (valid values in the FORMAT_* enumeration).
-
-
-
-
-
-
-
-
- Resize the image to a new pixel resolution given by width,height.
-
-
-
-
-
-
-
-
- Crop the image to a new pixel resolution given by width,height.
-
-
-
-
- Flip the X axis of the image.
-
-
-
-
- Flip the Y axis of the image.
-
-
-
-
-
-
- Create a mipmap from "source" image.
-
-
-
-
-
-
- Create a normalmap from "height_scale" image.
-
-
-
-
-
-
-
-
-
-
- Create a new image of size width, height and format.
-
-
-
-
-
-
-
-
-
-
-
-
- Import an image from raw data, given a specific format.
-
-
-
-
-
-
- Returns true if the image is empty.
-
-
-
-
-
-
-
-
- Load an image from a file in "path".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Resource ID.
-
-
- RID references a resource, typically created in a server.
-
-
-
-
-
-
- Returns true if the resource is valid.
-
-
-
-
-
-
- A struct containing information fron an input device.
-
-
- A struct containing information fron an input event, such as mouse, keyboard, joystick, etc. Valid event types are:
-
-
- Return an array with the given range. Range can be 1 argument N (0 to N-1), two arguments (initial, final-1) or three arguments (initial,final-1,increment).
-
Copyright 2008-2010 Codenix SRL
\ No newline at end of file
diff --git a/doc/html/@Global Scope.html b/doc/html/@Global Scope.html
deleted file mode 100644
index 3324383c3d8..00000000000
--- a/doc/html/@Global Scope.html
+++ /dev/null
@@ -1,459 +0,0 @@
-
PROPERTY_HINT_NONE = 0
- No hint for edited property.
-
PROPERTY_HINT_RANGE = 1
-
PROPERTY_HINT_EXP_RANGE = 2
- Hint string is an exponential range, defined as "min,max" or "min,max,step". This is valid for integers and floats.
-
PROPERTY_HINT_ENUM = 3
- Property hint is an enumerated value, like "Hello,Something,Else". This is valid for integers, floats and strings properties.
-
PROPERTY_HINT_LENGTH = 5
-
PROPERTY_HINT_FLAGS = 7
- Property hint is a bitmask description, for bits 0,1,2,3 abd 5 the hint would be like "Bit0,Bit1,Bit2,Bit3,,Bit5". Valid only for integers.
-
PROPERTY_HINT_FILE = 8
- String property is a file (so pop up a file dialog when edited). Hint string can be a set of wildcards like "*.doc".
-
PROPERTY_HINT_DIR = 9
- String property is a directory (so pop up a file dialog when edited).
-
PROPERTY_HINT_RESOURCE_TYPE = 10
- String property is a resource, so open the resource popup menu when edited.
-
PROPERTY_USAGE_STORAGE = 1
- Property will be used as storage (default).
-
PROPERTY_USAGE_STORAGE = 1
- Property will be used as storage (default).
-
PROPERTY_USAGE_EDITOR = 2
- Property will be visible in editor (default).
-
PROPERTY_USAGE_NETWORK = 4
-
PROPERTY_USAGE_DEFAULT = 7
- Default usage (storage and editor).
-
TYPE_NIL = 0
-
TYPE_BOOL = 1
-
TYPE_INT = 2
-
TYPE_REAL = 3
-
TYPE_STRING = 4
-
TYPE_VECTOR2 = 5
-
TYPE_RECT2 = 6
-
TYPE_VECTOR3 = 7
-
TYPE_MATRIX32 = 8
-
TYPE_PLANE = 9
-
TYPE_QUAT = 10
-
TYPE_AABB = 11
-
TYPE_MATRIX3 = 12
-
TYPE_TRANSFORM = 13
-
TYPE_COLOR = 14
-
TYPE_IMAGE = 15
-
TYPE_NODE_PATH = 16
-
TYPE_RID = 17
-
TYPE_OBJECT = 18
-
TYPE_INPUT_EVENT = 19
-
TYPE_DICTIONARY = 20
-
TYPE_ARRAY = 21
-
TYPE_RAW_ARRAY = 22
-
TYPE_INT_ARRAY = 23
-
TYPE_REAL_ARRAY = 24
-
TYPE_STRING_ARRAY = 25
-
TYPE_VECTOR2_ARRAY = 26
-
TYPE_VECTOR3_ARRAY = 27
-
TYPE_COLOR_ARRAY = 28
-
TYPE_MAX = 29
-
Description:
- Global scope constants and variables. This is all that resides in the globals, constants regarding error codes, scancodes, property hints, etc. It's not much.
- Singletons are also documented here, since they can be accessed from anywhere.
-
Method Documentation:
Copyright 2008-2010 Codenix SRL
\ No newline at end of file
diff --git a/doc/html/@Squirrel.html b/doc/html/@Squirrel.html
deleted file mode 100644
index ad4aaa49d83..00000000000
--- a/doc/html/@Squirrel.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
There are many approaches to understanding the type of 3D math used in video
-games, modelling, ray-tracing, etc. The usual is through vector algebra, matrices, and
-linear transformations and, while they are not completely necesary to understand
-most of the aspects of 3D game programming (from the theorical point of view), they
-provide a common language to communicate with other programmers or
-engineers.
-
This tutorial will focus on explaining all the basic concepts needed for a
-programmer to understand how to develop 3D games without getting too deep into
-algebra. Instead of a math-oriented language, code examples will be given instead
-when possible. The reason for this is that. while programmers may have
-different backgrounds or experience (be it scientific, engineering or self taught),
-code is the most familiar language and the lowest common denominator for
-understanding.
-
-
1.2 Vectors
-
-
1.2.1 Brief Introduction
-
When writing 2D games, interfaces and other applications, the typical convention is
-to define coordinates as an x,y pair, x representing the horizontal offset and y the
-vertical one. In most cases, the unit for both is pixels. This makes sense given the
-screen is just a rectangle in two dimensions.
-
An x,y pair can be used for two purposes. It can be an absolute position (screen
-cordinate in the previous case), or a relative direction, if we trace an arrow from the
-origin (0,0 coordinates) to it’s position.
-
-
-
-
-
-
Position
Direction
-
-
-
-
When used as a direction, this pair is called a vector, and two properties can be
-observed: The first is the magnitude or length , and the second is the direction. In
-two dimensions, direction can be an angle. The magnitude or length can be computed
-by simply using Pithagoras theorem:
-
-
-
-
2D
3D
-
-
-
-
The direction can be an arbitrary angle from either the x or y axis, and could be
-computed by using trigonometry, or just using the usual atan2 function present in
-most math libraries. However, when dealing with 3D, the direction can’t be described
-as an angle. To separate magnitude and direction, 3D uses the concept of normal
-vectors.
-
-
1.2.2 Implementation
-
Vectors are implemented in Godot Engine as a class named Vector3 for 3D, and as
-both Vector2, Point2 or Size2 in 2D (they are all aliases). They are used for any
-purpose where a pair of 2D or 3D values (described as x,y or x,y,z) is needed. This is
-somewhat a standard in most libraries or engines. In the script API, they can be
-instanced like this:
-
-
a = Vector3() a = Vector2( 2.0, 3.4 )
-
-
-
Vectors also support the common operators +, -, / and * for addition,
-substraction, multiplication and division.
-
-
a = Vector3(1,2,3) b = Vector3(4,5,6) c = Vector3() // writing c = a + b // is the same as writing c.x = a.x + b.x c.y = a.y + b.y c.z = a.z + b.z // both will result in a vector containing (5,7,9). // the same happens for the rest of the operators.
-
-
Vectors also can perform a wide variety of built-in functions, their most common
-usages will be explored next.
-
-
1.2.3 Normal Vectors
-
Two points ago, it was mentioned that 3D vectors can’t describe their direction as an
-agle (as 2D vectors can). Because of this, normal vectors become important for
-separating a vector between direction and magnitude.
-
A normal vector is a vector with a magnitude of 1. This means, no matter where
-the vector is pointing to, it’s length is always 1.
-
-
-
Normal vectors aroud the origin.
-
-
-
Normal vectors have endless uses in 3D graphics programming, so it’s
-recommended to get familiar with them as much as possible.
-
-
1.2.4 Normalization
-
Normalization is the process through which normal vectors are obtained
-from regular vectors. In other words, normalization is used to reduce the
-magnitude of any vector to 1. (except of course, unless the vector is (0,0,0)
-).
-
To normalize a vector, it must be divided by its magnitude (which should be
-greater than zero):
-
-
//acustomvectoriscreated a = Vector3(4,5,6) //’l’isasinglerealnumber(orscalar)containightthelength l = Math.sqrt( a.x*a.x + a.y*a.y + a.z*a.z ) //thevector’a’isdividedbyitslength,byperformingscalardivide a = a / l //whichisthesameas a.x = a.x / l a.y = a.y / l a.z = a.z / l
-
-
-
Vector3 contains two built in functions for normalization:
-
-
a = Vector3(4,5,6) a.normalize() //in-placenormalization b = a.normalized() //returnsacopyofa,normalized
-
-
-
1.2.5 Dot Product
-
The dot product is, pheraps, the most useful operation that can be applied to 3D
-vectors. In the surface, it’s multiple usages are not very obvious, but in depth it can
-provide very useful information between two vectors (be it direction or just points in
-space).
-
The dot product takes two vectors (a and b in the example) and returns a scalar
-(single real number):
-
-
-
axbx+ ayby+ azbz
-
-
The same expressed in code:
-
-
a = Vector3(...) b = Vector3(...) c = a.x*b.x + a.y*b.y + a.z*b.z //usingbuilt-indot()function c = a.dot(b)
-
-
The dot product presents several useful properties:
-
-
If both a and b parameters to a dot product are direction vectors, dot
- product will return positive if both point towards the same direction,
- negative if both point towards opposite directions, and zero if they are
- orthogonal (one is perpendicular to the other).
-
-
If both a and b parameters to a dot product are normalized direction
- vectors, then the dot product will return the cosine of the angle between
- them (ranging from 1 if they are equal, 0 if they are orthogonal, and -1 if
- they are opposed (a == -b)).
-
-
If a is a normalized direction vector and b is a point, the dot product will
- return the distance from b to the plane passing through the origin, with
- normal a (see item about planes)
-
-
-
More uses will be presented later in this tutorial.
-
-
1.2.6 Cross Product
-
The cross product also takes two vectors a and b, but returns another vector c that is
-orthogonal to the two previous ones.
-
-
-
cx= axbz- azby
-
-
-
-
cy= azbx- axbz
-
-
-
-
cz= axby- aybx
-
-
The same in code:
-
-
a = Vector3(...) b = Vector3(...) c = Vector3(...) c.x = a.x*b.z - a.z*b.y c.y = a.z*b.x - a.x*b.z c.z = a.x*b.y - a.y*b.x // or using the built-in function c = a.cross(b)
-
-
The cross product also presents several useful properties:
-
-
As mentioned, the resulting vector c is orthogonal to the input vectors a
- and b.
-
-
Since the cross product is anticommutative, swapping a and b will result
- in a negated vector c.
-
-
-
if a and b are taken from two of the segmets AB, BC or CA that form a
- 3D triangle, the magnitude of the resulting vector divided by 2 is the area
- of that triangle.
-
-
The direction of the resulting vector c in the previous triangle example
- determines wether the points A,B and C are arranged in clocwise or
- counter-clockwise order.
-
-
1.3 Plane
-
-
1.3.1 Theory
-
A plane can be considered as an infinite, flat surface that splits space in two halves,
-usually one named positive and one named negative. In regular mathematics, a plane
-formula is described as:
-
-
-
ax + by + cz + d
-
-
However, in 3D programming, this form alone is often of little use. For planes to
-become useful, they must be in normalized form.
-
A normalized plane consists of a normal vector n and a distance d. To normalize
-a plane, a vector n and distance d’ are created this way:
-
nx= a
-
ny= b
-
nz= c
-
d′ = d
-
Finally, both n and d’ are both divided by the magnitude of n.
-
In any case, normalizing planes is not often needed (this was mostly for
-explanation purposes), and normalized planes are useful because they can be created
-and used easily.
-
A normalized plane could be visualized as a plane pointing towards normal n,
-offseted by d in the direction of n.
-
In other words, take n, multiply it by scalar d and the resulting point will be part
-of the plane. This may need some thinking, so an example with a 2D normal vector
-(z is 0, so plane is orthogonal to it) is provided:
-
Some operations can be done with normalized planes:
-
-
-
Given any point p, the distance from it to a plane can be computed by
- doing: n.dot(p) - d
-
-
If the resulting distance in the previous point is negative, the point is
- below the plane.
-
-
Convex polygonal shapes can be defined by enclosing them in planes (the
- physics engine uses this property)
-
-
1.3.2 Implementation
-
Godot Engine implements normalized planes by using the Plane class.
-
-
//creates a plane with normal (0,1,0) and distance 5 p = Plane( Vector3(0,1,0), 5 ) // get the distance to a point d = p.distance( Vector3(4,5,6) )
-
-
-
1.4 Matrices, Quaternions and Coordinate Systems
-
It is very often needed to store the location/rotation of something. In 2D, it is often
-enough to store an x,y location and maybe an angle as the rotation, as that should
-be enough to represent any posible position.
-
In 3D this becomes a little more difficult, as there is nothing as simple as an angle
-to store a 3-axis rotation.
-
The first think that may come to mind is to use 3 angles, one for x, one for y and
-one for z. However this suffers from the problem that it becomes very cumbersome to
-use, as the individual rotations in each axis need to be performed one after another
-(they can’t be performed at the same time), leading to a problem called “gimbal
-lock”. Also, it becomes impossible to accumulate rotations (add a rotation to an
-existing one).
-
To solve this, there are two known diferent approaches that aid in solving
-rotation, Quaternions and Oriented Coordinate Systems.
-
-
1.4.1 Oriented Coordinate Systems
-
Oriented Coordinate Systems (OCS) are a way of representing a coordinate system
-inside the cartesian coordinate system. They are mainly composed of 3 Vectors, one
-for each axis. The first vector is the x axis, the second the y axis, and the third is the
-
-z axis. The OCS vectors can be rotated around freely as long as they are kept the
-same length (as changing the length of an axis changes its cale), and as long as they
-remain orthogonal to eachother (as in, the same as the default cartesian system,
-with y pointing up, x pointing left and z pointing front, but all rotated
-together).
-
Oriented Coordinate Systems are represented in 3D programming as a 3x3 matrix,
-where each row (or column, depending on the implementation) contains one of the
-axis vectors. Transforming a Vector by a rotated OCS Matrix results in the rotation
-being applied to the resulting vector. OCS Matrices can also be multiplied to
-accumulate their transformations.
-
Godot Engine implements OCS Matrices in the Matrix3 class:
-
-
//createa3x3matrix m = Matrix3() //rotatethematrixintheyaxis,by45degrees m.rotate( Vector3(0,1,0), Math.deg2rad(45) ) //transformavectorv(xformmethodisused) v = Vector3(...) result = m.xform( v )
-
-
However, in most usage cases, one wants to store a translation together with the
-rotation. For this, an origin vector must be added to the OCS, thus transforming it
-into a 3x4 (or 4x3, depending on preference) matrix. Godot engine implements this
-functionality in the Transform class:
-
-
t = Transform() //rotate the transform in the y axis, by 45 degrees t.rotate( Vector3(0,1,0), Math.deg2rad(45) ) //translate the transform by 5 in the z axis t.translate( Vector3( 0,0,5 ) ) //transform a vector v (xform method is used) v = Vector3(...) result = t.xform( v )
-
-
Transform contains internally a Matrix3 “basis” and a Vector3 “origin” (which can
-be modified individually).
-
-
1.4.2 Transform Internals
-
Internally, the xform() process is quite simple, to apply a 3x3 transform to a vector,
-the transposed axis vectors are used (as using the regular axis vectors will result on
-an inverse of the desired transform):
-
-
m = Matrix3(...) v = Vector3(..) result = Vector3(...) x_axis = m.get_axis(0) y_axis = m.get_axis(1) z_axis = m.get_axis(2) result.x = Vector3(x_axis.x, y_axis.x, z_axis.x).dot(v) result.y = Vector3(x_axis.y, y_axis.y, z_axis.y).dot(v) result.z = Vector3(x_axis.z, y_axis.z, z_axis.z).dot(v) // is the same as doing result = m.xform(v) // if m this was a Transform(), the origin would be added // like this: result = result + t.get_origin()
-
-
-
1.4.3 Using The Transform
-
So, it is often desired apply sucessive operations to a transformation. For example,
-let’s a assume that there is a turtle sitting at the origin (the turtle is a logo reference,
-
-for those familiar with it). The y axis is up, and the the turtle’s nose is pointing
-towards the z axis.
-
The turtle (like many other animals, or vehicles!) can only walk towards the
-direction it’s looking at. So, moving the turtle around a little should be something
-like this:
-
-
As can be seen, every new action the turtle takes is based on the previous one it
-took. Had the order of actions been different and the turtle would have never reached
-the lettuce.
-
Transforms are just that, a mean of “accumulating” rotation, translation, scale,
-etc.
-
-
1.4.4 A Warning about Numerical Precision
-
Performing several actions over a transform will slowly and gradually lead to
-precision loss (objects that draw according to a transform may get jittery, bigger,
-smaller, skewed, etc). This happens due to the nature of floating point numbers. if
-transforms/matrices are created from other kind of values (like a position and
-some angular rotation) this is not needed, but if has been accumulating
-transformations and was never recreated, it can be normalized by calling the
-.orthonormalize() built-in function. This function has little cost and calling it every
-now and then will avoid the effects from precision loss to become visible.
-
-
-
-
-
diff --git a/doc/html/tutorial01/tutorial0x.png b/doc/html/tutorial01/tutorial0x.png
deleted file mode 100644
index a0ed4f53ffa..00000000000
Binary files a/doc/html/tutorial01/tutorial0x.png and /dev/null differ
diff --git a/doc/html/tutorial01/tutorial1x.png b/doc/html/tutorial01/tutorial1x.png
deleted file mode 100644
index 80f0d099f73..00000000000
Binary files a/doc/html/tutorial01/tutorial1x.png and /dev/null differ
diff --git a/doc/html/tutorial01/tutorial2x.png b/doc/html/tutorial01/tutorial2x.png
deleted file mode 100644
index 76c502b6da0..00000000000
Binary files a/doc/html/tutorial01/tutorial2x.png and /dev/null differ
diff --git a/doc/html/tutorial01/tutorial3x.png b/doc/html/tutorial01/tutorial3x.png
deleted file mode 100644
index 8431e9d15c0..00000000000
Binary files a/doc/html/tutorial01/tutorial3x.png and /dev/null differ
diff --git a/doc/html/tutorial01/tutorial4x.png b/doc/html/tutorial01/tutorial4x.png
deleted file mode 100644
index 1ce7a2bb456..00000000000
Binary files a/doc/html/tutorial01/tutorial4x.png and /dev/null differ
diff --git a/doc/notes.txt b/doc/notes.txt
deleted file mode 100644
index 39c03ca4c54..00000000000
--- a/doc/notes.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-
-in FileDialog file_selected -> file_activated
-focus script/shader editor when gaining focus
-detect if errors in editor and don't allow play
-
-
--tree of files (all recognized extensions)
-
-*export: *keep|export|bundle
-*options: [make binary for xnl], then options for each filetype (texture compress method, etc)
-
-
-config.h deberia teber varias cosas de plataforma
-
-_FORCE_INLINE_
-copymem
-ftoi
-defines de funciones matematicas
-
-
diff --git a/doc/phys_engine.png b/doc/phys_engine.png
deleted file mode 100644
index 15539d47d76..00000000000
Binary files a/doc/phys_engine.png and /dev/null differ
diff --git a/doc/squirrel.lyx b/doc/squirrel.lyx
deleted file mode 100644
index 05270c1b8f8..00000000000
--- a/doc/squirrel.lyx
+++ /dev/null
@@ -1,984 +0,0 @@
-#LyX 2.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 413
-\begin_document
-\begin_header
-\textclass article
-\use_default_options true
-\maintain_unincluded_children false
-\language english
-\language_package default
-\inputencoding auto
-\fontencoding global
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_default_family default
-\use_non_tex_fonts false
-\font_sc false
-\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
-\graphics default
-\default_output_format default
-\output_sync 0
-\bibtex_command default
-\index_command default
-\paperfontsize default
-\use_hyperref false
-\papersize default
-\use_geometry false
-\use_amsmath 1
-\use_esint 1
-\use_mhchem 1
-\use_mathdots 1
-\cite_engine basic
-\use_bibtopic false
-\use_indices false
-\paperorientation portrait
-\suppress_date false
-\use_refstyle 1
-\index Index
-\shortcut idx
-\color #008000
-\end_index
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\paragraph_indentation default
-\quotes_language english
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\html_math_output 0
-\html_css_as_file 0
-\html_be_strict false
-\end_header
-
-\begin_body
-
-\begin_layout Title
-Squirrel Usage in Godot
-\end_layout
-
-\begin_layout Section
-Introduction
-\end_layout
-
-\begin_layout Standard
-Squirrel is a nice scripting language.
- It's sort of a mix between Lua, Java and JavaScript and ends up being easy
- to learn for most programmers.
- It has more language features than GDScript but it's also slower, more
- limited and not as well integrated.
- This guide will explain how Squirrel is integrated to Godot and all the
- quirks that are needed to know in order to use it properly.
-\end_layout
-
-\begin_layout Section
-Enabling Squirrel
-\end_layout
-
-\begin_layout Standard
-Squirrel may not be enabled by default in a Godot build.
- To enable it, execute SCons with the following parameters:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-shell$ scons squirrel=yes
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Documentation
-\end_layout
-
-\begin_layout Standard
-Godot utilizes Squirrel 2.2.
- Documentation can be found at:
-\begin_inset CommandInset href
-LatexCommand href
-target "http://squirrel-lang.org/#documentation"
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Class Files
-\end_layout
-
-\begin_layout Standard
-Unless writing a library, Godot expects a class for scripting an object.
- Since a Squirrel source file can contain many classes, the main class must
- be returned.
- The following is an example of extending a button:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-class MyButton extends Button {
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
- constructor() {
-\end_layout
-
-\begin_layout Plain Layout
-
- // ALWAYS call parent constructor
-\end_layout
-
-\begin_layout Plain Layout
-
- Button.constructor()
-\end_layout
-
-\begin_layout Plain Layout
-
- }
-\end_layout
-
-\begin_layout Plain Layout
-
-}
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-return MyButton // main class returned
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Additionally, classes are all copied to the root table, so all class names
- in scripts must be different if they are attempted to be loaded simultaneously.
- The same can be said for any other globals declared in the script.
-
-\end_layout
-
-\begin_layout Standard
-Finally, squirrel scripts must be saved with the .nut or .sq extensions (both
- are recognized).
-\end_layout
-
-\begin_layout Section
-Including Other Scripts
-\end_layout
-
-\begin_layout Standard
-Other scripts can be included with the include() directive.
- Full and relative paths are supported.
- When included, the classes and globals are moved to the root table, so
- they become immediately available.
- Constants, however, are only inlined in the current class on load, so Squirrel
- does not make them available.
- Example of including scripts:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-include("my_button.nut") # // relative to current script, expected to be
- in the same path
-\end_layout
-
-\begin_layout Plain Layout
-
-include("res://buttons/my_button.nut") // using resource path
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Built-In Types
-\end_layout
-
-\begin_layout Standard
-There are some small differences between the Built-In types in Godot and
- the ones in Squirrel, so the documentation will not match.
- The differences are documented here.
-\end_layout
-
-\begin_layout Standard
-An attempt will be made to document everything here,but if in doubt about
- bindings on built-in types, you can always take a loot at the bindings
- source file in script/squirrel/sq_bind_types.cpp.
-\end_layout
-
-\begin_layout Standard
-Built-In Types in Squirrel are passed by reference (unlike by value like
- in GD).
- They also don't need to be freed.
-\end_layout
-
-\begin_layout Subsection
-AABB
-\end_layout
-
-\begin_layout Standard
-\begin_inset Quotes eld
-\end_inset
-
-pos
-\begin_inset Quotes erd
-\end_inset
-
-,
-\begin_inset Quotes eld
-\end_inset
-
-size
-\begin_inset Quotes erd
-\end_inset
-
- and
-\begin_inset Quotes eld
-\end_inset
-
-end
-\begin_inset Quotes erd
-\end_inset
-
- are not available Use get_pos()/set_pos and get_size()/set_size().
-\end_layout
-
-\begin_layout Subsection
-InputEvent
-\end_layout
-
-\begin_layout Standard
-InputEvent is a single datatype and contains everything.
- Use only the fields meant for the event type:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-//for mouse motion and button
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_x
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_y
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_button_mask
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_global_x
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_global_y
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//for mouse button
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_button_index
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mouse_button_pressed
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mouse_button_doubleclick
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//for mouse motion
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_motion_x
-\end_layout
-
-\begin_layout Plain Layout
-
-int mouse_motion_y
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//for keyboard
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int key_scancode
-\end_layout
-
-\begin_layout Plain Layout
-
-int key_unicode
-\end_layout
-
-\begin_layout Plain Layout
-
-bool key_pressed
-\end_layout
-
-\begin_layout Plain Layout
-
-bool key_echo
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//for keyboard and mouse
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mod_alt
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mod_shift
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mod_meta
-\end_layout
-
-\begin_layout Plain Layout
-
-bool mod_control
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//joy button
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int joy_button_index
-\end_layout
-
-\begin_layout Plain Layout
-
-bool joy_button_pressed
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//joy axis
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int joy_axis
-\end_layout
-
-\begin_layout Plain Layout
-
-float joy_axis_value
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//screen drag and touch
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int screen_index
-\end_layout
-
-\begin_layout Plain Layout
-
-int screen_x
-\end_layout
-
-\begin_layout Plain Layout
-
-int screen_y
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//screen touch
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int screen_index
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-//action
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-int action_id
-\end_layout
-
-\begin_layout Plain Layout
-
-bool action_pressed
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Subsection
-Matrix3
-\end_layout
-
-\begin_layout Standard
-x,y,z member vectors are not available.
- Use get_row() and set_row() instead.
- Individual float values of the matrix are available as swizzle masks such
- as xxy, xyz, zzx, etc.
-\end_layout
-
-\begin_layout Standard
-Additional in-place versions of some functions are available: transpose(),
- invert(), rotate(), scale(), orthonormalize().
-\end_layout
-
-\begin_layout Subsection
-Transform
-\end_layout
-
-\begin_layout Standard
-\begin_inset Quotes eld
-\end_inset
-
-basis
-\begin_inset Quotes erd
-\end_inset
-
- and
-\begin_inset Quotes eld
-\end_inset
-
-origin
-\begin_inset Quotes erd
-\end_inset
-
- members are not available.
- Use get_basis()/set_basis() and get_origin()/set_origin() instead.
- Additional in-place versions of some functions are available: invert(),
- affine_invert(), orthonormalize(), rotate(), translate(), scale().
-\end_layout
-
-\begin_layout Standard
-Vector2
-\end_layout
-
-\begin_layout Subsection
-Plane
-\end_layout
-
-\begin_layout Standard
-\begin_inset Quotes eld
-\end_inset
-
-normal
-\begin_inset Quotes erd
-\end_inset
-
- member vector is not available.
- Use get_normal(), set_normal() instead.
-\end_layout
-
-\begin_layout Subsection
-Rect2
-\end_layout
-
-\begin_layout Standard
-\begin_inset Quotes eld
-\end_inset
-
-pos
-\begin_inset Quotes erd
-\end_inset
-
-,
-\begin_inset Quotes eld
-\end_inset
-
-size
-\begin_inset Quotes erd
-\end_inset
-
- and
-\begin_inset Quotes eld
-\end_inset
-
-end
-\begin_inset Quotes erd
-\end_inset
-
- are not available Use get_pos()/set_pos and get_size()/set_size().
-\end_layout
-
-\begin_layout Subsection
-Native Arrays
-\end_layout
-
-\begin_layout Standard
-Native arrays such as RawArray, IntArray,StringArray, etc are not supported.
- Use regular squirrel arrays instead, since conversion to/from them will
- happen automatically.
-\end_layout
-
-\begin_layout Subsection
-Math Functions
-\end_layout
-
-\begin_layout Standard
-Math functions are inside the Math namespace in Squirrel.
- For example Math.sin , Math.PI, Math.atan2().
-\end_layout
-
-\begin_layout Subsection
-Native Types
-\end_layout
-
-\begin_layout Standard
-Array, Dictionary and NodePath are not available.
- Use a native array, table and string respectively.
-\end_layout
-
-\begin_layout Section
-_get , _set
-\end_layout
-
-\begin_layout Standard
-_get and _set are reserved in Squirrel, for overriding Godot Object property
- getter/setter, use _get_property and _set_property.
-\end_layout
-
-\begin_layout Section
-Member Export
-\end_layout
-
-\begin_layout Standard
-Simple exporting of members (so far only integer, floating point and string
- are supported) is supported by the @export extension.
- It is used like this:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-class MyButton extends Button {
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
- aprop=1 // @export
-\end_layout
-
-\begin_layout Plain Layout
-
- bprop=2.0 // @export
-\end_layout
-
-\begin_layout Plain Layout
-
- cprop="3" // @export
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
- //these will be available to the property editor, and will be loaded/saved
- with the scene.
-\end_layout
-
-\begin_layout Plain Layout
-
-}
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Always Enabled Scripts
-\end_layout
-
-\begin_layout Standard
-Scripts are not enabled in the editor by default.
- To enable a script always, add an @always_enabled comment.
- Example:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-//@always_enabled
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-class MyButton extends Button {
-\end_layout
-
-\begin_layout Plain Layout
-
-\end_layout
-
-\begin_layout Plain Layout
-
-...
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-Threads
-\end_layout
-
-\begin_layout Standard
-Thread support in Squirrel is very poor.
- This is because of the stack-based nature of the language implementation.
- Since godot can run in multiple threads, it will forcibily lock the whole
- VM when accessed from multiple threads, which will result in degraded performan
-ce.
- Creating user threads in Squirrel is definitely not recomended, as it may
- completely lock the main thread.
-\end_layout
-
-\begin_layout Section
-References
-\end_layout
-
-\begin_layout Standard
-Godot has a built-in reference counted type used in conjunction with a template
- (objects that inherit the
-\begin_inset Quotes eld
-\end_inset
-
-Reference
-\begin_inset Quotes erd
-\end_inset
-
- class).
- Since Squirrel also uses reference counting, it becomes impossible for
- such types in godot to contain a script, because it would result in an
- un-breakable reference cycle.
- To avoid this, a Ref() class was created in Squirrel.
-
-\end_layout
-
-\begin_layout Standard
-When calling Godot API functions, returned references are wrapped inside
- Ref() transparently, but the problem arises when creating a Reference-derived
- object from the code.
- In such cases, the reference must be wrapped manually like this:
-\end_layout
-
-\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-local f = Ref( File() )
-\end_layout
-
-\begin_layout Plain Layout
-
-local err = f.open("hello.txt",File.READ)
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Anything not a reference that inherits from Object can be freed manually
- by calling .free(), just like in GDScript.
- Object classes are in itself weak references to engine objects, and their
- validity can be checked by calling the
-\begin_inset Quotes eld
-\end_inset
-
-has_instance()
-\begin_inset Quotes erd
-\end_inset
-
- built-in method.
-\end_layout
-
-\begin_layout Section
-Unicode
-\end_layout
-
-\begin_layout Standard
-Squirrel source code is supposed to support Unicode, but the implementation
- is very broken (Squirrel attempts to use 16 bit chars no matter what, making
- it incompatible when the host OS is 32 bit, like Linux).
- Squirrel source code is parsed as UTF-8, and strings also contain UTF-8.
- Wide char access in strings is not supported.
-\end_layout
-
-\begin_layout Section
-Debugging
-\end_layout
-
-\begin_layout Standard
-Squirrel is well integrated into the Godot debugger.
- To run the project in debug mode, execute the godot binary with the -debug
- argument.
- Godot will break on squirrel errors and allow the programmer to debug.
-\end_layout
-
-\begin_layout Section
-Utility Functions
-\end_layout
-
-\begin_layout Standard
-There are a few squirrel-only utility functions available:
-\end_layout
-
-\begin_layout Subsection
-print(value[,value])
-\end_layout
-
-\begin_layout Standard
-Print stuff to stdout.
-\end_layout
-
-\begin_layout Subsection
-dofile(path)
-\end_layout
-
-\begin_layout Standard
-Execute a squirrel script file and return whatever the file returns.
- Not recommended to use in production because it can't be optimized.
-\end_layout
-
-\begin_layout Subsection
-nativeref(var)
-\end_layout
-
-\begin_layout Standard
-Convert any squirrel type to an engine type.
- When this type returns to squirrel, it's converted back.
- This is useful to add to Godot callbacks to ensure that the datatype is
- not converted.
-\end_layout
-
-\begin_layout Subsection
-unicode_split(string)
-\end_layout
-
-\begin_layout Standard
-Split an unicode string (utf8) into an array of widechars.
- Useful since there is no wide char access from Squirrel.
-\end_layout
-
-\begin_layout Subsection
-breakpoint()
-\end_layout
-
-\begin_layout Standard
-Stop the debugger when reaches here (when run inside the debugger).
-\end_layout
-
-\begin_layout Subsection
-backtrace()
-\end_layout
-
-\begin_layout Standard
-Print a backtrace of the call stack.
-\end_layout
-
-\begin_layout Subsection
-tr(text)
-\end_layout
-
-\begin_layout Standard
-Translate text (use string lookup in Godot translation system).
-\end_layout
-
-\begin_layout Subsection
-printerr(text)
-\end_layout
-
-\begin_layout Standard
-Print a string to stderr.
-\end_layout
-
-\end_body
-\end_document
diff --git a/doc/todo.txt b/doc/todo.txt
deleted file mode 100644
index 511b5dbbe21..00000000000
--- a/doc/todo.txt
+++ /dev/null
@@ -1,39 +0,0 @@
--Fisica 2D
- *terminar constraints
- *terminar queries
- *desactivar on suspend
- -bugs supongo?
-
--Fisica 3D
- -portar engine 2D a 3D mayoritariamente (si puedo esperar, mejor)
- -hacer que skeletons se vuelvan ragdolls de alguna forma
- -hacer bien lo de enganchar cosas a huesos de esqueleto
-
--GUI
- - Tree necesita resizear desde los headers
-
--Escena 3D
- -Deshabilitar 3D (Opcional en compilacion)
- -Particulas 3D
- -Heightmaps
- -Arreglar fixed pipeline
- -arreglar glow y ssao
-
--Editor codigo
- -Editor de codigo (esta, pero esta lleno de bugs)
- -Debugger (esta, pero hay que integrar bien)
-
--UI General
- -Cambiar lugar el tema de resources porque es MUY poco intuitivo
- -Tal vez arreglar un poquito el theme y la estetica (para release, low priority)
- -Run deberia correr la escena main
- -new script deberia dar opcion de crear en disco
- -los scripts de deberian mantener abiertos al abrir otra escena
- -
-
--Settings
- -Hacer pantalla de optimizacion general del proyecto
-
--A futuro:
- -Scripting Propio
- -Portar a DX9/GL3
\ No newline at end of file
diff --git a/doc/tutorial/01 Getting Started.lyx b/doc/tutorial/01 Getting Started.lyx
deleted file mode 100644
index bdb4c7706d1..00000000000
--- a/doc/tutorial/01 Getting Started.lyx
+++ /dev/null
@@ -1,557 +0,0 @@
-#LyX 1.6.5 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
-\begin_document
-\begin_header
-\textclass article
-\use_default_options true
-\language english
-\inputencoding auto
-\font_roman default
-\font_sans default
-\font_typewriter default
-\font_default_family default
-\font_sc false
-\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
-\graphics default
-\paperfontsize default
-\use_hyperref false
-\papersize default
-\use_geometry false
-\use_amsmath 1
-\use_esint 1
-\cite_engine basic
-\use_bibtopic false
-\paperorientation portrait
-\secnumdepth 3
-\tocdepth 3
-\paragraph_separation indent
-\defskip medskip
-\quotes_language english
-\papercolumns 1
-\papersides 1
-\paperpagestyle default
-\tracking_changes false
-\output_changes false
-\author ""
-\author ""
-\end_header
-
-\begin_body
-
-\begin_layout Title
-01.
- Getting Started with Godot Engine
-\end_layout
-
-\begin_layout Section*
-Introduction:
-\end_layout
-
-\begin_layout Standard
-Godot Engine is designed to be useful.
- This may sound rather vague and is difficult to explain without repeating
- the same claims that every other engine does, but, as we progress through
- this (and the next) tutorials, hopefully it will be made clear what
-\begin_inset Quotes eld
-\end_inset
-
-useful
-\begin_inset Quotes erd
-\end_inset
-
- means.
-\end_layout
-
-\begin_layout Standard
-Godot Engine has many components, both high and low level, and is usually
- more abstract and complex than most other engines.
- This is, however, to the advantage of the user as complexity is presented
- in a way that it only needs to be discovered when more power needs to be
- untapped.
- This helps to provide an easy learning curve.
-\end_layout
-
-\begin_layout Standard
-Design wise, the whole API and set of components were created with a clear
- goal in mind, which is to allow for smooth integration of design ideas,
- code and assets.
- This is achieved by defining the following rules:
-\end_layout
-
-\begin_layout Itemize
-Implementing a game feature should never be too many steps away from an
- existing component.
-\end_layout
-
-\begin_layout Itemize
-More complex features should be leveraged by combining or extending existing
- components.
-\end_layout
-
-\begin_layout Itemize
-If the above fails, creating custom components should be extremely simple.
-\end_layout
-
-\begin_layout Standard
-Ultimately, Godot Engine provides an editor and tools that allows everyone
- to work with it:
-\end_layout
-
-\begin_layout Itemize
-Programmers can script and extend any component of the project.
-\end_layout
-
-\begin_layout Itemize
-Designers can tweak and animate any parameter from a friendly user interface.
-\end_layout
-
-\begin_layout Itemize
-Artists can import their art and models and tweak the look of everything
- in realtime.
-\end_layout
-
-\begin_layout Section*
-Editor:
-\end_layout
-
-\begin_layout Standard
-As mentioned before, Godot Engine is very abstract so projects consist of
- just a
-\emph on
-path
-\emph default
- (ie: C:
-\backslash
-games
-\backslash
-mygame5).
- Projects don't have to be specifically created, and many can be placed
- inside the same path (useful for not wasting folders on tests and experiments).
-
-\end_layout
-
-\begin_layout Standard
-In any case, to ease the management of projects, a graphical util exists.
-\end_layout
-
-\begin_layout Subsection*
-Running From The Project Manager
-\end_layout
-
-\begin_layout Standard
-Godot Engine includes a built-in project manager.
- This is installed by default on Windows and OSX and it allows for the creation
- and removal projects that will be remembered at the next startup:
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename pm.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-To create a new project, the [Create] button must be pressed and a dialog
- will appear, prompting for a path and project name.
- Afterwards, the [Open] button will close the project manager and open the
- desired project.
-\end_layout
-
-\begin_layout Subsection*
-Running From the Command Line
-\end_layout
-
-\begin_layout Standard
-To create and manage projects, it is perfectly possible to use the command
- line.
- Many users prefer this way of working with project data.
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename pmc.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-For ease of use, it is recommended that the
-\begin_inset Quotes eld
-\end_inset
-
-godot
-\begin_inset Quotes erd
-\end_inset
-
- binary exists in the path, so any project can be opened easily aywhere
- just by changing location to the projec and executing the editor.
-\end_layout
-
-\begin_layout Subsection*
-Godot Editor
-\end_layout
-
-\begin_layout Standard
-Godot Editor should have been opened by now, if not please check the previous
- steps again.
-\end_layout
-
-\begin_layout Standard
-Godot has a powerful buit-in editor.
- It uses the graphics toolkint within itself to display the UI, so it runs
- identical on any platform (even consoles or phones!).
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename editor.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-In the above screenshots, a few regions are labelled to be explained as
- follows:
-\end_layout
-
-\begin_layout Subsubsection*
-Viewport
-\end_layout
-
-\begin_layout Standard
-The
-\emph on
-Viewport
-\emph default
- is the main space where the content is displayed.
- Content includes 3D Nodes or Graphical User Interface (GUI) controls.
- Other types of data spawn editors of their own when being edited.
- The default viewport is the 3D viewport, which can be panned, zoomed, etc.
-\end_layout
-
-\begin_layout Subsubsection*
-Scene Tree
-\end_layout
-
-\begin_layout Standard
-The
-\emph on
-Scene Tree
-\emph default
- is a small dock that displays the tree of the current scene being edited.
- A scene is a collection of nodes arranged in a tree-hierarchy (any node
- can have several owned children-nodes).
- The meaning of this ownership depends purely on the
-\emph on
-type
-\emph default
- of the node, but it will become clear after going through the examples.
- In a
-\emph on
-MVC
-\emph default
- pattern, the scene tree could be considered the
-\emph on
-View
-\emph default
-.
-\end_layout
-
-\begin_layout Subsubsection*
-Property Editor
-\end_layout
-
-\begin_layout Standard
-The
-\emph on
-Property Editor
-\emph default
- is another small dock.
- Every node contains a finite number of
-\emph on
-properties
-\emph default
-, which can be edited.
- Properties can be of several types, such as integers, strings, images,
- matrices, etc.
- Usually, changes to properties are reflected in the
-\emph on
-viewport
-\emph default
- in real time.
-\end_layout
-
-\begin_layout Section*
-Examples:
-\end_layout
-
-\begin_layout Standard
-From now, a few, simple examples will be presented that will help understand
- a little better how Godot Engine works.
-
-\end_layout
-
-\begin_layout Subsubsection*
-Hello, World!
-\end_layout
-
-\begin_layout Enumerate
-Open the editor
-\end_layout
-
-\begin_layout Enumerate
-Click on
-\begin_inset Quotes eld
-\end_inset
-
-Node
-\begin_inset Quotes erd
-\end_inset
-
- (Node Menu), then on
-\begin_inset Quotes eld
-\end_inset
-
-Create Root
-\begin_inset Quotes erd
-\end_inset
-
-
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_1.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Create a node of type
-\emph on
-Label,
-\emph default
-then instruct the
-\emph on
-editor
-\emph default
-to switch to GUI editing mode.
- A few red squares will appear on the top left corner, don't mind them yet.
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_2.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_2b.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_3c.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Select the
-\emph on
-Label
-\emph default
-node in the
-\emph on
-Scene Tree
-\emph default
- (if it's not selected yet), the properties of the selected node will appear
- in the
-\emph on
-Property Editor
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_3a.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_3b.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Look for the
-\emph on
-Text
-\emph default
- property in the
-\emph on
-Property Editor
-\emph default
- and click the right column, so it becomes editable.
- Enter the text
-\begin_inset Quotes eld
-\end_inset
-
-Hello, World!
-\begin_inset Quotes erd
-\end_inset
-
-.
- A red square containing
-\begin_inset Quotes eld
-\end_inset
-
-Hello World!
-\begin_inset Quotes erd
-\end_inset
-
- will appear at the top left, move it to the center.
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_4a.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_4b.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Save the scene.
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_5a.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_5b.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Enumerate
-Press PLAY.
- A new window will appear running the application.
-\end_layout
-
-\begin_deeper
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_6.png
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-\align center
-\begin_inset Graphics
- filename tute1_7.png
-
-\end_inset
-
-
-\end_layout
-
-\end_deeper
-\begin_layout Subsubsection*
-Hello World 2 (a little more complex)
-\end_layout
-
-\begin_layout Subsubsection*
-A 3D Cube in Space
-\end_layout
-
-\begin_layout Standard
-
-\end_layout
-
-\begin_layout Standard
-In many cases, nodes and other types of engine objects need to express changes
- in their state, such as a button being pressed, a scroll being dragged,
- or a projectile colliding against a tank.
- Godot Engine utilizes the concept of signals for this.
- Different types of nodes and objects can emit signals, and any other node
- or object can connect to them.
-
-\end_layout
-
-\end_body
-\end_document
diff --git a/doc/tutorial/editor.png b/doc/tutorial/editor.png
deleted file mode 100644
index 92255a6f17c..00000000000
Binary files a/doc/tutorial/editor.png and /dev/null differ
diff --git a/doc/tutorial/pm.png b/doc/tutorial/pm.png
deleted file mode 100644
index 00d46d9a64d..00000000000
Binary files a/doc/tutorial/pm.png and /dev/null differ
diff --git a/doc/tutorial/pmc.png b/doc/tutorial/pmc.png
deleted file mode 100644
index 847d32b3a21..00000000000
Binary files a/doc/tutorial/pmc.png and /dev/null differ
diff --git a/doc/tutorial/tute1_1.png b/doc/tutorial/tute1_1.png
deleted file mode 100644
index 82152c7255c..00000000000
Binary files a/doc/tutorial/tute1_1.png and /dev/null differ
diff --git a/doc/tutorial/tute1_2.png b/doc/tutorial/tute1_2.png
deleted file mode 100644
index 852015894c7..00000000000
Binary files a/doc/tutorial/tute1_2.png and /dev/null differ
diff --git a/doc/tutorial/tute1_2b.png b/doc/tutorial/tute1_2b.png
deleted file mode 100644
index e97a40b4c56..00000000000
Binary files a/doc/tutorial/tute1_2b.png and /dev/null differ
diff --git a/doc/tutorial/tute1_3a.png b/doc/tutorial/tute1_3a.png
deleted file mode 100644
index 5feef01e035..00000000000
Binary files a/doc/tutorial/tute1_3a.png and /dev/null differ
diff --git a/doc/tutorial/tute1_3b.png b/doc/tutorial/tute1_3b.png
deleted file mode 100644
index 1f2ded42bbc..00000000000
Binary files a/doc/tutorial/tute1_3b.png and /dev/null differ
diff --git a/doc/tutorial/tute1_3c.png b/doc/tutorial/tute1_3c.png
deleted file mode 100644
index 2c52ccd780b..00000000000
Binary files a/doc/tutorial/tute1_3c.png and /dev/null differ
diff --git a/doc/tutorial/tute1_4a.png b/doc/tutorial/tute1_4a.png
deleted file mode 100644
index 8d0d04ff6be..00000000000
Binary files a/doc/tutorial/tute1_4a.png and /dev/null differ
diff --git a/doc/tutorial/tute1_4b.png b/doc/tutorial/tute1_4b.png
deleted file mode 100644
index fff5f8d7234..00000000000
Binary files a/doc/tutorial/tute1_4b.png and /dev/null differ
diff --git a/doc/tutorial/tute1_5a.png b/doc/tutorial/tute1_5a.png
deleted file mode 100644
index 37bea04570a..00000000000
Binary files a/doc/tutorial/tute1_5a.png and /dev/null differ
diff --git a/doc/tutorial/tute1_5b.png b/doc/tutorial/tute1_5b.png
deleted file mode 100644
index df9a987ef3d..00000000000
Binary files a/doc/tutorial/tute1_5b.png and /dev/null differ
diff --git a/doc/tutorial/tute1_6.png b/doc/tutorial/tute1_6.png
deleted file mode 100644
index bbe04c85478..00000000000
Binary files a/doc/tutorial/tute1_6.png and /dev/null differ
diff --git a/doc/tutorial/tute1_7.png b/doc/tutorial/tute1_7.png
deleted file mode 100644
index 7653a89064c..00000000000
Binary files a/doc/tutorial/tute1_7.png and /dev/null differ
diff --git a/doc/undoredoapi.txt b/doc/undoredoapi.txt
deleted file mode 100644
index eb73b8ccff4..00000000000
--- a/doc/undoredoapi.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-undo/redo api proposal
-
-
-
-o o o o o o o o
-
-
-undoredo.create_method();
-undoredo.add_do_method(node,"add_child",node_to_add);
-undoredo.add_undo_method(node,"remove_child",node_to_add);
-undoredo.add_add_data(node_to_add);
-undoredo.commit()
-
-undoredo.create_method();
-undoredo.add_do_method(node,"remove_node",node_to_remove);
-undoredo.add_undo_method(node,"add_node",node_to_remove);
-undoredo.add_remove_data(node_to_remove);
-undoredo.commit()
-
-
-undoredo.create_property();
-undoredo.add_do_set(node,"property",value);
-undoredo.add_undo_set(node,"property",previous_value);
-undoredo.add_remove_data(node_to_remove);
-undoredo.commit()