This commit is contained in:
Yadciel 2024-02-29 21:53:12 +01:00
parent e155b78e53
commit 253d37c51e
54 changed files with 1681 additions and 54 deletions

View File

@ -0,0 +1,3 @@
source_md5="7f8f2c22d1d62111d5f61f8c78e5d26f"
dest_md5="829f9f302f765772691c3669131ebec1"

View File

@ -0,0 +1,3 @@
source_md5="7f8f2c22d1d62111d5f61f8c78e5d26f"
dest_md5="829f9f302f765772691c3669131ebec1"

View File

@ -0,0 +1,3 @@
source_md5="cf4aec4842e6f28b128d15ef58be76d0"
dest_md5="01378abba7a4cf93386bc3f60dc36eb2"

View File

@ -0,0 +1,3 @@
source_md5="cf4aec4842e6f28b128d15ef58be76d0"
dest_md5="01378abba7a4cf93386bc3f60dc36eb2"

View File

@ -0,0 +1,3 @@
source_md5="550646c2bad798e90b4ced258849db6f"
dest_md5="d846628dfeca501abc384aa87e920d04"

View File

@ -0,0 +1,3 @@
source_md5="550646c2bad798e90b4ced258849db6f"
dest_md5="d846628dfeca501abc384aa87e920d04"

View File

@ -0,0 +1,3 @@
source_md5="cf4aec4842e6f28b128d15ef58be76d0"
dest_md5="01378abba7a4cf93386bc3f60dc36eb2"

View File

@ -0,0 +1,3 @@
source_md5="cf4aec4842e6f28b128d15ef58be76d0"
dest_md5="01378abba7a4cf93386bc3f60dc36eb2"

View File

@ -0,0 +1,3 @@
source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
dest_md5="a88e70cd2a781a9949d2f6ee2829937a"

View File

@ -0,0 +1,3 @@
source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
dest_md5="a88e70cd2a781a9949d2f6ee2829937a"

View File

@ -0,0 +1,3 @@
source_md5="7e41bf3051b18e392a4bb6c0cc45cd7c"
dest_md5="dc92846bb4338271a1c4441fc9d1f138"

View File

@ -0,0 +1,3 @@
source_md5="7e41bf3051b18e392a4bb6c0cc45cd7c"
dest_md5="dc92846bb4338271a1c4441fc9d1f138"

View File

@ -0,0 +1,3 @@
source_md5="cf4aec4842e6f28b128d15ef58be76d0"
dest_md5="01378abba7a4cf93386bc3f60dc36eb2"

View File

@ -0,0 +1,3 @@
source_md5="47313fa4c47a9963fddd764e1ec6e4a8"
dest_md5="a88e70cd2a781a9949d2f6ee2829937a"

View File

@ -0,0 +1,3 @@
source_md5="7e41bf3051b18e392a4bb6c0cc45cd7c"
dest_md5="dc92846bb4338271a1c4441fc9d1f138"

View File

@ -10376,6 +10376,18 @@
<para>Hints that an image is compressed using lossless compression.</para>
</summary>
</member>
<member name="F:Godot.PropertyHint.TypeString">
<summary>
<para>Hint that a property represents a particular type. If a property is <c>TYPE_STRING</c>, allows to set a type from the create dialog. If you need to create an <see cref="T:Godot.Collections.Array"/> to contain elements of a specific type, the <c>hint_string</c> must encode nested types using <c>":"</c> and <c>"/"</c> for specifying <see cref="T:Godot.Resource"/> types. For instance:</para>
<para><code>
hint_string = "%s:" % [TYPE_INT] # Array of inteters.
hint_string = "%s:%s:" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array of floats.
hint_string = "%s/%s:Resource" % [TYPE_OBJECT, TYPE_OBJECT] # Array of resources.
hint_string = "%s:%s/%s:Resource" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] # Two-dimensional array of resources.
</code></para>
<para>Note: The final colon is required to specify for properly detecting built-in types.</para>
</summary>
</member>
<member name="F:Godot.PropertyUsageFlags.Storage">
<summary>
<para>The property is serialized and saved in the scene file (default).</para>
@ -13697,6 +13709,7 @@
<para>3D area that detects <see cref="T:Godot.CollisionObject"/> nodes overlapping, entering, or exiting. Can also alter or override local physics parameters (gravity, damping) and route audio to a custom audio bus.</para>
<para>To give the area its shape, add a <see cref="T:Godot.CollisionShape"/> or a <see cref="T:Godot.CollisionPolygon"/> node as a direct child (or add multiple such nodes as direct children) of the area.</para>
<para>Warning: See <see cref="T:Godot.ConcavePolygonShape"/> (also called "trimesh") for a warning about possibly unexpected behavior when using that shape for an area.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="F:Godot.Area.SpaceOverrideEnum.Disabled">
@ -15291,7 +15304,7 @@
</member>
<member name="M:Godot.AudioStreamGeneratorPlayback.GetFramesAvailable">
<summary>
<para>Returns the number of audio data frames left to play. If this returned number reaches <c>0</c>, the audio will stop playing until frames are added again. Therefore, make sure your script can always generate and push new audio frames fast enough to avoid audio cracking.</para>
<para>Returns the number of frames that can be pushed to the audio sample data buffer without overflowing it. If the result is <c>0</c>, the buffer is full.</para>
</summary>
</member>
<member name="M:Godot.AudioStreamGeneratorPlayback.ClearBuffer">
@ -15798,23 +15811,23 @@
</member>
<member name="T:Godot.BackBufferCopy">
<summary>
<para>Node for back-buffering the currently-displayed screen. The region defined in the BackBufferCopy node is buffered with the content of the screen it covers, or the entire screen according to the copy mode set. Use the <c>texture(SCREEN_TEXTURE, ...)</c> function in your shader scripts to access the buffer.</para>
<para>Note: Since this node inherits from <see cref="T:Godot.Node2D"/> (and not <see cref="T:Godot.Control"/>), anchors and margins won't apply to child <see cref="T:Godot.Control"/>-derived nodes. This can be problematic when resizing the window. To avoid this, add <see cref="T:Godot.Control"/>-derived nodes as siblings to the BackBufferCopy node instead of adding them as children.</para>
<para>Node for back-buffering the currently-displayed screen. The region defined in the <see cref="T:Godot.BackBufferCopy"/> node is buffered with the content of the screen it covers, or the entire screen according to the copy mode set. Use the <c>texture(SCREEN_TEXTURE, ...)</c> function in your shader scripts to access the buffer.</para>
<para>Note: Since this node inherits from <see cref="T:Godot.Node2D"/> (and not <see cref="T:Godot.Control"/>), anchors and margins won't apply to child <see cref="T:Godot.Control"/>-derived nodes. This can be problematic when resizing the window. To avoid this, add <see cref="T:Godot.Control"/>-derived nodes as siblings to the <see cref="T:Godot.BackBufferCopy"/> node instead of adding them as children.</para>
</summary>
</member>
<member name="F:Godot.BackBufferCopy.CopyModeEnum.Disabled">
<summary>
<para>Disables the buffering mode. This means the BackBufferCopy node will directly use the portion of screen it covers.</para>
<para>Disables the buffering mode. This means the <see cref="T:Godot.BackBufferCopy"/> node will directly use the portion of screen it covers.</para>
</summary>
</member>
<member name="F:Godot.BackBufferCopy.CopyModeEnum.Rect">
<summary>
<para>BackBufferCopy buffers a rectangular region.</para>
<para><see cref="T:Godot.BackBufferCopy"/> buffers a rectangular region.</para>
</summary>
</member>
<member name="F:Godot.BackBufferCopy.CopyModeEnum.Viewport">
<summary>
<para>BackBufferCopy buffers the entire screen.</para>
<para><see cref="T:Godot.BackBufferCopy"/> buffers the entire screen.</para>
</summary>
</member>
<member name="P:Godot.BackBufferCopy.CopyMode">
@ -15824,7 +15837,7 @@
</member>
<member name="P:Godot.BackBufferCopy.Rect">
<summary>
<para>The area covered by the BackBufferCopy. Only used if <see cref="P:Godot.BackBufferCopy.CopyMode"/> is <see cref="F:Godot.BackBufferCopy.CopyModeEnum.Rect"/>.</para>
<para>The area covered by the <see cref="T:Godot.BackBufferCopy"/>. Only used if <see cref="P:Godot.BackBufferCopy.CopyMode"/> is <see cref="F:Godot.BackBufferCopy.CopyModeEnum.Rect"/>.</para>
</summary>
</member>
<member name="T:Godot.BakedLightmap">
@ -16703,6 +16716,7 @@
<member name="P:Godot.CPUParticles.EmissionColors">
<summary>
<para>Sets the <see cref="T:Godot.Color"/>s to modulate particles by when using <see cref="F:Godot.CPUParticles.EmissionShapeEnum.Points"/> or <see cref="F:Godot.CPUParticles.EmissionShapeEnum.DirectedPoints"/>.</para>
<para>Note: <see cref="P:Godot.CPUParticles.EmissionColors"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.CPUParticles.EmissionColors"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.CPUParticles.EmissionRingRadius">
@ -16893,17 +16907,20 @@
</member>
<member name="P:Godot.CPUParticles.Color">
<summary>
<para>Each particle's initial color. To have particle display color in a <see cref="T:Godot.SpatialMaterial"/> make sure to set <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> to <c>true</c>.</para>
<para>Each particle's initial color.</para>
<para>Note: <see cref="P:Godot.CPUParticles.Color"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.CPUParticles.Color"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.CPUParticles.ColorRamp">
<summary>
<para>Each particle's color will vary along this <see cref="T:Godot.GradientTexture"/> over its lifetime (multiplied with <see cref="P:Godot.CPUParticles.Color"/>).</para>
<para>Note: <see cref="P:Godot.CPUParticles.ColorRamp"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.CPUParticles.ColorRamp"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.CPUParticles.ColorInitialRamp">
<summary>
<para>Each particle's initial color will vary along this <see cref="T:Godot.GradientTexture"/> (multiplied with <see cref="P:Godot.CPUParticles.Color"/>).</para>
<para>Note: <see cref="P:Godot.CPUParticles.ColorInitialRamp"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.CPUParticles.ColorInitialRamp"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.CPUParticles.HueVariation">
@ -18532,7 +18549,7 @@
</member>
<member name="P:Godot.CanvasItem.Visible">
<summary>
<para>If <c>true</c>, this <see cref="T:Godot.CanvasItem"/> is drawn. The node is only visible if all of its antecedents are visible as well (in other words, <see cref="M:Godot.CanvasItem.IsVisibleInTree"/> must return <c>true</c>).</para>
<para>If <c>true</c>, this <see cref="T:Godot.CanvasItem"/> is drawn. The node is only visible if all of its ancestors are visible as well (in other words, <see cref="M:Godot.CanvasItem.IsVisibleInTree"/> must return <c>true</c>).</para>
<para>Note: For controls that inherit <see cref="T:Godot.Popup"/>, the correct way to make them visible is to call one of the multiple <c>popup*()</c> functions instead.</para>
</summary>
</member>
@ -18584,7 +18601,7 @@
</member>
<member name="M:Godot.CanvasItem.IsVisibleInTree">
<summary>
<para>Returns <c>true</c> if the node is present in the <see cref="T:Godot.SceneTree"/>, its <see cref="P:Godot.CanvasItem.Visible"/> property is <c>true</c> and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree, and is consequently not drawn (see <see cref="M:Godot.CanvasItem._Draw"/>).</para>
<para>Returns <c>true</c> if the node is present in the <see cref="T:Godot.SceneTree"/>, its <see cref="P:Godot.CanvasItem.Visible"/> property is <c>true</c> and all its ancestors are also visible. If any ancestor is hidden, this node will not be visible in the scene tree, and is consequently not drawn (see <see cref="M:Godot.CanvasItem._Draw"/>).</para>
</summary>
</member>
<member name="M:Godot.CanvasItem.Show">
@ -18760,12 +18777,12 @@
</member>
<member name="M:Godot.CanvasItem.GetGlobalTransformWithCanvas">
<summary>
<para>Returns the global transform matrix of this item in relation to the canvas.</para>
<para>Returns the transform from the local coordinate system of this <see cref="T:Godot.CanvasItem"/> to the <see cref="T:Godot.Viewport"/>s coordinate system.</para>
</summary>
</member>
<member name="M:Godot.CanvasItem.GetViewportTransform">
<summary>
<para>Returns this item's transform in relation to the viewport.</para>
<para>Returns the transform from the coordinate system of the canvas, this item is in, to the <see cref="T:Godot.Viewport"/>s embedders coordinate system.</para>
</summary>
</member>
<member name="M:Godot.CanvasItem.GetViewportRect">
@ -18775,7 +18792,7 @@
</member>
<member name="M:Godot.CanvasItem.GetCanvasTransform">
<summary>
<para>Returns the transform matrix of this item's canvas.</para>
<para>Returns the transform from the coordinate system of the canvas, this item is in, to the <see cref="T:Godot.Viewport"/>s coordinate system.</para>
</summary>
</member>
<member name="M:Godot.CanvasItem.GetLocalMousePosition">
@ -18979,6 +18996,11 @@
<para>Hides any <see cref="T:Godot.CanvasItem"/> under this <see cref="T:Godot.CanvasLayer"/>. This is equivalent to setting <see cref="P:Godot.CanvasLayer.Visible"/> to <c>false</c>.</para>
</summary>
</member>
<member name="M:Godot.CanvasLayer.GetFinalTransform">
<summary>
<para>Returns the transform from the <see cref="T:Godot.CanvasLayer"/>s coordinate system to the <see cref="T:Godot.Viewport"/>s coordinate system.</para>
</summary>
</member>
<member name="M:Godot.CanvasLayer.GetCanvas">
<summary>
<para>Returns the RID of the canvas used by this layer.</para>
@ -19222,6 +19244,7 @@
<member name="T:Godot.CollisionObject">
<summary>
<para>CollisionObject is the base class for physics objects. It can hold any number of collision <see cref="T:Godot.Shape"/>s. Each shape must be assigned to a shape owner. The CollisionObject can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the <c>shape_owner_*</c> methods.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="P:Godot.CollisionObject.CollisionLayer">
@ -19506,6 +19529,7 @@
<member name="T:Godot.CollisionPolygon">
<summary>
<para>Allows editing a collision polygon's vertices on a selected plane. Can also set a depth perpendicular to that plane. This class is only available in the editor. It will not appear in the scene tree at run-time. Creates a <see cref="T:Godot.Shape"/> for gameplay. Properties modified during gameplay will have no effect.</para>
<para>Warning: A non-uniformly scaled CollisionPolygon3D node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change its <see cref="P:Godot.CollisionPolygon.Polygon"/>'s vertices instead.</para>
</summary>
</member>
<member name="P:Godot.CollisionPolygon.Depth">
@ -19574,6 +19598,7 @@
<summary>
<para>Editor facility for creating and editing collision shapes in 3D space. Set the <see cref="P:Godot.CollisionShape.Shape"/> property to configure the shape. IMPORTANT: this is an Editor-only helper to create shapes, use <see cref="M:Godot.CollisionObject.ShapeOwnerGetShape(System.UInt32,System.Int32)"/> to get the actual shape.</para>
<para>You can use this node to represent all sorts of collision shapes, for example, add this to an <see cref="T:Godot.Area"/> to give it a detection shape, or add it to a <see cref="T:Godot.PhysicsBody"/> to create a solid object.</para>
<para>Warning: A non-uniformly scaled CollisionShape3D node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size of its <see cref="P:Godot.CollisionShape.Shape"/> resource instead.</para>
</summary>
</member>
<member name="P:Godot.CollisionShape.Shape">
@ -21845,6 +21870,7 @@
<member name="T:Godot.CylinderShape">
<summary>
<para>Cylinder shape for collisions.</para>
<para>Note: When using GodotPhysics instead of the default Bullet physics engine, there are several known bugs with cylinder collision shapes. Using <see cref="T:Godot.CapsuleShape"/> or <see cref="T:Godot.BoxShape"/> instead is recommended.</para>
</summary>
</member>
<member name="P:Godot.CylinderShape.Height">
@ -22391,7 +22417,7 @@
</member>
<member name="P:Godot.Environment.BackgroundEnergy">
<summary>
<para>The power of the light emitted by the background.</para>
<para>The power of the light emitted by the background. This affects the sky brightness, the ambient light (if <see cref="P:Godot.Environment.AmbientLightSkyContribution"/> is greater than <c>0.0</c>) and specular light from the sky.</para>
</summary>
</member>
<member name="P:Godot.Environment.BackgroundCanvasMaxLayer">
@ -26747,12 +26773,12 @@
</member>
<member name="M:Godot.Input.GetJoyName(System.Int32)">
<summary>
<para>Returns the name of the joypad at the specified device index.</para>
<para>Returns the name of the joypad at the specified device index, e.g. <c>PS4 Controller</c>. Godot uses the <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL2 game controller database</a> to determine gamepad names.</para>
</summary>
</member>
<member name="M:Godot.Input.GetJoyGuid(System.Int32)">
<summary>
<para>Returns a SDL2-compatible device GUID on platforms that use gamepad remapping. Returns <c>"Default Gamepad"</c> otherwise.</para>
<para>Returns a SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. <c>030000004c050000c405000000010000</c>. Returns <c>"Default Gamepad"</c> otherwise. Godot uses the <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL2 game controller database</a> to determine gamepad names and mappings based on this GUID.</para>
</summary>
</member>
<member name="M:Godot.Input.GetConnectedJoypads">
@ -26902,10 +26928,11 @@
<member name="M:Godot.Input.SetCustomMouseCursor(Godot.Resource,Godot.Input.CursorShape,System.Nullable{Godot.Vector2})">
<summary>
<para>Sets a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing <c>null</c> to the image parameter resets to the system cursor. See <see cref="T:Godot.Input.CursorShape"/> for the list of shapes.</para>
<para><c>image</c>'s size must be lower than 256×256.</para>
<para><c>image</c>'s size must be lower than or equal to 256×256. To avoid rendering issues, sizes lower than or equal to 128×128 are recommended.</para>
<para><c>hotspot</c> must be within <c>image</c>'s size.</para>
<para>Note: <see cref="T:Godot.AnimatedTexture"/>s aren't supported as custom mouse cursors. If using an <see cref="T:Godot.AnimatedTexture"/>, only the first frame will be displayed.</para>
<para>Note: Only images imported with the Lossless, Lossy or Uncompressed compression modes are supported. The Video RAM compression mode can't be used for custom cursors.</para>
<para>Note: On the web platform, the maximum allowed cursor image size is 128×128. Cursor images larger than 32×32 will also only be displayed if the mouse cursor image is entirely located within the page for <a href="https://chromestatus.com/feature/5825971391299584">security reasons</a>.</para>
</summary>
<param name="hotspot">If the parameter is null, then the default value is new Vector2(0, 0)</param>
</member>
@ -27976,6 +28003,7 @@
<para>Kinematic bodies are special types of bodies that are meant to be user-controlled. They are not affected by physics at all; to other types of bodies, such as a character or a rigid body, these are the same as a static body. However, they have two main uses:</para>
<para>Simulated motion: When these bodies are moved manually, either from code or from an <see cref="T:Godot.AnimationPlayer"/> (with <see cref="P:Godot.AnimationPlayer.PlaybackProcessMode"/> set to "physics"), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc).</para>
<para>Kinematic characters: KinematicBody also has an API for moving objects (the <see cref="M:Godot.KinematicBody.MoveAndCollide(Godot.Vector3,System.Boolean,System.Boolean,System.Boolean)"/> and <see cref="M:Godot.KinematicBody.MoveAndSlide(Godot.Vector3,System.Nullable{Godot.Vector3},System.Boolean,System.Int32,System.Single,System.Boolean)"/> methods) while performing collision tests. This makes them really useful to implement characters that collide against a world, but don't require advanced physics.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="F:Godot.KinematicBody.MovingPlatformApplyVelocityOnLeaveEnum.Always">
@ -28901,6 +28929,7 @@
<member name="P:Godot.Light.LightSize">
<summary>
<para>The size of the light in Godot units. Only considered in baked lightmaps and only if <see cref="P:Godot.Light.LightBakeMode"/> is set to <see cref="F:Godot.Light.BakeMode.All"/>. Increasing this value will make the shadows appear blurrier. This can be used to simulate area lights to an extent.</para>
<para>Note: <see cref="P:Godot.Light.LightSize"/> is not affected by <see cref="P:Godot.Spatial.Scale"/> (the light's scale or its parent's scale).</para>
</summary>
</member>
<member name="P:Godot.Light.LightNegative">
@ -31406,6 +31435,7 @@
<summary>
<para>3D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. By default this node will register to the default <see cref="T:Godot.World"/> navigation map. If this node is a child of a <see cref="T:Godot.Navigation"/> node it will register to the navigation map of the navigation node or the function <see cref="M:Godot.NavigationAgent.SetNavigation(Godot.Node)"/> can be used to set the navigation node directly. <see cref="T:Godot.NavigationAgent"/> is physics safe.</para>
<para>Note: After <see cref="M:Godot.NavigationAgent.SetTargetLocation(Godot.Vector3)"/> is used it is required to use the <see cref="M:Godot.NavigationAgent.GetNextLocation"/> function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.</para>
<para>Note: By default, the expensive calculations for avoidance are done in a thread. In HTML5 exports without thread support, they will be done on the main thread, which can lead to performance issues.</para>
</summary>
</member>
<member name="P:Godot.NavigationAgent.PathDesiredDistance">
@ -31553,6 +31583,7 @@
<summary>
<para>2D agent that is used in navigation to reach a location while avoiding static and dynamic obstacles. The dynamic obstacles are avoided using RVO (Reciprocal Velocity Obstacles) collision avoidance. The agent needs navigation data to work correctly. By default this node will register to the default <see cref="T:Godot.World2D"/> navigation map. If this node is a child of a <see cref="T:Godot.Navigation2D"/> node it will register to the navigation map of the navigation node or the function <see cref="M:Godot.NavigationAgent2D.SetNavigation(Godot.Node)"/> can be used to set the navigation node directly. <see cref="T:Godot.NavigationAgent2D"/> is physics safe.</para>
<para>Note: After <see cref="M:Godot.NavigationAgent2D.SetTargetLocation(Godot.Vector2)"/> is used it is required to use the <see cref="M:Godot.NavigationAgent2D.GetNextLocation"/> function once every physics frame to update the internal path logic of the NavigationAgent. The returned vector position from this function should be used as the next movement position for the agent's parent Node.</para>
<para>Note: By default, the expensive calculations for avoidance are done in a thread. In HTML5 exports without thread support, they will be done on the main thread, which can lead to performance issues.</para>
</summary>
</member>
<member name="P:Godot.NavigationAgent2D.PathDesiredDistance">
@ -32193,6 +32224,7 @@
<para>For two regions to be connected to each other, they must share a similar edge. An edge is considered connected to another if both of its two vertices are at a distance less than <see cref="P:Godot.Navigation.EdgeConnectionMargin"/> to the respective other edge's vertex.</para>
<para>To use the collision avoidance system, you may use agents. You can set an agent's target velocity, then the servers will emit a callback with a modified velocity.</para>
<para>Note: The collision avoidance system ignores regions. Using the modified velocity as-is might lead to pushing and agent outside of a navigable area. This is a limitation of the collision avoidance system, any more complex situation may require the use of the physics engine.</para>
<para>Note: By default, the expensive calculations for avoidance are done in a thread. In HTML5 exports without thread support, they will be done on the main thread, which can lead to performance issues.</para>
<para>This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.</para>
</summary>
</member>
@ -33093,6 +33125,7 @@
<member name="P:Godot.OmniLight.OmniRange">
<summary>
<para>The light's radius. Note that the effectively lit area may appear to be smaller depending on the <see cref="P:Godot.OmniLight.OmniAttenuation"/> in use. No matter the <see cref="P:Godot.OmniLight.OmniAttenuation"/> in use, the light will never reach anything outside this radius.</para>
<para>Note: <see cref="P:Godot.OmniLight.OmniRange"/> is not affected by <see cref="P:Godot.Spatial.Scale"/> (the light's scale or its parent's scale).</para>
</summary>
</member>
<member name="P:Godot.OmniLight.OmniAttenuation">
@ -33204,6 +33237,7 @@
<summary>
<para>OptionButton is a type button that provides a selectable list of items when pressed. The item selected becomes the "current" item and is displayed as the button text.</para>
<para>See also <see cref="T:Godot.BaseButton"/> which contains common properties and methods associated with this node.</para>
<para>Note: The ID values used for items are limited to 32 bits, not full 64 bits of <see cref="T:System.Int32"/>. This has a range of <c>-2^32</c> to <c>2^32 - 1</c>, i.e. <c>-2147483648</c> to <c>2147483647</c>.</para>
</summary>
</member>
<member name="P:Godot.OptionButton.Selected">
@ -34080,6 +34114,7 @@
<member name="P:Godot.ParticlesMaterial.EmissionColorTexture">
<summary>
<para>Particle color will be modulated by color determined by sampling this texture at the same point as the <see cref="P:Godot.ParticlesMaterial.EmissionPointTexture"/>.</para>
<para>Note: <see cref="P:Godot.ParticlesMaterial.EmissionColorTexture"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.ParticlesMaterial.EmissionColorTexture"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.ParticlesMaterial.EmissionPointCount">
@ -34277,17 +34312,20 @@
</member>
<member name="P:Godot.ParticlesMaterial.Color">
<summary>
<para>Each particle's initial color. If the <see cref="T:Godot.Particles2D"/>'s <c>texture</c> is defined, it will be multiplied by this color. To have particle display color in a <see cref="T:Godot.SpatialMaterial"/> make sure to set <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> to <c>true</c>.</para>
<para>Each particle's initial color. If the <see cref="T:Godot.Particles2D"/>'s or <see cref="T:Godot.Particles"/>'s <c>texture</c> is defined, it will be multiplied by this color.</para>
<para>Note: <see cref="P:Godot.ParticlesMaterial.Color"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.ParticlesMaterial.Color"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.ParticlesMaterial.ColorRamp">
<summary>
<para>Each particle's color will vary along this <see cref="T:Godot.GradientTexture"/> over its lifetime (multiplied with <see cref="P:Godot.ParticlesMaterial.Color"/>).</para>
<para>Note: <see cref="P:Godot.ParticlesMaterial.ColorRamp"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.ParticlesMaterial.ColorRamp"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.ParticlesMaterial.ColorInitialRamp">
<summary>
<para>Each particle's initial color will vary along this <see cref="T:Godot.GradientTexture"/> (multiplied with <see cref="P:Godot.ParticlesMaterial.Color"/>).</para>
<para>Note: <see cref="P:Godot.ParticlesMaterial.ColorInitialRamp"/> multiplies the particle mesh's vertex colors. To have a visible effect on a <see cref="T:Godot.SpatialMaterial"/>, <see cref="P:Godot.SpatialMaterial.VertexColorUseAsAlbedo"/> must be <c>true</c>. For a <see cref="T:Godot.ShaderMaterial"/>, <c>ALBEDO *= COLOR.rgb;</c> must be inserted in the shader's <c>fragment()</c> function. Otherwise, <see cref="P:Godot.ParticlesMaterial.ColorInitialRamp"/> will have no visible effect.</para>
</summary>
</member>
<member name="P:Godot.ParticlesMaterial.HueVariation">
@ -34688,6 +34726,11 @@
</code></para>
</summary>
</member>
<member name="T:Godot.PhysicalBone">
<summary>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="T:Godot.Physics2DDirectBodyState">
<summary>
<para>Provides direct access to a physics body in the <see cref="T:Godot.Physics2DServer"/>, allowing safe changes to physics properties. This object is passed via the direct state callback of rigid/character bodies, and is intended for changing the direct state of that body. See <see cref="M:Godot.RigidBody2D._IntegrateForces(Godot.Physics2DDirectBodyState)"/>.</para>
@ -35716,6 +35759,7 @@
<member name="T:Godot.PhysicsBody">
<summary>
<para>PhysicsBody is an abstract base class for implementing a physics body. All *Body types inherit from it.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="M:Godot.PhysicsBody.GetCollisionExceptions">
@ -37449,6 +37493,7 @@
<summary>
<para><see cref="T:Godot.PopupMenu"/> is a <see cref="T:Godot.Control"/> that displays a list of options. They are popular in toolbars or context menus.</para>
<para>Incremental search: Like <see cref="T:Godot.ItemList"/> and <see cref="T:Godot.Tree"/>, <see cref="T:Godot.PopupMenu"/> supports searching within the list while the control is focused. Press a key that matches the first letter of an item's name to select the first item starting with the given letter. After that point, there are two ways to perform incremental search: 1) Press the same key again before the timeout duration to select the next item starting with the same letter. 2) Press letter keys that match the rest of the word before the timeout duration to match to select the item in question directly. Both of these actions will be reset to the beginning of the list if the timeout duration has passed since the last keystroke was registered. You can adjust the timeout duration by changing .</para>
<para>Note: The ID values used for items are limited to 32 bits, not full 64 bits of <see cref="T:System.Int32"/>. This has a range of <c>-2^32</c> to <c>2^32 - 1</c>, i.e. <c>-2147483648</c> to <c>2147483647</c>.</para>
</summary>
</member>
<member name="P:Godot.PopupMenu.HideOnItemSelection">
@ -38853,17 +38898,20 @@
</member>
<member name="M:Godot.RegEx.Search(System.String,System.Int32,System.Int32)">
<summary>
<para>Searches the text for the compiled pattern. Returns a <see cref="T:Godot.RegExMatch"/> container of the first matching result if found, otherwise <c>null</c>. The region to search within can be specified without modifying where the start and end anchor would be.</para>
<para>Searches the text for the compiled pattern. Returns a <see cref="T:Godot.RegExMatch"/> container of the first matching result if found, otherwise <c>null</c>.</para>
<para>The region to search within can be specified with <c>offset</c> and <c>end</c>. This is useful when searching for another match in the same <c>subject</c> by calling this method again after a previous success. Setting these parameters differs from passing over a shortened string. For example, the start anchor <c>^</c> is not affected by <c>offset</c>, and the character before <c>offset</c> will be checked for the word boundary <c>\b</c>.</para>
</summary>
</member>
<member name="M:Godot.RegEx.SearchAll(System.String,System.Int32,System.Int32)">
<summary>
<para>Searches the text for the compiled pattern. Returns an array of <see cref="T:Godot.RegExMatch"/> containers for each non-overlapping result. If no results were found, an empty array is returned instead. The region to search within can be specified without modifying where the start and end anchor would be.</para>
<para>Searches the text for the compiled pattern. Returns an array of <see cref="T:Godot.RegExMatch"/> containers for each non-overlapping result. If no results were found, an empty array is returned instead.</para>
<para>The region to search within can be specified with <c>offset</c> and <c>end</c>. This is useful when searching for another match in the same <c>subject</c> by calling this method again after a previous success. Setting these parameters differs from passing over a shortened string. For example, the start anchor <c>^</c> is not affected by <c>offset</c>, and the character before <c>offset</c> will be checked for the word boundary <c>\b</c>.</para>
</summary>
</member>
<member name="M:Godot.RegEx.Sub(System.String,System.String,System.Boolean,System.Int32,System.Int32)">
<summary>
<para>Searches the text for the compiled pattern and replaces it with the specified string. Escapes and backreferences such as <c>$1</c> and <c>$name</c> are expanded and resolved. By default, only the first instance is replaced, but it can be changed for all instances (global replacement). The region to search within can be specified without modifying where the start and end anchor would be.</para>
<para>Searches the text for the compiled pattern and replaces it with the specified string. Escapes and backreferences such as <c>$1</c> and <c>$name</c> are expanded and resolved. By default, only the first instance is replaced, but it can be changed for all instances (global replacement).</para>
<para>The region to search within can be specified with <c>offset</c> and <c>end</c>. This is useful when searching for another match in the same <c>subject</c> by calling this method again after a previous success. Setting these parameters differs from passing over a shortened string. For example, the start anchor <c>^</c> is not affected by <c>offset</c>, and the character before <c>offset</c> will be checked for the word boundary <c>\b</c>.</para>
</summary>
</member>
<member name="M:Godot.RegEx.IsValid">
@ -39562,6 +39610,7 @@
<para>Note: Don't change a RigidBody's position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed Hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop may result in strange behavior. If you need to directly affect the body's state, use <see cref="M:Godot.RigidBody._IntegrateForces(Godot.PhysicsDirectBodyState)"/>, which allows you to directly access the physics state.</para>
<para>If you need to override the default physics behavior, you can write a custom force integration function. See <see cref="P:Godot.RigidBody.CustomIntegrator"/>.</para>
<para>With Bullet physics (the default), the center of mass is the RigidBody3D center. With GodotPhysics, the center of mass is the average of the <see cref="T:Godot.CollisionShape"/> centers.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="F:Godot.RigidBody.ModeEnum.Rigid">
@ -40334,6 +40383,7 @@
<member name="F:Godot.SceneTree.GroupCallFlags.Unique">
<summary>
<para>Call a group only once even if the call is executed many times.</para>
<para>Note: Arguments are not taken into account when deciding whether the call is unique or not. Therefore when the same method is called with different arguments, only the first call will be performed.</para>
</summary>
</member>
<member name="F:Godot.SceneTree.StretchMode.Disabled">
@ -40645,7 +40695,7 @@
tween = create_tween()
</code></para>
<para>Some <see cref="T:Godot.Tweener"/>s use transitions and eases. The first accepts a <see cref="T:Godot.Tween.TransitionType"/> constant, and refers to the way the timing of the animation is handled (see <a href="https://easings.net/">easings.net</a> for some examples). The second accepts an <see cref="T:Godot.Tween.EaseType"/> constant, and controls where the <c>trans_type</c> is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different <see cref="T:Godot.Tween.TransitionType"/> constants with <see cref="F:Godot.Tween.EaseType.InOut"/>, and use the one that looks best.</para>
<para><a href="https://raw.githubusercontent.com/godotengine/godot-docs/master/img/tween_cheatsheet.png">Tween easing and transition types cheatsheet</a></para>
<para><a href="https://raw.githubusercontent.com/godotengine/godot-docs/3.5/img/tween_cheatsheet.png">Tween easing and transition types cheatsheet</a></para>
<para>Note: All <see cref="T:Godot.SceneTreeTween"/>s will automatically start by default. To prevent a <see cref="T:Godot.SceneTreeTween"/> from autostarting, you can call <see cref="M:Godot.SceneTreeTween.Stop"/> immediately after it is created.</para>
<para>Note: <see cref="T:Godot.SceneTreeTween"/>s are processing after all of nodes in the current frame, i.e. after <see cref="M:Godot.Node._Process(System.Single)"/> or <see cref="M:Godot.Node._PhysicsProcess(System.Single)"/> (depending on <see cref="T:Godot.Tween.TweenProcessMode"/>).</para>
</summary>
@ -40967,6 +41017,11 @@
<member name="P:Godot.ScrollContainer.ScrollHorizontal">
<summary>
<para>The current horizontal scroll value.</para>
<para>Note: If you are setting this value in the <see cref="M:Godot.Node._Ready"/> function or earlier, it needs to be wrapped with <see cref="M:Godot.Object.SetDeferred(System.String,System.Object)"/>, since scroll bar's <see cref="P:Godot.Range.MaxValue"/> is not initialized yet.</para>
<para><code>
func _ready():
set_deferred("scroll_horizontal", 600)
</code></para>
</summary>
</member>
<member name="P:Godot.ScrollContainer.ScrollVerticalEnabled">
@ -40977,6 +41032,11 @@
<member name="P:Godot.ScrollContainer.ScrollVertical">
<summary>
<para>The current vertical scroll value.</para>
<para>Note: Setting it early needs to be deferred, just like in <see cref="P:Godot.ScrollContainer.ScrollHorizontal"/>.</para>
<para><code>
func _ready():
set_deferred("scroll_vertical", 600)
</code></para>
</summary>
</member>
<member name="M:Godot.ScrollContainer.GetHScrollbar">
@ -41871,6 +41931,7 @@
<summary>
<para>Scale part of the local transformation.</para>
<para>Note: Mixed negative scales in 3D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, the scale values will either be all positive or all negative.</para>
<para>Note: Not all nodes are visually scaled by the <see cref="P:Godot.Spatial.Scale"/> property. For example, <see cref="T:Godot.Light"/>s are not visually affected by <see cref="P:Godot.Spatial.Scale"/>.</para>
</summary>
</member>
<member name="P:Godot.Spatial.GlobalTransform">
@ -41896,7 +41957,7 @@
</member>
<member name="P:Godot.Spatial.Visible">
<summary>
<para>If <c>true</c>, this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words, <see cref="M:Godot.Spatial.IsVisibleInTree"/> must return <c>true</c>).</para>
<para>If <c>true</c>, this node is drawn. The node is only visible if all of its ancestors are visible as well (in other words, <see cref="M:Godot.Spatial.IsVisibleInTree"/> must return <c>true</c>).</para>
</summary>
</member>
<member name="P:Godot.Spatial.Gizmo">
@ -41957,7 +42018,7 @@
</member>
<member name="M:Godot.Spatial.IsVisibleInTree">
<summary>
<para>Returns <c>true</c> if the node is present in the <see cref="T:Godot.SceneTree"/>, its <see cref="P:Godot.Spatial.Visible"/> property is <c>true</c> and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.</para>
<para>Returns <c>true</c> if the node is present in the <see cref="T:Godot.SceneTree"/>, its <see cref="P:Godot.Spatial.Visible"/> property is <c>true</c> and all its ancestors are also visible. If any ancestor is hidden, this node will not be visible in the scene tree.</para>
</summary>
</member>
<member name="M:Godot.Spatial.Show">
@ -43243,6 +43304,7 @@
<member name="P:Godot.SpotLight.SpotRange">
<summary>
<para>The maximal range that can be reached by the spotlight. Note that the effectively lit area may appear to be smaller depending on the <see cref="P:Godot.SpotLight.SpotAttenuation"/> in use. No matter the <see cref="P:Godot.SpotLight.SpotAttenuation"/> in use, the light will never reach anything outside this range.</para>
<para>Note: <see cref="P:Godot.SpotLight.SpotRange"/> is not affected by <see cref="P:Godot.Spatial.Scale"/> (the light's scale or its parent's scale).</para>
</summary>
</member>
<member name="P:Godot.SpotLight.SpotAttenuation">
@ -43253,6 +43315,7 @@
<member name="P:Godot.SpotLight.SpotAngle">
<summary>
<para>The spotlight's angle in degrees.</para>
<para>Note: <see cref="P:Godot.SpotLight.SpotAngle"/> is not affected by <see cref="P:Godot.Spatial.Scale"/> (the light's scale or its parent's scale).</para>
</summary>
</member>
<member name="P:Godot.SpotLight.SpotAngleAttenuation">
@ -43657,8 +43720,12 @@
</member>
<member name="T:Godot.StaticBody">
<summary>
<para>Static body for 3D physics. A static body is a simple body that is not intended to move. In contrast to <see cref="T:Godot.RigidBody"/>, they don't consume any CPU resources as long as they don't move.</para>
<para>Additionally, a constant linear or angular velocity can be set for the static body, so even if it doesn't move, it affects other bodies as if it was moving (this is useful for simulating conveyor belts or conveyor wheels).</para>
<para>Static body for 3D physics.</para>
<para>A static body is a simple body that doesn't move under physics simulation, i.e. it can't be moved by external forces or contacts but its transformation can still be updated manually by the user. It is ideal for implementing objects in the environment, such as walls or platforms. In contrast to <see cref="T:Godot.RigidBody"/>, it doesn't consume any CPU resources as long as they don't move.</para>
<para>They have extra functionalities to move and affect other bodies:</para>
<para>Static transform change: Static bodies can be moved by animation or script. In this case, they are just teleported and don't affect other bodies on their path.</para>
<para>Constant velocity: When <see cref="P:Godot.StaticBody.ConstantLinearVelocity"/> or <see cref="P:Godot.StaticBody.ConstantAngularVelocity"/> is set, static bodies don't move themselves but affect touching bodies as if they were moving. This is useful for simulating conveyor belts or conveyor wheels.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="P:Godot.StaticBody.Friction">
@ -47390,6 +47457,7 @@
<member name="T:Godot.Timer">
<summary>
<para>Counts down a specified interval and emits a signal on reaching 0. Can be set to repeat or "one-shot" mode.</para>
<para>Note: Timers are affected by <see cref="P:Godot.Engine.TimeScale"/>, a higher scale means quicker timeouts, and vice versa.</para>
<para>Note: To create a one-shot timer without instantiating a node, use <see cref="M:Godot.SceneTree.CreateTimer(System.Single,System.Boolean)"/>.</para>
</summary>
</member>
@ -47411,7 +47479,7 @@
<member name="P:Godot.Timer.WaitTime">
<summary>
<para>The wait time in seconds.</para>
<para>Note: Timers can only emit once per rendered frame at most (or once per physics frame if <see cref="P:Godot.Timer.ProcessMode"/> is <see cref="F:Godot.Timer.TimerProcessMode.Physics"/>). This means very low wait times (lower than 0.05 seconds) will behave in significantly different ways depending on the rendered framerate. For very low wait times, it is recommended to use a process loop in a script instead of using a Timer node.</para>
<para>Note: Timers can only emit once per rendered frame at most (or once per physics frame if <see cref="P:Godot.Timer.ProcessMode"/> is <see cref="F:Godot.Timer.TimerProcessMode.Physics"/>). This means very low wait times (lower than 0.05 seconds) will behave in significantly different ways depending on the rendered framerate. For very low wait times, it is recommended to use a process loop in a script instead of using a Timer node. Timers are affected by <see cref="P:Godot.Engine.TimeScale"/>, a higher scale means quicker timeouts, and vice versa.</para>
</summary>
</member>
<member name="P:Godot.Timer.OneShot">
@ -47853,6 +47921,7 @@
<summary>
<para>Control for a single item inside a <see cref="T:Godot.Tree"/>. May have child <see cref="T:Godot.TreeItem"/>s and be styled as well as contain buttons.</para>
<para>You can remove a <see cref="T:Godot.TreeItem"/> by using <see cref="M:Godot.Object.Free"/>.</para>
<para>Note: The ID values used for buttons are limited to 32 bits, not full 64 bits of <see cref="T:System.Int32"/>. This has a range of <c>-2^32</c> to <c>2^32 - 1</c>, i.e. <c>-2147483648</c> to <c>2147483647</c>.</para>
</summary>
</member>
<member name="F:Godot.TreeItem.TreeCellMode.String">
@ -48238,7 +48307,7 @@
</code></para>
<para>Many methods require a property name, such as <c>"position"</c> above. You can find the correct property name by hovering over the property in the Inspector. You can also provide the components of a property directly by using <c>"property:component"</c> (e.g. <c>position:x</c>), where it would only apply to that particular component.</para>
<para>Many of the methods accept <c>trans_type</c> and <c>ease_type</c>. The first accepts an <see cref="T:Godot.Tween.TransitionType"/> constant, and refers to the way the timing of the animation is handled (see <a href="https://easings.net/">easings.net</a> for some examples). The second accepts an <see cref="T:Godot.Tween.EaseType"/> constant, and controls where the <c>trans_type</c> is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different <see cref="T:Godot.Tween.TransitionType"/> constants with <see cref="F:Godot.Tween.EaseType.InOut"/>, and use the one that looks best.</para>
<para><a href="https://raw.githubusercontent.com/godotengine/godot-docs/master/img/tween_cheatsheet.png">Tween easing and transition types cheatsheet</a></para>
<para><a href="https://raw.githubusercontent.com/godotengine/godot-docs/3.5/img/tween_cheatsheet.png">Tween easing and transition types cheatsheet</a></para>
<para>Note: Tween methods will return <c>false</c> if the requested operation cannot be completed.</para>
<para>Note: For an alternative method of tweening, that doesn't require using nodes, see <see cref="T:Godot.SceneTreeTween"/>.</para>
</summary>
@ -49094,6 +49163,7 @@
<para>This node implements all the physics logic needed to simulate a car. It is based on the raycast vehicle system commonly found in physics engines. You will need to add a <see cref="T:Godot.CollisionShape"/> for the main body of your vehicle and add <see cref="T:Godot.VehicleWheel"/> nodes for the wheels. You should also add a <see cref="T:Godot.MeshInstance"/> to this node for the 3D model of your car but this model should not include meshes for the wheels. You should control the vehicle by using the <see cref="P:Godot.VehicleBody.Brake"/>, <see cref="P:Godot.VehicleBody.EngineForce"/>, and <see cref="P:Godot.VehicleBody.Steering"/> properties and not change the position or orientation of this node directly.</para>
<para>Note: The origin point of your VehicleBody will determine the center of gravity of your vehicle so it is better to keep this low and move the <see cref="T:Godot.CollisionShape"/> and <see cref="T:Godot.MeshInstance"/> upwards.</para>
<para>Note: This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you will probably have to write your own physics integration using another <see cref="T:Godot.PhysicsBody"/> class.</para>
<para>Warning: With a non-uniform scale this node will probably not function as expected. Please make sure to keep its scale uniform (i.e. the same on all axes), and change the size(s) of its collision shape(s) instead.</para>
</summary>
</member>
<member name="P:Godot.VehicleBody.EngineForce">
@ -49340,7 +49410,7 @@
<summary>
<para><see cref="T:Godot.VideoStream"/> resource handling the <a href="https://www.webmproject.org/">WebM</a> video format with <c>.webm</c> extension. Both the VP8 and VP9 codecs are supported. The VP8 and VP9 codecs are more efficient than <see cref="T:Godot.VideoStreamTheora"/>, but they require more CPU resources to decode (especially VP9). Both the VP8 and VP9 codecs are decoded on the CPU.</para>
<para>Note: Alpha channel (also known as transparency) is not supported. The video will always appear to have a black background, even if it originally contains an alpha channel.</para>
<para>Note: There are known bugs and performance issues with WebM video playback in Godot. If you run into problems, try using the Ogg Theora format instead: <see cref="T:Godot.VideoStreamTheora"/></para>
<para>Note: Not supported on iOS, or when compiled for RISC-V, and there are known bugs and performance issues with WebM video playback in Godot. If you run into problems, try using the Ogg Theora format instead: <see cref="T:Godot.VideoStreamTheora"/></para>
</summary>
</member>
<member name="M:Godot.VideoStreamWebm.SetFile(System.String)">
@ -49357,7 +49427,7 @@
<summary>
<para>A Viewport creates a different view into the screen, or a sub-view inside another viewport. Children 2D Nodes will display on it, and children Camera 3D nodes will render on it too.</para>
<para>Optionally, a viewport can have its own 2D or 3D world, so they don't share what they draw with other viewports.</para>
<para>If a viewport is a child of a <see cref="T:Godot.ViewportContainer"/>, it will automatically take up its size, otherwise it must be set manually.</para>
<para>If a viewport is a child of a <see cref="T:Godot.ViewportContainer"/>, the viewport will automatically take up the container's size, otherwise it must be set manually.</para>
<para>Viewports can also choose to be audio listeners, so they generate positional audio depending on a 2D or 3D camera child of it.</para>
<para>Also, viewports can be assigned to different screens in case the devices have multiple screens.</para>
<para>Finally, viewports can also behave as render targets, in which case they will not be visible unless the associated texture is used to draw.</para>
@ -49596,7 +49666,8 @@
</member>
<member name="P:Godot.Viewport.Debanding">
<summary>
<para>If <c>true</c>, uses a fast post-processing filter to make banding significantly less visible. In some cases, debanding may introduce a slightly noticeable dithering pattern. It's recommended to enable debanding only when actually needed since the dithering pattern will make lossless-compressed screenshots larger.</para>
<para>If <c>true</c>, uses a fast post-processing filter to make banding significantly less visible in 3D. 2D rendering is not affected by debanding unless the <see cref="P:Godot.Environment.BackgroundMode"/> is <see cref="F:Godot.Environment.BGMode.Canvas"/>. In this case, <see cref="P:Godot.Viewport.Usage"/> must also be set to <see cref="F:Godot.Viewport.UsageEnum.Usage3d"/>. See also .</para>
<para>In some cases, debanding may introduce a slightly noticeable dithering pattern. It's recommended to enable debanding only when actually needed since the dithering pattern will make lossless-compressed screenshots larger.</para>
<para>Note: Only available on the GLES3 backend. <see cref="P:Godot.Viewport.Hdr"/> must also be <c>true</c> for debanding to be effective.</para>
</summary>
</member>
@ -49621,7 +49692,7 @@
</member>
<member name="P:Godot.Viewport.Disable3d">
<summary>
<para>If <c>true</c>, the viewport will disable 3D rendering. For actual disabling use <c>usage</c>.</para>
<para>If <c>true</c>, the viewport will disable 3D rendering. To actually disable allocation of 3D buffers, set <see cref="P:Godot.Viewport.Usage"/> instead.</para>
</summary>
</member>
<member name="P:Godot.Viewport.Keep3dLinear">
@ -49631,7 +49702,7 @@
</member>
<member name="P:Godot.Viewport.Usage">
<summary>
<para>The rendering mode of viewport.</para>
<para>The viewport's rendering mode. This controls which buffers are allocated for the viewport (2D only, or 2D + 3D). 2D-only options can reduce memory usage and improve performance slightly, especially on low-end devices.</para>
<para>Note: If set to <see cref="F:Godot.Viewport.UsageEnum.Usage2d"/> or <see cref="F:Godot.Viewport.UsageEnum.Usage2dNoSampling"/>, <see cref="P:Godot.Viewport.Hdr"/> will have no effect when enabled since HDR is not supported for 2D.</para>
</summary>
</member>
@ -49847,7 +49918,7 @@
</member>
<member name="T:Godot.ViewportContainer">
<summary>
<para>A <see cref="T:Godot.Container"/> node that holds a <see cref="T:Godot.Viewport"/>, automatically setting its size.</para>
<para>A <see cref="T:Godot.Container"/> node that holds a <see cref="T:Godot.Viewport"/>, automatically setting the viewport's size.</para>
<para>Note: Changing a ViewportContainer's <see cref="P:Godot.Control.RectScale"/> will cause its contents to appear distorted. To change its visual size without causing distortion, adjust the node's margins instead (if it's not already in a container).</para>
</summary>
</member>
@ -50053,6 +50124,17 @@
<para>This object will only be visible for <see cref="T:Godot.Camera"/>s whose cull mask includes the render object this <see cref="T:Godot.VisualInstance"/> is set to.</para>
</summary>
</member>
<member name="P:Godot.VisualInstance.SortingOffset">
<summary>
<para>The sorting offset used by this <see cref="T:Godot.VisualInstance"/>. Adjusting it to a higher value will make the <see cref="T:Godot.VisualInstance"/> reliably draw on top of other <see cref="T:Godot.VisualInstance"/>s that are otherwise positioned at the same spot.</para>
</summary>
</member>
<member name="P:Godot.VisualInstance.SortingUseAabbCenter">
<summary>
<para>If <c>true</c>, the object is sorted based on the <see cref="T:Godot.AABB"/> center. Sorted based on the global position otherwise.</para>
<para>The <see cref="T:Godot.AABB"/> center based sorting is generally more accurate for 3D models. The position based sorting instead allows to better control the drawing order when working with <see cref="T:Godot.Particles"/> and <see cref="T:Godot.CPUParticles"/>.</para>
</summary>
</member>
<member name="M:Godot.VisualInstance.SetBase(Godot.RID)">
<summary>
<para>Sets the resource that is instantiated by this <see cref="T:Godot.VisualInstance"/>, which changes how the engine handles the <see cref="T:Godot.VisualInstance"/> under the hood. Equivalent to <see cref="M:Godot.VisualServer.InstanceSetBase(Godot.RID,Godot.RID)"/>.</para>
@ -57543,7 +57625,7 @@
</member>
<member name="P:Godot.Engine.TimeScale">
<summary>
<para>Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed.</para>
<para>Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed. This also affects <see cref="T:Godot.Timer"/> and <see cref="T:Godot.SceneTreeTimer"/> (see <see cref="M:Godot.SceneTree.CreateTimer(System.Single,System.Boolean)"/> for how to control this).</para>
</summary>
</member>
<member name="P:Godot.Engine.PhysicsJitterFix">
@ -59091,6 +59173,7 @@
<para>- <c>OS.shell_open("https://godotengine.org")</c> opens the default web browser on the official Godot website.</para>
<para>- <c>OS.shell_open("mailto:example@example.com")</c> opens the default email client with the "To" field set to <c>example@example.com</c>. See <a href="https://datatracker.ietf.org/doc/html/rfc2368">RFC 2368 - The <c>mailto</c> URL scheme</a> for a list of fields that can be added.</para>
<para>Use <see cref="M:Godot.ProjectSettings.GlobalizePath(System.String)"/> to convert a <c>res://</c> or <c>user://</c> path into a system path for use with this method.</para>
<para>Note: Use <c>String.percent_encode</c> to encode characters within URLs in a URL-safe, portable way. This is especially required for line breaks. Otherwise, <see cref="M:Godot.OS.ShellOpen(System.String)"/> may not work correctly in a project exported to the Web platform.</para>
<para>Note: This method is implemented on Android, iOS, HTML5, Linux, macOS and Windows.</para>
</summary>
</member>
@ -59433,19 +59516,19 @@
</member>
<member name="M:Godot.OS.GetConfigDir">
<summary>
<para>Returns the global user configuration directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the <c>XDG_CONFIG_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetCacheDir"/> and <see cref="M:Godot.OS.GetDataDir"/>.</para>
<para>Returns the global user configuration directory according to the operating system's standards. On Linux, this path can be overridden by setting the <c>XDG_CONFIG_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetCacheDir"/> and <see cref="M:Godot.OS.GetDataDir"/>.</para>
<para>Not to be confused with <see cref="M:Godot.OS.GetUserDataDir"/>, which returns the project-specific user data path.</para>
</summary>
</member>
<member name="M:Godot.OS.GetDataDir">
<summary>
<para>Returns the global user data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the <c>XDG_DATA_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetCacheDir"/> and <see cref="M:Godot.OS.GetConfigDir"/>.</para>
<para>Returns the global user data directory according to the operating system's standards. On Linux, this path can be overridden by setting the <c>XDG_DATA_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetCacheDir"/> and <see cref="M:Godot.OS.GetConfigDir"/>.</para>
<para>Not to be confused with <see cref="M:Godot.OS.GetUserDataDir"/>, which returns the project-specific user data path.</para>
</summary>
</member>
<member name="M:Godot.OS.GetCacheDir">
<summary>
<para>Returns the global cache data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the <c>XDG_CACHE_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetConfigDir"/> and <see cref="M:Godot.OS.GetDataDir"/>.</para>
<para>Returns the global cache data directory according to the operating system's standards. On Linux, this path can be overridden by setting the <c>XDG_CACHE_HOME</c> environment variable before starting the project. See <a href="$DOCS_URL/tutorials/io/data_paths.html">File paths in Godot projects</a> in the documentation for more information. See also <see cref="M:Godot.OS.GetConfigDir"/> and <see cref="M:Godot.OS.GetDataDir"/>.</para>
<para>Not to be confused with <see cref="M:Godot.OS.GetUserDataDir"/>, which returns the project-specific user data path.</para>
</summary>
</member>

View File

@ -1469,6 +1469,7 @@
print("Hello from the Godot Editor!")
</code></para>
<para>Note: The script is run in the Editor context, which means the output is visible in the console window started with the Editor (stdout) instead of the usual Godot Output dock.</para>
<para>Note: EditorScript is reference counted, meaning it is destroyed when nothing references it. This can cause errors during asynchronous operations if there are no references to the script.</para>
</summary>
</member>
<member name="M:Godot.EditorScript._Run">

View File

@ -1,13 +1,13 @@
[core]
modified_time=1674062872
modified_time=1707775520
bindings_version=13
cs_glue_version=1664316215
api_hash=702222790131169798
cs_glue_version=1695587199
api_hash=-6944551478122539922
[editor]
modified_time=1674062872
modified_time=1707775520
bindings_version=13
cs_glue_version=1664316215
api_hash=-5533208003708907912
cs_glue_version=1695587199
api_hash=8576891306954954170

View File

@ -1,2 +0,0 @@
62844
C:/Users/slave/Desktop/Godot_v3.5.1-stable_mono_win64/Godot_v3.5.1-stable_mono_win64.exe

View File

@ -179,3 +179,4 @@ func save_score():
f.open(score_file,File.WRITE)
f.store_var(highscoreNode.text)
f.close()
Globals.score = highscoreNode.text

View File

@ -1,4 +1,6 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=4 format=2]
[ext_resource path="res://Font/super-legend-boy-font/SuperLegendBoy-4w8Y.ttf" type="DynamicFontData" id=1]
[sub_resource type="GDScript" id=1]
script/source = "extends Control
@ -7,10 +9,13 @@ script/source = "extends Control
# Declare member variables here. Examples:
# var a = 2
# var b = \"text\"
var timer = Timer.new()
# Called when the node enters the scene tree for the first time.
func _ready():
$HTTPRequest.connect(\"request_completed\", self, \"_on_HTTPRequest_request_completed\")
$VBoxContainer2/Label.text = str(Globals.score)
pass # Replace with function body.
@ -20,29 +25,107 @@ func _ready():
func _on_Button_pressed():
get_tree().change_scene(\"res://Main Scenes/Game.tscn\")
$VBoxContainer/Button.text = 'wait'
var player = $VBoxContainer2/LineEdit
var score = $VBoxContainer2/Label
if player.text != \"Player\":
send_create_score_request(player.text, \"game1\", score.text.to_int())
pass # Replace with function body.
func send_create_score_request(player: String, game: String, score: int):
var url := \"https://schmidti.digital/create_score/\"
# Überprüfen, ob sich das Spiel im Debug-Modus befindet
#if OS.is_debug_build():
#url = \"http://localhost:8000/create_score/\"
var request_data := {
\"player\": player,
\"game\": game,
\"score\": score
}
var headers := [\"Content-Type: application/json\"]
# Konvertieren der Daten in einen JSON-String
var json_data := to_json(request_data)
# Senden der POST-Anfrage mit den Daten und Headern
var error = $HTTPRequest.request(url, headers, true, HTTPClient.METHOD_POST, json_data)
if error != OK:
print(\"Fehler beim Senden der Anfrage: \", error)
else:
print(\"Anfrage gesendet\")
func _on_HTTPRequest_request_completed(result, response_code, headers, body):
# Diese Funktion wird aufgerufen, wenn die Anfrage abgeschlossen ist
var response = parse_json(body.get_string_from_utf8())
print(\"Antwort: \", response)
get_tree().change_scene(\"res://Main Scenes/MainMenu.tscn\")
"
[sub_resource type="DynamicFont" id=2]
size = 40
font_data = ExtResource( 1 )
[node name="Control" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
script = SubResource( 1 )
__meta__ = {
"_edit_vertical_guides_": [ -240.0 ]
}
[node name="VBoxContainer" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -20.0
margin_top = -20.0
margin_right = 20.0
margin_bottom = 20.0
margin_left = -64.0
margin_top = -24.0
margin_right = 64.0
margin_bottom = 40.0
[node name="Button" type="Button" parent="VBoxContainer"]
margin_right = 57.0
margin_bottom = 20.0
margin_right = 128.0
margin_bottom = 64.0
size_flags_horizontal = 3
size_flags_vertical = 3
text = "Restart"
icon_align = 1
[node name="VBoxContainer2" type="VBoxContainer" parent="."]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -200.0
margin_top = -336.0
margin_right = 200.0
margin_bottom = -152.0
[node name="LineEdit" type="LineEdit" parent="VBoxContainer2"]
margin_right = 400.0
margin_bottom = 90.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
size_flags_vertical = 3
custom_fonts/font = SubResource( 2 )
text = "Player"
align = 1
[node name="Label" type="Label" parent="VBoxContainer2"]
margin_top = 116.0
margin_right = 400.0
margin_bottom = 161.0
size_flags_horizontal = 3
size_flags_vertical = 6
custom_fonts/font = SubResource( 2 )
text = "10"
align = 1
uppercase = true
[node name="HTTPRequest" type="HTTPRequest" parent="."]
[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_Button_pressed"]
[connection signal="request_completed" from="HTTPRequest" to="." method="_on_HTTPRequest_request_completed"]

View File

@ -246,3 +246,38 @@ permissions/write_sms=false
permissions/write_social_stream=false
permissions/write_sync_settings=false
permissions/write_user_dictionary=false
[preset.2]
name="HTML5"
platform="HTML5"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="html_export/2048shooter.html"
script_export_mode=1
script_encryption_key=""
[preset.2.options]
custom_template/debug=""
custom_template/release=""
variant/export_type=0
vram_texture_compression/for_desktop=false
vram_texture_compression/for_mobile=true
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=1
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color( 0, 0, 0, 1 )

17
globals/globals.gd Normal file
View File

@ -0,0 +1,17 @@
extends Node
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
var score = 0
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/2048shooter.apple-touch-icon.png-b0107ac4a0aeec98ed641b5d2cc8e191.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://html_export/2048shooter.apple-touch-icon.png"
dest_files=[ "res://.import/2048shooter.apple-touch-icon.png-b0107ac4a0aeec98ed641b5d2cc8e191.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@ -0,0 +1,211 @@
/**************************************************************************/
/* audio.worklet.js */
/**************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/**************************************************************************/
class RingBuffer {
constructor(p_buffer, p_state, p_threads) {
this.buffer = p_buffer;
this.avail = p_state;
this.threads = p_threads;
this.rpos = 0;
this.wpos = 0;
}
data_left() {
return this.threads ? Atomics.load(this.avail, 0) : this.avail;
}
space_left() {
return this.buffer.length - this.data_left();
}
read(output) {
const size = this.buffer.length;
let from = 0;
let to_write = output.length;
if (this.rpos + to_write > size) {
const high = size - this.rpos;
output.set(this.buffer.subarray(this.rpos, size));
from = high;
to_write -= high;
this.rpos = 0;
}
if (to_write) {
output.set(this.buffer.subarray(this.rpos, this.rpos + to_write), from);
}
this.rpos += to_write;
if (this.threads) {
Atomics.add(this.avail, 0, -output.length);
Atomics.notify(this.avail, 0);
} else {
this.avail -= output.length;
}
}
write(p_buffer) {
const to_write = p_buffer.length;
const mw = this.buffer.length - this.wpos;
if (mw >= to_write) {
this.buffer.set(p_buffer, this.wpos);
this.wpos += to_write;
if (mw === to_write) {
this.wpos = 0;
}
} else {
const high = p_buffer.subarray(0, mw);
const low = p_buffer.subarray(mw);
this.buffer.set(high, this.wpos);
this.buffer.set(low);
this.wpos = low.length;
}
if (this.threads) {
Atomics.add(this.avail, 0, to_write);
Atomics.notify(this.avail, 0);
} else {
this.avail += to_write;
}
}
}
class GodotProcessor extends AudioWorkletProcessor {
constructor() {
super();
this.threads = false;
this.running = true;
this.lock = null;
this.notifier = null;
this.output = null;
this.output_buffer = new Float32Array();
this.input = null;
this.input_buffer = new Float32Array();
this.port.onmessage = (event) => {
const cmd = event.data['cmd'];
const data = event.data['data'];
this.parse_message(cmd, data);
};
}
process_notify() {
if (this.notifier) {
Atomics.add(this.notifier, 0, 1);
Atomics.notify(this.notifier, 0);
}
}
parse_message(p_cmd, p_data) {
if (p_cmd === 'start' && p_data) {
const state = p_data[0];
let idx = 0;
this.threads = true;
this.lock = state.subarray(idx, ++idx);
this.notifier = state.subarray(idx, ++idx);
const avail_in = state.subarray(idx, ++idx);
const avail_out = state.subarray(idx, ++idx);
this.input = new RingBuffer(p_data[1], avail_in, true);
this.output = new RingBuffer(p_data[2], avail_out, true);
} else if (p_cmd === 'stop') {
this.running = false;
this.output = null;
this.input = null;
} else if (p_cmd === 'start_nothreads') {
this.output = new RingBuffer(p_data[0], p_data[0].length, false);
} else if (p_cmd === 'chunk') {
this.output.write(p_data);
}
}
static array_has_data(arr) {
return arr.length && arr[0].length && arr[0][0].length;
}
process(inputs, outputs, parameters) {
if (!this.running) {
return false; // Stop processing.
}
if (this.output === null) {
return true; // Not ready yet, keep processing.
}
const process_input = GodotProcessor.array_has_data(inputs);
if (process_input) {
const input = inputs[0];
const chunk = input[0].length * input.length;
if (this.input_buffer.length !== chunk) {
this.input_buffer = new Float32Array(chunk);
}
if (!this.threads) {
GodotProcessor.write_input(this.input_buffer, input);
this.port.postMessage({ 'cmd': 'input', 'data': this.input_buffer });
} else if (this.input.space_left() >= chunk) {
GodotProcessor.write_input(this.input_buffer, input);
this.input.write(this.input_buffer);
} else {
this.port.postMessage('Input buffer is full! Skipping input frame.');
}
}
const process_output = GodotProcessor.array_has_data(outputs);
if (process_output) {
const output = outputs[0];
const chunk = output[0].length * output.length;
if (this.output_buffer.length !== chunk) {
this.output_buffer = new Float32Array(chunk);
}
if (this.output.data_left() >= chunk) {
this.output.read(this.output_buffer);
GodotProcessor.write_output(output, this.output_buffer);
if (!this.threads) {
this.port.postMessage({ 'cmd': 'read', 'data': chunk });
}
} else {
this.port.postMessage('Output buffer has not enough frames! Skipping output frame.');
}
}
this.process_notify();
return true;
}
static write_output(dest, source) {
const channels = dest.length;
for (let ch = 0; ch < channels; ch++) {
for (let sample = 0; sample < dest[ch].length; sample++) {
dest[ch][sample] = source[sample * channels + ch];
}
}
}
static write_input(dest, source) {
const channels = source.length;
for (let ch = 0; ch < channels; ch++) {
for (let sample = 0; sample < source[ch].length; sample++) {
dest[sample * channels + ch] = source[ch][sample];
}
}
}
}
registerProcessor('godot-processor', GodotProcessor);

View File

@ -0,0 +1,248 @@
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' lang='' xml:lang=''>
<head>
<meta charset='utf-8' />
<meta name='viewport' content='width=device-width, user-scalable=no' />
<title>2048 shooter</title>
<style type='text/css'>
body {
touch-action: none;
margin: 0;
border: 0 none;
padding: 0;
text-align: center;
background-color: black;
}
#canvas {
display: block;
margin: 0;
color: white;
}
#canvas:focus {
outline: none;
}
.godot {
font-family: 'Noto Sans', 'Droid Sans', Arial, sans-serif;
color: #e0e0e0;
background-color: #3b3943;
background-image: linear-gradient(to bottom, #403e48, #35333c);
border: 1px solid #45434e;
box-shadow: 0 0 1px 1px #2f2d35;
}
/* Status display
* ============== */
#status {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
/* don't consume click events - make children visible explicitly */
visibility: hidden;
}
#status-progress {
width: 366px;
height: 7px;
background-color: #38363A;
border: 1px solid #444246;
padding: 1px;
box-shadow: 0 0 2px 1px #1B1C22;
border-radius: 2px;
visibility: visible;
}
@media only screen and (orientation:portrait) {
#status-progress {
width: 61.8%;
}
}
#status-progress-inner {
height: 100%;
width: 0;
box-sizing: border-box;
transition: width 0.5s linear;
background-color: #202020;
border: 1px solid #222223;
box-shadow: 0 0 1px 1px #27282E;
border-radius: 3px;
}
#status-indeterminate {
height: 42px;
visibility: visible;
position: relative;
}
#status-indeterminate > div {
width: 4.5px;
height: 0;
border-style: solid;
border-width: 9px 3px 0 3px;
border-color: #2b2b2b transparent transparent transparent;
transform-origin: center 21px;
position: absolute;
}
#status-indeterminate > div:nth-child(1) { transform: rotate( 22.5deg); }
#status-indeterminate > div:nth-child(2) { transform: rotate( 67.5deg); }
#status-indeterminate > div:nth-child(3) { transform: rotate(112.5deg); }
#status-indeterminate > div:nth-child(4) { transform: rotate(157.5deg); }
#status-indeterminate > div:nth-child(5) { transform: rotate(202.5deg); }
#status-indeterminate > div:nth-child(6) { transform: rotate(247.5deg); }
#status-indeterminate > div:nth-child(7) { transform: rotate(292.5deg); }
#status-indeterminate > div:nth-child(8) { transform: rotate(337.5deg); }
#status-notice {
margin: 0 100px;
line-height: 1.3;
visibility: visible;
padding: 4px 6px;
visibility: visible;
}
</style>
<link id='-gd-engine-icon' rel='icon' type='image/png' href='2048shooter.icon.png' />
<link rel='apple-touch-icon' href='2048shooter.apple-touch-icon.png'/>
</head>
<body>
<canvas id='canvas'>
HTML5 canvas appears to be unsupported in the current browser.<br />
Please try updating or use a different browser.
</canvas>
<div id='status'>
<div id='status-progress' style='display: none;' oncontextmenu='event.preventDefault();'><div id ='status-progress-inner'></div></div>
<div id='status-indeterminate' style='display: none;' oncontextmenu='event.preventDefault();'>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div id='status-notice' class='godot' style='display: none;'></div>
</div>
<script type='text/javascript' src='2048shooter.js'></script>
<script type='text/javascript'>//<![CDATA[
const GODOT_CONFIG = {"args":[],"canvasResizePolicy":1,"executable":"2048shooter","experimentalVK":false,"fileSizes":{"2048shooter.pck":4546496,"2048shooter.wasm":26067241},"focusCanvas":true,"gdnativeLibs":[]};
var engine = new Engine(GODOT_CONFIG);
(function() {
const INDETERMINATE_STATUS_STEP_MS = 100;
var statusProgress = document.getElementById('status-progress');
var statusProgressInner = document.getElementById('status-progress-inner');
var statusIndeterminate = document.getElementById('status-indeterminate');
var statusNotice = document.getElementById('status-notice');
var initializing = true;
var statusMode = 'hidden';
var animationCallbacks = [];
function animate(time) {
animationCallbacks.forEach(callback => callback(time));
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);
function setStatusMode(mode) {
if (statusMode === mode || !initializing)
return;
[statusProgress, statusIndeterminate, statusNotice].forEach(elem => {
elem.style.display = 'none';
});
animationCallbacks = animationCallbacks.filter(function(value) {
return (value != animateStatusIndeterminate);
});
switch (mode) {
case 'progress':
statusProgress.style.display = 'block';
break;
case 'indeterminate':
statusIndeterminate.style.display = 'block';
animationCallbacks.push(animateStatusIndeterminate);
break;
case 'notice':
statusNotice.style.display = 'block';
break;
case 'hidden':
break;
default:
throw new Error('Invalid status mode');
}
statusMode = mode;
}
function animateStatusIndeterminate(ms) {
var i = Math.floor(ms / INDETERMINATE_STATUS_STEP_MS % 8);
if (statusIndeterminate.children[i].style.borderTopColor == '') {
Array.prototype.slice.call(statusIndeterminate.children).forEach(child => {
child.style.borderTopColor = '';
});
statusIndeterminate.children[i].style.borderTopColor = '#dfdfdf';
}
}
function setStatusNotice(text) {
while (statusNotice.lastChild) {
statusNotice.removeChild(statusNotice.lastChild);
}
var lines = text.split('\n');
lines.forEach((line) => {
statusNotice.appendChild(document.createTextNode(line));
statusNotice.appendChild(document.createElement('br'));
});
};
function displayFailureNotice(err) {
var msg = err.message || err;
console.error(msg);
setStatusNotice(msg);
setStatusMode('notice');
initializing = false;
};
if (!Engine.isWebGLAvailable()) {
displayFailureNotice('WebGL not available');
} else {
setStatusMode('indeterminate');
engine.startGame({
'onProgress': function (current, total) {
if (total > 0) {
statusProgressInner.style.width = current/total * 100 + '%';
setStatusMode('progress');
if (current === total) {
// wait for progress bar animation
setTimeout(() => {
setStatusMode('indeterminate');
}, 500);
}
} else {
setStatusMode('indeterminate');
}
},
}).then(() => {
setStatusMode('hidden');
initializing = false;
}, displayFailureNotice);
}
})();
//]]></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/2048shooter.icon.png-aabc0bfe6b52e9568e515cda2284ee7b.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://html_export/2048shooter.icon.png"
dest_files=[ "res://.import/2048shooter.icon.png-aabc0bfe6b52e9568e515cda2284ee7b.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

796
html_export/2048shooter.js Normal file

File diff suppressed because one or more lines are too long

BIN
html_export/2048shooter.pck Normal file

Binary file not shown.

BIN
html_export/2048shooter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/2048shooter.png-31b352f25d9c1a7c77c0f33ff11eb564.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://html_export/2048shooter.png"
dest_files=[ "res://.import/2048shooter.png-31b352f25d9c1a7c77c0f33ff11eb564.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=false
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

Binary file not shown.

View File

@ -73,6 +73,10 @@ config/name="2048 shooter"
run/main_scene="res://Main Scenes/MainMenu.tscn"
config/icon="res://icon.png"
[autoload]
Globals="*res://globals/globals.gd"
[display]
window/size/width=576