sources/core/Readme.md
The following libraries cover abstractions and base implementations of various low level Stride systems.
The assembly processor is a legacy job that runs after any project is built and delivers IL patching for the following:
Stride.Core.targets - StrideAddReference)Stride.Rendering.ParameterKey<T> (TODO: why?)Stride.Core.Interop has been marked obsolete)Most of the AssemblyProcessor is poorly documented and deals with a lot of IL weaving using Mono.Cecil. This makes it hard to debug and modify. AssemblyProcessor should be slowly deprecated in favor of native .NET/Roslyn solutions.
The assembly that's referenced by all other Stride projects. Contains a lot of base abstractions used in the engine. Also includes transitive build targets that are executed upon build for projects that reference Stride.Core.
[DataContract])PropertyKey, PropertyContainer)IServiceRegistry)ThreadThrottler for delaying thread execution in timeObjectId)AssemblyRegistry - system for registering actions that happen upong loading an assembly into the process (e.g. extracting specific types from it that hold an attribute)ObjectFactoryRegistry - factory of objects if they need something else than Activator.CreateInstance()IReferencable, ReferenceBase, DisposeBase)NativeLibraryHelperThe serialization subsystem is designed for an efficient binary serialization.
DataSerializer and its subclasses define how to serialize a type[DataSerializer] and [DataSerializerGlobal] are used to map a serializer to the object typeMemberSerializer is used for serialization of fields and properties and has a lot of templated logic around detecting the type from an ObjectIdSerializerSelector manages picking the correct serializer based on serialization profileFile related abstractions and platform specific nuances.
DirectoryWatcher - a wrapper over System.IO.FileSystem.WatcherFileSystemProvider, DriveFileProvider)AndroidAssetProvider, ZipFileSystemProvider)VirtualFileStream - a multithreaded wrapper over a Stream, used by the VirtualFileSystemMath primitives and vector types. Key note is that the matrix implementation differs from System.Numerics in order to simplify rendering processes.
The Stride.Core.MicroThreading namespace provides classes that supports multi-threaded tasks scheduling and execution.
It provides a Scheduler class and the MicroThread object that can encapsulate a task.
Channel<T> provides communication between micro threads.
Extends the serialization system defined in Stride.Core to support cross-object references, streaming and more.
Stride.Rendering/Stride.Streaming)ObjectDatabaseContentIndexMap maps unique ids to URLsFileOdbBackend allows accessing files directly where each file is named by the unique idBundleOdbBackend allows encapsulating mappings between files and unique ids into a *.bundle file
DatabaseFileProvider - a virtual file system on top of the object databaseListStore and DictionaryStore for incrementally persisting data onto the hard driveReferenceSerializer, ContentReferenceDataSerializer)AttachedReferenceManager)ContentManager used in the engine to load/unload content - handles deserialization and reference countingThis project contains wrappers on top of System.Reflection that provide additional abstraction (e.g. MemberDesciptor)
or additional shape (e.g. CollectionDescriptor, DictionaryDescriptor).
Fork of https://github.com/xoofx/SharpYaml - a Yet Another Markup Language (YAML) serializer.
A simple translation helper which allows getting translated strings from text files using GNU Gettext or from assembly embedded resources (.resx).
Various subsystems underlying the design time systems.
AsyncLock and AwaitableDisposable (also MicroThreadLock)Stride.Core.Mathematics and Stride.Core.Serialization)PackageVersion)Helper executable for tasks executed during build.
Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net) and Silicon Studio Corp. (https://www.siliconstudio.co.jp) All Rights Reserved
Stride Router Server - Version: 4.1.0
Usage: Stride.Core.Tasks.dll command [options]*
=== Commands ===
locate-devenv <MSBuildPath>: returns devenv path
pack-assets <csprojFile> <intermediatePackagePath>: copy and adjust assets for nupkg packaging