Welcome to EdenSpark’s documentation!
EdenSpark is a game engine that is designed to be simple and easy to use. You can use EdenSpark to create 2D and 3D games, simulations, and other interactive applications, and share them with others.
EdenSpark supports the Daslang programming language, and is designed to be easy to learn and use, even if you have no prior experience with programming or game development. You can find more information about Daslang in the Daslang documentation.
This documentation will show you how to get started with EdenSpark, and provide you with the information you need to create your own games and applications.
Contents:
- Getting Started
- Scene
- Resources
- System
- Input
- Components
- Fields export
- Fields annotations
- Built-in components
- Components module
- Camera
- Mesh
- LodSelector
- Ambient Settings
- ShadowSettings
- Tonemap
- Sky
- AntiAliasing
- RenderPipeline
- SSAOSettings
- SSRSettings
- DistanceFog
- Outline
- SpotLight
- PointLight
- DirectionLight
- Audio
- RigidBody
- SpringJoint
- HingeJoint
- SixDofJoint
- Collider
- CollisionListener
- CharacterController
- Animator
- SingleAnimationPlayer
- UICanvas
- UIFrame
- UIText
- Text3d
- UIImage
- UIMask
- UIColorState
- UITextureState
- UIButton
- UICheckbox
- UITextInput
- UIDropdown
- UISlider
- UIAnchor
- UIHorizontalLayout
- UIVerticalLayout
- UIFlowLayout
- UIComponent, ui events
- Physics
- Math
- Time
- Render
- Sound
- Local storage
- Generic storage
- Coroutines
- Free camera
- Arcball camera
- Tweener
- Daslang’s documentation
- Daslang 0.6 Reference Manual
- 1. Introduction
- 2. The language
- 2.1. Program Structure
- 2.2. Lexical Structure
- 2.3. Values and Data Types
- 2.3.1. Integer
- 2.3.2. Float
- 2.3.3. Bool
- 2.3.4. String
- 2.3.5. Type Conversion and Casting
- 2.3.6. Table
- 2.3.7. Array
- 2.3.8. Struct
- 2.3.9. Classes
- 2.3.10. Variant
- 2.3.11. Tuple
- 2.3.12. Enumeration
- 2.3.13. Bitfield
- 2.3.14. Function
- 2.3.15. Reference
- 2.3.16. Pointers
- 2.3.17. Smart Pointers
- 2.3.18. Iterators
- 2.4. Pointers
- 2.5. Constants, Enumerations, Global variables
- 2.6. Statements
- 2.6.1. Visibility Block
- 2.6.2. Control Flow Statements
- 2.6.3. Ranged Loops
- 2.6.4. break
- 2.6.5. continue
- 2.6.6. return
- 2.6.7. yield
- 2.6.8. pass
- 2.6.9. finally
- 2.6.10. Local Variable Declarations
- 2.6.11. assume
- 2.6.12. with
- 2.6.13. delete
- 2.6.14. Function Declaration
- 2.6.15. try/recover
- 2.6.16. panic
- 2.6.17. label and goto
- 2.6.18. Expression Statement
- 2.6.19. Global Variables
- 2.6.20. enum
- 2.6.21. typedef
- 2.7. Expressions
- 2.7.1. Assignment
- 2.7.2. Operators
- 2.7.2.1. Arithmetic
- 2.7.2.2. Relational
- 2.7.2.3. Logical
- 2.7.2.4. Bitwise Operators
- 2.7.2.5. Pipe Operators
- 2.7.2.6. Interval Operator
- 2.7.2.7. Null-Coalescing Operator (??)
- 2.7.2.8. Ternary Operator (? :)
- 2.7.2.9. Null-Safe Navigation (?. and ?[)
- 2.7.2.10. Type Operators (is, as, ?as)
- 2.7.2.11. is type<T>
- 2.7.2.12. Cast, Upcast, and Reinterpret
- 2.7.2.13. Dereference
- 2.7.2.14. Address-of
- 2.7.2.15. Dot Operator Bypass
- 2.7.2.16. Safe Index (?[)
- 2.7.2.17. Unsafe Expression
- 2.7.2.18. Operators Precedence
- 2.7.3. Array Initializer
- 2.7.4. Struct, Class, and Handled Type Initializer
- 2.7.5. Tuple Initializer
- 2.7.6. Variant Initializer
- 2.7.7. Table Initializer
- 2.7.8. default and new
- 2.7.9. typeinfo
- 2.7.10. String Interpolation
- 2.8. Function
- 2.8.1. Function declaration
- 2.8.2. OOP-style calls
- 2.8.3. Tail Recursion
- 2.8.4. Operator Overloading
- 2.8.5. Overloadable operators
- 2.8.6. Unary operators
- 2.8.7. Compound assignment operators
- 2.8.8. Index operators
- 2.8.9. Clone and finalize operators
- 2.8.10. is, as, and ?as operators
- 2.8.11. Null-coalesce operator
- 2.8.12. Struct method operators
- 2.8.13. Overloading the ‘.’ and ‘?.’ operators
- 2.8.14. Overloading accessors
- 2.9. Block
- 2.10. Lambda
- 2.11. Generator
- 2.12. Struct
- 2.13. Class
- 2.13.1. Member Visibility
- 2.13.2. Initializers
- 2.13.3. Calling Parent Methods
- 2.13.4. Runtime Type Checking (is)
- 2.13.5. Type Casting (as, ?as)
- 2.13.6. Class Templates
- 2.13.7. Static methods with
[class_method] - 2.13.8. Stack-Allocated Classes (using)
- 2.13.9. Complete Example
- 2.13.10. Implementation details
- 2.14. Tuple
- 2.15. Variant
- 2.16. Bitfield
- 2.17. Type Aliases
- 2.18. Array
- 2.19. Table
- 2.20. Iterator
- 2.21. Comprehension
- 2.22. String Builder
- 2.23. Modules
- 2.24. Move, Copy, and Clone
- 2.25. Clone
- 2.26. Finalizer
- 2.27. Temporary types
- 2.28. Unsafe
- 2.29. Generic Programming
- 2.30. Pattern matching
- 2.30.1. Enumeration Matching
- 2.30.2. Matching Variants
- 2.30.3. Declaring Variables in Patterns
- 2.30.4. Matching Structs
- 2.30.5. Using Guards
- 2.30.6. Tuple Matching
- 2.30.7. Matching Static Arrays
- 2.30.8. Dynamic Array Matching
- 2.30.9. Match Expressions
- 2.30.10. Matching with
|| - 2.30.11. [match_as_is] Structure Annotation
- 2.30.12. [match_copy] Structure Annotation
- 2.30.13. Static Matching
- 2.30.14. match_type
- 2.30.15. Multi-Match
- 2.31. Annotations
- 2.32. Options
- 2.33. Macros
- 2.33.1. Compilation passes
- 2.33.2. Invoking macros
- 2.33.3. AstFunctionAnnotation
- 2.33.4. AstBlockAnnotation
- 2.33.5. AstStructureAnnotation
- 2.33.6. AstEnumerationAnnotation
- 2.33.7. AstVariantMacro
- 2.33.8. AstReaderMacro
- 2.33.9. AstCallMacro
- 2.33.10. AstPassMacro
- 2.33.11. AstTypeMacro
- 2.33.12. AstTypeInfoMacro
- 2.33.13. AstForLoopMacro
- 2.33.14. AstCaptureMacro
- 2.33.15. AstCommentReader
- 2.33.16. AstSimulateMacro
- 2.33.17. AstVisitor
- 2.34. Reification
- 2.35. Built-in Functions
- 2.35.1. Invocation
- 2.35.2. Assertions
- 2.35.3. Debug
- 2.35.4. Panic
- 2.35.5. Memory & Type Utilities
- 2.35.6. Array Operations
- 2.35.7. Table Operations
- 2.35.8. Iterator Operations
- 2.35.9. Conversion Functions
- 2.35.10. Clone
- 2.35.11. Lock Operations
- 2.35.12. Serialization
- 2.35.13. Smart Pointer
- 2.35.14. Memory Mapping
- 2.35.15. Vector Construction
- 2.35.16. Move Helpers
- 2.35.17. Miscellaneous
- 3. The Runtime
- 3.1. Context
- 3.2. Locks
- 3.3. Type Mangling
- 3.3.1. Primitive types
- 3.3.2. Qualifiers and modifiers
- 3.3.3. Pointers
- 3.3.4. Composite prefixes
- 3.3.5. Container types
- 3.3.6. Fixed-size arrays (dim)
- 3.3.7. Callable types
- 3.3.8. Structures, handled types, and enumerations
- 3.3.9. Type aliases
- 3.3.10. Named arguments
- 3.3.11. Bitfields
- 3.3.12. Special / internal types
- 3.3.13. Remove-qualifiers (generics)
- 3.3.14. Interop function signatures
- 3.3.15. Querying mangled names at runtime
- 4. Embedding and Integration
- 4.1. Quick Start
- 4.2. C++ API Reference
- 4.3. C API Reference
- 4.3.1. When to use the C API
- 4.3.2. Initialization and shutdown
- 4.3.3. Text output
- 4.3.4. File access
- 4.3.5. Compilation
- 4.3.6. Simulation and context
- 4.3.7. Function evaluation
- 4.3.8. Argument helpers
- 4.3.9. Calling lambdas and blocks
- 4.3.10. Binding C functions
- 4.3.11. Binding types
- 4.3.12. String allocation
- 4.3.13. Context variables
- 4.3.14. Serialization
- 4.3.15. AOT checking
- 4.3.16. Module groups
- 4.3.17. Side effects
- 4.4. Advanced Topics
- Daslang Standard Library 0.6
- 1. Introduction
- 1.1. Core runtime
- 1.2. Strings
- 1.3. Regular expressions
- 1.4. Reflection and AST
- 1.5. Functional and algorithms
- 1.6. Data structures
- 1.7. Serialization and data
- 1.8. Jobs and concurrency
- 1.9. Macros and metaprogramming
- 1.10. Control flow macros
- 1.11. Pattern matching
- 1.12. Entity component system
- 1.13. OOP and interfaces
- 1.14. Testing and debugging
- 1.15. Code quality and tooling
- 1.16. Developer tools
- 2. Core
- 2.1. Built-in runtime
- 2.1.1. Type aliases
- 2.1.2. Constants
- 2.1.3. Handled structures
- 2.1.4. Function annotations
- 2.1.5. Call macros
- 2.1.6. Reader macros
- 2.1.7. Typeinfo macros
- 2.1.8. Handled types
- 2.1.9. Structure macros
- 2.1.10. Containers
- 2.1.10.1. back
- 2.1.10.2. capacity
- 2.1.10.3. clear
- 2.1.10.4. each
- 2.1.10.5. emplace
- 2.1.10.6. emplace_new
- 2.1.10.7. empty
- 2.1.10.8. erase
- 2.1.10.9. find_index
- 2.1.10.10. find_index_if
- 2.1.10.11. get
- 2.1.10.12. get_value
- 2.1.10.13. has_value
- 2.1.10.14. insert
- 2.1.10.15. insert_clone
- 2.1.10.16. insert_default
- 2.1.10.17. key_exists
- 2.1.10.18. keys
- 2.1.10.19. length
- 2.1.10.20. lock
- 2.1.10.21. push
- 2.1.10.22. push_clone
- 2.1.10.23. reserve
- 2.1.10.24. resize_and_init
- 2.1.10.25. sort
- 2.1.10.26. subarray
- 2.1.10.27. to_array
- 2.1.10.28. to_array_move
- 2.1.10.29. to_table
- 2.1.10.30. to_table_move
- 2.1.10.31. values
- 2.1.11. das::string manipulation
- 2.1.12. Heap reporting
- 2.1.13. GC0 infrastructure
- 2.1.14. Smart ptr infrastructure
- 2.1.15. Macro infrastructure
- 2.1.16. Profiler
- 2.1.17. System infrastructure
- 2.1.18. Memory manipulation
- 2.1.19. Binary serializer
- 2.1.20. Path and command line
- 2.1.21. Time and date
- 2.1.22. Platform queries
- 2.1.23. String formatting
- 2.1.24. Argument consumption
- 2.1.25. Lock checking
- 2.1.26. Lock checking internals
- 2.1.27. Bit operations
- 2.1.28. Intervals
- 2.1.29. RTTI
- 2.1.30. Lock verification
- 2.1.31. Initialization and finalization
- 2.1.32. Algorithms
- 2.1.33. Memset
- 2.1.34. Malloc
- 2.1.35. Compilation and AOT
- 2.2. Math library
- 2.2.1. Constants
- 2.2.2. Handled structures
- 2.2.3. all numerics (uint*, int*, float*, double)
- 2.2.4. float* and double
- 2.2.4.1. abs
- 2.2.4.2. acos
- 2.2.4.3. asin
- 2.2.4.4. atan
- 2.2.4.5. atan2
- 2.2.4.6. ceil
- 2.2.4.7. cos
- 2.2.4.8. exp
- 2.2.4.9. exp2
- 2.2.4.10. floor
- 2.2.4.11. is_finite
- 2.2.4.12. is_nan
- 2.2.4.13. log
- 2.2.4.14. log2
- 2.2.4.15. pow
- 2.2.4.16. rcp
- 2.2.4.17. safe_acos
- 2.2.4.18. safe_asin
- 2.2.4.19. saturate
- 2.2.4.20. sign
- 2.2.4.21. sin
- 2.2.4.22. sincos
- 2.2.4.23. sqrt
- 2.2.4.24. tan
- 2.2.5. float* only
- 2.2.6. float3 only
- 2.2.7. float2, float3, float4
- 2.2.8. Noise functions
- 2.2.9. lerp/mad/clamp
- 2.2.10. Matrix element access
- 2.2.11. Matrix operations
- 2.2.12. Matrix initializers
- 2.2.13. Matrix manipulation
- 2.2.14. Quaternion operations
- 2.2.15. Packing and unpacking
- 2.3. Math bit helpers
- 2.4. Boost package for math
- 2.5. Random generator library
- 2.1. Built-in runtime
- 3. Strings
- 3.1. String manipulation library
- 3.1.1. Enumerations
- 3.1.2. Handled structures
- 3.1.3. Character set
- 3.1.4. Character groups
- 3.1.5. Character by index
- 3.1.6. String properties
- 3.1.7. String builder
- 3.1.8. das::string manipulation
- 3.1.9. String modifications
- 3.1.10. Search substrings
- 3.1.11. String comparison
- 3.1.12. String conversion routines
- 3.1.13. String as array
- 3.1.14. Low level memory allocation
- 3.2. Boost package for string manipulation library
- 3.3. Temporary string utilities
- 3.4. UTF-8 utilities
- 3.5. Base64 encoding and decoding
- 3.6. Long string embedding macro
- 3.1. String manipulation library
- 4. I/O and Serialization
- 5. Data Structures
- 6. Algorithms and Functional
- 6.1. Miscellaneous algorithms
- 6.2. Functional programming library
- 6.3. LINQ
- 6.3.1. Sorting data
- 6.3.2. Set operations
- 6.3.3. Concatenation operations
- 6.3.4. Generation operations
- 6.3.5. Aggregation operations
- 6.3.6. Filtering data
- 6.3.7. Partitioning data
- 6.3.8. Join and group operations
- 6.3.9. Querying data
- 6.3.10. Element operations
- 6.3.11. Transform operations
- 6.3.12. Conversion operations
- 6.3.13. Comparators and keys
- 6.4. Boost module for LINQ
- 6.5. Pattern matching
- 7. Data Formats
- 7.1. JSON manipulation library
- 7.2. Boost package for JSON
- 7.3. Regular expression library
- 7.4. Boost package for REGEX
- 8. Entity Component System
- 8.1. DECS, Daslang entity component system
- 8.2. Boost package for DECS
- 8.3. DECS debug state reporting
- 9. Concurrency
- 10. AST and Macros
- 10.1. Runtime type information library
- 10.1.1. Type aliases
- 10.1.2. Constants
- 10.1.3. Enumerations
- 10.1.4. Handled structures
- 10.1.5. Typeinfo macros
- 10.1.6. Handled types
- 10.1.7. Initialization and finalization
- 10.1.8. Type access
- 10.1.9. Rtti context access
- 10.1.10. Program access
- 10.1.11. Module access
- 10.1.12. Annotation access
- 10.1.13. Compilation and simulation
- 10.1.14. File access
- 10.1.15. Structure access
- 10.1.16. Data walking and printing
- 10.1.17. Function and mangled name hash
- 10.1.18. Context and mutex locking
- 10.1.19. Runtime data access
- 10.1.20. Tuple and variant access
- 10.1.21. Iteration
- 10.2. decltype macro and template function annotation
- 10.3. Constant expression checker and substitution
- 10.1. Runtime type information library
- 11. Annotations and Contracts
- 11.1. Miscellaneous contract annotations
- 11.2. Apply reflection pattern
- 11.3. defer and defer_delete macros
- 11.4. if_not_null macro
- 11.5. is_local_xxx ast helpers
- 11.6. safe_addr macro
- 11.7. static_let macro
- 11.8. lpipe macro
- 11.9. Assert once
- 11.10. Loop unrolling
- 11.11. Bitfield operator overloads
- 11.12. Bitfield name traits
- 11.13. Enumeration traits
- 11.14. Type trait macros
- 12. Classes and Interfaces
- 13. Testing and Debugging
- 14. Code Quality and Refactoring
- 1. Introduction
- Daslang 0.6 Reference Manual
- Indices and tables