Fix broken tables + some proofing

This commit is contained in:
Rémi Verschelde
2016-02-15 18:49:59 +01:00
parent 25d4b9b095
commit 39c2fa95ba
5 changed files with 752 additions and 675 deletions
+360 -360
View File
@@ -4,364 +4,364 @@ List of classes and documenters
===============================
Status list : Not started, Started, Finished, Removed
Class name - Assigned to - Status - Start date - Notes
| \| Class name \| Assigned to \| Status \| Start date \| Notes \|
| \| @GDScript \| \| \|
| \| @Global Scope \| \| \|
| \| AABB \| bojidar_bg \| Finished \|
| \| AcceptDialog \| \| \|
| \| AnimatedSprite \| \| \|
| \| AnimatedSprite3D \| \| \|
| \| Animation \| \| \|
| \| AnimationPlayer \| \| \|
| \| AnimationTreePlayer \| \| \|
| \| Area \| \| \|
| \| Area2D \| Ovnuniarchos \| Finished \| 2015/12/22 \| \|
| \| Array \| vnen \| Started \| 10/10/2015 \|
| \| AtlasTexture \| \| \|
| \| AudioServer \| Akien \| Finished \|
| \| AudioServerSW \| Akien \| Finished \|
| \| AudioStream \| Akien \| Finished \|
| \| AudioStreamMPC \| Akien \| Finished \|
| \| AudioStreamOGGVorbis \| Akien \| Finished \|
| \| AudioStreamPlayback \| Akien \| Finished \|
| \| AudioStreamSpeex \| Akien \| Finished \|
| \| BackBufferCopy \| \| \|
| \| BakedLight \| \| \|
| \| BakedLightInstance \| \| \|
| \| BakedLightSampler \| \| \|
| \| BaseButton \| \| \|
| \| BitMap \| \| \|
| \| BoneAttachment \| \| \|
| \| BoxContainer \| \| \|
| \| BoxShape \| \| \|
| \| Button \| \| \|
| \| ButtonArray \| \| \|
| \| ButtonGroup \| \| \|
| \| Camera \| \| \|
| \| Camera2D \| \| \|
| \| CanvasItem \| \| \|
| \| CanvasItemMaterial \| \| \|
| \| CanvasItemShader \| \| \|
| \| CanvasItemShaderGraph \| \| \|
| \| CanvasLayer \| \| \|
| \| CanvasModulate \| \| \|
| \| CapsuleShape \| \| \|
| \| CapsuleShape2D \| Ovnuniarchos \| Finished \| \|
| \| CenterContainer \| \| \|
| \| CheckBox \| \| \|
| \| CheckButton \| \| \|
| \| CircleShape2D \| Ovnuniarchos \| Finished \| \|
| \| CollisionObject \| \| \|
| \| CollisionObject2D \| Ovnuniarchos \| Finished \| 2015/12/22 \| \|
| \| CollisionPolygon \| \| \| \|
| \| CollisionPolygon2D \| Ovnuniarchos \| Finished \| \|
| \| CollisionShape \| \| \|
| \| CollisionShape2D \| Ovnuniarchos \| Finished \| \|
| \| Color \| \| \|
| \| ColorArray \| \| \|
| \| ColorPicker \| \| \|
| \| ColorPickerButton \| \| \|
| \| ColorRamp \| \| \|
| \| ConcavePolygonShape \| \| \|
| \| ConcavePolygonShape2D \| Ovnuniarchos \| Finished \| \|
| \| ConeTwistJoint \| \| \|
| \| ConfigFile \| \| \|
| \| ConfirmationDialog \| \| \|
| \| Container \| \| \|
| \| Control \| \| \|
| \| ConvexPolygonShape \| \| \|
| \| ConvexPolygonShape2D \| Ovnuniarchos \| Finished \| \|
| \| CubeMap \| \| \|
| \| Curve2D \| Ovnuniarchos \| Finished \|
| \| Curve3D \| Ovnuniarchos \| Finished \|
| \| DampedSpringJoint2D \| \| \|
| \| Dictionary \| \| \|
| \| DirectionalLight \| \| \|
| \| Directory \| vnen \| Started \| 11/10/2015 \|
| \| EditorFileDialog \| \| \|
| \| EditorImportPlugin \| \| \|
| \| EditorPlugin \| \| \|
| \| EditorScenePostImport \| \| \|
| \| EditorScript \| \| \|
| \| Environment \| \| \|
| \| EventPlayer \| \| \|
| \| EventStream \| \| \|
| \| EventStreamChibi \| \| \|
| \| File \| \| \|
| \| FileDialog \| \| \|
| \| FixedMaterial \| \| \|
| \| Font \| \| \|
| \| FuncRef \| \| \|
| \| GDFunctionState \| \| \|
| \| GDNativeClass \| \| \|
| \| GDScript \| \| \|
| \| Generic6DOFJoint \| \| \|
| \| Geometry \| \| \|
| \| GeometryInstance \| \| \|
| \| Globals \| \| \|
| \| GraphEdit \| StraToN \| Finished \| \| may need a tutorial. I'll
think about it. \|
| \| GraphNode \| StraToN \| Finished \| \| may need a tutorial. I'll
think about it. \|
| \| GridContainer \| \| \|
| \| GridMap \| \| \|
| \| GrooveJoint2D \| \| \|
| \| HBoxContainer \| \| \|
| \| HButtonArray \| \| \|
| \| HScrollBar \| \| \|
| \| HSeparator \| \| \|
| \| HSlider \| \| \|
| \| HSplitContainer \| \| \|
| \| HTTPClient \| \| \|
| \| HingeJoint \| \| \|
| \| IP \| \| \|
| \| IP_Unix \| \| \|
| \| Image \| \| \|
| \| ImageTexture \| \| \|
| \| ImmediateGeometry \| \| \|
| \| Input \| \| \|
| \| InputDefault \| \| \|
| \| InputEvent \| \| \|
| \| InputEventAction \| \| \|
| \| InputEventJoyButton \| \| \|
| \| InputEventJoyMotion \| \| \|
| \| InputEventKey \| \| \|
| \| InputEventMouseButton \| \| \|
| \| InputEventMouseMotion \| \| \|
| \| InputEventScreenDrag \| \| \|
| \| InputEventScreenTouch \| \| \|
| \| InputMap \| \| \|
| \| IntArray \| \| \|
| \| InterpolatedCamera \| \| \|
| \| ItemList \| \| \|
| \| Joint \| \| \|
| \| Joint2D \| \| \|
| \| KinematicBody \| \| \|
| \| KinematicBody2D \| Ovnuniarchos \| Started \| 2015/11/23 \| \|
| \| Label \| \| \|
| \| LargeTexture \| \| \|
| \| Light \| \| \|
| \| Light2D \| \| \|
| \| LightOccluder2D \| \| \|
| \| LineEdit \| \| \|
| \| LineShape2D \| Ovnuniarchos \| Finished \| \|
| \| MainLoop \| \| \|
| \| MarginContainer \| \| \|
| \| Marshalls \| \| \|
| \| Material \| \| \|
| \| MaterialShader \| \| \|
| \| MaterialShaderGraph \| \| \|
| \| Matrix3 \| \| \|
| \| Matrix32 \| \| \|
| \| MenuButton \| \| \|
| \| Mesh \| \| \|
| \| MeshDataTool \| \| \|
| \| MeshInstance \| \| \|
| \| MeshLibrary \| \| \|
| \| MultiMesh \| \| \|
| \| MultiMeshInstance \| \| \|
| \| Mutex \| \| \|
| \| Navigation \| \| \|
| \| Navigation2D \| \| \|
| \| NavigationMesh \| \| \|
| \| NavigationMeshInstance \| \| \|
| \| NavigationPolygon \| \| \|
| \| NavigationPolygonInstance \| \| \|
| \| Nil \| \| \|
| \| Node \| \| \|
| \| Node2D \| \| \|
| \| NodePath \| \| \|
| \| OS \| \| \|
| \| Object \| \| \|
| \| OccluderPolygon2D \| \| \|
| \| OmniLight \| \| \|
| \| OptionButton \| \| \|
| \| PCKPacker \| \| \|
| \| PHashTranslation \| \| \|
| \| PackedDataContainer \| \| \|
| \| PackedDataContainerRef \| \| \|
| \| PackedScene \| \| \|
| \| PacketPeer \| \| \|
| \| PacketPeerStream \| \| \|
| \| PacketPeerUDP \| \| \|
| \| Panel \| \| \|
| \| PanelContainer \| \| \|
| \| ParallaxBackground \| \| \|
| \| ParallaxLayer \| \| \|
| \| ParticleAttractor2D \| \| \|
| \| Particles \| \| \|
| \| Particles2D \| \| \|
| \| Patch9Frame \| \| \|
| \| Path \| Ovnuniarchos \| Finished \|
| \| Path2D \| Ovnuniarchos \| Finished \|
| \| PathFollow \| Ovnuniarchos \| Finished \|
| \| PathFollow2D \| Ovnuniarchos \| Finished \|
| \| PathRemap \| \| \|
| \| Performance \| \| \|
| \| Physics2DDirectBodyState \| \| \|
| \| Physics2DDirectBodyStateSW \| \| \|
| \| Physics2DDirectSpaceState \| \| \|
| \| Physics2DServer \| \| \|
| \| Physics2DServerSW \| \| \|
| \| Physics2DShapeQueryParameters \| \| \|
| \| Physics2DShapeQueryResult \| \| \|
| \| Physics2DTestMotionResult \| \| \|
| \| PhysicsBody \| \| \|
| \| PhysicsBody2D \| Ovnuniarchos \| Finished \| 2015/12/22 \| \|
| \| PhysicsDirectBodyState \| \| \|
| \| PhysicsDirectBodyStateSW \| \| \|
| \| PhysicsDirectSpaceState \| \| \|
| \| PhysicsServer \| \| \|
| \| PhysicsServerSW \| \| \|
| \| PhysicsShapeQueryParameters \| \| \|
| \| PhysicsShapeQueryResult \| \| \|
| \| PinJoint \| \| \|
| \| PinJoint2D \| \| \|
| \| Plane \| \| \|
| \| PlaneShape \| \| \|
| \| Polygon2D \| \| \|
| \| PolygonPathFinder \| \| \|
| \| Popup \| \| \|
| \| PopupDialog \| \| \|
| \| PopupMenu \| \| \|
| \| PopupPanel \| \| \|
| \| Portal \| \| \|
| \| Position2D \| \| \|
| \| Position3D \| \| \|
| \| ProgressBar \| \| \|
| \| ProximityGroup \| \| \|
| \| Quad \| \| \|
| \| Quat \| \| \|
| \| RID \| \| \|
| \| Range \| \| \|
| \| RawArray \| \| \|
| \| RayCast \| \| \|
| \| RayCast2D \| eska \| Started \| 2015-10-16 \|
| \| RayShape \| \| \|
| \| RayShape2D \| Ovnuniarchos \| Finished \| \|
| \| RealArray \| \| \|
| \| Rect2 \| bojidar_bg \| Finished \|
| \| RectangleShape2D \| Ovnuniarchos \| Finished \| \|
| \| Reference \| \| \|
| \| ReferenceFrame \| \| \|
| \| RegEx \| Ovnuniarchos \| Finished \| 2015-11-03 \|
| \| RemoteTransform2D \| eska \| Started \| 2015-10-16 \|
| \| RenderTargetTexture \| \| \|
| \| Resource \| \| \|
| \| ResourceImportMetadata \| \| \|
| \| ResourceInteractiveLoader \| \| \|
| \| ResourceLoader \| \| \|
| \| ResourcePreloader \| \| \|
| \| ResourceSaver \| \| \|
| \| RichTextLabel \| \| \|
| \| RigidBody \| \| \|
| \| RigidBody2D \| Ovnuniarchos \| Started \| 2015/11/23 \| \|
| \| Room \| \| \|
| \| RoomBounds \| \| \|
| \| Sample \| Akien \| Finished \|
| \| SampleLibrary \| Akien \| Finished \|
| \| SamplePlayer \| Akien \| Finished \|
| \| SamplePlayer2D \| Akien \| Finished \|
| \| SceneTree \| \| \|
| \| Script \| \| \|
| \| ScrollBar \| \| \|
| \| ScrollContainer \| \| \|
| \| SegmentShape2D \| Ovnuniarchos \| Finished \| \|
| \| Semaphore \| \| \|
| \| Separator \| \| \|
| \| Shader \| \| \|
| \| ShaderGraph \| \| \|
| \| ShaderMaterial \| \| \|
| \| Shape \| \| \|
| \| Shape2D \| Ovnuniarchos \| Finished \| \|
| \| Skeleton \| \| \|
| \| Slider \| \| \|
| \| SliderJoint \| \| \|
| \| SoundPlayer2D \| Akien \| Not started \|
| \| SoundRoomParams \| Akien \| Not started \|
| \| Spatial \| Akien \| Not started \|
| \| SpatialPlayer \| Akien \| Not started \|
| \| SpatialSamplePlayer \| Akien \| Not started \|
| \| SpatialSound2DServer \| Akien \| Not started \|
| \| SpatialSound2DServerSW \| Akien \| Not started \|
| \| SpatialSoundServer \| Akien \| Not started \|
| \| SpatialSoundServerSW \| Akien \| Not started \|
| \| SpatialStreamPlayer \| Akien \| Not started \|
| \| SphereShape \| \| \|
| \| SpinBox \| \| \|
| \| SplitContainer \| \| \|
| \| SpotLight \| \| \|
| \| Sprite \| \| \|
| \| Sprite3D \| \| \|
| \| SpriteBase3D \| \| \|
| \| SpriteFrames \| \| \|
| \| StaticBody \| \| \|
| \| StaticBody2D \| Ovnuniarchos \| Started \| 2015/11/23 \| \|
| \| StreamPeer \| \| \|
| \| StreamPeerSSL \| \| \|
| \| StreamPeerTCP \| \| \|
| \| StreamPlayer \| \| \|
| \| String \| \| \|
| \| StringArray \| \| \|
| \| StyleBox \| \| \|
| \| StyleBoxEmpty \| \| \|
| \| StyleBoxFlat \| \| \|
| \| StyleBoxImageMask \| \| \|
| \| StyleBoxTexture \| \| \|
| \| SurfaceTool \| \| \|
| \| TCP_Server \| \| \|
| \| TabContainer \| \| \|
| \| Tabs \| \| \|
| \| TestCube \| \| \|
| \| TextEdit \| \| \|
| \| Texture \| \| \|
| \| TextureButton \| \| \|
| \| TextureFrame \| \| \|
| \| TextureProgress \| \| \|
| \| Theme \| \| \|
| \| Thread \| \| \|
| \| TileMap \| Akien \| Finished \|
| \| TileSet \| Akien \| Finished \|
| \| Timer \| Akien \| Finished \|
| \| ToolButton \| \| \|
| \| TouchScreenButton \| \| \|
| \| Transform \| \| \|
| \| Translation \| \| \|
| \| TranslationServer \| \| \|
| \| Tree \| \| \|
| \| TreeItem \| \| \|
| \| Tween \| \| \|
| \| UndoRedo \| \| \|
| \| VBoxContainer \| \| \|
| \| VButtonArray \| \| \|
| \| VScrollBar \| \| \|
| \| VSeparator \| \| \|
| \| VSlider \| \| \|
| \| VSplitContainer \| \| \|
| \| Vector2 \| bojidar_bg \| Finished \|
| \| Vector2Array \| bojidar_bg \| Finished \|
| \| Vector3 \| bojidar_bg \| Finished \|
| \| Vector3Array \| bojidar_bg \| Finished \|
| \| VehicleBody \| \| \|
| \| VehicleWheel \| \| \|
| \| VideoPlayer \| \| \|
| \| VideoStream \| \| \|
| \| Viewport \| \| \|
| \| ViewportSprite \| \| \|
| \| VisibilityEnabler \| \| \|
| \| VisibilityEnabler2D \| \| \|
| \| VisibilityNotifier \| \| \|
| \| VisibilityNotifier2D \| \| \|
| \| VisualInstance \| \| \|
| \| VisualServer \| \| \|
| \| WeakRef \| \| \|
| \| WindowDialog \| \| \|
| \| World \| \| \|
| \| World2D \| \| \|
| \| WorldEnvironment \| \| \|
| \| XMLParser \| \| \|
| \| YSort \| eska \| Started \| 2015-10-16 \|
| \| bool \| \| \|
| \| float \| \| \|
| \| int \| \| \|
- @GDScript
- @Global Scope
- AABB - bojidar_bg - Finished -
- AcceptDialog
- AnimatedSprite
- AnimatedSprite3D
- Animation
- AnimationPlayer
- AnimationTreePlayer
- Area
- Area2D - Ovnuniarchos - Finished - 2015/12/22
- Array - vnen - Started - 10/10/2015 -
- AtlasTexture
- AudioServer - Akien - Finished -
- AudioServerSW - Akien - Finished -
- AudioStream - Akien - Finished -
- AudioStreamMPC - Akien - Finished -
- AudioStreamOGGVorbis - Akien - Finished -
- AudioStreamPlayback - Akien - Finished -
- AudioStreamSpeex - Akien - Finished -
- BackBufferCopy
- BakedLight
- BakedLightInstance
- BakedLightSampler
- BaseButton
- BitMap
- BoneAttachment
- BoxContainer
- BoxShape
- Button
- ButtonArray
- ButtonGroup
- Camera
- Camera2D
- CanvasItem
- CanvasItemMaterial
- CanvasItemShader
- CanvasItemShaderGraph
- CanvasLayer
- CanvasModulate
- CapsuleShape
- CapsuleShape2D - Ovnuniarchos - Finished
- CenterContainer
- CheckBox
- CheckButton
- CircleShape2D - Ovnuniarchos - Finished
- CollisionObject
- CollisionObject2D - Ovnuniarchos - Finished - 2015/12/22
- CollisionPolygon -
- CollisionPolygon2D - Ovnuniarchos - Finished
- CollisionShape
- CollisionShape2D - Ovnuniarchos - Finished
- Color
- ColorArray
- ColorPicker
- ColorPickerButton
- ColorRamp
- ConcavePolygonShape
- ConcavePolygonShape2D - Ovnuniarchos - Finished
- ConeTwistJoint
- ConfigFile
- ConfirmationDialog
- Container
- Control
- ConvexPolygonShape
- ConvexPolygonShape2D - Ovnuniarchos - Finished
- CubeMap
- Curve2D - Ovnuniarchos - Finished -
- Curve3D - Ovnuniarchos - Finished -
- DampedSpringJoint2D
- Dictionary
- DirectionalLight
- Directory - vnen - Started - 11/10/2015 -
- EditorFileDialog
- EditorImportPlugin
- EditorPlugin
- EditorScenePostImport
- EditorScript
- Environment
- EventPlayer
- EventStream
- EventStreamChibi
- File
- FileDialog
- FixedMaterial
- Font
- FuncRef
- GDFunctionState
- GDNativeClass
- GDScript
- Generic6DOFJoint
- Geometry
- GeometryInstance
- Globals
- GraphEdit - StraToN - Finished may need a tutorial. I'll
think about it. -
- GraphNode - StraToN - Finished  may need a tutorial. I'll
think about it. -
- GridContainer
- GridMap
- GrooveJoint2D
- HBoxContainer
- HButtonArray
- HScrollBar
- HSeparator
- HSlider
- HSplitContainer
- HTTPClient
- HingeJoint
- IP
- IP_Unix
- Image
- ImageTexture
- ImmediateGeometry
- Input
- InputDefault
- InputEvent
- InputEventAction
- InputEventJoyButton
- InputEventJoyMotion
- InputEventKey
- InputEventMouseButton
- InputEventMouseMotion
- InputEventScreenDrag
- InputEventScreenTouch
- InputMap
- IntArray
- InterpolatedCamera
- ItemList
- Joint
- Joint2D
- KinematicBody
- KinematicBody2D - Ovnuniarchos - Started - 2015/11/23
- Label
- LargeTexture
- Light
- Light2D
- LightOccluder2D
- LineEdit
- LineShape2D - Ovnuniarchos - Finished
- MainLoop
- MarginContainer
- Marshalls
- Material
- MaterialShader
- MaterialShaderGraph
- Matrix3
- Matrix32
- MenuButton
- Mesh
- MeshDataTool
- MeshInstance
- MeshLibrary
- MultiMesh
- MultiMeshInstance
- Mutex
- Navigation
- Navigation2D
- NavigationMesh
- NavigationMeshInstance
- NavigationPolygon
- NavigationPolygonInstance
- Nil
- Node
- Node2D
- NodePath
- OS
- Object
- OccluderPolygon2D
- OmniLight
- OptionButton
- PCKPacker
- PHashTranslation
- PackedDataContainer
- PackedDataContainerRef
- PackedScene
- PacketPeer
- PacketPeerStream
- PacketPeerUDP
- Panel
- PanelContainer
- ParallaxBackground
- ParallaxLayer
- ParticleAttractor2D
- Particles
- Particles2D
- Patch9Frame
- Path - Ovnuniarchos - Finished -
- Path2D - Ovnuniarchos - Finished -
- PathFollow - Ovnuniarchos - Finished -
- PathFollow2D - Ovnuniarchos - Finished -
- PathRemap
- Performance
- Physics2DDirectBodyState
- Physics2DDirectBodyStateSW
- Physics2DDirectSpaceState
- Physics2DServer
- Physics2DServerSW
- Physics2DShapeQueryParameters
- Physics2DShapeQueryResult
- Physics2DTestMotionResult
- PhysicsBody
- PhysicsBody2D - Ovnuniarchos - Finished - 2015/12/22
- PhysicsDirectBodyState
- PhysicsDirectBodyStateSW
- PhysicsDirectSpaceState
- PhysicsServer
- PhysicsServerSW
- PhysicsShapeQueryParameters
- PhysicsShapeQueryResult
- PinJoint
- PinJoint2D
- Plane
- PlaneShape
- Polygon2D
- PolygonPathFinder
- Popup
- PopupDialog
- PopupMenu
- PopupPanel
- Portal
- Position2D
- Position3D
- ProgressBar
- ProximityGroup
- Quad
- Quat
- RID
- Range
- RawArray
- RayCast
- RayCast2D - eska - Started - 2015-10-16 -
- RayShape
- RayShape2D - Ovnuniarchos - Finished
- RealArray
- Rect2 - bojidar_bg - Finished -
- RectangleShape2D - Ovnuniarchos - Finished
- Reference
- ReferenceFrame
- RegEx - Ovnuniarchos - Finished - 2015-11-03 -
- RemoteTransform2D - eska - Started - 2015-10-16 -
- RenderTargetTexture
- Resource
- ResourceImportMetadata
- ResourceInteractiveLoader
- ResourceLoader
- ResourcePreloader
- ResourceSaver
- RichTextLabel
- RigidBody
- RigidBody2D - Ovnuniarchos - Started - 2015/11/23
- Room
- RoomBounds
- Sample - Akien - Finished -
- SampleLibrary - Akien - Finished -
- SamplePlayer - Akien - Finished -
- SamplePlayer2D - Akien - Finished -
- SceneTree
- Script
- ScrollBar
- ScrollContainer
- SegmentShape2D - Ovnuniarchos - Finished
- Semaphore
- Separator
- Shader
- ShaderGraph
- ShaderMaterial
- Shape
- Shape2D - Ovnuniarchos - Finished
- Skeleton
- Slider
- SliderJoint
- SoundPlayer2D - Akien - Not started -
- SoundRoomParams - Akien - Not started -
- Spatial - Akien - Not started -
- SpatialPlayer - Akien - Not started -
- SpatialSamplePlayer - Akien - Not started -
- SpatialSound2DServer - Akien - Not started -
- SpatialSound2DServerSW - Akien - Not started -
- SpatialSoundServer - Akien - Not started -
- SpatialSoundServerSW - Akien - Not started -
- SpatialStreamPlayer - Akien - Not started -
- SphereShape
- SpinBox
- SplitContainer
- SpotLight
- Sprite
- Sprite3D
- SpriteBase3D
- SpriteFrames
- StaticBody
- StaticBody2D - Ovnuniarchos - Started - 2015/11/23
- StreamPeer
- StreamPeerSSL
- StreamPeerTCP
- StreamPlayer
- String
- StringArray
- StyleBox
- StyleBoxEmpty
- StyleBoxFlat
- StyleBoxImageMask
- StyleBoxTexture
- SurfaceTool
- TCP_Server
- TabContainer
- Tabs
- TestCube
- TextEdit
- Texture
- TextureButton
- TextureFrame
- TextureProgress
- Theme
- Thread
- TileMap - Akien - Finished -
- TileSet - Akien - Finished -
- Timer - Akien - Finished -
- ToolButton
- TouchScreenButton
- Transform
- Translation
- TranslationServer
- Tree
- TreeItem
- Tween
- UndoRedo
- VBoxContainer
- VButtonArray
- VScrollBar
- VSeparator
- VSlider
- VSplitContainer
- Vector2 - bojidar_bg - Finished -
- Vector2Array - bojidar_bg - Finished -
- Vector3 - bojidar_bg - Finished -
- Vector3Array - bojidar_bg - Finished -
- VehicleBody
- VehicleWheel
- VideoPlayer
- VideoStream
- Viewport
- ViewportSprite
- VisibilityEnabler
- VisibilityEnabler2D
- VisibilityNotifier
- VisibilityNotifier2D
- VisualInstance
- VisualServer
- WeakRef
- WindowDialog
- World
- World2D
- WorldEnvironment
- XMLParser
- YSort - eska - Started - 2015-10-16 -
- bool
- float
- int
+51 -39
View File
@@ -387,9 +387,8 @@ Every name string is is padded to 4 bytes.
| 4 | 4 | Integer | val&0x7FFFFFFF = elements, val&0x80000000 = shared (bool) |
+----------+-------+-----------+---------------------------------------------------------------------+
| Then what follows is, for amount of "elements", pairs of key and
value, one after the other, using
| this same format.
Then what follows is, for amount of "elements", pairs of key and value,
one after the other, using this same format.
21: array
~~~~~~~~~
@@ -400,9 +399,8 @@ Every name string is is padded to 4 bytes.
| 4 | 4 | Integer | val&0x7FFFFFFF = elements, val&0x80000000 = shared (bool) |
+----------+-------+-----------+---------------------------------------------------------------------+
| Then what follows is, for amount of "elements", values one after the
other, using
| this same format.
Then what follows is, for amount of "elements", values one after the
other, using this same format.
22: byte array
~~~~~~~~~~~~~~
@@ -420,18 +418,24 @@ The array data is padded to 4 bytes.
23: int array
~~~~~~~~~~~~~
| Offset \| Len \| Type \| Description
| -- \| -- \| -- \| --
| 4\|4\|Integer\| Array Length (Integers)
| 8..8+length\*4\|4\|Integer\| 32 Bits Signed Integer
+------------------+-------+-----------+---------------------------+
| Offset | Len | Type | Description |
+==================+=======+===========+===========================+
| 4 | 4 | Integer | Array Length (Integers) |
+------------------+-------+-----------+---------------------------+
| 8..8+length\*4 | 4 | Integer | 32 Bits Signed Integer |
+------------------+-------+-----------+---------------------------+
24: float array
~~~~~~~~~~~~~~~
| Offset \| Len \| Type \| Description
| -- \| -- \| -- \| --
| 4\|4\|Integer\| Array Length (Floats)
| 8..8+length\*4\|4\|Integer\| 32 Bits IEE 754 Float
+------------------+-------+-----------+---------------------------+
| Offset | Len | Type | Description |
+==================+=======+===========+===========================+
| 4 | 4 |Integer | Array Length (Floats) |
+------------------+-------+-----------+---------------------------+
| 8..8+length\*4 | 4 |Integer | 32 Bits IEE 754 Float |
+------------------+-------+-----------+---------------------------+
25: string array
~~~~~~~~~~~~~~~~
@@ -457,36 +461,44 @@ Every string is is padded to 4 bytes.
26: vector2 array
~~~~~~~~~~~~~~~~~
+-------------------------------------------+-------+-----------+----------------+
| Offset | Len | Type | Description |
+===========================================+=======+===========+================+
| 4 | 4 | Integer | Array Length |
+-------------------------------------------+-------+-----------+----------------+
| 8..8+length_8\|4\|Float\| X Coordinate | 4 | Float | Y Coordinate |
| 8..12+length_8 | | | |
+-------------------------------------------+-------+-----------+----------------+
+-------------------+-------+-----------+----------------+
| Offset | Len | Type | Description |
+===================+=======+===========+================+
| 4 | 4 | Integer | Array Length |
+-------------------+-------+-----------+----------------+
| 8..8+length\*8 | 4 | Float | X Coordinate |
+-------------------+-------+-----------+----------------+
| 8..12+length\*8 | 4 | Float | Y Coordinate |
+-------------------+-------+-----------+----------------+
27: vector3 array
~~~~~~~~~~~~~~~~~
| Offset \| Len \| Type \| Description
| -- \| -- \| -- \| --
| 4\|4\|Integer\| Array Length
| 8..8+length_12\|4\|Float\| X Coordinate
| 8..12+length_12\|4\|Float\| Y Coordinate
| 8..16+length\*12\|4\|Float\| Z Coordinate
+--------------------+-------+-----------+----------------+
| Offset | Len | Type | Description |
+====================+=======+===========+================+
| 4 | 4 | Integer | Array Length |
+--------------------+-------+-----------+----------------+
| 8..8+length\*12 | 4 | Float | X Coordinate |
+--------------------+-------+-----------+----------------+
| 8..12+length\*12 | 4 | Float | Y Coordinate |
+--------------------+-------+-----------+----------------+
| 8..16+length\*12 | 4 | Float | Z Coordinate |
+--------------------+-------+-----------+----------------+
28: color array
~~~~~~~~~~~~~~~
+--------------------------------------------+-------+-----------+----------------+
| Offset | Len | Type | Description |
+============================================+=======+===========+================+
| 4 | 4 | Integer | Array Length |
+--------------------------------------------+-------+-----------+----------------+
| 8..8+length_16\|4\|Float\| Red (0..1) | 4 | Float | Green (0..1) |
| 8..12+length_16 | | | |
+--------------------------------------------+-------+-----------+----------------+
| 8..16+length_16\|4\|Float\| Blue (0..1) | 4 | Float | Alpha (0..1) |
| 8..20+length_16 | | | |
+--------------------------------------------+-------+-----------+----------------+
+--------------------+-------+-----------+----------------+
| Offset | Len | Type | Description |
+====================+=======+===========+================+
| 4 | 4 | Integer | Array Length |
+--------------------+-------+-----------+----------------+
| 8..8+length\*16 | 4 | Float | Red (0..1) |
+--------------------+-------+-----------+----------------+
| 8..12+length\*16 | 4 | Float | Green (0..1) |
+--------------------+-------+-----------+----------------+
| 8..16+length\*16 | 4 | Float | Blue (0..1) |
+--------------------+-------+-----------+----------------+
| 8..20+length\*16 | 4 | Float | Alpha (0..1) |
+--------------------+-------+-----------+----------------+
+252 -169
View File
@@ -57,9 +57,8 @@ Data Types
Syntax
~~~~~~
| The syntax is similar to C, with statements ending in ; , and comments
as // and /\* \*/.
| Example:
The syntax is similar to C, with statements ending with ``;`` and comments
as ``//`` and ``/* */``. Example:
::
@@ -88,27 +87,27 @@ less if the element has more subindices, for example:
::
vec3 a = vec3( 1, vec2(2,3) );
vec3 b = vec3( a );
vec3 c = vec3( vec2(2,3), 1 );
vec4 d = vec4( a, 5 );
mat3 m = mat3( a,b,c );
vec3 a = vec3(1,vec2(2,3));
vec3 b = vec3(a);
vec3 c = vec3(vec2(2,3),1);
vec4 d = vec4(a,5);
mat3 m = mat3(a,b,c);
Conditionals
~~~~~~~~~~~~
For now, only the "if" conditional is supported. Example:
For now, only the ``if`` conditional is supported. Example:
::
if (a < b) {
c = b;
c = b;
}
Uniforms
~~~~~~~~
A variable can be declared as uniform. In this case, it's value will
A variable can be declared as uniform. In this case, its value will
come from outside the shader (it will be the responsibility of the
material or whatever using the shader to provide it).
@@ -127,65 +126,91 @@ uniforms or other shader variables.
::
vec3 addtwo( vec3 a, vec3 b) {
vec3 addtwo(vec3 a, vec3 b) {
return a+b;
}
vec3 c = addtwo(vec3(1,1,1)+vec3(2,2,2));
vec3 c = addtwo(vec3(1,1,1) + vec3(2,2,2));
Built-In Functions
Built-in functions
------------------
Several Built-in functions are provided for convenience, listed as
Several built-in functions are provided for convenience, listed as
follows:
| \|\ *. Function \|*. Description \|
| \| float *sin*\ ( float ) \| Sine \|
| \| float *cos*\ ( float ) \| Cosine \|
| \| float *tan*\ ( float ) \| Tangent \|
| \| float *asin*\ ( float ) \| arc-Sine \|
| \| float *acos*\ ( float ) \| arc-Cosine \|
| \| float *atan*\ ( float ) \| arc-Tangent \|
| \| vec_type *pow*\ ( vec_type, float ) \| Power \|
| \| vec_type *pow*\ ( vec_type, vec_type ) \| Power (Vec. Exponent)
\|
| \| vec_type *exp*\ ( vec_type ) \| Base-e Exponential \|
| \| vec_type *log*\ ( vec_type ) \| Natural Logarithm \|
| \| vec_type *sqrt*\ ( vec_type ) \| Square Root \|
| \| vec_type *abs*\ ( vec_type ) \| Absolute \|
| \| vec_type *sign*\ ( vec_type ) \| Sign \|
| \| vec_type *floor*\ ( vec_type ) \| Floor \|
| \| vec_type *trunc*\ ( vec_type ) \| Trunc \|
| \| vec_type *ceil*\ ( vec_type ) \| Ceiling \|
| \| vec_type *fract*\ ( vec_type ) \| Fractional \|
| \| vec_type *mod*\ ( vec_type,vec_type ) \| Remainder \|
| \| vec_type *min*\ ( vec_type,vec_type ) \| Minimum \|
| \| vec_type *min*\ ( vec_type,vec_type ) \| Maximum \|
| \| vec_type *clamp*\ ( vec_type value,vec_type min, vec_type max )
\| Clamp to Min-Max \|
| \| vec_type *mix*\ ( vec_type a,vec_type b, float c ) \| Linear
Interpolate \|
| \| vec_type *mix*\ ( vec_type a,vec_type b, vec_type c ) \| Linear
Interpolate (Vector Coef.)\|
| \| vec_type *step*\ ( vec_type a,vec_type b) \| \` a[i] < b[i] ?
0.0 : 1.0\`\|
| \| vec_type *smoothstep*\ ( vec_type a,vec_type b,vec_type c) \|
\|
| \| float *length*\ ( vec_type ) \| Vector Length \|
| \| float *distance*\ ( vec_type, vec_type ) \| Distance between
vector. \|
| \| float *dot*\ ( vec_type, vec_type ) \| Dot Product \|
| \| vec3 *dot*\ ( vec3, vec3 ) \| Cross Product \|
| \| vec_type *normalize*\ ( vec_type ) \| Normalize to unit length \|
| \| vec3 *reflect*\ ( vec3, vec3 ) \| Reflect \|
| \| color *tex*\ ( texture, vec2 ) \| Read from a texture in
noormalized coords \|
| \| color *texcube*\ ( texture, vec3 ) \| Read from a cubemap \|
| \| color *texscreen*\ ( vec2 ) \| Read from screen (generates a copy)
\|
+-----------------------------------------------------------------------+---------------------------------------------+
| Function | Description |
+=======================================================================+=============================================+
| float *sin* ( float ) | Sine |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *cos* ( float ) | Cosine |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *tan* ( float ) | Tangent |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *asin* ( float ) | arc-Sine |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *acos* ( float ) | arc-Cosine |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *atan* ( float ) | arc-Tangent |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *pow* ( vec\_type, float ) | Power |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *pow* ( vec\_type, vec\_type ) | Power (Vec. Exponent) |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *exp* ( vec\_type ) | Base-e Exponential |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *log* ( vec\_type ) | Natural Logarithm |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *sqrt* ( vec\_type ) | Square Root |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *abs* ( vec\_type ) | Absolute |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *sign* ( vec\_type ) | Sign |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *floor* ( vec\_type ) | Floor |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *trunc* ( vec\_type ) | Trunc |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *ceil* ( vec\_type ) | Ceiling |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *fract* ( vec\_type ) | Fractional |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *mod* ( vec\_type,vec\_type ) | Remainder |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *min* ( vec\_type,vec\_type ) | Minimum |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *min* ( vec\_type,vec\_type ) | Maximum |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *clamp* ( vec\_type value,vec\_type min, vec\_type max ) | Clamp to Min-Max |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *mix* ( vec\_type a,vec\_type b, float c ) | Linear Interpolate |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *mix* ( vec\_type a,vec\_type b, vec\_type c ) | Linear Interpolate (Vector Coef.) |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *step* ( vec\_type a,vec\_type b) | \` a[i] < b[i] ? 0.0 : 1.0\` |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *smoothstep* ( vec\_type a,vec\_type b,vec\_type c) | |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *length* ( vec\_type ) | Vector Length |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *distance* ( vec\_type, vec\_type ) | Distance between vector. |
+-----------------------------------------------------------------------+---------------------------------------------+
| float *dot* ( vec\_type, vec\_type ) | Dot Product |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec3 *dot* ( vec3, vec3 ) | Cross Product |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec\_type *normalize* ( vec\_type ) | Normalize to unit length |
+-----------------------------------------------------------------------+---------------------------------------------+
| vec3 *reflect* ( vec3, vec3 ) | Reflect |
+-----------------------------------------------------------------------+---------------------------------------------+
| color *tex* ( texture, vec2 ) | Read from a texture in noormalized coords |
+-----------------------------------------------------------------------+---------------------------------------------+
| color *texcube* ( texture, vec3 ) | Read from a cubemap |
+-----------------------------------------------------------------------+---------------------------------------------+
| color *texscreen* ( vec2 ) | Read from screen (generates a copy) |
+-----------------------------------------------------------------------+---------------------------------------------+
Built-In Variables
Built-in variables
------------------
Depending on the shader type, several built-in variables are available,
@@ -194,28 +219,51 @@ listed as follows:
Material - VertexShader
~~~~~~~~~~~~~~~~~~~~~~~
| \|\ *. Variable \|*. Description \|
| \| const vec3 *SRC_VERTEX* \| Model-Space Vertex \|
| \| const vec3 *SRC_NORMAL* \| Model-Space Normal \|
| \| const vec3 *SRC_TANGENT* \| Model-Space Tangent \|
| \| const float *SRC_BINORMALF* \| Direction to Compute Binormal \|
| \| vec3 *VERTEX* \| View-Space Vertex \|
| \| vec3 *NORMAL* \| View-Space Normal \|
| \| vec3 *TANGENT* \| View-Space Tangent \|
| \| vec3 *BINORMAL* \| View-Space Binormal \|
| \| vec2 *UV* \| UV \|
| \| vec2 *UV2* \| UV2 \|
| \| color *COLOR* \| Vertex Color \|
| \| out vec4 *VAR1* \| Varying 1 Output \|
| \| out vec4 *VAR2* \| Varying 2 Output \|
| \| out float *SPEC_EXP* \| Specular Exponent (for Vertex Lighting) \|
| \| out float *POINT_SIZE* \| Point Size (for points) \|
| \| const mat4 *WORLD_MATRIX* \| Object World Matrix \|
| \| const mat4 *INV_CAMERA_MATRIX* \| Inverse Camera Matrix \|
| \| const mat4 *PROJECTION_MATRIX* \| Projection Matrix \|
| \| const mat4 *MODELVIEW_MATRIX* \| (InvCamera \* Projection) \|
| \| const float *INSTANCE_ID* \| Instance ID (for multimesh)\|
| \| const float *TIME* \| Time (in seconds) \|
+------------------------------------+-------------------------------------------+
| Variable | Description |
+====================================+===========================================+
| const vec3 *SRC\_VERTEX* | Model-Space Vertex |
+------------------------------------+-------------------------------------------+
| const vec3 *SRC\_NORMAL* | Model-Space Normal |
+------------------------------------+-------------------------------------------+
| const vec3 *SRC\_TANGENT* | Model-Space Tangent |
+------------------------------------+-------------------------------------------+
| const float *SRC\_BINORMALF* | Direction to Compute Binormal |
+------------------------------------+-------------------------------------------+
| vec3 *VERTEX* | View-Space Vertex |
+------------------------------------+-------------------------------------------+
| vec3 *NORMAL* | View-Space Normal |
+------------------------------------+-------------------------------------------+
| vec3 *TANGENT* | View-Space Tangent |
+------------------------------------+-------------------------------------------+
| vec3 *BINORMAL* | View-Space Binormal |
+------------------------------------+-------------------------------------------+
| vec2 *UV* | UV |
+------------------------------------+-------------------------------------------+
| vec2 *UV2* | UV2 |
+------------------------------------+-------------------------------------------+
| color *COLOR* | Vertex Color |
+------------------------------------+-------------------------------------------+
| out vec4 *VAR1* | Varying 1 Output |
+------------------------------------+-------------------------------------------+
| out vec4 *VAR2* | Varying 2 Output |
+------------------------------------+-------------------------------------------+
| out float *SPEC\_EXP* | Specular Exponent (for Vertex Lighting) |
+------------------------------------+-------------------------------------------+
| out float *POINT\_SIZE* | Point Size (for points) |
+------------------------------------+-------------------------------------------+
| const mat4 *WORLD\_MATRIX* | Object World Matrix |
+------------------------------------+-------------------------------------------+
| const mat4 *INV\_CAMERA\_MATRIX* | Inverse Camera Matrix |
+------------------------------------+-------------------------------------------+
| const mat4 *PROJECTION\_MATRIX* | Projection Matrix |
+------------------------------------+-------------------------------------------+
| const mat4 *MODELVIEW\_MATRIX* | (InvCamera \* Projection) |
+------------------------------------+-------------------------------------------+
| const float *INSTANCE\_ID* | Instance ID (for multimesh) |
+------------------------------------+-------------------------------------------+
| const float *TIME* | Time (in seconds) |
+------------------------------------+-------------------------------------------+
Material - FragmentShader
~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -235,7 +283,7 @@ Material - FragmentShader
+----------------------------------+----------------------------------------------------------------------------------+
| const vec3 *NORMALMAP* | Alternative to NORMAL, use for normal texture output. |
+----------------------------------+----------------------------------------------------------------------------------+
| const vec3 *NORMALMAP_DEPTH* | Complementary to the above, allows changing depth of normalmap. |
| const vec3 *NORMALMAP\_DEPTH* | Complementary to the above, allows changing depth of normalmap. |
+----------------------------------+----------------------------------------------------------------------------------+
| const vec2 *UV* | UV |
+----------------------------------+----------------------------------------------------------------------------------+
@@ -247,25 +295,25 @@ Material - FragmentShader
+----------------------------------+----------------------------------------------------------------------------------+
| const vec4 *VAR2* | Varying 2 |
+----------------------------------+----------------------------------------------------------------------------------+
| const vec2 *SCREEN_UV* | Screen Texture Coordinate (for using with texscreen) |
| const vec2 *SCREEN\_UV* | Screen Texture Coordinate (for using with texscreen) |
+----------------------------------+----------------------------------------------------------------------------------+
| const float *TIME* | Time (in seconds) |
+----------------------------------+----------------------------------------------------------------------------------+
| const vec2 *POINT_COORD* | UV for point, when drawing point sprites. |
| const vec2 *POINT\_COORD* | UV for point, when drawing point sprites. |
+----------------------------------+----------------------------------------------------------------------------------+
| out vec3 *DIFFUSE* | Diffuse Color |
+----------------------------------+----------------------------------------------------------------------------------+
| out vec4 *DIFFUSE_ALPHA* | Diffuse Color with Alpha (using this sends geometry to alpha pipeline) |
| out vec4 *DIFFUSE\_ALPHA* | Diffuse Color with Alpha (using this sends geometry to alpha pipeline) |
+----------------------------------+----------------------------------------------------------------------------------+
| out vec3 *SPECULAR* | Specular Color |
+----------------------------------+----------------------------------------------------------------------------------+
| out vec3 *EMISSION* | Emission Color |
+----------------------------------+----------------------------------------------------------------------------------+
| out float *SPEC_EXP* | Specular Exponent (Fragment Version) |
| out float *SPEC\_EXP* | Specular Exponent (Fragment Version) |
+----------------------------------+----------------------------------------------------------------------------------+
| out float *GLOW* | Glow |
+----------------------------------+----------------------------------------------------------------------------------+
| out mat4 *INV_CAMERA_MATRIX* | Inverse camera matrix, can be used to obtain world coords (see example below). |
| out mat4 *INV\_CAMERA\_MATRIX* | Inverse camera matrix, can be used to obtain world coords (see example below). |
+----------------------------------+----------------------------------------------------------------------------------+
Material - LightShader
@@ -276,23 +324,23 @@ Material - LightShader
+================================+===============================+
| const vec3 *NORMAL* | View-Space normal |
+--------------------------------+-------------------------------+
| const vec3 *LIGHT_DIR* | View-Space Light Direction |
| const vec3 *LIGHT\_DIR* | View-Space Light Direction |
+--------------------------------+-------------------------------+
| const vec3 *EYE_VEC* | View-Space Eye-Point Vector |
| const vec3 *EYE\_VEC* | View-Space Eye-Point Vector |
+--------------------------------+-------------------------------+
| const vec3 *DIFFUSE* | Material Diffuse Color |
+--------------------------------+-------------------------------+
| const vec3 *LIGHT_DIFFUSE* | Light Diffuse Color |
| const vec3 *LIGHT\_DIFFUSE* | Light Diffuse Color |
+--------------------------------+-------------------------------+
| const vec3 *SPECULAR* | Material Specular Color |
+--------------------------------+-------------------------------+
| const vec3 *LIGHT_SPECULAR* | Light Specular Color |
| const vec3 *LIGHT\_SPECULAR* | Light Specular Color |
+--------------------------------+-------------------------------+
| const float *SPECULAR_EXP* | Specular Exponent |
| const float *SPECULAR\_EXP* | Specular Exponent |
+--------------------------------+-------------------------------+
| const vec1 *SHADE_PARAM* | Generic Shade Parameter |
| const vec1 *SHADE\_PARAM* | Generic Shade Parameter |
+--------------------------------+-------------------------------+
| const vec2 *POINT_COORD* | Current UV for Point Sprite |
| const vec2 *POINT\_COORD* | Current UV for Point Sprite |
+--------------------------------+-------------------------------+
| out vec2 *LIGHT* | Resulting Light |
+--------------------------------+-------------------------------+
@@ -302,70 +350,105 @@ Material - LightShader
CanvasItem (2D) - VertexShader
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| \|\ *. Variable \|*. Description \|
| \| const vec2 *SRC_VERTEX* \| CanvasItem space vertex. \|
| \| vec2 *UV* \| UV \|
| \| out vec2 *VERTEX* \| Output LocalSpace vertex. \|
| \| out vec2 *WORLD_VERTEX* \| Output WorldSpace vertex. (use this or
the one above) \|
| \| color *COLOR* \| Vertex Color \|
| \| out vec4 *VAR1* \| Varying 1 Output \|
| \| out vec4 *VAR2* \| Varying 2 Output \|
| \| out float *POINT_SIZE* \| Point Size (for points) \|
| \| const mat4 *WORLD_MATRIX* \| Object World Matrix \|
| \| const mat4 *EXTRA_MATRIX* \| Extra (user supplied) matrix via
:ref:`CanvasItem.draw_set_transform() <class_CanvasItem_draw_set_transform>`.
Identity by default. \|
| \| const mat4 *PROJECTION_MATRIX* \| Projection Matrix (model coords
to screen).\|
| \| const float *TIME* \| Time (in seconds) \|
+-----------------------------------+--------------------------------------------------------------------------------------------+
| Variable | Description |
+===================================+============================================================================================+
| const vec2 *SRC\_VERTEX* | CanvasItem space vertex. |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| vec2 *UV* | UV |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| out vec2 *VERTEX* | Output LocalSpace vertex. |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| out vec2 *WORLD\_VERTEX* | Output WorldSpace vertex. (use this or the one above) |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| color *COLOR* | Vertex Color |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| out vec4 *VAR1* | Varying 1 Output |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| out vec4 *VAR2* | Varying 2 Output |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| out float *POINT\_SIZE* | Point Size (for points) |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| const mat4 *WORLD\_MATRIX* | Object World Matrix |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| const mat4 *EXTRA\_MATRIX* | Extra (user supplied) matrix via CanvasItem.draw\_set\_transform(). Identity by default. |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| const mat4 *PROJECTION\_MATRIX* | Projection Matrix (model coords to screen). |
+-----------------------------------+--------------------------------------------------------------------------------------------+
| const float *TIME* | Time (in seconds) |
+-----------------------------------+--------------------------------------------------------------------------------------------+
CanvasItem (2D) - FragmentShader
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| \|\ *. Variable \|*. Description \|
| \| const vec4 *SRC_COLOR* \| Vertex color \|
| \| const vec4 *POSITION* \| Screen Position \|
| \| vec2 *UV* \| UV \|
| \| out color *COLOR* \| Output Color \|
| \| out vec3 *NORMAL* \| Optional Normal (used for 2D Lighting) \|
| \| out vec3 *NORMALMAP* \| Optional Normal in standard normalmap
format (flipped y and Z from 0 to 1) \|
| \| out float *NORMALMAP_DEPTH* \| Depth option for above normalmap
output, default value is 1.0 \|
| \| const texture *TEXTURE* \| Current texture in use for CanvasItem \|
| \| const vec2 *TEXTURE_PIXEL_SIZE* \| Pixel size for current 2D
texture \|
| \| in vec4 *VAR1* \| Varying 1 Output \|
| \| in vec4 *VAR2* \| Varying 2 Output \|
| \| const vec2 *SCREEN_UV*\ \| Screen Texture Coordinate (for using
with texscreen) \|
| \| const vec2 *POINT_COORD* \| Current UV for Point Sprite \|
| \| const float *TIME*\ \| Time (in seconds) \|
+-------------------------------------+------------------------------------------------------------------------------+
| Variable | Description |
+=====================================+==============================================================================+
| const vec4 *SRC\_COLOR* | Vertex color |
+-------------------------------------+------------------------------------------------------------------------------+
| const vec4 *POSITION* | Screen Position |
+-------------------------------------+------------------------------------------------------------------------------+
| vec2 *UV* | UV |
+-------------------------------------+------------------------------------------------------------------------------+
| out color *COLOR* | Output Color |
+-------------------------------------+------------------------------------------------------------------------------+
| out vec3 *NORMAL* | Optional Normal (used for 2D Lighting) |
+-------------------------------------+------------------------------------------------------------------------------+
| out vec3 *NORMALMAP* | Optional Normal in standard normalmap format (flipped y and Z from 0 to 1) |
+-------------------------------------+------------------------------------------------------------------------------+
| out float *NORMALMAP\_DEPTH* | Depth option for above normalmap output, default value is 1.0 |
+-------------------------------------+------------------------------------------------------------------------------+
| const texture *TEXTURE* | Current texture in use for CanvasItem |
+-------------------------------------+------------------------------------------------------------------------------+
| const vec2 *TEXTURE\_PIXEL\_SIZE* | Pixel size for current 2D texture |
+-------------------------------------+------------------------------------------------------------------------------+
| in vec4 *VAR1* | Varying 1 Output |
+-------------------------------------+------------------------------------------------------------------------------+
| in vec4 *VAR2* | Varying 2 Output |
+-------------------------------------+------------------------------------------------------------------------------+
| const vec2 *SCREEN\_UV* | Screen Texture Coordinate (for using with texscreen) |
+-------------------------------------+------------------------------------------------------------------------------+
| const vec2 *POINT\_COORD* | Current UV for Point Sprite |
+-------------------------------------+------------------------------------------------------------------------------+
| const float *TIME* | Time (in seconds) |
+-------------------------------------+------------------------------------------------------------------------------+
CanvasItem (2D) - LightShader
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| \|\ *. Variable \|*. Description \|
| \| const vec4 *POSITION* \| Screen Position \|
| \| in vec3 *NORMAL* \| Input Normal \|
| \| in vec2 *UV* \| UV \|
| \| in color *COLOR* \| Input Color \|
| \| const texture *TEXTURE* \| Current texture in use for CanvasItem \|
| \| const vec2 *TEXTURE_PIXEL_SIZE* \| Pixel size for current 2D
texture \|
| \| in vec4 *VAR1* \| Varying 1 Output \|
| \| in vec4 *VAR2* \| Varying 2 Output \|
| \| const vec2 *SCREEN_UV*\ \| Screen Texture Coordinate (for using
with texscreen) \|
| \| const vec2 *POINT_COORD* \| Current UV for Point Sprite \|
| \| const float *TIME*\ \| Time (in seconds) \|
| \| vec2 *LIGHT_VEC* \| Vector from light to fragment, can be modified
to alter shadow computation. \|
| \| const float *LIGHT_HEIGHT* \| Height of Light \|
| \| const color *LIGHT_COLOR* \| Color of Light \|
| \| out vec4 *LIGHT* \| Light Ouput (shader is ignored if this is not
used) \|
+-------------------------------------+-------------------------------------------------------------------------------+
| Variable | Description |
+=====================================+===============================================================================+
| const vec4 *POSITION* | Screen Position |
+-------------------------------------+-------------------------------------------------------------------------------+
| in vec3 *NORMAL* | Input Normal |
+-------------------------------------+-------------------------------------------------------------------------------+
| in vec2 *UV* | UV |
+-------------------------------------+-------------------------------------------------------------------------------+
| in color *COLOR* | Input Color |
+-------------------------------------+-------------------------------------------------------------------------------+
| const texture *TEXTURE* | Current texture in use for CanvasItem |
+-------------------------------------+-------------------------------------------------------------------------------+
| const vec2 *TEXTURE\_PIXEL\_SIZE* | Pixel size for current 2D texture |
+-------------------------------------+-------------------------------------------------------------------------------+
| in vec4 *VAR1* | Varying 1 Output |
+-------------------------------------+-------------------------------------------------------------------------------+
| in vec4 *VAR2* | Varying 2 Output |
+-------------------------------------+-------------------------------------------------------------------------------+
| const vec2 *SCREEN\_UV* | Screen Texture Coordinate (for using with texscreen) |
+-------------------------------------+-------------------------------------------------------------------------------+
| const vec2 *POINT\_COORD* | Current UV for Point Sprite |
+-------------------------------------+-------------------------------------------------------------------------------+
| const float *TIME* | Time (in seconds) |
+-------------------------------------+-------------------------------------------------------------------------------+
| vec2 *LIGHT\_VEC* | Vector from light to fragment, can be modified to alter shadow computation. |
+-------------------------------------+-------------------------------------------------------------------------------+
| const float *LIGHT\_HEIGHT* | Height of Light |
+-------------------------------------+-------------------------------------------------------------------------------+
| const color *LIGHT\_COLOR* | Color of Light |
+-------------------------------------+-------------------------------------------------------------------------------+
| out vec4 *LIGHT* | Light Ouput (shader is ignored if this is not used) |
+-------------------------------------+-------------------------------------------------------------------------------+
Examples
--------
@@ -378,45 +461,45 @@ program:
uniform color modulate;
uniform texture source;
DIFFUSE = modulate.rgb * tex(source,UV).rgb;
DIFFUSE = modulate.rgb * tex(source, UV).rgb;
Material that glows from red to white:
::
DIFFUSE = vec3(1,0,0) + vec(1,1,1)*mod(TIME,1.0);
DIFFUSE = vec3(1,0,0) + vec(1,1,1) * mod(TIME, 1.0);
Standard Blinn Lighting Shader
::
float NdotL = max(0.0,dot( NORMAL, LIGHT_DIR ));
float NdotL = max(0.0, dot(NORMAL, LIGHT_DIR));
vec3 half_vec = normalize(LIGHT_DIR + EYE_VEC);
float eye_light = max(dot(NORMAL, half_vec),0.0);
float eye_light = max(dot(NORMAL, half_vec), 0.0);
LIGHT = LIGHT_DIFFUSE + DIFFUSE + NdotL;
if (NdotL > 0.0) {
LIGHT+=LIGHT_SPECULAR + SPECULAR + pow( eye_light, SPECULAR_EXP );
LIGHT += LIGHT_SPECULAR + SPECULAR + pow(eye_light, SPECULAR_EXP);
};
Obtaining world-space normal and position in material fragment program:
::
//use reverse multiply because INV_CAMERA_MATRIX is world2cam
// Use reverse multiply because INV_CAMERA_MATRIX is world2cam
vec3 world_normal = NORMAL * mat3(INV_CAMERA_MATRIX);
vec3 world_pos = (VERTEX-INV_CAMERA_MATRIX.w.xyz) * mat3(INV_CAMERA_MATRIX);
vec3 world_pos = (VERTEX - INV_CAMERA_MATRIX.w.xyz) * mat3(INV_CAMERA_MATRIX);
Notes
-----
| \* **Do not** use DIFFUSE_ALPHA unless you really intend to use
transparency. Transparent materials must be sorted by depth and slow
down the rendering pipeline. For opaque materials, just use DIFFUSE.
| \* **Do not** use DISCARD unless you really need it. Discard makes
rendering slower, specially on mobile devices.
| \* TIME may reset after a while (may last an hour or so), it's meant
for effects that vary over time.
| \* In general, every built-in variable not used results in less shader
code generated, so writing a single giant shader with a lot of code
and optional scenarios is often not a good idea.
- **Do not** use DIFFUSE_ALPHA unless you really intend to use
transparency. Transparent materials must be sorted by depth and slow
down the rendering pipeline. For opaque materials, just use DIFFUSE.
- **Do not** use DISCARD unless you really need it. Discard makes
rendering slower, specially on mobile devices.
- TIME may reset after a while (may last an hour or so), it's meant
for effects that vary over time.
- In general, every built-in variable not used results in less shader
code generated, so writing a single giant shader with a lot of code
and optional scenarios is often not a good idea.
+61 -69
View File
@@ -32,11 +32,11 @@ but they can be created via code easily. For example:
::
#create a circle
# Create a circle
var c = CircleShape2D.new()
c.set_radius(20)
#create a box
# Create a box
var b = RectangleShape2D.new()
b.set_extents(Vector2(20,10))
@@ -48,21 +48,20 @@ functions like:
::
#check if there is a collision between two shapes, each with a transform
if b.collide(b_xform,a,a_xform):
print("OMG Collision!")
# Check if there is a collision between two shapes, each with a transform
if b.collide(b_xform, a, a_xform):
print("OMG Collision!")
Godot will return correct collision and collision info from the
different calls to the Shape2D api. Collision between all shapes and
transforms can be done this way, or even obtaining contact information,
motion casting, etc.
Transforming Shapes
Transforming shapes
~~~~~~~~~~~~~~~~~~~
As seen before in the collide functions, 2D shapes in godot can be
transformed by using a regular
:ref:`Matrix32 <class_Matrix32>`
transformed by using a regular :ref:`Matrix32 <class_Matrix32>`
transform, meaning the can check collision while scaled, moved and
rotated. The only limitation to this is that shapes with curved sections
(such as circle and capsule) can only be scaled uniformly. This means
@@ -73,14 +72,14 @@ scaled uniformly!
.. image:: /img/shape_rules.png
But Problems Begin
------------------
When problems begin
-------------------
Even though this sounds good, reality is that collision detection alone
is usually not enough in most scenarios. Many problems start arising as
long as the development of the game is in progress:
Too Many Combinations!
Too many combinations!
~~~~~~~~~~~~~~~~~~~~~~
Games have several dozens, hundreds, thousands! of objects that can
@@ -91,14 +90,14 @@ against everything in two for loops like this:
for i in colliders:
for j in colliders:
if (i.collides(j)):
do_collision_code()
if (i.collides(j)):
do_collision_code()
But this scales really bad. Let's imagine there are only 100 objects in
the game. This means that 100\*100=10000 collisions will need to be
tested each frame. This is a lot!
Visual Aid
Visual aid
~~~~~~~~~~
Most of the time, creating a shape via code is not enough. We need to
@@ -106,7 +105,7 @@ visually place it over a sprite, draw a collision polygon, etc. It is
obvious that we need nodes to create the proper collision shapes in a
scene.
Collision Resolution
Collision resolution
~~~~~~~~~~~~~~~~~~~~
Imagine we solved the collision issue, we can tell easily and quickly
@@ -114,28 +113,25 @@ which shapes overlap. If many of them are dynamic objects that move
around, or move according to newtonian physics, solving a collision of
multiple objects can be really difficult code-wise.
Introducing.. Godot's Physics Engine!
-------------------------------------
Introducing... Godot's physics engine!
--------------------------------------
To solve all these problems, Godot has a physics and collision engine
that is well integrated into the scene system, yet it allows different
levels and layers of functionality. The built-in physics engine can be
used for:
- Simple Collision Detection: See
:ref:`Shape2D <class_Shape2D>`
- Simple Collision Detection: See :ref:`Shape2D <class_Shape2D>`
API.
- Scene Kinematics: Handle shapes, collisions, broadphase, etc as
nodes. See
:ref:`Area2D <class_Area2D>`.
nodes. See :ref:`Area2D <class_Area2D>`.
- Scene Physics: Rigid bodies and constraints as nodes. See
:ref:`RigidBody2D <class_RigidBody2D>`,
and the joint nodes.
:ref:`RigidBody2D <class_RigidBody2D>`, and the joint nodes.
Units of Measure
Units of measure
~~~~~~~~~~~~~~~~
It is often a problem when integrating a 2D Physics engine to a game
It is often a problem when integrating a 2D physics engine to a game
that such engines are optimized to work using meters as unit of measure.
Godot uses a built-in custom 2D physics engine that is designed to
function properly in pixels, so all units and default values used for
@@ -177,8 +173,9 @@ CollisionShape2D
~~~~~~~~~~~~~~~~
This node is a helper node. It must be created as a direct children of a
CollisionObject2D derived node
:ref:`Area2D <class_Area2D>`.
CollisionObject2D derived node: :ref:`Area2D <class_Area2D>`,
:ref:`StaticBody2D <class_StaticBody2D>`, :ref:`KinematicBody2D <class_KinematicBody2D>`,
:ref:`RigidBody2D <class_RigidBody2D>`.
By itself it does nothing, but when created as a child of the above
mentioned nodes, it adds collision shapes to them. Any amount of
@@ -187,7 +184,7 @@ simply have more collision shapes. When added/deleted/moved/edited, it
updates the list of shapes in the parent node.
At run time, though, this node does not exist (can't be accessed with
get_node() ), since it's only meant to be an editor helper. To access
``get_node()``), since it's only meant to be an editor helper. To access
the shapes created at runtime, use the CollisionObject2D API directly.
As an example, here's the scene from the platformer, containing an
@@ -238,8 +235,7 @@ such a character or a rigidbody, these are the same as a staticbody).
They have however, two main uses:
- **Simulated Motion**: When these bodies are moved manually, either
from code or from an
:ref:`AnimationPlayer <class_AnimationPlayer>`
from code or from an :ref:`AnimationPlayer <class_AnimationPlayer>`
(with process mode set to fixed!), the physics will automatically
compute an estimate of their linear and angular velocity. This makes
them very useful for moving platforms or other
@@ -249,16 +245,15 @@ They have however, two main uses:
- **Kinematic Characters**: KinematicBody2D also has an api for moving
objects (the move() function) while performing collision tests. This
makes them really useful to implement characters that collide against
a world, but that don't require advanced physics. A special
:ref:`doc_kinematic_character_2d`.
a world, but that don't require advanced physics. There is a tutorial
about :ref:`doc_kinematic_character_2d`.
RigidBody2D
~~~~~~~~~~~
This type of body simulates newtonian physics. It has mass, friction,
bounce, and the 0,0 coordinates simulates the center of mass. When real
physics are needed,
:ref:`RigidBody2D <class_RigidBody2D>`
physics are needed, :ref:`RigidBody2D <class_RigidBody2D>`
is the node to use. The motion of this body is affected by gravity
and/or other bodies.
@@ -286,14 +281,13 @@ function must be overridden:
::
func _integrate_forces(state):
[use state to change the object]
[use state to change the object]
The \`state\` parameter is of type
:ref:`Physics2DDirectBodyState <class_Physics2DDirectBodyState>`.
The "state" parameter is of type :ref:`Physics2DDirectBodyState <class_Physics2DDirectBodyState>`.
Please do not use this object (state) outside the callback as it will
result in an error.
Contact Reporting
Contact reporting
-----------------
In general, RigidBody2D will not keep track of the contacts, because
@@ -326,22 +320,24 @@ signals emitted by this node:
::
#Simple, high level notification
# Simple, high level notification
body_enter(body:PhysicsBody2D)
body_exit(body:PhysicsBody2D)
area_enter(area:Area2D)
area_exit(body:Area2D)
#Low level shape-based notification
#notifies which shape specifically in both the body and area are in contact
# Low level shape-based notification
# Notifies which shape specifically in both the body and area are in contact
body_enter_shape(body_id:int,body:PhysicsBody2D,body_shape_index:int,area_shape_index:idx)
body_exit_shape(body_id:int,body:PhysicsBody2D,body_shape_index:int,area_shape_index:idx)
area_enter_shape(area_id:int,area:Area2D,area_shape_index:int,self_shape_index:idx)
area_exit_shape(area_id:int,area:Area2D,area_shape_index:int,self_shape_index:idx)
Areas also by default receive mouse/touchscreen input, providing a lower-level way than controls to implement this kind of input in a game. Bodies support this by it's disabled by default.
Areas also by default receive mouse/touchscreen input, providing a
lower-level way than controls to implement this kind of input in a game.
Bodies support this by it's disabled by default.
Physics Global Variables
Physics global variables
------------------------
A few global variables can be tweaked in the project settings for
@@ -361,7 +357,7 @@ small portion of the screen, it might be necessary to shrink that value
few large colliders that span a huge map (of several screens of size),
increasing that value a bit might help save resources.
Fixed Process Callback
Fixed process callback
----------------------
The physics engine may spawn multiple threads to improve performance, so
@@ -374,7 +370,7 @@ but it's called once per physics frame (by default 60 times per second).
During this time, the physics engine is in *synchronization* state and
can be accessed directly and without delays.
To enable a fixed process callback, use the set_fixed_process()
To enable a fixed process callback, use the ``set_fixed_process()``
function, example:
::
@@ -382,12 +378,12 @@ function, example:
extends KinematicBody2D
func _fixed_process(delta):
move( direction * delta )
move(direction * delta)
func _ready():
set_fixed_process(true)
set_fixed_process(true)
Casting Rays and Motion Queries
Casting rays and motion queries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is very often desired to "explore" the world around from our code.
@@ -400,8 +396,8 @@ server must be used directly. For this, the
:ref:`Physics2DDirectspaceState <class_Physics2DDirectspaceState>`
class must be used. To obtain it, the following steps must be taken:
1. It must be used inside the _fixed_process() callback, or at
_integrate_forces()
1. It must be used inside the ``_fixed_process()`` callback, or at
``_integrate_forces()``
2. The 2D RIDs for the space and physics server must be obtained.
@@ -411,11 +407,11 @@ The following code should work:
func _fixed_process(delta):
var space = get_world_2d().get_space()
var space_state = Physics2DServer.space_get_direct_state( space )
var space_state = Physics2DServer.space_get_direct_state(space)
Enjoy doing space queries!
Contact Reporting
Contact reporting
~~~~~~~~~~~~~~~~~
Remember that not every combination of two bodies can "report" contacts.
@@ -427,20 +423,16 @@ and with other areas. The following table should make it more visual:
In case of overlap, who receives collision information?
-------------------------------------------------------
\|\ *. Type \|*. RigidBody \|\ *. CharacterBody \|*. KinematicBody
\|\ *. StaticBody \|*. Area \|
\| **RigidBody** \| Both \| Both \| Both \| Rigidbody \| Area \|
\| **CharacterBody** \| Both \| Both \| Both \| CharacterBody \| Area
\|
\| **KinematicBody** \| Both \| Both \| None \| None \| Area \|
\| **StaticBody** \| RigidBody \| CharacterBody \| None \| None \|
None \|
\| **Area** \| Area \| Area \| Area \| None \| Both \|
+-------------------+-------------+-----------------+-----------------+---------------+--------+
| **Type** | *RigidBody* | *CharacterBody* | *KinematicBody* | *StaticBody* | *Area* |
+===================+=============+=================+=================+===============+========+
| **RigidBody** | Both | Both | Both | Rigidbody | Area |
+-------------------+-------------+-----------------+-----------------+---------------+--------+
| **CharacterBody** | Both | Both | Both | CharacterBody | Area |
+-------------------+-------------+-----------------+-----------------+---------------+--------+
| **KinematicBody** | Both | Both | None | None | Area |
+-------------------+-------------+-----------------+-----------------+---------------+--------+
| **StaticBody** | RigidBody | CharacterBody | None | None | None |
+-------------------+-------------+-----------------+-----------------+---------------+--------+
| **Area** | Area | Area | Area | None | Both |
+-------------------+-------------+-----------------+-----------------+---------------+--------+
+28 -38
View File
@@ -1,6 +1,6 @@
.. _doc_viewport_and_canvas_transforms:
Viewport & Canvas Transforms
Viewport & canvas transforms
============================
Introduction
@@ -11,46 +11,43 @@ users, and explains all the 2D transforms going on for nodes from the
moment they draw their content locally to the time they are drawn into
the screen.
Canvas Transform
Canvas transform
----------------
As mentioned in the previous tutorial :ref:`doc_canvas_layers`, every
CanvasItem node (remember that Node2D and Control based nodes use
CanvasItem as their common root) will reside in a *Canvas Layer*. Every
canvas layer has a transform (translation, rotation, scale, etc) that
can be accessed as a
:ref:`Matrix32 <class_Matrix32>`.
canvas layer has a transform (translation, rotation, scale, etc.) that
can be accessed as a :ref:`Matrix32 <class_Matrix32>`.
By default, nodes are drawn in Layer 0, in the built-in canvas. To put
nodes in a different layer, a
:ref:`CanvasLayer <class_CanvasLayer>`
nodes in a different layer, a :ref:`CanvasLayer <class_CanvasLayer>`
node can be used. This was covered in the previous tutorial anyway, just
refreshing.
Global Canvas Transform
Global canvas transform
-----------------------
Viewports also have a Global Canvas transform (also a
:ref:`Matrix32 <class_Matrix32>`
). This is the master transform and affects all individual *Canvas
Layer* transforms. Generally this transform is not of much use, but is
used in the CanvasItem Editor in Godot's editor.
:ref:`Matrix32 <class_Matrix32>`). This is the master transform and
affects all individual *Canvas Layer* transforms. Generally this
transform is not of much use, but is used in the CanvasItem Editor
in Godot's editor.
Stretch Transform
Stretch transform
-----------------
Finally, viewports have a *Stretch Transform*, which is used when
resizing or stretching the screen. This transform is used internally by
the :ref:`doc_multiple_resolutions`, but can also be requested to the viewport.
Input events received in the
:ref:`Node._input_event() <class_Node__input_event>`
Input events received in the :ref:`Node._input_event() <class_Node__input_event>`
callback are multiplied by this transform, but lack the ones above. To
convert InputEvent coordinates to local CanvasItem coordinates, the
:ref:`CanvasItem.make_input_local() <class_CanvasItem_make_input_local>`
function was added for convenience.
Transform Order
Transform order
---------------
For a coordinate in CanvasItem local properties to become an actual
@@ -58,24 +55,20 @@ screen coordinate, the following chain of transforms must be applied:
.. image:: /img/viewport_transforms2.png
Transform Functions
Transform functions
-------------------
Obtaining each transform can be achieved with the following functions:
\|Type: \| Transform\|
\|CanvasItem \|
:ref:`CanvasItem.get_global_transform() <class_CanvasItem_get_global_transform>`
\|
\|CanvasLayer\|
:ref:`CanvasItem.get_canvas_transform() <class_CanvasItem_get_canvas_transform>`
\|
\|CanvasLayer+GlobalCanvas+Stretch \|
:ref:`CanvasItem.get_viewport_transform() <class_CanvasItem_get_viewport_transform>`
\|
+----------------------------------+--------------------------------------------------------------------------------------+
| Type | Transform |
+==================================+======================================================================================+
| CanvasItem | :ref:`CanvasItem.get_global_transform() <class_CanvasItem_get_global_transform>` |
+----------------------------------+--------------------------------------------------------------------------------------+
| CanvasLayer | :ref:`CanvasItem.get_canvas_transform() <class_CanvasItem_get_canvas_transform>` |
+----------------------------------+--------------------------------------------------------------------------------------+
| CanvasLayer+GlobalCanvas+Stretch | :ref:`CanvasItem.get_viewport_transform() <class_CanvasItem_get_viewport_transform>` |
+----------------------------------+--------------------------------------------------------------------------------------+
Finally then, to convert a CanvasItem local coordinates to screen
coordinates, just multiply in the following order:
@@ -86,10 +79,10 @@ coordinates, just multiply in the following order:
Keep in mind, however, that it is generally not desired to work with
screen coordinates. The recommended approach is to simply work in Canvas
coordinates (CanvasItem.get_global_transform()), to allow automatic
coordinates (``CanvasItem.get_global_transform()``), to allow automatic
screen resolution resizing to work properly.
Feeding Custom Input Events
Feeding custom input events
---------------------------
It is often desired to feed custom input events to the scene tree. With
@@ -100,10 +93,7 @@ way:
var local_pos = Vector2(10,20) # local to Control/Node2D
var ie = InputEvent()
ie.type=InputEvent.MOUSE_BUTTON
ie.button_index=1 #left click
ie.pos = get_viewport_transform() + ( get_global_transform() + local_pos )
ie.type = InputEvent.MOUSE_BUTTON
ie.button_index = BUTTON_LEFT
ie.pos = get_viewport_transform() + (get_global_transform() + local_pos)
get_tree().input_event(ie)