diff --git a/ECSSamples/Assets/Advanced/BlobAsset.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable.meta
similarity index 77%
rename from ECSSamples/Assets/Advanced/BlobAsset.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable.meta
index 85ae3116a..7442f499e 100644
--- a/ECSSamples/Assets/Advanced/BlobAsset.meta
+++ b/ECSSamples/Assets/Advanced/BlobAssetScalable.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 4ba8e4727afc5494fac103d791690a9e
+guid: a1de7c5e5031942e597b2f87e27776a4
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.unity b/ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.unity
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.unity
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.unity
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.unity.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.unity.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/BlobAsset.unity.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset.unity.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/BlobAsset/Subscene.unity b/ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset/Subscene.unity
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/BlobAsset/Subscene.unity
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset/Subscene.unity
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/BlobAsset/Subscene.unity.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset/Subscene.unity.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/BlobAsset/Subscene.unity.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/BlobAsset/Subscene.unity.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M16.prefab b/ECSSamples/Assets/Advanced/BlobAssetScalable/M16.prefab
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M16.prefab
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M16.prefab
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M16.prefab.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/M16.prefab.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M16.prefab.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M16.prefab.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M4.prefab b/ECSSamples/Assets/Advanced/BlobAssetScalable/M4.prefab
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M4.prefab
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M4.prefab
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M4.prefab.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/M4.prefab.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M4.prefab.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M4.prefab.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M512.prefab b/ECSSamples/Assets/Advanced/BlobAssetScalable/M512.prefab
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M512.prefab
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M512.prefab
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M512.prefab.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/M512.prefab.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M512.prefab.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M512.prefab.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M64.prefab b/ECSSamples/Assets/Advanced/BlobAssetScalable/M64.prefab
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M64.prefab
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M64.prefab
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/M64.prefab.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/M64.prefab.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/M64.prefab.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/M64.prefab.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/Mesh.prefab b/ECSSamples/Assets/Advanced/BlobAssetScalable/Mesh.prefab
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/Mesh.prefab
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/Mesh.prefab
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/Mesh.prefab.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/Mesh.prefab.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/Mesh.prefab.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/Mesh.prefab.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBComponent.cs b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBComponent.cs
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBComponent.cs
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBComponent.cs
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBComponent.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBComponent.cs.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBComponent.cs.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBComponent.cs.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBConversionSystem.cs b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBConversionSystem.cs
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBConversionSystem.cs
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBConversionSystem.cs
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBConversionSystem.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBConversionSystem.cs.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBConversionSystem.cs.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBConversionSystem.cs.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBRenderSystem.cs b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBRenderSystem.cs
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBRenderSystem.cs
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBRenderSystem.cs
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshBBRenderSystem.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBRenderSystem.cs.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshBBRenderSystem.cs.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshBBRenderSystem.cs.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshToBoundingBoxAuthoring.cs b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshToBoundingBoxAuthoring.cs
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshToBoundingBoxAuthoring.cs
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshToBoundingBoxAuthoring.cs
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/MeshToBoundingBoxAuthoring.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/MeshToBoundingBoxAuthoring.cs.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/MeshToBoundingBoxAuthoring.cs.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/MeshToBoundingBoxAuthoring.cs.meta
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/README.md b/ECSSamples/Assets/Advanced/BlobAssetScalable/README.md
similarity index 88%
rename from ECSSamples/Assets/Advanced/BlobAsset/README.md
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/README.md
index c789c0342..a67bc74d1 100644
--- a/ECSSamples/Assets/Advanced/BlobAsset/README.md
+++ b/ECSSamples/Assets/Advanced/BlobAssetScalable/README.md
@@ -1,6 +1,11 @@
# BlobAsset Conversion Sample
-This sample demonstrates how to convert a information from a GameObject containing a Unity Authoring component to a BlobAsset using the `BlobAssetStore` and `BlobAssetComputationContext` types.
+This sample demonstrates how to convert assets referenced from authoring components to a BlobAsset in an efficient and scalable way.
+* How to avoid generating blobs that were already generated
+* How to share blob generation between multiple components that reference the same or similar source assets
+* How to efficiently extract all inputs for blob generation from authoring data and then perform all blob generation in bursted and parallel jobs
+
+It uses `BlobAssetStore` and `BlobAssetComputationContext` to reduce complexity.
## What does it show
diff --git a/ECSSamples/Assets/Advanced/BlobAsset/README.md.meta b/ECSSamples/Assets/Advanced/BlobAssetScalable/README.md.meta
similarity index 100%
rename from ECSSamples/Assets/Advanced/BlobAsset/README.md.meta
rename to ECSSamples/Assets/Advanced/BlobAssetScalable/README.md.meta
diff --git a/ECSSamples/Assets/Tests/AutoCreate.meta b/ECSSamples/Assets/Advanced/BlobAssetSimple.meta
similarity index 77%
rename from ECSSamples/Assets/Tests/AutoCreate.meta
rename to ECSSamples/Assets/Advanced/BlobAssetSimple.meta
index ffeb05595..9f035e939 100644
--- a/ECSSamples/Assets/Tests/AutoCreate.meta
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 723e1a0a41f50174ca3e856f5d388d41
+guid: 821d372b6506f44aa8e835199e4ad5ad
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/ECSSamples/Assets/Advanced/BlobAssetSimple/README.md b/ECSSamples/Assets/Advanced/BlobAssetSimple/README.md
new file mode 100644
index 000000000..03d85eaeb
--- /dev/null
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/README.md
@@ -0,0 +1,15 @@
+# Simple BlobAsset Sample (Not scalable)
+
+This sample demonstrates how to convert assets or authoring component data to an BlobAsset in the simplest possible way.
+
+NOTE: This approach is not scalable in terms of conversion performance. Depending on your scalability needs this may or may not be a good fit.
+A more complex but scalable conversion approach is shown in Advanced/BlobAssetScalable
+
+## What does it show
+
+Converts an AnimationCurve to a blob asset. The samples uses it to animate the y position of the transform.
+
+It shows how to create a blob asset during converrsion.
+
+It uses `BlobAssetStore` to manage lifetime of the generated blob assets.
+It uses `BlobAssetStore.AddUniqueBlobAsset` to ensue that unique blob assets are automatically shared.
diff --git a/ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef.meta b/ECSSamples/Assets/Advanced/BlobAssetSimple/README.md.meta
similarity index 59%
rename from ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef.meta
rename to ECSSamples/Assets/Advanced/BlobAssetSimple/README.md.meta
index 0d261e925..abd4ccf90 100644
--- a/ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef.meta
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/README.md.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: d37addddb13b6477d82a6c3b8f9b464b
-AssemblyDefinitionImporter:
+guid: 8660abec2af964017bbe2165369dd52d
+TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
diff --git a/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs
new file mode 100644
index 000000000..e44251554
--- /dev/null
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs
@@ -0,0 +1,60 @@
+using Unity.Entities;
+using Unity.Collections;
+using Unity.Mathematics;
+using UnityEngine;
+
+///
+/// Very simple animation curve blob data that uses linear interpolation at fixed intervals.
+/// Blob data is constructed from a UnityEngine.AnimationCurve
+///
+public struct SimpleAnimationBlob
+{
+ BlobArray Keys;
+ float InvLength;
+ float KeyCount;
+
+ // When t exceeds the curve time, repeat it
+ public float CalculateNormalizedTime(float t)
+ {
+ float normalizedT = t * InvLength;
+ return normalizedT - math.floor(normalizedT);
+ }
+
+ public float Evaluate(float t)
+ {
+ // Loops time value between 0...1
+ t = CalculateNormalizedTime(t);
+
+ // Find index and interpolation value in the array
+ float sampleT = t * KeyCount;
+ var sampleTFloor = math.floor(sampleT);
+
+ float interp = sampleT - sampleTFloor;
+ var index = (int)sampleTFloor;
+
+ return math.lerp(Keys[index], Keys[index+1], interp);
+ }
+
+ public static BlobAssetReference CreateBlob(AnimationCurve curve, Allocator allocator)
+ {
+ using (var blob = new BlobBuilder(Allocator.TempJob))
+ {
+ ref var anim = ref blob.ConstructRoot();
+ int keyCount = 12;
+
+ float endTime = curve[curve.length - 1].time;
+ anim.InvLength = 1.0F / endTime;
+ anim.KeyCount = keyCount;
+
+ var array = blob.Allocate(ref anim.Keys, keyCount + 1);
+ for (int i = 0; i < keyCount; i++)
+ {
+ float t = (float) i / (float)(keyCount - 1) * endTime;
+ array[i] = curve.Evaluate(t);
+ }
+ array[keyCount] = array[keyCount-1];
+
+ return blob.CreateBlobAssetReference(allocator);
+ }
+ }
+}
diff --git a/ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs.meta
similarity index 83%
rename from ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs.meta
rename to ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs.meta
index 7b347bdc6..69400e044 100644
--- a/ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs.meta
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleAnimationBlob.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3af4c6bba665e7b46887c87ab19a2819
+guid: 9bda83660386d40df8f2fbfc21eee456
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs
new file mode 100644
index 000000000..c7d662f7a
--- /dev/null
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs
@@ -0,0 +1,40 @@
+using Unity.Collections;
+using Unity.Entities;
+using Unity.Transforms;
+using UnityEngine;
+
+public class SimpleBlobAnimationAuthoring : MonoBehaviour, IConvertGameObjectToEntity
+{
+ public AnimationCurve Curve = AnimationCurve.EaseInOut(0, 0, 1, 1);
+
+ public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
+ {
+ var blob = SimpleAnimationBlob.CreateBlob(Curve, Allocator.Persistent);
+
+ // Add the generated blob asset to the blob asset store.
+ // if another component generates the exact same blob asset, it will automatically be shared.
+ // Ownership of the blob asset is passed to the BlobAssetStore,
+ // it will automatically manage the lifetime of the blob asset.
+ conversionSystem.BlobAssetStore.AddUniqueBlobAsset(ref blob);
+
+ dstManager.AddComponentData(entity, new SimpleBlobAnimation { Anim = blob });
+ }
+}
+public struct SimpleBlobAnimation : IComponentData
+{
+ public BlobAssetReference Anim;
+ public float T;
+}
+
+partial class SimpleBlobAnimationSystem : SystemBase
+{
+ protected override void OnUpdate()
+ {
+ var dt = Time.DeltaTime;
+ Entities.ForEach((ref SimpleBlobAnimation anim, ref Translation translation) =>
+ {
+ anim.T += dt;
+ translation.Value.y = anim.Anim.Value.Evaluate(anim.T);
+ }).Run();
+ }
+}
diff --git a/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs.meta b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs.meta
new file mode 100644
index 000000000..8037c7ae6
--- /dev/null
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAnimationAuthoring.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9ad5e1b25b8147298a399ca1c8978baf
+timeCreated: 1602402886
\ No newline at end of file
diff --git a/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity
new file mode 100644
index 000000000..8a1624c4e
--- /dev/null
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity
@@ -0,0 +1,456 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &696003479
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 696003482}
+ - component: {fileID: 696003481}
+ - component: {fileID: 696003480}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &696003480
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 696003479}
+ m_Enabled: 1
+--- !u!20 &696003481
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 696003479}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &696003482
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 696003479}
+ m_LocalRotation: {x: -0.0871723, y: 0.89959055, z: -0.21045254, w: -0.37262255}
+ m_LocalPosition: {x: 7.561632, y: 5.2931423, z: 7.561632}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &968218079
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 968218081}
+ - component: {fileID: 968218080}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &968218080
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 968218079}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &968218081
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 968218079}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1376965858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1376965864}
+ - component: {fileID: 1376965863}
+ - component: {fileID: 1376965862}
+ - component: {fileID: 1376965861}
+ - component: {fileID: 1376965860}
+ - component: {fileID: 1376965859}
+ m_Layer: 0
+ m_Name: Cube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1376965859
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ea7d7495833204790ba1d3a8755397f8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ConversionMode: 0
+--- !u!114 &1376965860
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9ad5e1b25b8147298a399ca1c8978baf, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ Curve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0.03129469
+ outSlope: 0.03129469
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0.15217352
+ - serializedVersion: 3
+ time: 0.89677644
+ value: 2.3840213
+ inSlope: 0.17807433
+ outSlope: 0.17807433
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.66668165
+ outWeight: 0
+ - serializedVersion: 3
+ time: 1.8095093
+ value: 0.004219055
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0
+ outWeight: 0
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!65 &1376965861
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1376965862
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1376965863
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1376965864
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1376965858}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/ECSSamples/Assets/Tests/SceneSwitcher.unity.meta b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity.meta
similarity index 74%
rename from ECSSamples/Assets/Tests/SceneSwitcher.unity.meta
rename to ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity.meta
index 254306cea..359b08904 100644
--- a/ECSSamples/Assets/Tests/SceneSwitcher.unity.meta
+++ b/ECSSamples/Assets/Advanced/BlobAssetSimple/SimpleBlobAsset.unity.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3810f2b08cf9c404faaa029c7dfaf39e
+guid: cffc97d7cccee4d00b452d267cc94e78
DefaultImporter:
externalObjects: {}
userData:
diff --git a/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSchool.cs b/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSchool.cs
index 066a851b9..4902fc165 100644
--- a/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSchool.cs
+++ b/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSchool.cs
@@ -16,7 +16,7 @@ public struct BoidSchool : IComponentData
public int Count;
}
- public class BoidSchoolSpawnSystem : SystemBase
+ public partial class BoidSchoolSpawnSystem : SystemBase
{
[BurstCompile]
struct SetBoidLocalToWorld : IJobParallelFor
diff --git a/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSystem.cs b/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSystem.cs
index a16ecb981..2ca116bac 100644
--- a/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSystem.cs
+++ b/ECSSamples/Assets/Advanced/Boids/Scripts/BoidSystem.cs
@@ -19,7 +19,7 @@ namespace Samples.Boids
{
[UpdateInGroup(typeof(SimulationSystemGroup))]
[UpdateBefore(typeof(TransformSystemGroup))]
- public class BoidSystem : SystemBase
+ public partial class BoidSystem : SystemBase
{
EntityQuery m_BoidQuery;
EntityQuery m_TargetQuery;
diff --git a/ECSSamples/Assets/Advanced/Boids/Scripts/SampledAnimationClipPlaybackSystem.cs b/ECSSamples/Assets/Advanced/Boids/Scripts/SampledAnimationClipPlaybackSystem.cs
index aa5eb2b03..8db921dd4 100644
--- a/ECSSamples/Assets/Advanced/Boids/Scripts/SampledAnimationClipPlaybackSystem.cs
+++ b/ECSSamples/Assets/Advanced/Boids/Scripts/SampledAnimationClipPlaybackSystem.cs
@@ -6,7 +6,7 @@
namespace Samples.Boids
{
- public class SampledAnimationClipPlaybackSystem : SystemBase
+ public partial class SampledAnimationClipPlaybackSystem : SystemBase
{
protected override void OnUpdate()
{
diff --git a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/FixedRateSpawnerSystem.cs b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/FixedRateSpawnerSystem.cs
index 4a49a0f70..d662716e5 100644
--- a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/FixedRateSpawnerSystem.cs
+++ b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/FixedRateSpawnerSystem.cs
@@ -13,7 +13,7 @@ public struct FixedRateSpawner : IComponentData
// This system is virtually identical to VariableRateSpawner; the key difference is that it updates in the
// FixedStepSimulationSystemGroup instead of the default SimulationSystemGroup.
[UpdateInGroup(typeof(FixedStepSimulationSystemGroup))]
- public class FixedRateSpawnerSystem : SystemBase
+ public partial class FixedRateSpawnerSystem : SystemBase
{
private EndFixedStepSimulationEntityCommandBufferSystem ecbSystem;
protected override void OnCreate()
diff --git a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/MoveProjectilesSystem.cs b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/MoveProjectilesSystem.cs
index a77e22938..d341a1cd4 100644
--- a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/MoveProjectilesSystem.cs
+++ b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/MoveProjectilesSystem.cs
@@ -9,7 +9,7 @@ public struct Projectile : IComponentData
public float SpawnTime;
public float3 SpawnPos;
}
- public class MoveProjectilesSystem : SystemBase
+ public partial class MoveProjectilesSystem : SystemBase
{
BeginSimulationEntityCommandBufferSystem m_beginSimEcbSystem;
protected override void OnCreate()
diff --git a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/VariableRateSpawnerSystem.cs b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/VariableRateSpawnerSystem.cs
index 85be979f5..a765736bb 100644
--- a/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/VariableRateSpawnerSystem.cs
+++ b/ECSSamples/Assets/Advanced/FixedTimestepSystemUpdate/VariableRateSpawnerSystem.cs
@@ -10,7 +10,7 @@ public struct VariableRateSpawner : IComponentData
public float3 SpawnPos;
}
- public class VariableRateSpawnerSystem : SystemBase
+ public partial class VariableRateSpawnerSystem : SystemBase
{
private BeginSimulationEntityCommandBufferSystem ecbSystem;
protected override void OnCreate()
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridMoveForwardSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridMoveForwardSystem.cs
index 95067e066..f2e5da4ff 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridMoveForwardSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridMoveForwardSystem.cs
@@ -4,16 +4,16 @@
using Unity.Transforms;
[UpdateBefore(typeof(TransformSystemGroup))]
-public class CartesianGridMoveForwardSystem : JobComponentSystem
+public partial class CartesianGridMoveForwardSystem : SystemBase
{
- protected override JobHandle OnUpdate(JobHandle lastJobHandle)
+ protected override void OnUpdate()
{
// Clamp delta time so you can't overshoot.
var deltaTime = math.min(Time.DeltaTime, 0.05f);
// Move forward along direction in grid-space given speed.
// - This is the same for Plane or Cube and is the core of the movement code. Simply "move forward" along direction.
- lastJobHandle = Entities
+ Entities
.WithName("CartesianGridMoveForward")
.ForEach((ref Translation translation,
in CartesianGridDirection gridDirection,
@@ -37,8 +37,6 @@ protected override JobHandle OnUpdate(JobHandle lastJobHandle)
var dy = math.min(speed, 1.0f - pos.y);
translation.Value = new float3(pos.x + dx, pos.y + dy, pos.z + dz);
- }).Schedule(lastJobHandle);
-
- return lastJobHandle;
+ }).Schedule();
}
}
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeBounceOffWallsSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeBounceOffWallsSystem.cs
index 71a6eb15d..be64244dd 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeBounceOffWallsSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeBounceOffWallsSystem.cs
@@ -4,7 +4,7 @@
using Unity.Transforms;
[UpdateInGroup(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnCubeBounceOffWallsSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnCubeBounceOffWallsSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeFollowTargetSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeFollowTargetSystem.cs
index 51025459f..aef160bc8 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeFollowTargetSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeFollowTargetSystem.cs
@@ -5,7 +5,7 @@
using Unity.Transforms;
[UpdateInGroup(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnPCubeFollowTargetSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnPCubeFollowTargetSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
EntityQuery m_TargetQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeGeneratorSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeGeneratorSystem.cs
index 97a0e83dd..fda06c2d6 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeGeneratorSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeGeneratorSystem.cs
@@ -5,11 +5,11 @@
[ConverterVersion("macton", 5)]
[WorldSystemFilter(WorldSystemFilterFlags.Default | WorldSystemFilterFlags.EntitySceneOptimizations)]
-public unsafe class CartesianGridOnCubeSystemGeneratorSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnCubeSystemGeneratorSystem : SystemBase
{
- protected override JobHandle OnUpdate(JobHandle inputDeps)
+ protected override void OnUpdate()
{
- inputDeps.Complete();
+ Dependency.Complete();
Entities.WithStructuralChanges().ForEach((Entity entity, ref CartesianGridOnCubeGenerator cartesianGridOnCubeGenerator) =>
{
ref var floorPrefab = ref cartesianGridOnCubeGenerator.Blob.Value.FloorPrefab;
@@ -88,7 +88,5 @@ protected override JobHandle OnUpdate(JobHandle inputDeps)
EntityManager.RemoveComponent(entity);
}).Run();
-
- return new JobHandle();
}
}
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSnapToFaceSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSnapToFaceSystem.cs
index f39ceddb7..f7c41b97f 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSnapToFaceSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSnapToFaceSystem.cs
@@ -4,7 +4,7 @@
using Unity.Transforms;
[UpdateBefore(typeof(CartesianGridMoveForwardSystem))]
-public unsafe class CartesianGridOnCubeSnapToFaceSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnCubeSnapToFaceSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSoloSpawnerSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSoloSpawnerSystem.cs
index ae5fdf925..ac1740382 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSoloSpawnerSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeSoloSpawnerSystem.cs
@@ -6,7 +6,7 @@
///
/// Spawn one prefab entity at a time at a random position on grid at the given frequency.
///
-public class CartesianGridOnCubeSoloSpawnerSystem : JobComponentSystem
+public partial class CartesianGridOnCubeSoloSpawnerSystem : JobComponentSystem
{
BeginInitializationEntityCommandBufferSystem m_EntityCommandBufferSystem;
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTargetSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTargetSystem.cs
index 6f452b1c4..c4ca23ddc 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTargetSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTargetSystem.cs
@@ -3,7 +3,7 @@
using Unity.Mathematics;
[UpdateBefore(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnCubeTargetSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnCubeTargetSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTransformSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTransformSystem.cs
index 4383f4a92..3015284f5 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTransformSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnCubeTransformSystem.cs
@@ -4,7 +4,7 @@
using Unity.Transforms;
[UpdateAfter(typeof(CartesianGridMoveForwardSystem))]
-public unsafe class CartesianGridOnCubeTransformSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnCubeTransformSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneBounceOffWallsSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneBounceOffWallsSystem.cs
index 8fae3c0fb..b88543e37 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneBounceOffWallsSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneBounceOffWallsSystem.cs
@@ -4,7 +4,7 @@
using Unity.Transforms;
[UpdateInGroup(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnPlaneBounceOffWallsSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnPlaneBounceOffWallsSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneFollowTargetSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneFollowTargetSystem.cs
index 52faa3ea0..f615acf21 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneFollowTargetSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneFollowTargetSystem.cs
@@ -5,7 +5,7 @@
using Unity.Transforms;
[UpdateInGroup(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnPlaneFollowTargetSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnPlaneFollowTargetSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
EntityQuery m_TargetQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneGeneratorSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneGeneratorSystem.cs
index 01255e700..ad1904a1a 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneGeneratorSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneGeneratorSystem.cs
@@ -5,11 +5,11 @@
[ConverterVersion("macton", 4)]
[WorldSystemFilter(WorldSystemFilterFlags.Default | WorldSystemFilterFlags.EntitySceneOptimizations)]
-public unsafe class CartesianGridOnPlaneSystemGeneratorSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnPlaneSystemGeneratorSystem : SystemBase
{
- protected override JobHandle OnUpdate(JobHandle inputDeps)
+ protected override void OnUpdate()
{
- inputDeps.Complete();
+ Dependency.Complete();
Entities.WithStructuralChanges().ForEach((Entity entity, ref CartesianGridOnPlaneGenerator cartesianGridOnPlaneGenerator) =>
{
ref var floorPrefab = ref cartesianGridOnPlaneGenerator.Blob.Value.FloorPrefab;
@@ -78,7 +78,5 @@ protected override JobHandle OnUpdate(JobHandle inputDeps)
EntityManager.RemoveComponent(entity);
}).Run();
-
- return new JobHandle();
}
}
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneSoloSpawnerSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneSoloSpawnerSystem.cs
index 0e3932af1..049fffbd8 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneSoloSpawnerSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneSoloSpawnerSystem.cs
@@ -6,7 +6,7 @@
///
/// Spawn one prefab entity at a time at a random position on grid at the given frequency.
///
-public class CartesianGridOnPlaneSoloSpawnerSystem : JobComponentSystem
+public partial class CartesianGridOnPlaneSoloSpawnerSystem : JobComponentSystem
{
BeginInitializationEntityCommandBufferSystem m_EntityCommandBufferSystem;
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneTargetSystem.cs b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneTargetSystem.cs
index 6bf754a83..f21a617d6 100644
--- a/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneTargetSystem.cs
+++ b/ECSSamples/Assets/Advanced/GridPath/Scripts/CartesianGridOnPlaneTargetSystem.cs
@@ -2,7 +2,7 @@
using Unity.Jobs;
[UpdateBefore(typeof(CartesianGridChangeDirectionSystemGroup))]
-public unsafe class CartesianGridOnPlaneTargetSystem : JobComponentSystem
+public unsafe partial class CartesianGridOnPlaneTargetSystem : JobComponentSystem
{
EntityQuery m_GridQuery;
diff --git a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Fast.buildconfiguration b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Fast.buildconfiguration
index 4f3361965..d05aad43b 100644
--- a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Fast.buildconfiguration
+++ b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Fast.buildconfiguration
@@ -1,7 +1,10 @@
{
"Dependencies": [],
- "Components": [{
- "$type": "RotationSpeedSetting, SubsceneWithBuildConfigurations",
- "RotationSpeed": 160
- }]
+ "Components": [
+ {
+ "$type": "RotationSpeedSetting, SubsceneWithBuildConfigurations",
+ "RotationSpeed": 160,
+ "Offset": 0
+ }
+ ]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/RotationSpeedFromBuildSettings_IJobChunk.cs b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/RotationSpeedFromBuildSettings_IJobChunk.cs
index c4542d6a3..5cb187678 100644
--- a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/RotationSpeedFromBuildSettings_IJobChunk.cs
+++ b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/RotationSpeedFromBuildSettings_IJobChunk.cs
@@ -13,7 +13,7 @@ public void Convert(Entity entity, EntityManager dstManager, GameObjectConversio
var rotationSpeedSetting = conversionSystem.GetBuildConfigurationComponent();
// Change rotation speed
- var data = new RotationSpeed_IJobChunk { RadiansPerSecond = math.radians(rotationSpeedSetting.RotationSpeed) };
+ var data = new RotationSpeed_IJobEntityBatch { RadiansPerSecond = math.radians(rotationSpeedSetting.RotationSpeed) };
dstManager.AddComponentData(entity, data);
// Offset the translation of the generated object
diff --git a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Slow.buildconfiguration b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Slow.buildconfiguration
index afb72af66..7621ddc3f 100644
--- a/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Slow.buildconfiguration
+++ b/ECSSamples/Assets/Advanced/SubsceneWithBuildConfigurations/Slow.buildconfiguration
@@ -1,8 +1,10 @@
{
"Dependencies": [],
- "Components": [{
- "$type": "RotationSpeedSetting, SubsceneWithBuildConfigurations",
- "RotationSpeed": 50,
- "Offset": 2
- }]
+ "Components": [
+ {
+ "$type": "RotationSpeedSetting, SubsceneWithBuildConfigurations",
+ "RotationSpeed": 50,
+ "Offset": 2
+ }
+ ]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/BuildConfigurations/Android-Build.buildconfiguration b/ECSSamples/Assets/BuildConfigurations/Android-Build.buildconfiguration
index 5e80cdb25..bdaee5c9b 100644
--- a/ECSSamples/Assets/BuildConfigurations/Android-Build.buildconfiguration
+++ b/ECSSamples/Assets/BuildConfigurations/Android-Build.buildconfiguration
@@ -6,10 +6,8 @@
{
"$type": "Unity.Build.Classic.ClassicBuildProfile, Unity.Build.Classic",
"$version": 1,
- "Platform": "Android",
- "Configuration": 2,
- "ExcludedAssemblies": [
- ]
+ "Platform": "android",
+ "Configuration": 2
}
]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/BuildConfigurations/BaseBuildConfiguration.buildconfiguration b/ECSSamples/Assets/BuildConfigurations/BaseBuildConfiguration.buildconfiguration
index e40e40102..6d0fdc9e5 100644
--- a/ECSSamples/Assets/BuildConfigurations/BaseBuildConfiguration.buildconfiguration
+++ b/ECSSamples/Assets/BuildConfigurations/BaseBuildConfiguration.buildconfiguration
@@ -1,19 +1,17 @@
{
- "Dependencies": [
- ],
+ "Dependencies": [],
"Components": [
{
- "$type": "Unity.Build.Common.GeneralSettings, Unity.Build.Common",
+ "$type": "Unity.Build.Common.GeneralSettings, Unity.Build",
"ProductName": "Samples",
- "CompanyName": "Unity Technologies"
+ "CompanyName": "Unity Technologies",
+ "Version": "1.0.0"
},
{
- "$type": "Unity.Build.Common.SceneList, Unity.Build.Common",
+ "$type": "Unity.Build.Common.SceneList, Unity.Build",
+ "$version": 1,
"BuildCurrentScene": true,
- "SceneInfos": [
- ],
- "Scenes": [
- ]
+ "SceneInfos": []
},
{
"$type": "Unity.Build.Classic.ClassicScriptingSettings, Unity.Build.Classic",
diff --git a/ECSSamples/Assets/BuildConfigurations/Linux-Build.buildconfiguration b/ECSSamples/Assets/BuildConfigurations/Linux-Build.buildconfiguration
index 49d4ccf88..c5c33423a 100644
--- a/ECSSamples/Assets/BuildConfigurations/Linux-Build.buildconfiguration
+++ b/ECSSamples/Assets/BuildConfigurations/Linux-Build.buildconfiguration
@@ -6,10 +6,8 @@
{
"$type": "Unity.Build.Classic.ClassicBuildProfile, Unity.Build.Classic",
"$version": 1,
- "Platform": "Linux",
- "Configuration": 2,
- "ExcludedAssemblies": [
- ]
+ "Platform": "linux",
+ "Configuration": 2
}
]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/BuildConfigurations/Win64-Build.buildconfiguration b/ECSSamples/Assets/BuildConfigurations/Win64-Build.buildconfiguration
index c0c02c223..f2c42c4ee 100644
--- a/ECSSamples/Assets/BuildConfigurations/Win64-Build.buildconfiguration
+++ b/ECSSamples/Assets/BuildConfigurations/Win64-Build.buildconfiguration
@@ -6,10 +6,8 @@
{
"$type": "Unity.Build.Classic.ClassicBuildProfile, Unity.Build.Classic",
"$version": 1,
- "Platform": "Windows",
- "Configuration": 2,
- "ExcludedAssemblies": [
- ]
+ "Platform": "win",
+ "Configuration": 2
}
]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/BuildConfigurations/macOS-Build.buildconfiguration b/ECSSamples/Assets/BuildConfigurations/macOS-Build.buildconfiguration
index 67984ce7d..45d4151b0 100644
--- a/ECSSamples/Assets/BuildConfigurations/macOS-Build.buildconfiguration
+++ b/ECSSamples/Assets/BuildConfigurations/macOS-Build.buildconfiguration
@@ -6,10 +6,8 @@
{
"$type": "Unity.Build.Classic.ClassicBuildProfile, Unity.Build.Classic",
"$version": 1,
- "Platform": "OSX",
- "Configuration": 2,
- "ExcludedAssemblies": [
- ]
+ "Platform": "macos",
+ "Configuration": 2
}
]
}
\ No newline at end of file
diff --git a/ECSSamples/Assets/Common Assets/Scripts/GatherInputSystem.cs b/ECSSamples/Assets/Common Assets/Scripts/GatherInputSystem.cs
index 6bb322fe6..f5be55a83 100644
--- a/ECSSamples/Assets/Common Assets/Scripts/GatherInputSystem.cs
+++ b/ECSSamples/Assets/Common Assets/Scripts/GatherInputSystem.cs
@@ -8,7 +8,7 @@ struct UserInputData : IComponentData
public float2 Move;
}
-public class GatherInputSystem : SystemBase
+public partial class GatherInputSystem : SystemBase
{
protected override void OnUpdate()
{
diff --git a/ECSSamples/Assets/HelloCube/1. ForEach/RotationSpeedSystem_ForEach.cs b/ECSSamples/Assets/HelloCube/1. ForEach/RotationSpeedSystem_ForEach.cs
index a603f5f25..086df006b 100644
--- a/ECSSamples/Assets/HelloCube/1. ForEach/RotationSpeedSystem_ForEach.cs
+++ b/ECSSamples/Assets/HelloCube/1. ForEach/RotationSpeedSystem_ForEach.cs
@@ -6,7 +6,7 @@
// This system updates all entities in the scene with both a RotationSpeed_ForEach and Rotation component.
// ReSharper disable once InconsistentNaming
-public class RotationSpeedSystem_ForEach : SystemBase
+public partial class RotationSpeedSystem_ForEach : SystemBase
{
// OnUpdate runs on the main thread.
protected override void OnUpdate()
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/README.md b/ECSSamples/Assets/HelloCube/2. IJobChunk/README.md
deleted file mode 100644
index 128bef4e2..000000000
--- a/ECSSamples/Assets/HelloCube/2. IJobChunk/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# HelloCube: IJobChunk
-
-This sample demonstrates a Job-based ECS System that rotates a pair of cubes. Instead of iterating by Entity, this example iterates by chunk. (A Chunk is a block of memory containing Entities that all have the same Archetype — that is, they all have the same set of Components.)
-
-## What does it show?
-
-This sample shows another way to iterate through entities by accessing chunks directly. This can offer more flexibility than Entities.ForEach in certain situations.
-
-As in the previous examples, the **RotationSpeedSystem_IJobChunk** *updates* the object's rotation using the *data* stored in the **RotationSpeed_IJobChunk** Component.
-
-This sample also demonstrates writing a custom authoring component. This can provide more flexibility that generating one with the **GenerateAuthoringComponent** attribute.
-
-## Systems and IJobChunk
-
-In this example, the Job in RotationSpeedSystem_IJobChunk is now implemented using IJobChunk.
-
-In a Job implemented with IJobChunk, the ECS framework passes an ArchetypeChunk instance to your Execute() function for each chunk of memory containing the required Components. You can then iterate through the arrays of Components stored in that chunk.
-
-Notice that you have to do a little more manual setup for an IJobChunkJob. This includes constructing an EntityQuery that identifies which Component types the System operates upon. You must also pass ArchetypeChunkComponentType objects to the Job, which you then use inside the Job to get the NativeArray instances required to access the Component arrays themselves.
-
-Systems using IJobChunk can handle more complex situations than those supported by Entities.ForEach, while maintaining maximum efficiency.
-
-## Converting from GameObject to Entity
-
-The **ConvertToEntity** MonoBehaviour converts a GameObject and its children into Entities and ECS Components upon Awake. Currently the set of built-in Unity MonoBehaviours that ConvertToEntity can convert includes the Transform and MeshRenderer. You can use the **Entity Debugger** (menu: **Window** > **Analysis** > **Entity Debugger**) to inspect the ECS Entities and Components created by the conversion.
-
-You can implement the IConvertGameObjectEntity interface on your own MonoBehaviours to supply a conversion function that ConvertToEntity will use to convert the data stored in the MonoBehaviour to an ECS Component.
-
-In this example, the **RotationSpeedAuthoring_IJobChunk** MonoBehaviour uses IConvertGameObjectEntity to add the RotationSpeed_IJobChunk Component to the Entity on conversion.
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch.meta
diff --git a/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/IJobEntityBatch.unity b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/IJobEntityBatch.unity
new file mode 100644
index 000000000..d0a9a1cc5
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/IJobEntityBatch.unity
@@ -0,0 +1,552 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 170076734}
+ m_IndirectSpecularColor: {r: 0.18028334, g: 0.22571336, b: 0.3069219, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 10
+ m_AtlasSize: 512
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 256
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 1464774458}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 2
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &170076733
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 170076735}
+ - component: {fileID: 170076734}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &170076734
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 170076733}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.802082
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 1
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &170076735
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 170076733}
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &534669902
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 534669905}
+ - component: {fileID: 534669904}
+ - component: {fileID: 534669903}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &534669903
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ m_Enabled: 1
+--- !u!20 &534669904
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 1
+ m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_FocalLength: 50
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &534669905
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 534669902}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1339553377
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1339553382}
+ - component: {fileID: 1339553381}
+ - component: {fileID: 1339553380}
+ - component: {fileID: 1339553379}
+ - component: {fileID: 1339553378}
+ m_Layer: 0
+ m_Name: RotatingCube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1339553378
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1339553377}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ea7d7495833204790ba1d3a8755397f8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ConversionMode: 0
+--- !u!114 &1339553379
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1339553377}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f88d67b24a9ae4266ae85cb54d801ea9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ DegreesPerSecond: 360
+--- !u!23 &1339553380
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1339553377}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 32bf30f90a6a049be8fb2aca13ddebb6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1339553381
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1339553377}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1339553382
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1339553377}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1355816238}
+ m_Father: {fileID: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1355816237
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1355816238}
+ - component: {fileID: 1355816240}
+ - component: {fileID: 1355816239}
+ m_Layer: 0
+ m_Name: ChildCube
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1355816238
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1355816237}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.54, z: 0}
+ m_LocalScale: {x: 0.52272, y: 0.52272, z: 0.52272}
+ m_Children: []
+ m_Father: {fileID: 1339553382}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1355816239
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1355816237}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 32bf30f90a6a049be8fb2aca13ddebb6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1355816240
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1355816237}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!850595691 &1464774458
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Settings.lighting
+ serializedVersion: 2
+ m_GIWorkflowMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 512
+ m_BakeResolution: 10
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 256
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRRussianRouletteStartBounce: 2
+ m_PVREnvironmentMIS: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/IJobChunk.unity.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/IJobEntityBatch.unity.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/IJobChunk.unity.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/IJobEntityBatch.unity.meta
diff --git a/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/README.md b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/README.md
new file mode 100644
index 000000000..b6d8bc795
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/README.md
@@ -0,0 +1,29 @@
+# HelloCube: IJobEntityBatch
+
+This sample demonstrates a Job-based ECS System that rotates a pair of cubes. Instead of iterating by Entity, this example iterates by chunk. (A Chunk is a block of memory containing Entities that all have the same Archetype — that is, they all have the same set of Components.)
+
+## What does it show?
+
+This sample shows another way to iterate through entities by accessing chunks directly. This can offer more flexibility than Entities.ForEach in certain situations.
+
+As in the previous examples, the **RotationSpeedSystem_IJobEntityBatch** *updates* the object's rotation using the *data* stored in the **RotationSpeed_IJobEntityBatch** Component.
+
+This sample also demonstrates writing a custom authoring component. This can provide more flexibility that generating one with the **GenerateAuthoringComponent** attribute.
+
+## Systems and IJobEntityBatch
+
+In this example, the Job in RotationSpeedSystem_IJobEntityBatch is now implemented using IJobEntityBatch.
+
+In a Job implemented with IJobEntityBatch, the ECS framework passes an ArchetypeChunk instance to your Execute() function for each chunk of memory containing the required Components. You can then iterate through the arrays of Components stored in that chunk.
+
+Notice that you have to do a little more manual setup for an IJobEntityBatch Job. This includes constructing an EntityQuery that identifies which Component types the System operates upon. You must also pass ArchetypeChunkComponentType objects to the Job, which you then use inside the Job to get the NativeArray instances required to access the Component arrays themselves.
+
+Systems using IJobEntityBatch can handle more complex situations than those supported by Entities.ForEach, while maintaining maximum efficiency. IJobEntityBatch provides explicit control of which chunks, entities and components to process. You can also process entities in batches smaller than a full chunk, which can be more efficient in some cases, such as when you have a computationally expensive algorithm and a small number of entities.
+
+## Converting from GameObject to Entity
+
+The **ConvertToEntity** MonoBehaviour converts a GameObject and its children into Entities and ECS Components upon Awake. Currently the set of built-in Unity MonoBehaviours that ConvertToEntity can convert includes the Transform and MeshRenderer. You can use the **Entity Debugger** (menu: **Window** > **Analysis** > **Entity Debugger**) to inspect the ECS Entities and Components created by the conversion.
+
+You can implement the IConvertGameObjectEntity interface on your own MonoBehaviours to supply a conversion function that ConvertToEntity will use to convert the data stored in the MonoBehaviour to an ECS Component.
+
+In this example, the **RotationSpeedAuthoring_IJobEntityBatch** MonoBehaviour uses IConvertGameObjectEntity to add the RotationSpeed_IJobEntityBatch Component to the Entity on conversion.
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/README.md.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/README.md.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/README.md.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/README.md.meta
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedAuthoring_IJobChunk.cs b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedAuthoring_IJobEntityBatch.cs
similarity index 69%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedAuthoring_IJobChunk.cs
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedAuthoring_IJobEntityBatch.cs
index 1609879bb..f7a522652 100644
--- a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedAuthoring_IJobChunk.cs
+++ b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedAuthoring_IJobEntityBatch.cs
@@ -3,9 +3,9 @@
using UnityEngine;
// ReSharper disable once InconsistentNaming
-[AddComponentMenu("DOTS Samples/IJobChunk/Rotation Speed")]
+[AddComponentMenu("DOTS Samples/IJobEntityBatch/Rotation Speed")]
[ConverterVersion("joe", 1)]
-public class RotationSpeedAuthoring_IJobChunk : MonoBehaviour, IConvertGameObjectToEntity
+public class RotationSpeedAuthoring_IJobEntityBatch : MonoBehaviour, IConvertGameObjectToEntity
{
public float DegreesPerSecond = 360.0F;
@@ -14,7 +14,7 @@ public class RotationSpeedAuthoring_IJobChunk : MonoBehaviour, IConvertGameObjec
// To a good runtime representation (Represented in radians)
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
{
- var data = new RotationSpeed_IJobChunk { RadiansPerSecond = math.radians(DegreesPerSecond) };
+ var data = new RotationSpeed_IJobEntityBatch { RadiansPerSecond = math.radians(DegreesPerSecond) };
dstManager.AddComponentData(entity, data);
}
}
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedAuthoring_IJobChunk.cs.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedAuthoring_IJobEntityBatch.cs.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedAuthoring_IJobChunk.cs.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedAuthoring_IJobEntityBatch.cs.meta
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedSystem_IJobChunk.cs b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedSystem_IJobEntityBatch.cs
similarity index 72%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedSystem_IJobChunk.cs
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedSystem_IJobEntityBatch.cs
index c6259413f..03ae601e4 100644
--- a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedSystem_IJobChunk.cs
+++ b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedSystem_IJobEntityBatch.cs
@@ -8,29 +8,29 @@
// This system updates all entities in the scene with both a RotationSpeed_IJobChunk and Rotation component.
// ReSharper disable once InconsistentNaming
-public class RotationSpeedSystem_IJobChunk : SystemBase
+public partial class RotationSpeedSystem_IJobChunk : SystemBase
{
- EntityQuery m_Group;
+ EntityQuery m_Query;
protected override void OnCreate()
{
// Cached access to a set of ComponentData based on a specific query
- m_Group = GetEntityQuery(typeof(Rotation), ComponentType.ReadOnly());
+ m_Query = GetEntityQuery(typeof(Rotation), ComponentType.ReadOnly());
}
// Use the [BurstCompile] attribute to compile a job with Burst. You may see significant speed ups, so try it!
[BurstCompile]
- struct RotationSpeedJob : IJobChunk
+ struct RotationSpeedJob : IJobEntityBatch
{
public float DeltaTime;
public ComponentTypeHandle RotationTypeHandle;
- [ReadOnly] public ComponentTypeHandle RotationSpeedTypeHandle;
+ [ReadOnly] public ComponentTypeHandle RotationSpeedTypeHandle;
- public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
+ public void Execute(ArchetypeChunk batchInChunk, int batchIndex)
{
- var chunkRotations = chunk.GetNativeArray(RotationTypeHandle);
- var chunkRotationSpeeds = chunk.GetNativeArray(RotationSpeedTypeHandle);
- for (var i = 0; i < chunk.Count; i++)
+ var chunkRotations = batchInChunk.GetNativeArray(RotationTypeHandle);
+ var chunkRotationSpeeds = batchInChunk.GetNativeArray(RotationSpeedTypeHandle);
+ for (var i = 0; i < batchInChunk.Count; i++)
{
var rotation = chunkRotations[i];
var rotationSpeed = chunkRotationSpeeds[i];
@@ -52,7 +52,7 @@ protected override void OnUpdate()
// - Read-Write access to Rotation
// - Read-Only access to RotationSpeed_IJobChunk
var rotationType = GetComponentTypeHandle();
- var rotationSpeedType = GetComponentTypeHandle(true);
+ var rotationSpeedType = GetComponentTypeHandle(true);
var job = new RotationSpeedJob()
{
@@ -61,6 +61,6 @@ protected override void OnUpdate()
DeltaTime = Time.DeltaTime
};
- Dependency = job.Schedule(m_Group, Dependency);
+ Dependency = job.ScheduleParallel(m_Query, 1, Dependency);
}
}
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedSystem_IJobChunk.cs.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedSystem_IJobEntityBatch.cs.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeedSystem_IJobChunk.cs.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeedSystem_IJobEntityBatch.cs.meta
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeed_IJobChunk.cs b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeed_IJobEntityBatch.cs
similarity index 69%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeed_IJobChunk.cs
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeed_IJobEntityBatch.cs
index a27d0684e..f6aa7d313 100644
--- a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeed_IJobChunk.cs
+++ b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeed_IJobEntityBatch.cs
@@ -3,7 +3,7 @@
// ReSharper disable once InconsistentNaming
[Serializable]
-public struct RotationSpeed_IJobChunk : IComponentData
+public struct RotationSpeed_IJobEntityBatch : IComponentData
{
public float RadiansPerSecond;
}
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeed_IJobChunk.cs.meta b/ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeed_IJobEntityBatch.cs.meta
similarity index 100%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/RotationSpeed_IJobChunk.cs.meta
rename to ECSSamples/Assets/HelloCube/2. IJobEntityBatch/RotationSpeed_IJobEntityBatch.cs.meta
diff --git a/ECSSamples/Assets/HelloCube/5. SpawnFromEntity/SpawnerSystem_FromEntity.cs b/ECSSamples/Assets/HelloCube/5. SpawnFromEntity/SpawnerSystem_FromEntity.cs
index d8ddcc0db..f88b8ba7d 100644
--- a/ECSSamples/Assets/HelloCube/5. SpawnFromEntity/SpawnerSystem_FromEntity.cs
+++ b/ECSSamples/Assets/HelloCube/5. SpawnFromEntity/SpawnerSystem_FromEntity.cs
@@ -11,7 +11,7 @@
// ReSharper disable once InconsistentNaming
[UpdateInGroup(typeof(SimulationSystemGroup))]
-public class SpawnerSystem_FromEntity : SystemBase
+public partial class SpawnerSystem_FromEntity : SystemBase
{
// BeginInitializationEntityCommandBufferSystem is used to create a command buffer which will then be played back
// when that barrier system executes.
diff --git a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/LifeTimeSystem.cs b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/LifeTimeSystem.cs
index 12f1a6f77..ad8fc8360 100644
--- a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/LifeTimeSystem.cs
+++ b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/LifeTimeSystem.cs
@@ -9,7 +9,7 @@ public struct LifeTime : IComponentData
}
// This system updates all entities in the scene with both a RotationSpeed_SpawnAndRemove and Rotation component.
-public class LifeTimeSystem : SystemBase
+public partial class LifeTimeSystem : SystemBase
{
EntityCommandBufferSystem m_Barrier;
diff --git a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/RotationSpeedSystem_SpawnAndRemove.cs b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/RotationSpeedSystem_SpawnAndRemove.cs
index 78cbe4573..e777e1d6d 100644
--- a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/RotationSpeedSystem_SpawnAndRemove.cs
+++ b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/RotationSpeedSystem_SpawnAndRemove.cs
@@ -8,7 +8,7 @@
// This system updates all entities in the scene with both a RotationSpeed_SpawnAndRemove and Rotation component.
// ReSharper disable once InconsistentNaming
-public class RotationSpeedSystem_SpawnAndRemove : SystemBase
+public partial class RotationSpeedSystem_SpawnAndRemove : SystemBase
{
// OnUpdate runs on the main thread.
protected override void OnUpdate()
diff --git a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/SpawnerSystem_SpawnAndRemove.cs b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/SpawnerSystem_SpawnAndRemove.cs
index 3cb6a4585..415bccf8c 100644
--- a/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/SpawnerSystem_SpawnAndRemove.cs
+++ b/ECSSamples/Assets/HelloCube/6. SpawnAndRemove/SpawnerSystem_SpawnAndRemove.cs
@@ -12,7 +12,7 @@
// ReSharper disable once InconsistentNaming
[UpdateInGroup(typeof(SimulationSystemGroup))]
-public class SpawnerSystem_SpawnAndRemove : SystemBase
+public partial class SpawnerSystem_SpawnAndRemove : SystemBase
{
// BeginInitializationEntityCommandBufferSystem is used to create a command buffer which will then be played back
// when that barrier system executes.
diff --git a/ECSSamples/Assets/Tests.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased.meta
similarity index 77%
rename from ECSSamples/Assets/Tests.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased.meta
index caa0dfe49..5f4542be3 100644
--- a/ECSSamples/Assets/Tests.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 2ec5ed68286d25f4ab88286805fc77bd
+guid: 15cf2e6f5ebe0b944a5d557ceec5bfef
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/ECSSamples/Assets/HelloCube/2. IJobChunk/IJobChunk.unity b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity
similarity index 94%
rename from ECSSamples/Assets/HelloCube/2. IJobChunk/IJobChunk.unity
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity
index 1c796e4cf..513b3f2e7 100644
--- a/ECSSamples/Assets/HelloCube/2. IJobChunk/IJobChunk.unity
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity
@@ -38,12 +38,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 170076734}
- m_IndirectSpecularColor: {r: 0.18028374, g: 0.22571413, b: 0.3069228, a: 1}
+ m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
- serializedVersion: 11
+ serializedVersion: 12
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
@@ -94,10 +94,12 @@ LightmapSettings:
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
+ m_LightingSettings: {fileID: 4890085278179872738, guid: 4ce64b32546a16842bfacc19b72cb766,
+ type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -117,6 +119,8 @@ NavMeshSettings:
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
@@ -145,8 +149,9 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 170076733}
m_Enabled: 1
- serializedVersion: 9
+ serializedVersion: 10
m_Type: 1
+ m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
@@ -195,6 +200,7 @@ Light:
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &170076735
@@ -305,8 +311,8 @@ GameObject:
- component: {fileID: 1339553382}
- component: {fileID: 1339553381}
- component: {fileID: 1339553380}
- - component: {fileID: 1339553379}
- component: {fileID: 1339553378}
+ - component: {fileID: 1339553379}
m_Layer: 0
m_Name: RotatingCube
m_TagString: Untagged
@@ -336,10 +342,10 @@ MonoBehaviour:
m_GameObject: {fileID: 1339553377}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: f88d67b24a9ae4266ae85cb54d801ea9, type: 3}
+ m_Script: {fileID: 11500000, guid: 7ded93314bf6c294d98110e92ece2fc3, type: 3}
m_Name:
m_EditorClassIdentifier:
- DegreesPerSecond: 180
+ DegreesPerSecond: 120
--- !u!23 &1339553380
MeshRenderer:
m_ObjectHideFlags: 0
@@ -354,6 +360,8 @@ MeshRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -365,6 +373,7 @@ MeshRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
@@ -377,6 +386,7 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1339553381
MeshFilter:
m_ObjectHideFlags: 0
@@ -446,6 +456,8 @@ MeshRenderer:
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
@@ -457,6 +469,7 @@ MeshRenderer:
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
@@ -469,6 +482,7 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1355816240
MeshFilter:
m_ObjectHideFlags: 0
diff --git a/ECSSamples/Assets/Tests/Editmode.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity.meta
similarity index 67%
rename from ECSSamples/Assets/Tests/Editmode.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity.meta
index 629b43c25..931b7ad14 100644
--- a/ECSSamples/Assets/Tests/Editmode.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBased.unity.meta
@@ -1,6 +1,5 @@
fileFormatVersion: 2
-guid: 2a4f235c948594b07a0ff6bed55aa32c
-folderAsset: yes
+guid: bc61c40d3a9ccec40aae41bed5d319b7
DefaultImporter:
externalObjects: {}
userData:
diff --git a/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting
new file mode 100644
index 000000000..9479a750e
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!850595691 &4890085278179872738
+LightingSettings:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: IJobChunkStructBasedSettings
+ serializedVersion: 3
+ m_GIWorkflowMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_RealtimeEnvironmentLighting: 1
+ m_BounceScale: 1
+ m_AlbedoBoost: 1
+ m_IndirectOutputScale: 1
+ m_UsingShadowmask: 1
+ m_BakeBackend: 1
+ m_LightmapMaxSize: 512
+ m_BakeResolution: 10
+ m_Padding: 2
+ m_TextureCompression: 1
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAO: 0
+ m_MixedBakeMode: 2
+ m_LightmapsBakeMode: 1
+ m_FilterMode: 1
+ m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_RealtimeResolution: 2
+ m_ForceWhiteAlbedo: 0
+ m_ForceUpdates: 0
+ m_FinalGather: 0
+ m_FinalGatherRayCount: 256
+ m_FinalGatherFiltering: 1
+ m_PVRCulling: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 256
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_LightProbeSampleCountMultiplier: 4
+ m_PVRBounces: 2
+ m_PVRMinBounces: 2
+ m_PVREnvironmentMIS: 0
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
diff --git a/ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting.meta
similarity index 54%
rename from ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting.meta
index aaf326042..2df7a6c45 100644
--- a/ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/IJobChunkStructBasedSettings.lighting.meta
@@ -1,7 +1,8 @@
fileFormatVersion: 2
-guid: f9fcd5ba9adf05443aacc512b31d1568
-AssemblyDefinitionImporter:
+guid: 4ce64b32546a16842bfacc19b72cb766
+NativeFormatImporter:
externalObjects: {}
+ mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md
new file mode 100644
index 000000000..45dad95b2
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md
@@ -0,0 +1,16 @@
+# HelloCube: IJobChunkStructBased
+
+This sample demonstrates a Job-based ECS System that rotates a pair of cubes.
+Instead of iterating by Entity, this example iterates by chunk. (A Chunk is a
+block of memory containing Entities that all have the same Archetype — that is,
+they all have the same set of Components.)
+
+It is the same example as we have seen previously in "2. IJobChunk", however
+this time we are using `ISystemBase` which makes it possible to burst compile
+the main thread update function as well.
+
+## What does it show?
+
+Primarily it illustrates the differences between class and struct based system
+implementations.
+
diff --git a/ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md.meta
similarity index 61%
rename from ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md.meta
index 062e23dcb..3efe13a3d 100644
--- a/ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/README.md.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: c70b69ad4ddf565facb2bab2dc89cdf2
-DefaultImporter:
+guid: f0a8366b746ab5849a2a96aeb5fb9454
+TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
diff --git a/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs
new file mode 100644
index 000000000..d7ecc5e93
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs
@@ -0,0 +1,20 @@
+using Unity.Entities;
+using Unity.Mathematics;
+using UnityEngine;
+
+// ReSharper disable once InconsistentNaming
+[AddComponentMenu("DOTS Samples/IJobChunkStructBased/Rotation Speed")]
+[ConverterVersion("joe", 1)]
+public class RotationSpeedAuthoring_IJobChunkStructBased : MonoBehaviour, IConvertGameObjectToEntity
+{
+ public float DegreesPerSecond = 360.0F;
+
+ // The MonoBehaviour data is converted to ComponentData on the entity.
+ // We are specifically transforming from a good editor representation of the data (Represented in degrees)
+ // To a good runtime representation (Represented in radians)
+ public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
+ {
+ var data = new RotationSpeed_IJobChunkStructBased { RadiansPerSecond = math.radians(DegreesPerSecond) };
+ dstManager.AddComponentData(entity, data);
+ }
+}
diff --git a/ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs.meta
similarity index 83%
rename from ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs.meta
index 7d6b879a9..b315d1366 100644
--- a/ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedAuthoring_IJobChunkStructBased.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: a87b1bd1d178ce84bb7ac3b13feff05b
+guid: 7ded93314bf6c294d98110e92ece2fc3
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs
new file mode 100644
index 000000000..5c5f40ca3
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs
@@ -0,0 +1,76 @@
+using Unity.Burst;
+using Unity.Collections;
+using Unity.Entities;
+using Unity.Jobs;
+using Unity.Mathematics;
+using Unity.Profiling;
+using Unity.Transforms;
+
+// This system updates all entities in the scene with both a RotationSpeed_IJobChunkStructBased and Rotation component.
+
+// ReSharper disable once InconsistentNaming
+[BurstCompile]
+public struct RotationSpeedSystem_IJobChunkStructBased : ISystemBase
+{
+ EntityQuery m_Group;
+
+ public void OnCreate(ref SystemState state)
+ {
+ // Cached access to a set of ComponentData based on a specific query
+ m_Group = state.GetEntityQuery(typeof(Rotation), ComponentType.ReadOnly());
+ }
+
+ // Use the [BurstCompile] attribute to compile a job with Burst. You may see significant speed ups, so try it!
+ [BurstCompile]
+ struct RotationSpeedJob : IJobChunk
+ {
+ public float DeltaTime;
+ public ComponentTypeHandle RotationTypeHandle;
+ [ReadOnly] public ComponentTypeHandle RotationSpeedTypeHandle;
+
+ public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
+ {
+ var chunkRotations = chunk.GetNativeArray(RotationTypeHandle);
+ var chunkRotationSpeeds = chunk.GetNativeArray(RotationSpeedTypeHandle);
+ for (var i = 0; i < chunk.Count; i++)
+ {
+ var rotation = chunkRotations[i];
+ var rotationSpeed = chunkRotationSpeeds[i];
+
+ // Rotate something about its up vector at the speed given by RotationSpeed_IJobChunkStructBased.
+ chunkRotations[i] = new Rotation
+ {
+ Value = math.mul(math.normalize(rotation.Value),
+ quaternion.AxisAngle(math.up(), rotationSpeed.RadiansPerSecond * DeltaTime))
+ };
+ }
+ }
+ }
+
+ // OnUpdate runs on the main thread.
+ // Note that from 2020.2 the update function itself can be burst compiled when using struct systems.
+#if UNITY_2020_2_OR_NEWER
+ [BurstCompile]
+#endif
+ public void OnUpdate(ref SystemState state)
+ {
+ // Explicitly declare:
+ // - Read-Write access to Rotation
+ // - Read-Only access to RotationSpeed_IJobChunkStructBased
+ var rotationType = state.GetComponentTypeHandle();
+ var rotationSpeedType = state.GetComponentTypeHandle(true);
+
+ var job = new RotationSpeedJob()
+ {
+ RotationTypeHandle = rotationType,
+ RotationSpeedTypeHandle = rotationSpeedType,
+ DeltaTime = state.Time.DeltaTime
+ };
+
+ state.Dependency = job.ScheduleSingle(m_Group, state.Dependency);
+ }
+
+ public void OnDestroy(ref SystemState state)
+ {
+ }
+}
diff --git a/ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs.meta
similarity index 83%
rename from ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs.meta
index 62e1b56c9..cb214d3e4 100644
--- a/ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeedSystem_IJobChunkStructBased.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: d249c6a497b44cf4983817275aa55024
+guid: 044dbb89fedf27d42a123d54dd6138bb
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs
new file mode 100644
index 000000000..4e9fdf7f7
--- /dev/null
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs
@@ -0,0 +1,9 @@
+using System;
+using Unity.Entities;
+
+// ReSharper disable once InconsistentNaming
+[Serializable]
+public struct RotationSpeed_IJobChunkStructBased : IComponentData
+{
+ public float RadiansPerSecond;
+}
diff --git a/ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs.meta b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs.meta
similarity index 83%
rename from ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs.meta
rename to ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs.meta
index 6a59b9913..87d34404c 100644
--- a/ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs.meta
+++ b/ECSSamples/Assets/HelloCube/7. IJobChunkStructBased/RotationSpeed_IJobChunkStructBased.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 70979b1d798be6d439d83bc0047be44d
+guid: 88973c2bf5624274884ea195937f81f2
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/ECSSamples/Assets/HelloCube/HelloCube.asmdef b/ECSSamples/Assets/HelloCube/HelloCube.asmdef
index 54d1c9e23..92d928723 100644
--- a/ECSSamples/Assets/HelloCube/HelloCube.asmdef
+++ b/ECSSamples/Assets/HelloCube/HelloCube.asmdef
@@ -13,7 +13,7 @@
"optionalUnityReferences": [],
"includePlatforms": [],
"excludePlatforms": [],
- "allowUnsafeCode": false,
+ "allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
diff --git a/ECSSamples/Assets/SceneDependencyCache.meta b/ECSSamples/Assets/SceneDependencyCache.meta
index c6f90099a..a7ba00c8f 100644
--- a/ECSSamples/Assets/SceneDependencyCache.meta
+++ b/ECSSamples/Assets/SceneDependencyCache.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: e590d194bdcd3964aa07ff8b50e3c543
+guid: ada4fae402eeacb4d95ed99ba92c6a12
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings b/ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings
deleted file mode 100644
index 2c83a956b..000000000
Binary files a/ECSSamples/Assets/SceneDependencyCache/c70b69ad4ddf565facb2bab2dc89cdf2.sceneWithBuildSettings and /dev/null differ
diff --git a/ECSSamples/Assets/StressTests/ManySystems_Linear/ManySystems_Linear_Bootstrap.cs b/ECSSamples/Assets/StressTests/ManySystems_Linear/ManySystems_Linear_Bootstrap.cs
index 654ecbf5b..def89e5d1 100644
--- a/ECSSamples/Assets/StressTests/ManySystems_Linear/ManySystems_Linear_Bootstrap.cs
+++ b/ECSSamples/Assets/StressTests/ManySystems_Linear/ManySystems_Linear_Bootstrap.cs
@@ -92,7 +92,7 @@ struct TestComponent : IComponentData
[UpdateInGroup(typeof(SimulationSystemGroup))]
[DisableAutoCreation]
[AlwaysUpdateSystem]
- class TestSystem_Schedule : SystemBase
+ partial class TestSystem_Schedule : SystemBase
{
protected override void OnUpdate()
{
@@ -106,7 +106,7 @@ protected override void OnUpdate()
[UpdateInGroup(typeof(SimulationSystemGroup))]
[DisableAutoCreation]
[AlwaysUpdateSystem]
- class TestSystem_Run : SystemBase
+ partial class TestSystem_Run : SystemBase
{
protected override void OnUpdate()
{
@@ -120,7 +120,7 @@ protected override void OnUpdate()
[UpdateInGroup(typeof(SimulationSystemGroup))]
[DisableAutoCreation]
[AlwaysUpdateSystem]
- class TestSystem_ScheduleReader : SystemBase
+ partial class TestSystem_ScheduleReader : SystemBase
{
protected override void OnUpdate()
{
@@ -131,7 +131,7 @@ protected override void OnUpdate()
[UpdateInGroup(typeof(SimulationSystemGroup))]
[DisableAutoCreation]
[AlwaysUpdateSystem]
- class TestSystem_RunReader : SystemBase
+ partial class TestSystem_RunReader : SystemBase
{
protected override void OnUpdate()
{
diff --git a/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.asmdef b/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.asmdef
index 0bc1b5567..efbea955c 100644
--- a/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.asmdef
+++ b/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.asmdef
@@ -1,5 +1,6 @@
{
"name": "SubSceneTests",
+ "rootNamespace": "",
"references": [
"UnityEngine.TestRunner",
"UnityEditor.TestRunner",
@@ -10,7 +11,8 @@
"Unity.Scenes.Hybrid.Tests",
"Unity.Entities.Hybrid.EndToEnd.Tests",
"Unity.Transforms",
- "Unity.Mathematics"
+ "Unity.Mathematics",
+ "Unity.Scenes.Editor.Tests"
],
"includePlatforms": [
"Editor"
@@ -27,4 +29,4 @@
],
"versionDefines": [],
"noEngineReferences": false
-}
+}
\ No newline at end of file
diff --git a/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.cs b/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.cs
index a353e4938..afb05e68f 100644
--- a/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.cs
+++ b/ECSSamples/Assets/StressTests/SubSceneTests/SubSceneTests.cs
@@ -4,12 +4,29 @@
using Unity.Entities.Tests;
using Unity.Mathematics;
using Unity.Scenes;
+using Unity.Scenes.Tests;
using Unity.Transforms;
using UnityEditor;
using UnityEngine;
public class SubSceneTests : ECSTestsFixture
{
+ [Test]
+ [Ignore("Hybrid conversion doesn't appear to be deterministic")]
+ public void CheckEntitySceneImporterDeterminism_HybridLight()
+ {
+ EntitySceneImporterDeterminismChecker.Check("Assets/StressTests/HybridLights/HybridLights/SubScene.unity");
+ }
+
+ [Test]
+ public void CheckEntitySceneImporterDeterminism([Values(
+ "Assets/StressTests/LODSubSceneTest/LodSubSceneDynamicAndStatic.unity",
+ "Assets/Advanced/BlobAssetScalable/BlobAsset/Subscene.unity"
+ )]string path)
+ {
+ EntitySceneImporterDeterminismChecker.Check(path);
+ }
+
[Test]
public void SynchronousLoad()
{
diff --git a/ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs b/ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs
deleted file mode 100644
index a06a7115e..000000000
--- a/ECSSamples/Assets/Tests/ApiCompatibilityLevelTest.cs
+++ /dev/null
@@ -1,3 +0,0 @@
-#if !NET_STANDARD_2_0
-#error Project is expected to have API Compatibility Level set to .NET Standard 2.0
-#endif
diff --git a/ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs b/ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs
deleted file mode 100644
index ae7e1819e..000000000
--- a/ECSSamples/Assets/Tests/AutoCreate/AutoCreateComponentSystemTests.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using System;
-using NUnit.Framework;
-using UnityEngine.LowLevel;
-
-namespace Unity.Entities.Tests
-{
- class AutoCreateSystemsTests
- {
- World m_World;
- World m_PreviousWorld;
- PlayerLoopSystem m_PreviousPlayerLoop;
-
- [OneTimeSetUp]
- public void Setup()
- {
- m_PreviousWorld = World.DefaultGameObjectInjectionWorld;
- DefaultWorldInitialization.Initialize("TestWorld", false);
- m_World = World.DefaultGameObjectInjectionWorld;
- m_PreviousPlayerLoop = PlayerLoop.GetCurrentPlayerLoop();
- }
-
- [OneTimeTearDown]
- public void TearDown()
- {
- PlayerLoop.SetPlayerLoop(m_PreviousPlayerLoop);
- World.DefaultGameObjectInjectionWorld = m_PreviousWorld;
- m_World?.Dispose();
- }
-
- [Test]
- public void Systems_WithoutDisableAutoCreation_AreAutoCreated()
- {
- Assert.IsNotNull(m_World.GetExistingSystem(), $"{nameof(SystemShouldBeCreated)} was not automatically created");
- }
-
- [Test]
- public void Systems_WithDisableAutoCreation_AreNotCreated()
- {
- Assert.IsNull(m_World.GetExistingSystem(), $"{nameof(SystemShouldNotBeCreated)} was created even though it was marked with [{nameof(DisableAutoCreationAttribute)}].");
- }
-
- class SystemShouldBeCreated : SystemBase
- {
- protected override void OnUpdate()
- {
- }
- }
-
- [DisableAutoCreation]
- class SystemShouldNotBeCreated : SystemBase
- {
- protected override void OnUpdate()
- {
- }
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef b/ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef
deleted file mode 100644
index 70fc5c9dc..000000000
--- a/ECSSamples/Assets/Tests/AutoCreate/AutoCreationTests.asmdef
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "AutoCreationTests",
- "references": [
- "Unity.Collections",
- "Unity.Entities",
- "Unity.Entities.Tests",
- "UnityEngine.TestRunner",
- "UnityEditor.TestRunner",
- "Unity.Entities.Hybrid"
- ],
- "includePlatforms": [],
- "excludePlatforms": [],
- "allowUnsafeCode": true,
- "overrideReferences": true,
- "precompiledReferences": [
- "nunit.framework.dll"
- ],
- "autoReferenced": false,
- "defineConstraints": [
- "UNITY_INCLUDE_TESTS"
- ],
- "versionDefines": [],
- "noEngineReferences": false
-}
\ No newline at end of file
diff --git a/ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs b/ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs
deleted file mode 100644
index 5c967cc22..000000000
--- a/ECSSamples/Assets/Tests/Editmode/BaseEnterPlayModeTest.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using NUnit.Framework;
-using System.Collections;
-using UnityEditor;
-using UnityEngine;
-
-public class BaseEnterPlayModeTest
-{
- [SerializeField]
- bool m_OldEnterPlayModeOptionsEnabled;
- [SerializeField]
- EnterPlayModeOptions m_OldEnterPlayModeOptions;
-
- [SerializeField]
- protected bool m_IsInitialized;
- [SerializeField]
- protected bool m_IsSetupAndTearDownDisabled;
-
- protected void EnableSetupAndTearDown()
- {
- m_IsSetupAndTearDownDisabled = false;
- }
-
- protected void DisableSetupAndTearDown()
- {
- m_IsSetupAndTearDownDisabled = true;
- }
-
- [OneTimeSetUp]
- public void BaseOneTimeSetUp()
- {
- if (m_IsSetupAndTearDownDisabled)
- return;
-
- if (!m_IsInitialized)
- {
- m_OldEnterPlayModeOptionsEnabled = EditorSettings.enterPlayModeOptionsEnabled;
- m_OldEnterPlayModeOptions = EditorSettings.enterPlayModeOptions;
- m_IsInitialized = true;
- }
- }
-
- [TearDown]
- public void BaseTearDown()
- {
- if (m_IsSetupAndTearDownDisabled)
- return;
-
- EditorSettings.enterPlayModeOptionsEnabled = m_OldEnterPlayModeOptionsEnabled;
- EditorSettings.enterPlayModeOptions = m_OldEnterPlayModeOptions;
- }
-
- public class SceneResetTestCaseSource : IEnumerable
- {
- public IEnumerator GetEnumerator()
- {
- yield return new TestCaseData(EnterPlayModeOptions.None).Returns(null);
- yield return new TestCaseData(EnterPlayModeOptions.DisableSceneReload).Returns(null);
- }
- }
-
- public static readonly EnterPlayModeOptions[] TestEnterPlayModeOptions =
- {
- EnterPlayModeOptions.None,
- EnterPlayModeOptions.DisableDomainReload | EnterPlayModeOptions.DisableSceneReload
- };
-}
diff --git a/ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs b/ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs
deleted file mode 100644
index dbb7e35b3..000000000
--- a/ECSSamples/Assets/Tests/Editmode/DefaultWorldInitializationEnterPlaymodeTests.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-using NUnit.Framework;
-using System.Collections;
-using Unity.Entities;
-using UnityEditor;
-using UnityEngine;
-using UnityEngine.TestTools;
-
-namespace EnterPlayModeTests
-{
- public class DefaultWorldInitializationEnterPlayModeTests : BaseEnterPlayModeTest
- {
- [SerializeField]
- bool m_ExpectingDomainReload;
-
- [SerializeField]
- int m_DefaultWorldsCount;
- [SerializeField]
- int m_EditorWorldsCount;
- [SerializeField]
- int m_FirstEnterWorldsCount;
- [SerializeField]
- int m_SecondEnterWorldsCount;
-
- static readonly EnterPlayModeOptions[] k_TestEnterPlayModeOptions =
- {
- EnterPlayModeOptions.None,
- EnterPlayModeOptions.DisableDomainReload,
- EnterPlayModeOptions.DisableSceneReload,
- EnterPlayModeOptions.DisableDomainReload | EnterPlayModeOptions.DisableSceneReload
- };
-
- [SetUp]
- public void RegisterDelegates()
- {
- DefaultWorldInitialization.DefaultWorldInitialized += OnDefaultWorldInitialized;
- DefaultWorldInitialization.DefaultWorldDestroyed += OnDefaultWorldCleanup;
- EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
- }
-
- [TearDown]
- public void UnregisterDelegates()
- {
- DefaultWorldInitialization.DefaultWorldInitialized -= OnDefaultWorldInitialized;
- DefaultWorldInitialization.DefaultWorldDestroyed -= OnDefaultWorldCleanup;
- EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
- }
-
- [UnityTest, Ignore("Unstable, CI Editor Crash - DOTS-1872")]
- public IEnumerator DefaultBootstrappedWorld_OnSecondEnterPlayMode_ProducesOneWorld([ValueSource(nameof(TestEnterPlayModeOptions))] EnterPlayModeOptions enterPlayModeOptions)
- {
- // Set editor settings
- EditorSettings.enterPlayModeOptionsEnabled = enterPlayModeOptions != EnterPlayModeOptions.None;
- EditorSettings.enterPlayModeOptions = enterPlayModeOptions;
- m_ExpectingDomainReload = !enterPlayModeOptions.HasFlag(EnterPlayModeOptions.DisableDomainReload);
-
- DisableSetupAndTearDown();
-
- // Make sure we have an Editor world initialized
- AddVerificationScript();
- Assert.NotNull(World.DefaultGameObjectInjectionWorld);
-
- // Enter play mode
- Debug.Log("Before EnterPlayMode");
- yield return new EnterPlayMode(m_ExpectingDomainReload);
- m_DefaultWorldsCount = GetDefaultWorldsCount();
- m_EditorWorldsCount = GetEditorWorldsCount();
- m_FirstEnterWorldsCount = World.All.Count;
- Debug.Log("Before ExitPlayMode");
- yield return new ExitPlayMode();
-
- // Validate Game World in Play Mode
- Assert.AreEqual(1, m_DefaultWorldsCount);
- // Validate no Editor World in Play Mode
- Assert.AreEqual(0, m_EditorWorldsCount);
-
- Debug.Log("Before EnterPlayMode");
- yield return new EnterPlayMode(m_ExpectingDomainReload);
- m_DefaultWorldsCount = GetDefaultWorldsCount();
- m_EditorWorldsCount = GetEditorWorldsCount();
- m_SecondEnterWorldsCount = World.All.Count;
- Debug.Log("Before ExitPlayMode");
- yield return new ExitPlayMode();
-
- EnableSetupAndTearDown();
-
- Assert.AreEqual(1, m_DefaultWorldsCount);
- Assert.AreEqual(0, m_EditorWorldsCount);
- Assert.AreEqual(m_FirstEnterWorldsCount, m_SecondEnterWorldsCount);
- }
-
- [UnityTest]
- public IEnumerator DefaultBootstrappedWorld_OnDomainReload_RecreatesEditorWorld()
- {
- DisableSetupAndTearDown();
-
- // Make sure we have an Editor world initialized
- DefaultWorldInitialization.DefaultLazyEditModeInitialize();
- Assert.NotNull(World.DefaultGameObjectInjectionWorld);
- Assert.NotZero(GetEditorWorldsCount());
-
- AddVerificationScript();
-
- // Request domain reload
- EditorUtility.RequestScriptReload();
- yield return new RecompileScripts(false);
- Assert.AreEqual(0, GetDefaultWorldsCount()); // No game world in the edit mode
- Assert.AreEqual(1, GetEditorWorldsCount()); // Lazy init should be done by DefaultWorldInitializationVerificationScript script
-
- EnableSetupAndTearDown();
- }
-
- static int GetDefaultWorldsCount()
- {
- return GetWorldsCount("Default World");
- }
-
- static int GetEditorWorldsCount()
- {
- return GetWorldsCount("Editor World");
- }
-
- static int GetWorldsCount(string worldName)
- {
- var count = 0;
- foreach (var world in World.All)
- {
- if (world.Name == worldName)
- count++;
- }
-
- return count;
- }
-
- static void AddVerificationScript()
- {
- var go = new GameObject("DefaultWorldInitializationVerificationScript");
- go.AddComponent();
- }
-
- static bool s_AllowDisableChecks = true;
-
- static void OnPlayModeStateChanged(PlayModeStateChange state)
- {
- s_AllowDisableChecks = state != PlayModeStateChange.ExitingPlayMode;
- }
-
- static void OnDefaultWorldInitialized(World w)
- {
- Debug.Log("OnDefaultWorldInitialized");
- Assert.NotNull(w);
-
- var script = UnityEngine.Object.FindObjectOfType();
- // The assertion verifies that the script is not enabled when the world is lazily initialized by the script itself
- // This mimics the behavior of the GameObjectEntity.
- Assert.That(script == null || !script.WasEnabled);
- }
-
- static void OnDefaultWorldCleanup()
- {
- Debug.Log("OnDefaultWorldCleanup");
- if (!s_AllowDisableChecks)
- return;
-
- // The correct order for Enter PlayMode is:
- // 1. *OnDisable
- // 2. *Editor World destroyed
- // -- domain reload
- // 3. *Game World created
- // 4. *OnEnable
-
- // The correct order for Exit PlayMode is:
- // 1. OnDisable
- // 2. Game World destroyed
- // 3. *Editor World created on demand
- // 4. *OnEnable
-
- // The correct order for Domain Reload is:
- // 1. *OnDisable
- // 2. *Editor World destroyed
- // 3. *Editor World created on demand
- // 4. *OnEnable
-
- // Items marked with * are validated by tests here.
-
- // The assertion verifies that World is cleaned after all default OnDisable were called.
- var script = UnityEngine.Object.FindObjectOfType();
- Assert.IsFalse(script.WasEnabled);
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs b/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs
deleted file mode 100644
index adf428f22..000000000
--- a/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-using NUnit.Framework;
-using System.Collections;
-using Unity.Scenes;
-using Unity.Scenes.Editor;
-using UnityEditor;
-using UnityEditor.SceneManagement;
-using UnityEngine.SceneManagement;
-using UnityEngine.TestTools;
-using Object = UnityEngine.Object;
-
-namespace EnterPlayModeTests
-{
- public class SubSceneEnterPlayModeTests : BaseEnterPlayModeTest
- {
- [UnityTest]
- public IEnumerator SubScene_OpenedForEdit_RemainsOpenInPlayMode([Values(EnterPlayModeOptions.DisableDomainReload | EnterPlayModeOptions.DisableSceneReload)] EnterPlayModeOptions enterPlayModeOptions)
- {
- // Set editor settings
- EditorSettings.enterPlayModeOptionsEnabled = enterPlayModeOptions != EnterPlayModeOptions.None;
- EditorSettings.enterPlayModeOptions = enterPlayModeOptions;
- var expectingDomainReload = !enterPlayModeOptions.HasFlag(EnterPlayModeOptions.DisableDomainReload);
-
- DisableSetupAndTearDown();
-
- EditorSceneManager.OpenScene("Assets/HelloCube/3. SubScene/SubScene.unity", OpenSceneMode.Single);
- var subScene = Object.FindObjectOfType();
- Assert.NotNull(subScene);
- SubSceneInspectorUtility.EditScene(subScene);
- Assert.IsTrue(subScene.IsLoaded);
- Assert.AreEqual(2, SceneManager.sceneCount);
-
- // Enter play mode
- yield return new EnterPlayMode(expectingDomainReload);
-
- // Validate that subscene is still loaded
- subScene = Object.FindObjectOfType();
- Assert.NotNull(subScene);
- Assert.IsTrue(subScene.IsLoaded);
- Assert.AreEqual(2, SceneManager.sceneCount);
-
- yield return new ExitPlayMode();
-
- EnableSetupAndTearDown();
- }
-
- [UnityTest]
- public IEnumerator SubScene_NotOpenedForEdit_RemainsClosedInPlayMode([Values(EnterPlayModeOptions.DisableDomainReload | EnterPlayModeOptions.DisableSceneReload)] EnterPlayModeOptions enterPlayModeOptions)
- {
- // Set editor settings
- EditorSettings.enterPlayModeOptionsEnabled = enterPlayModeOptions != EnterPlayModeOptions.None;
- EditorSettings.enterPlayModeOptions = enterPlayModeOptions;
- var expectingDomainReload = !enterPlayModeOptions.HasFlag(EnterPlayModeOptions.DisableDomainReload);
-
- DisableSetupAndTearDown();
-
- EditorSceneManager.OpenScene("Assets/HelloCube/3. SubScene/SubScene.unity", OpenSceneMode.Single);
- var subScene = Object.FindObjectOfType();
- Assert.NotNull(subScene);
- Assert.IsFalse(subScene.IsLoaded);
- Assert.AreEqual(1, SceneManager.sceneCount);
-
- // Enter play mode
- yield return new EnterPlayMode(expectingDomainReload);
-
- // Validate that subscene is still loaded
- subScene = Object.FindObjectOfType();
- Assert.NotNull(subScene);
- Assert.IsFalse(subScene.IsLoaded);
- Assert.AreEqual(1, SceneManager.sceneCount);
-
- yield return new ExitPlayMode();
-
- EnableSetupAndTearDown();
- }
-
- [UnityTest]
- public IEnumerator SubScene_OpenedForEdit_UnloadsSceneOnDestroyImmediate()
- {
- EditorSceneManager.OpenScene("Assets/HelloCube/3. SubScene/SubScene.unity", OpenSceneMode.Single);
- var subScene = Object.FindObjectOfType();
- Assert.NotNull(subScene);
- SubSceneInspectorUtility.EditScene(subScene);
- Assert.IsTrue(subScene.IsLoaded);
- Assert.AreEqual(2, SceneManager.sceneCount);
-
- Object.DestroyImmediate(subScene.gameObject);
-
- yield return null;
-
- Assert.AreEqual(1, SceneManager.sceneCount);
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs.meta b/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs.meta
deleted file mode 100644
index c8c69b0b4..000000000
--- a/ECSSamples/Assets/Tests/Editmode/SubSceneEnterPlayModeTests.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 59ab78d8b7449b243931217212faed4a
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef b/ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef
deleted file mode 100644
index 8a7f69e5e..000000000
--- a/ECSSamples/Assets/Tests/Editmode/Tests.Editmode.asmdef
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "Unity.Samples.Tests",
- "references": [
- "UnityEngine.TestRunner",
- "UnityEditor.TestRunner",
- "Unity.Coding.Editor",
- "Unity.Entities",
- "Unity.Entities.Hybrid",
- "Unity.Scenes.Editor",
- "Unity.Scenes",
- "Tests.Playmode"
- ],
- "includePlatforms": [
- "Editor"
- ],
- "excludePlatforms": [],
- "allowUnsafeCode": false,
- "overrideReferences": true,
- "precompiledReferences": [
- "nunit.framework.dll"
- ],
- "autoReferenced": false,
- "defineConstraints": [
- "UNITY_INCLUDE_TESTS"
- ],
- "versionDefines": [],
- "noEngineReferences": false
-}
diff --git a/ECSSamples/Assets/Tests/Playmode.meta b/ECSSamples/Assets/Tests/Playmode.meta
deleted file mode 100644
index ea35646bf..000000000
--- a/ECSSamples/Assets/Tests/Playmode.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4a27049fa1e49834e8eb6d45b7d3ec24
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs b/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs
deleted file mode 100644
index 14d47a3fc..000000000
--- a/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System.Collections;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Unity.Entities;
-using UnityEngine;
-using UnityEngine.TestTools;
-
-namespace BootstrappedWorldTests
-{
- [TestFixture]
- public class BootstrappedWorldBehaviourTests
- {
- ///
- /// If this test fails, either no systems were added by default (which means that something failed in
- /// bootstrapping or system discovery), or an unexpected system was added that creates entities. This usually
- /// means a sample/demo system is running by default.
- ///
- /// There is an expected number of entities after one frame, as some built-in systems (such as Time) create
- /// singleton entities for tracking.
- ///
- ///
- [UnityTest]
- public IEnumerator DefaultBootstrappedWorldWithAllSystems_WaitingOneFrame_AsExpected()
- {
- var world = World.DefaultGameObjectInjectionWorld;
- const int ExpectedEntityCount = 1;
-
- yield return new WaitForFixedUpdate();
-
- Assert.Greater(world.Systems.Count, 0, "No systems were found; bootstrapping or system discovery failed");
- Assert.AreEqual(ExpectedEntityCount, GetEntityCount(world), GetTruncatedEntitiesDescription(world, 50));
- }
-
- static int GetEntityCount(World world)
- {
- using (var entities = world.EntityManager.GetAllEntities())
- {
- return entities.Length;
- }
- }
-
- static string GetTruncatedEntitiesDescription(World world, int truncateAfter)
- {
- var builder = new StringBuilder();
- var lines = 0;
-
- string Truncate(StringBuilder sb)
- {
- sb.AppendLine("Truncating further output...");
- return sb.ToString();
- }
-
- using (var entities = world.EntityManager.GetAllEntities())
- {
- foreach (var entity in entities)
- {
- builder.AppendLine(entity + " with components:");
- if (++lines >= truncateAfter) return Truncate(builder);
-
- using (var componentTypes = world.EntityManager.GetComponentTypes(entity))
- {
- foreach (var componentType in componentTypes)
- {
- builder.AppendLine(" - " + TypeManager.GetType(componentType.TypeIndex));
- if (++lines >= truncateAfter) return Truncate(builder);
- }
- }
- }
- }
-
- return builder.ToString();
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs.meta b/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs.meta
deleted file mode 100644
index 37ff0078c..000000000
--- a/ECSSamples/Assets/Tests/Playmode/BootstrappedWorldBehaviourTests.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: dddb3f3e6d83b4dd7b4d051fe551a703
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs b/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs
deleted file mode 100644
index 80858f343..000000000
--- a/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-using Unity.Entities;
-using UnityEngine;
-
-namespace EnterPlayModeTests
-{
- [ExecuteAlways]
- public class DefaultWorldInitializationVerificationScript : MonoBehaviour
- {
- [NonSerialized]
- public bool WasEnabled = false;
-
- public void OnEnable()
- {
- Debug.Log("DefaultWorldInitializationVerificationScript.OnEnable");
- DefaultWorldInitialization.DefaultLazyEditModeInitialize();
-
- WasEnabled = true;
- }
-
- public void OnDisable()
- {
- Debug.Log("DefaultWorldInitializationVerificationScript.OnDisable");
- WasEnabled = false;
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs.meta b/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs.meta
deleted file mode 100644
index 16a73d83f..000000000
--- a/ECSSamples/Assets/Tests/Playmode/DefaultWorldInitializationVerificationScript.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 64b12ec447b43324091faa704f747a20
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs b/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs
deleted file mode 100644
index 8092acfbc..000000000
--- a/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System.Collections;
-using NUnit.Framework;
-using Unity.Entities;
-using UnityEngine;
-using UnityEngine.SceneManagement;
-using UnityEngine.TestTools;
-
-[TestFixture]
-public class SceneLoadingTests
-{
- private GameObject sceneSwitcherDummy;
-
- private static IEnumerable GetScenes()
- {
- var sceneCount = SceneManager.sceneCountInBuildSettings;
-
- var sceneIndex = 1; // Skip the SceneSwitcher scene which is always first
- while (sceneIndex < sceneCount)
- {
- var scenePath = SceneUtility.GetScenePathByBuildIndex(sceneIndex);
- if (scenePath.Contains("SceneSwitcher") || scenePath.Contains("InitTestScene"))
- {
- sceneIndex++;
- continue;
- }
-
- var fileName = scenePath.Substring(scenePath.LastIndexOf("/") + 1);
- var sceneName = fileName.Substring(0, fileName.LastIndexOf(".unity"));
-
- yield return scenePath;
- sceneIndex++;
- }
- }
-
- [SetUp]
- public void Setup()
- {
- // Some scenes start auto playing if a game object called scene switcher is available when the scene is loaded
- // So that would be useful
- sceneSwitcherDummy = new GameObject("SceneSwitcher");
- GameObject.DontDestroyOnLoad(sceneSwitcherDummy);
- }
-
- [UnityTest]
- public IEnumerator LoadScenes_NoScenesShouldLog([ValueSource(nameof(GetScenes))] string scenePath)
- {
- SceneManager.LoadScene(scenePath);
- yield return new WaitForSeconds(1);
- EntitiesCleanup();
- yield return new WaitForFixedUpdate();
- LogAssert.NoUnexpectedReceived();
- }
-
- [TearDown]
- public void TearDown()
- {
- GameObject.Destroy(sceneSwitcherDummy);
- EntitiesCleanup();
- }
-
- static void EntitiesCleanup()
- {
- var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
- var entities = entityManager.GetAllEntities();
- entityManager.DestroyEntity(entities);
- entities.Dispose();
- }
-}
diff --git a/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs.meta b/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs.meta
deleted file mode 100644
index e9fa593a8..000000000
--- a/ECSSamples/Assets/Tests/Playmode/SceneLoadingTests.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 3859180faeb6473479b3cc9a20385ca6
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef b/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef
deleted file mode 100644
index 59a3d55e8..000000000
--- a/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Tests.Playmode",
- "references": [
- "Unity.Entities",
- "Unity.Entities.Hybrid",
- "Unity.Entities.Tests"
- ],
- "optionalUnityReferences": [
- "TestAssemblies"
- ],
- "includePlatforms": [],
- "excludePlatforms": [],
- "allowUnsafeCode": false,
- "overrideReferences": false,
- "precompiledReferences": [],
- "autoReferenced": true,
- "defineConstraints": [],
- "versionDefines": []
-}
\ No newline at end of file
diff --git a/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef.meta b/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef.meta
deleted file mode 100644
index 6d594c3ae..000000000
--- a/ECSSamples/Assets/Tests/Playmode/Tests.Playmode.asmdef.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: 89eb8ee541d2ab344b960cabce2e3daa
-AssemblyDefinitionImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/SceneSwitcher.cs b/ECSSamples/Assets/Tests/SceneSwitcher.cs
deleted file mode 100644
index 72c1842f1..000000000
--- a/ECSSamples/Assets/Tests/SceneSwitcher.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using Unity.Entities;
-using UnityEngine;
-using UnityEngine.SceneManagement;
-
-public class SceneSwitcher : MonoBehaviour
-{
- [Serializable]
- public class SceneConfig
- {
- public string SceneName;
- public int CustomDuration;
- }
- public int SceneSwitchInterval = 5;
-
- public float TimeUntilNextSwitch = 0.0f;
-
- public int CurrentSceneIndex = 0;
-
- public bool EntitiesDestroyed = false;
-
- public SceneConfig[] SceneConfigs;
-
- // Use this for initialization
- void Start()
- {
- DontDestroyOnLoad(this);
- LoadNextScene();
- }
-
- private void DestroyAllEntitiesInScene()
- {
- var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;
- var entities = entityManager.GetAllEntities();
- entityManager.DestroyEntity(entities);
- entities.Dispose();
- EntitiesDestroyed = true;
- }
-
- private void LoadNextScene()
- {
- var sceneCount = SceneManager.sceneCountInBuildSettings;
- var nextIndex = CurrentSceneIndex + 1;
- if (nextIndex >= sceneCount)
- {
- Quit();
- return;
- }
-
- var nextScene = SceneUtility.GetScenePathByBuildIndex(nextIndex);
- TimeUntilNextSwitch = GetSceneDuration(nextScene);
- CurrentSceneIndex = nextIndex;
-
- SceneManager.LoadScene(nextIndex);
- EntitiesDestroyed = false;
- }
-
- private int GetSceneDuration(string scenePath)
- {
- foreach (var scene in SceneConfigs)
- {
- if (!scenePath.EndsWith(scene.SceneName + ".unity"))
- continue;
- if (scene.CustomDuration <= 0)
- continue;
- return scene.CustomDuration;
- }
-
- return SceneSwitchInterval;
- }
-
- private void Quit()
- {
-#if UNITY_EDITOR
- UnityEditor.EditorApplication.isPlaying = false;
-#else
- Application.Quit();
-#endif
- }
-
- // Update is called once per frame
- void Update()
- {
- TimeUntilNextSwitch -= Time.deltaTime;
- if (TimeUntilNextSwitch > 0.0f)
- return;
-
- if (!EntitiesDestroyed)
- {
- DestroyAllEntitiesInScene();
- }
- else
- {
- DestroyAllEntitiesInScene();
- LoadNextScene();
- }
- }
-}
diff --git a/ECSSamples/Assets/Tests/SceneSwitcher.cs.meta b/ECSSamples/Assets/Tests/SceneSwitcher.cs.meta
deleted file mode 100644
index 5b1b32e94..000000000
--- a/ECSSamples/Assets/Tests/SceneSwitcher.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 5db787c63c8124a7291c505ceeb02ceb
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/ECSSamples/Assets/Tests/SceneSwitcher.unity b/ECSSamples/Assets/Tests/SceneSwitcher.unity
deleted file mode 100644
index b4d19ee81..000000000
--- a/ECSSamples/Assets/Tests/SceneSwitcher.unity
+++ /dev/null
@@ -1,172 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!29 &1
-OcclusionCullingSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 2
- m_OcclusionBakeSettings:
- smallestOccluder: 5
- smallestHole: 0.25
- backfaceThreshold: 100
- m_SceneGUID: 00000000000000000000000000000000
- m_OcclusionCullingData: {fileID: 0}
---- !u!104 &2
-RenderSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 9
- m_Fog: 0
- m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
- m_FogMode: 3
- m_FogDensity: 0.01
- m_LinearFogStart: 0
- m_LinearFogEnd: 300
- m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
- m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
- m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
- m_AmbientIntensity: 1
- m_AmbientMode: 0
- m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
- m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
- m_HaloStrength: 0.5
- m_FlareStrength: 1
- m_FlareFadeSpeed: 3
- m_HaloTexture: {fileID: 0}
- m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
- m_DefaultReflectionMode: 0
- m_DefaultReflectionResolution: 128
- m_ReflectionBounces: 1
- m_ReflectionIntensity: 1
- m_CustomReflection: {fileID: 0}
- m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0.12731749, g: 0.13414757, b: 0.1210787, a: 1}
- m_UseRadianceAmbientProbe: 0
---- !u!157 &3
-LightmapSettings:
- m_ObjectHideFlags: 0
- serializedVersion: 11
- m_GIWorkflowMode: 0
- m_GISettings:
- serializedVersion: 2
- m_BounceScale: 1
- m_IndirectOutputScale: 1
- m_AlbedoBoost: 1
- m_EnvironmentLightingMode: 0
- m_EnableBakedLightmaps: 1
- m_EnableRealtimeLightmaps: 1
- m_LightmapEditorSettings:
- serializedVersion: 10
- m_Resolution: 2
- m_BakeResolution: 40
- m_AtlasSize: 1024
- m_AO: 0
- m_AOMaxDistance: 1
- m_CompAOExponent: 1
- m_CompAOExponentDirect: 0
- m_Padding: 2
- m_LightmapParameters: {fileID: 0}
- m_LightmapsBakeMode: 1
- m_TextureCompression: 1
- m_FinalGather: 0
- m_FinalGatherFiltering: 1
- m_FinalGatherRayCount: 256
- m_ReflectionCompression: 2
- m_MixedBakeMode: 2
- m_BakeBackend: 1
- m_PVRSampling: 1
- m_PVRDirectSampleCount: 32
- m_PVRSampleCount: 500
- m_PVRBounces: 2
- m_PVRFilterTypeDirect: 0
- m_PVRFilterTypeIndirect: 0
- m_PVRFilterTypeAO: 0
- m_PVRFilteringMode: 1
- m_PVRCulling: 1
- m_PVRFilteringGaussRadiusDirect: 1
- m_PVRFilteringGaussRadiusIndirect: 5
- m_PVRFilteringGaussRadiusAO: 2
- m_PVRFilteringAtrousPositionSigmaDirect: 0.5
- m_PVRFilteringAtrousPositionSigmaIndirect: 2
- m_PVRFilteringAtrousPositionSigmaAO: 1
- m_ShowResolutionOverlay: 1
- m_LightingDataAsset: {fileID: 0}
- m_UseShadowmask: 1
---- !u!196 &4
-NavMeshSettings:
- serializedVersion: 2
- m_ObjectHideFlags: 0
- m_BuildSettings:
- serializedVersion: 2
- agentTypeID: 0
- agentRadius: 0.5
- agentHeight: 2
- agentSlope: 45
- agentClimb: 0.4
- ledgeDropHeight: 0
- maxJumpAcrossDistance: 0
- minRegionArea: 2
- manualCellSize: 0
- cellSize: 0.16666667
- manualTileSize: 0
- tileSize: 256
- accuratePlacement: 0
- debug:
- m_Flags: 0
- m_NavMeshData: {fileID: 0}
---- !u!1 &1841332243
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1841332245}
- - component: {fileID: 1841332244}
- m_Layer: 0
- m_Name: SceneSwitcher
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!114 &1841332244
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1841332243}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5db787c63c8124a7291c505ceeb02ceb, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- SceneSwitchInterval: 20
- TimeUntilNextSwitch: 5
- CurrentSceneIndex: 0
- EntitiesDestroyed: 0
- SceneConfigs:
- - SceneName: BoidExample
- CustomDuration: 10
- - SceneName: HelloCubeRotationSpeed
- CustomDuration: 5
- - SceneName: Hello2Cubes
- CustomDuration: 5
- - SceneName: HelloSpawnACube
- CustomDuration: 5
- - SceneName: HelloSpawnMoreStuff
- CustomDuration: 5
---- !u!4 &1841332245
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1841332243}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 48.69622, y: 34.48973, z: 85.32182}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/CheckReachedWaypointSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/CheckReachedWaypointSystem.cs
index 6155a953a..574dad8bc 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/CheckReachedWaypointSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/CheckReachedWaypointSystem.cs
@@ -3,7 +3,7 @@
using Unity.Mathematics;
using Unity.Transforms;
-public class CheckedReachedWaypointSystem : SystemBase
+public partial class CheckedReachedWaypointSystem : SystemBase
{
// Cache a reference to this system in OnCreate() to prevent World.GetExistingSystem being called every frame
private EndSimulationEntityCommandBufferSystem m_EndSimECBSystem;
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/LookForPlayerSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/LookForPlayerSystem.cs
index c78927f1d..1f6ecf70f 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/LookForPlayerSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/LookForPlayerSystem.cs
@@ -8,7 +8,7 @@
/// Checks whether the player is within guard vision cones
/// If the player is seen, chase the player
///
-public class LookForPlayerSystem : SystemBase
+public partial class LookForPlayerSystem : SystemBase
{
// Cache a reference to this system in OnCreate() to prevent World.GetExistingSystem being called every frame
private EndSimulationEntityCommandBufferSystem m_EndSimECBSystem;
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MovePlayerSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MovePlayerSystem.cs
index c37fcc918..7797b91ba 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MovePlayerSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MovePlayerSystem.cs
@@ -11,7 +11,7 @@ struct MovementSpeed : IComponentData
// System for moving the player based on keyboard input
[UpdateAfter(typeof(GatherInputSystem))]
-public class MovePlayerSystem : SystemBase
+public partial class MovePlayerSystem : SystemBase
{
protected override void OnUpdate()
{
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MoveTowardTargetSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MoveTowardTargetSystem.cs
index f20ccd0cc..0a009cf5b 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MoveTowardTargetSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/MoveTowardTargetSystem.cs
@@ -7,7 +7,7 @@
/// Moves any guards that have a TargetPosition towards their target
/// A Target can be either a waypoint or a player (though here all we know is the position of the target)
///
-public class MoveTowardTargetSystem : SystemBase
+public partial class MoveTowardTargetSystem : SystemBase
{
protected override void OnUpdate()
{
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/StateTransitionVisualizationSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/StateTransitionVisualizationSystem.cs
index 5e8704b88..34ff3452b 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/StateTransitionVisualizationSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/StateTransitionVisualizationSystem.cs
@@ -11,7 +11,7 @@
#if !UNITY_DISABLE_MANAGED_COMPONENTS
[UpdateInGroup(typeof(PresentationSystemGroup))]
[UpdateBefore(typeof(RenderMeshSystemV2))]
-public class StateTransitionVisualizationSystem : SystemBase
+public partial class StateTransitionVisualizationSystem : SystemBase
{
private EntityQuery m_StateTransitionMaterialSingletonQuery;
diff --git a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/UpdateIdleTimerSystem.cs b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/UpdateIdleTimerSystem.cs
index 42ea8c6c5..672746558 100644
--- a/ECSSamples/Assets/Use Case Samples/1. State Machine AI/UpdateIdleTimerSystem.cs
+++ b/ECSSamples/Assets/Use Case Samples/1. State Machine AI/UpdateIdleTimerSystem.cs
@@ -1,7 +1,7 @@
using Unity.Entities;
using Unity.Jobs;
-public class UpdateIdleTimerSystem : SystemBase
+public partial class UpdateIdleTimerSystem : SystemBase
{
// Cache a reference to this system in OnCreate() to prevent World.GetExistingSystem being called every frame
private EndSimulationEntityCommandBufferSystem m_EndSimECBSystem;
diff --git a/ECSSamples/Documentation/Readme.md b/ECSSamples/Documentation/Readme.md
deleted file mode 100644
index 0087fcdb7..000000000
--- a/ECSSamples/Documentation/Readme.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Unity Data-Oriented Tech Stack
-
-The Unity Data-Oriented Tech Stack has three main pieces: the Unity Entity-Component-System (ECS), the Unity C# Job System, and the Unity Burst compiler.
-
-## Entity-Component-System overview
-
-ECS offers an approach to game design that allows you to concentrate on the actual problems you are solving: the data and behavior that make up your game. ECS takes advantage of the C# Job System and the Burst compiler to fully utilize today's multicore processors.
-
-In addition to better utilizing modern CPUs, the [data-oriented](https://en.wikipedia.org/wiki/Data-oriented_design) design underlying ECS avoids the pitfalls of [object-oriented](https://simple.wikipedia.org/wiki/Object-oriented_programming) that can plague complex projects like games, especially when trying to eek out the last few FPS to reach your release target. Data-oriented design can also make it easier for you to reuse and evolve your code and for others to understand and work on it. For more information, see:
-
-- [What is ECS?](getting_started.md)
-- [ECS principles](ecs_principles_and_vision.md)
-- [Is ECS for you?](is_ecs_for_you.md)
-- [ECS Manual and Script Reference](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/manual/index.html)
-
-## C# Job System overview
-
-The C# Job System takes advantage of the multiple cores in today's computers. It’s designed to open this approach up to C# user scripts and allows users to write safe, fast, jobified code while protecting against some of the pitfalls of multithreading such as race conditions.
-
-- [C# Job System manual](https://docs.unity3d.com/Manual/JobSystem.html)
-- [Low-level overview - creating containers & custom job types](https://docs.unity3d.com/Packages/com.unity.jobs@latest?preview=1&subfolder=/manual/custom_job_types.html)
-- [Scheduling a job from a job - why not?](https://docs.unity3d.com/Packages/com.unity.jobs@latest?preview=1&subfolder=/manual/scheduling_a_job_from_a_job.html)
-
-## Burst overview
-
-Burst is a new [LLVM](https://en.wikipedia.org/wiki/LLVM) based backend compiler technology that makes things easier for you. It takes C# jobs and produces highly-optimized machine code taking advantage of the particular capabilities of your platform. So you get a lot of the benefits of hand tuned assembler code, across multiple platforms, without all the hard work. The Burst compiler can be used to increase performance of jobs written for the C# Job System.
-
-- [Burst documentation](https://docs.unity3d.com/Packages/com.unity.burst@latest/index.html)
-- [How to optimize for the Burst compiler](burst_optimization.md)
-
-## Further information
-
-- [Unity Data-Oriented cheat sheet](cheatsheet.md)
-- [Performance by default](http://unity3d.com/performance-by-default)
diff --git a/ECSSamples/Documentation/burst_optimization.md b/ECSSamples/Documentation/burst_optimization.md
deleted file mode 100644
index ee54b97fe..000000000
--- a/ECSSamples/Documentation/burst_optimization.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# How to optimize for the Burst compiler
-
-* Use Unity.Mathematics, Burst natively understands the math operations and is optimized for it.
-* Avoid branches. Use math.min, math.max, math.select instead.
-* For jobs that have to be highly optimized, ensure that each job uses every single variable in the IComponentData. If some variables in an IComponentData is not being used, move it to a separate component. That way the unused data will not be loaded into cache lines when iterating over Entities.
diff --git a/ECSSamples/Documentation/cheatsheet.md b/ECSSamples/Documentation/cheatsheet.md
deleted file mode 100644
index bf2797146..000000000
--- a/ECSSamples/Documentation/cheatsheet.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# Unity Data-Oriented Tech Stack Cheat Sheet
-
-Here is a quick reference of the most useful classes, interfaces, structs, and attributes that have been introduced in this documentation by [ECS](#ecs-related), the [C# Job System](#c-job-system-related), and the [Burst compiler](#burst-compiler-related).
-
-## ECS related
-
-| Name | Namespace | Type |
-| :-------------: |:-------------| :-----:|
-| [ArchetypeChunk](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ArchetypeChunk.html) | Unity.Entities | Unsafe Struct |
-| [ComponentSystem](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ComponentSystem.html) | Unity.Entities | Abstract Class |
-| [ComponentType](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ComponentType.html) | Unity.Entities | Struct |
-| [DynamicBuffer](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.DynamicBuffer-1.html) | Unity.Entities | Unsafe Struct |
-| [Entity](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.Entity.html) | Unity.Entities | Struct |
-| [EntityArchetype](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.EntityArchetype.html) | Unity.Entities | Unsafe Struct |
-| [EntityCommandBuffer](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.EntityCommandBuffer.html) | Unity.Entities | Unsafe Struct |
-| [EntityManager](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.EntityManager.html) | Unity.Entities | Unsafe Class |
-| [ExclusiveEntityTransaction](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ExclusiveEntityTransaction.html) | Unity.Entities | Unsafe Struct |
-| [IBufferElementData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.IBufferElementData.html) | Unity.Entities | Interface |
-| [IComponentData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.IComponentData.html) | Unity.Entities | Interface |
-| [IJobChunk](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.IJobChunk.html) | Unity.Entities | Interface |
-| [IJobNativeMultiHashMapMergedSharedKeyIndices](https://docs.unity3d.com/Packages/com.unity.collections@latest?preview=1&subfolder=/api/Unity.Collections.IJobNativeMultiHashMapMergedSharedKeyIndices.html) | Unity.Collections | Interface |
-| [IJobParallelForBatch](https://docs.unity3d.com/Packages/com.unity.jobs@latest?preview=1&subfolder=/api/Unity.Jobs.IJobParallelForBatch.html) | Unity.Jobs | Interface |
-| [IJobParallelForFilter](https://docs.unity3d.com/Packages/com.unity.jobs@latest?preview=1&subfolder=/api/Unity.Jobs.IJobParallelForFilter.html) | Unity.Jobs | Interface |
-| [IJobForEach](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.IJobForEach-1.html) | Unity.Entities | Interface |
-| [ISharedComponentData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ISharedComponentData.html) | Unity.Entities | Interface |
-| [ISystemStateBufferElementData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ISystemStateBufferElementData.html) | Unity.Entities | Interface |
-| [ISystemStateComponentData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ISystemStateComponentData.html) | Unity.Entities | Interface |
-| [ISystemStateSharedComponentData](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.ISystemStateSharedComponentData.html) | Unity.Entities | Interface |
-| [JobComponentSystem](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.JobComponentSystem.html) | Unity.Entities | Abstract Class |
-| [RenderMesh](https://docs.unity3d.com/Packages/com.unity.rendering.hybrid@latest?preview=1&subfolder=/api/Unity.Rendering.RenderMesh.html) |Unity.Rendering | Class |
-| [NativeHashMap](https://docs.unity3d.com/Packages/com.unity.collections@latest?preview=1&subfolder=/api/Unity.Collections.NativeHashMap-2.html) | Unity.Collections | Unsafe Struct |
-| [NativeList](https://docs.unity3d.com/Packages/com.unity.collections@latest?preview=1&subfolder=/api/Unity.Collections.NativeList-1.html) | Unity.Collections | Unsafe Struct |
-| [NativeMultiHashMap](https://docs.unity3d.com/Packages/com.unity.collections@latest?preview=1&subfolder=/api/Unity.Collections.NativeMultiHashMap-2.html) | Unity.Collections | Unsafe Struct |
-| [NativeQueue](https://docs.unity3d.com/Packages/com.unity.collections@latest?preview=1&subfolder=/api/Unity.Collections.NativeQueue-1.html) | Unity.Collections | Unsafe Struct |
-| [LocalToWorld](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Transforms.LocalToWorld.html) | Unity.Transforms | Struct |
-| [Translation](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Transforms.Translation.html) | Unity.Transforms | Struct |
-| [Rotation](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Transforms.Rotation.html) | Unity.Transforms | Struct |
-| [Scale](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Transforms.Scale.html) | Unity.Transforms | Struct |
-| [World](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.World.html) | Unity.Entities | Class |
-
-### Unsafe attributes
-
-* [[NativeContainer]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeContainerAttribute.html)
-* [[NativeContainerIsAtomicWriteOnly]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeContainerIsAtomicWriteOnlyAttribute.html)
-* [[NativeContainerSupportsMinMaxWriteRestriction]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeContainerSupportsMinMaxWriteRestrictionAttribute.html)
-* [[NativeContainerSupportsDeallocateOnJobCompletion]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeContainerSupportsDeallocateOnJobCompletionAttribute.html)
-* [[NativeDisableUnsafePtrRestriction]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeDisableUnsafePtrRestrictionAttribute.html)
-* [[NativeSetClassTypeToNullOnSchedule]](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeSetClassTypeToNullOnScheduleAttribute.html)
-
-### Defines
-
-Frequently used:
-
-* `ENABLE_UNITY_COLLECTIONS_CHECKS`: Wrap around validation code, for example bounds checking, parameter validation, or leak detection.
-* `NET_DOTS`: DOTS C# profile (vs full .NET) - for example, if you use `Dictionary`, you want `#if !NET_DOTS`; see [Platform dependent compilation](https://docs.unity3d.com/Manual/PlatformDependentCompilation.html) for the other `NET_*` defines
-* `UNITY_DOTSPLAYER`: Standalone DOTS (vs hybrid DOTS) - for example, if you use `UnityEngine`, you want `#if !UNITY_DOTSPLAYER`
-
-Rarely used:
-
-* `UNITY_DOTSPLAYER_DOTNET`: Standalone DOTS built for real .NET execution target
-* `UNITY_DOTSPLAYER_IL2CPP`: Standalone DOTS built for IL2CPP - for example, where il2cpp provides an intrinsic for vs. an implementation using reflection in .NET
-
-_Note: The `ZEROPLAYER` defines are for the DOTS runtime, which has not been publicly released yet._
-
-## C# Job System related
-
-> **Note**: ECS code can also use the following objects, but they are part of the Unity codebase since 2018.1 and not part of any related packages. For more information, see the [C# Job System manual](https://docs.unity3d.com/Manual/JobSystem.html).
-
-| Namespace | Name | Type |
-| :-------------: |:-------------:| :-----:|
-| Unity.Collections | [NativeArray](https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeArray_1.html) | Struct |
-| Unity.Collections | [NativeContainer](https://docs.unity3d.com/ScriptReference/Unity.Collections.LowLevel.Unsafe.NativeContainerAttribute.html) | Unsafe Class |
-| Unity.Collections | [NativeSlice](https://docs.unity3d.com/ScriptReference/Unity.Collections.NativeSlice_1.html) | Struct |
-| Unity.Jobs | [IJob](https://docs.unity3d.com/ScriptReference/Unity.Jobs.IJob.html) | Interface |
-| Unity.Jobs | [IJobParallelFor](https://docs.unity3d.com/ScriptReference/Unity.Jobs.IJobParallelFor.html) | Interface |
-| Unity.Jobs | [JobHandle](https://docs.unity3d.com/ScriptReference/Unity.Jobs.JobHandle.html) | Interface |
-| Unity.Jobs | [JobsUtility](https://docs.unity3d.com/ScriptReference/Unity.Jobs.LowLevel.Unsafe.JobsUtility.html) | Unsafe Class |
-
-### Attributes
-
-* [[ReadOnly]](https://docs.unity3d.com/ScriptReference/Unity.Collections.ReadOnlyAttribute.html)
-* [[WriteOnly]](https://docs.unity3d.com/ScriptReference/Unity.Collections.WriteOnlyAttribute.html)
-
-## Burst compiler related
-
-### Attributes
-
-* [[BurstDiscard]](https://docs.unity3d.com/ScriptReference/Unity.Burst.BurstDiscardAttribute.html)
-* [[BurstCompile]](https://docs.unity3d.com/Packages/com.unity.burst@latest?preview=1&subfolder=/api/Unity.Burst.BurstCompileAttribute.html)
-
-## General computing terms
-
-* [AOT compilation](glossary.md#aot_compilation)
-* [Atomic operation](glossary.md#atomic_operation)
-* [Blittable types](glossary.md#blittable_types)
-* [Cache lines](https://en.wikipedia.org/wiki/CPU_cache#Cache_entries)
-* [Context switching](https://docs.unity3d.com/Manual/JobSystemMultithreading.html) - see the end of the page.
-* [Dependency](glossary.md#dependency)
-* [JIT compilation](glossary.md#jit_compilation)
-* [Job system](https://docs.unity3d.com/Manual/JobSystemJobSystems.html)
-* [Logical CPU](glossary.md#logical_cpu)
-* [Main thread](glossary.md#main_thread)
-* [Managed code](glossary.md#managed_code)
-* [Memory leak](glossary.md#memory_leak)
-* [Multicore](glossary.md#multicore)
-* [Multithreading](https://docs.unity3d.com/Manual/JobSystemMultithreading.html)
-* [Native code](https://en.wikipedia.org/wiki/Machine_code)
-* [Parallel computing](https://en.wikipedia.org/wiki/Parallel_computing)
-* [Performant](glossary.md#performant)
-* [Race condition](https://docs.unity3d.com/Manual/JobSystemSafetySystem.html)
-* [SIMD](glossary.md#simd)
-* [Unmanaged code](glossary.md#unmanaged_code)
-* [Worker threads](glossary.md#worker_threads)
diff --git a/ECSSamples/Documentation/ecs_principles_and_vision.md b/ECSSamples/Documentation/ecs_principles_and_vision.md
deleted file mode 100644
index 64ff312f9..000000000
--- a/ECSSamples/Documentation/ecs_principles_and_vision.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# Unity Data Oriented Tech Stack principles and vision
-
-The Unity Data Oriented Tech Stack is built on a set of principles. These principles provide a good context for what we are trying to achieve. Some of the principles are clearly reflected in the code. Others are simply goals that we set for ourselves.
-
-## Performance by default
-
-We want to make it simple to create efficient machine code for all platforms.
-
-We measure ourselves against the performance that can be achieved in C++ with handwritten highly optimized [simd](https://en.wikipedia.org/wiki/SIMD) intrinsics.
-
-We are using a combination of compiler technology (Burst), containers (Unity.Collections), data layout of components (ECS) to make it easy to write efficient code by default.
-
-* Data layout & iteration - The Entity Component System guarantees linear data layout when iterating entities in chunks by default. This is a critical part of the performance gains provided by the Data Oriented Tech Stack.
-* The C# job system lets you write multithreaded code in a simple way. It is also safe. The C# Job Debugger detects any race conditions.
-* Burst is our compiler specifically for C# jobs. C# job code follows certain patterns that we can use to produce more efficient machine code. Code is compiled & optimized for each target platforms taking advantage of SIMD instructions.
-
-An example of this is the performance of Instantiation. Comparing to the theoretical limit, of instantiating 100,000 entities with 320 bytes of a memcpy takes 9ms. Instantiating those entities via the Entity Component System takes 10ms. So we are very close to the theoretical limit.
-
-At Unite Austin, we showcased a demo with 100,000 individual units in a massive battle simulation running at 60 FPS. All game code was running multicore.
-[See ECS performance demo [Video]](https://www.youtube.com/watch?v=0969LalB7vw)
-
-## Simple
-
-Writing [performant](https://en.wiktionary.org/wiki/performant) code must be simple. We believe that we can make writing fast code as simple as __MonoBehaviour.Update__.
-
-> Note: To set expectations right, we think we still have some ways to go to achieve this goal.
-
-## One way of writing code
-
-We want to define a single way of writing game code, editor code, asset pipeline code, engine code. We believe this creates a simpler tool for our users, and more ability to change things around.
-
-Physics is a great example. Currently Physics is a black box solution. In practice many developers want to tweak the simulation code to fit it to their games needs. If physics engine code was written the same way as game code using ECS, it would make it easy to plug your own simulation code between existing physics simulation stages or take full control.
-
-Another example, lets imagine you want to make a heavily moddable game.
-
-If our import pipeline is implemented as a set of __ComponentSystems__. And we have some FBX import pipeline code that is by default used in the asset pipeline to import and postprocess an FBX file. (Mesh is baked out and FBX import code used in the editor.)
-
-Then it would be easy to configure the Package Manager that the same FBX import and postprocessing code could be used in a deployed game for the purposes of modding.
-
-We believe this will, at the foundation level, make Unity significantly more flexible than it is today.
-
-## Networking
-
-We want to define one simple way of writing all game code. When following this approach, your game can use one of three network architectures depending on what type of game you create.
-
-We are focused on providing best of class network engine support for hosted games. Using the recently acquired [Multiplay.com](http://Multiplay.com) service we offer a simple pipeline to host said games.
-
-* FPS - Simulation on the server
-* RTS - Deterministic lock step simulation
-* Arcade games - GGPO
-
-> Note: To set expectations right, we are not yet shipping any networking code on top of Entity Component System. It is work in progress.
-
-## Determinism
-
-Our build pipeline must be [deterministic](https://en.wikipedia.org/wiki/Deterministic_algorithm). Users can choose if all simulation code should run deterministically.
-
-You should always get the same results with the same inputs, no matter what device is being used. This is important for networking, replay features and even advanced debugging tools.
-
-To do this, we will leverage our Burst compiler to produce exact floating point math between different platforms. Imagine a linux server & iOS device running the same floating point math code. This is useful for many scenarios particularly for connected games, but also debugging, replay etc.
-
-> Note: Floating point math discrepancies is a problem that Unity decided to tackle head on. This issue has been known about for some time, but so far there has not been a need great enough to encourage people to solve it. For some insight into this problem, including some of the workarounds needed to avoid solving it, consider reading [Floating-Point Determinism by Bruce Dawson](https://randomascii.wordpress.com/2013/07/16/floating-point-determinism/).
-
-## Sandbox
-
-Unity is a sandbox, safe and simple.
-
-We provide great error messages when API's are used incorrectly, we never put ourselves in a position where incorrect usage results in a crash and that is by design (as opposed to a bug we can quickly fix).
-
-A good example of sandbox behaviour is that our C# job system guarantees that none of your C# job code has race conditions. We deterministically check all possible race conditions through a combination of static code analysis & runtime checks. We give you well written error messages about any race conditions right away. So you can trust that your code works and feel safe that even developers who write multithreaded game code for the first time will do it right.
-
-## Tiny
-
-We want Unity to be usable for all content from < 50kb executables + content, to gigabyte sized games. We want Unity to load in less than 1 second for small content.
-
-## Iteration time
-
-We aim to keep iteration time for any common operations in a large project folder below 500ms.
-
-As an example we are working on rewriting the C# compiler to be fully incremental with the goal of:
-
-> When changing a single .cs file in a large project. The combined compile and hot reload time should be less than 500ms.
-
-## Our code comes with full unit test coverage
-
-We believe in shipping robust code from the start. We use unit tests to prove that our code works correctly when it is written and committed by the developer. Tests are shipped as part of the packages.
-
-## Evolution
-
-We are aware that we are proposing a rather large change in how to write code. From MonoBehaviour.Update to ComponentSystem & using jobs.
-
-We believe that ultimately the only thing that convinces a game developer is trying it and seeing the result with your own eyes, on your own game.
-
-Thus it is important that applying the ECS approach on an existing project should be easy and quick to do. Our goal is that within 30 minutes a user can, in a large project, change some code from MonoBehaviour.Update to ComponentSystem and have a successful experience optimizing their game code.
-
-## Packages
-
-We want the majority of our engine code to be written in C# and deployed in a Package. All source code is available to all Unity Pro customers.
-
-We want a rapid feedback loop with customers, given that we can push code and get feedback on something quickly in a package without destabilizing other parts.
-
-Previously most of our engine code was written in C++, which creates a disconnect with how our customers write code and how programmers at Unity write code. Due to the Burst compiler tech & ECS, we can achieve better than C++ with C# code and as a result we can all write code exactly the same way.
-
-## Collaboration
-
-We believe Unity users and Unity developers are all on the same team. Our purpose is to help all Unity users create the best game experiences faster, in higher quality, and with great performance.
-
-We believe every feature we develop must be developed with real scenarios and real production feedback early on. The Package Manager facilitates that.
-
-For those in the community that want to contribute engine code, we aim to make that easy by working directly on the same code repositories that contributors can commit to as well. Through well defined principles and full test coverage of all features, we hope to keep the quality of contributions high as well.
-
-The source code repositories will be available for all Unity Pro Customers.
-
-## Transparency
-
-We believe in transparency. We develop our features in the open, we actively communicate on both forum and blogs. We reserve time so each developer can spend time with customers and understand our users pain points.
-
diff --git a/ECSSamples/Documentation/entity_debugger_overview.md b/ECSSamples/Documentation/entity_debugger_overview.md
deleted file mode 100644
index 3786018da..000000000
--- a/ECSSamples/Documentation/entity_debugger_overview.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Entity Debugger
-
-The Entity Debugger allows you to look at currently running systems, filter entities by archetype and analyze how the entities are layed out within these archetypes.
-
-Open the Entity Debugger using the Unity Editor **Window** > **Analysis** > **Entity Debugger** menu command.
-
-## How to read the *Chunk Utilization* panel
-Here's a breakdown of all the information available in the *Chunk utilization* panel.
-
-
-
-1. **Number of entities** matched by the query used by the currently selected system. In this case *All Entities* is selected meaning we're visualizing all entities in the current world.
-2. All this right panel is used to visualize **all the different archetypes matching the entities matched by the selection** on the left.
-3. **Total number of chunks** used by these archetypes to store the data.
-4. Detailed view of one archetype. The pills looking labels are the components composing the archetype.
-5. **Number of chunks** used by this **archetype**.
-6. Chunk utilization graph's Y axis: **number of chunks storing the X amount of entities**
- * The axis legend is also replicated on the right
-7. Chunk utilization graph's X axis: **number of entities stored in each Y chunk**
- * The max value of the X axis also shows the maximum count of entities that can fit in one chunk. In this case 54
-8. The actual data points in the graph displayed as a bar chart.
- * In this case we see that this archetype is using 926 chunks total.
- * The right orange bar shows that we have 924 chunks, each containing 54 entities.
- * The second very small bar (probably) shows that we have 2 chunks, each containing 52 entities.
-
-
diff --git a/ECSSamples/Documentation/getting_started.md b/ECSSamples/Documentation/getting_started.md
deleted file mode 100644
index 47eab8c20..000000000
--- a/ECSSamples/Documentation/getting_started.md
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/ECSSamples/Documentation/glossary.md b/ECSSamples/Documentation/glossary.md
deleted file mode 100644
index 40b07941c..000000000
--- a/ECSSamples/Documentation/glossary.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# Glossary
-
-This section defines specific and general computing terminology relevant to the Unity Data Oriented Tech Stack.
-
-
-## AOT compilation
-
-AOT stands for "Ahead-of-time".
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Ahead-of-time_compilation): "In computer science, ahead-of-time (AOT) compilation is the act of compiling a higher-level programming language such as C or C++, or an intermediate representation such as Java bytecode or .NET Framework Common Intermediate Language (CIL) code, into a native (system-dependent) machine code so that the resulting binary file can execute natively. AOT produces machine optimized code, just like a standard native compiler. The difference is that AOT transforms the bytecode of an extant virtual machine (VM) into machine code."
-
-See also: [JIT compilation](#jit_compilation).
-
-
-## Atomic operation
-
-Also known as linearizable or uninterruptible.
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Linearizability): "In concurrent programming, an operation (or set of operations) is atomic, linearizable, indivisible or uninterruptible if it appears to the rest of the system to occur at once without being interrupted. Atomicity is a guarantee of isolation from interrupts, signals, concurrent processes and threads… Additionally, atomic operations commonly have a succeed-or-fail definition—they either successfully change the state of the system, or have no apparent effect."
-
-> [Preshing on Programming](http://preshing.com/20130618/atomic-vs-non-atomic-operations/): "An operation acting on shared memory is atomic if it completes in a single step relative to other threads. When an atomic store is performed on a shared variable, no other thread can observe the modification half-complete. When an atomic load is performed on a shared variable, it reads the entire value as it appeared at a single moment in time… Any time two threads operate on a shared variable concurrently, and one of those operations performs a write, both threads must use atomic operations."
-
-
-## Blittable types
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Blittable_types): "Blittable types are data types in the Microsoft .NET framework that have an identical presentation in memory for both managed and unmanaged code… A memory copy operation is sometimes referred to as a 'block transfer'. This term is sometimes abbreviated as BLT... and pronounced 'blit'. The term 'blittable' expresses whether it is legal to copy an object using a block transfer."
-
-See also: [managed code](#managed_code) and [unmanged code](#unmanaged_code).
-
-
-## Burst compiler
-
-Burst is a new [LLVM](https://en.wikipedia.org/wiki/LLVM) based backend compiler technology that makes things easier for you. It takes C# jobs and produces highly-optimized machine code taking advantage of the particular capabilities of your platform. So you get a lot of the benefits of hand tuned assembler code, across multiple platforms, without all the hard work. The Burst compiler can be used to increase performance of jobs written for the [C# Job System](https://docs.unity3d.com/Manual/JobSystem.html).
-
-
-## Dependency
-
-Also known as coupling.
-
-> [Jenkov](http://tutorials.jenkov.com/ood/understanding-dependencies.html): "Whenever a class **A** uses another class… **B**, then **A** depends on **B**. **A** cannot carry out it's work without **B**, and **A** cannot be reused without also reusing **B**. In such a situation the class **A** is called the 'dependant' and the class… **B** is called the 'dependency'. A dependant depends on its dependencies."
-
-In the context of the Data-Oriented Tech Stack, the Job system allows you to establish dependencies between Jobs. The Job system scheduler ensures only executes a job once all the jobs it depends upon have finished.
-
-
-
-## ECS
-
-An [entity-component-system](https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80%93system) (ECS) is a new model to write performant code by default. Instead of using [Object-Oriented Design](https://en.wikipedia.org/wiki/Object-oriented_design) (OOD), ECS takes advantage of another paradigm called [Data-Oriented Design](https://en.wikipedia.org/wiki/Data-oriented_design). This separates out the data from the logic so you can apply instructions to a large batch of items in parallel. The Entity-component-system gurantees [linear data layout](https://en.wikipedia.org/wiki/Flat_memory_model) when iterating over entities in [chunks](com.unity.entities/chunk_iteration.md). Managing data this way is quicker because you read from continuous blocks of memory, rather than random blocks assigned all over the place. Knowing exactly where each bit of data is, and by packing it tightly together, allows us to manage memory with little overhead. This is a critical part of the performance gains provided by ECS.
-
-> Note: Unity's ECS is a fairly standard entity-component-system, although the naming is tweaked somewhat to avoid clashes with existing concepts within Unity. (See [ECS concepts](com.unity.entities/ecs_core.md) for more information.)
-
-See also: [Entity](com.unity.entities/ecs_entities.md), [ComponentData](com.unity.entities/component_data.md), and [ComponentSystem](com.unity.entities/component_system.md).
-
-
-## JIT compilation
-
-JIT stands for "Just-in-time".
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Just-in-time_compilation): "In computing, just-in-time (JIT) compilation, also known as dynamic translation, is a way of executing computer code that involves compilation during execution of a program – at run time – rather than prior to execution."
-
-See also: [AOT compilation](#aot_compilation)
-
-
-## Logical CPU
-
-Also known as a logical processor.
-
-> [Directions on Microsoft](https://www.directionsonmicrosoft.com/licensing/30-licensing/3420-sql-server-2012-adopts-per-core-licensing-model.html): "Logical processors subdivide a server's processing power to enable parallel processing."
-
-> [Unix Stack Exchange](https://unix.stackexchange.com/questions/88283/so-what-are-logical-cpu-cores-as-opposed-to-physical-cpu-cores): "Physical cores are [the] number of physical cores, actual hardware components. Logical cores are the number of physical cores times the number of threads that can run on each core through the use of hyperthreading. For example, my 4-core processor runs two threads per core, so I have 8 logical processors."
-
-> [How-To Geek](https://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/): "A single physical CPU core with hyper-threading appears as two logical CPUs to an operating system. The CPU is still a single CPU, so it’s a little bit of a cheat. While the operating system sees two CPUs for each core, the actual CPU hardware only has a single set of execution resources for each core. The CPU pretends it has more cores than it does, and it uses its own logic to speed up program execution. In other words, the operating system is tricked into seeing two CPUs for each actual CPU core. Hyper-threading allows the two logical CPU cores to share physical execution resources. This can speed things up somewhat—if one virtual CPU is stalled and waiting, the other virtual CPU can borrow its execution resources. Hyper-threading can help speed your system up, but it’s nowhere near as good as having actual additional cores."
-
-See also: [Multithreading](https://docs.unity3d.com/Manual/JobSystemMultithreading.html) and [Multicore](#multicore).
-.
-
-## Main thread
-
-> [Geeks for Geeks](https://www.geeksforgeeks.org/main-thread-java/): "When a ...program starts up, one thread begins running immediately. This is usually called the **main** thread of our program, because it is the one that is executed when our program begins.
->
-> **Properties:**
->
-> - It is the thread from which other “child” threads will be spawned.
-> - Often, it must be the last thread to finish execution because it performs various shutdown actions."
-
-Many programming languages have a Main method that is the starting point of an application. The main thread will find this method and invoke it. Your program will run on the main thread unless you create additional threads yourself. For more information, see [Stackoverflow](https://stackoverflow.com/questions/17669159/what-is-the-relation-between-the-main-method-and-main-thread-in-java).
-
-> Note: In ECS we aim to remove as much code as possible out of the main thread and into jobs.
-
-See also: [Multithreading](https://docs.unity3d.com/Manual/JobSystemMultithreading.html) and [Worker threads](#worker_threads).
-
-
-## Managed code
-
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Managed_code): "Managed code is computer program code that requires and will execute only under the management of a Common Language Runtime virtual machine, typically the .NET Framework, or Mono. The term was coined by Microsoft.
->
-> Managed code is the compiler output of source code written in one of over twenty high-level programming languages that are available for use with the Microsoft .NET Framework, including C#, J#, Microsoft Visual Basic .NET, Microsoft JScript and .NET...
->
-> Managed code in the Microsoft .Net Framework is defined according to the Common Intermediate Language specification.
-
-See also: [unmanaged code](#unmanaged_code).
-
-
-## Memory leak
-
-General computing term.
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Memory_leak): "In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in such a way that memory which is no longer needed is not released. In object-oriented programming, a memory leak may happen when an object is stored in memory but cannot be accessed by the running code. A memory leak has symptoms similar to a number of other problems and generally can only be diagnosed by a programmer with access to the program's source code… A memory leak reduces the performance of the computer by reducing the amount of available memory. Eventually, in the worst case, too much of the available memory may become allocated and all or part of the system or device stops working correctly, the application fails, or the system slows down vastly…"
-
-See also: [DisposeSentinel](https://docs.unity3d.com/Manual/JobSystemNativeContainer.html) - see "NativeContainer and the safety system."
-
-
-## Multicore
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Multi-core_processor): "A multi-core processor is a single computing component with two or more independent processing units called cores, which read and execute program instructions. The instructions are ordinary CPU instructions... but the single processor can run multiple instructions on separate cores at the same time, increasing overall speed for programs amenable to parallel computing."
-
-See also: [logical CPU](#logical_cpu).
-
-
-## Performant
-
-> [Wiktionary](https://en.wiktionary.org/wiki/performant): "Capable of achieving an adequate or excellent level of performance or efficiency."
-
-> [Techopedia](https://www.techopedia.com/definition/28231/performant): "Performant means that something is working correctly or well enough to be considered functional. In a technology context, this term is believed to have originated with programmers seeking a concise word to express that a system or program will work, but may not yet be optimal. Performant may have come from a portmanteau of performance and conformant - as in working and meeting existing standards."
-
-> [Stackoverflow](https://stackoverflow.com/questions/2112743/what-does-performant-software-actually-mean): "Performant is a word that was made up by software developers to describe software that performs well, in whatever way you want to define performance."
-
-
-## SIMD
-
-SIMD stands for "Single Instruction Multiple Data".
-
-> [Wikipedia](https://en.wikipedia.org/wiki/SIMD): "SIMD… describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously. Thus, such machines exploit [data level parallelism](https://en.wikipedia.org/wiki/Data_parallelism), but not [concurrency](https://en.wikipedia.org/wiki/Concurrent_computing): there are simultaneous (parallel) computations, but only a single process (instruction) at a given moment… In other words, if the SIMD system works by loading up eight data points at once, the `add` operation being applied to the data will happen to all eight values at the same time.
-
-See also: [ParallelFor jobs](https://docs.unity3d.com/Manual/JobSystemParallelForJobs.html).
-
-
-## Unmanaged code
-
-Also known as "native" code.
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Managed_code): "...Unmanaged code refers to programs written in C, C++, and other languages that do not need a [common language] runtime [virtual machine] to execute."
-
-> [Stackoverflow](https://stackoverflow.com/questions/855756/difference-between-native-and-managed-code?answertab=votes#tab-top): "Native code is the code whose memory is not 'managed', as in, memory isn't freed for you (C++' delete and C's free, for instance), no [reference counting](https://en.wikipedia.org/wiki/Reference_counting), no [garbage collection](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science))."
-
-See also: [managed code](#managed_code).
-
-
-## Worker threads
-
-Also known as thread pooling.
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Thread_(computing)#Multithreading): "By moving such long-running tasks to a worker thread that runs concurrently with the main execution thread, it is possible for the application to remain responsive to user input while executing tasks in the background."
-
-> [Wikipedia](https://en.wikipedia.org/wiki/Thread_pool): "…A thread pool maintains multiple threads waiting for tasks to be allocated for concurrent execution by the supervising program. By maintaining a pool of threads, the model increases performance and avoids latency in execution due to frequent creation and destruction of threads for short-lived tasks. The number of available threads is tuned to the computing resources available to the program, such as parallel processors, cores, memory, and network sockets."
-
-See also: [multithreading](https://docs.unity3d.com/Manual/JobSystemMultithreading.html), [multicore](#multicore), and [main thread](#main_thread).
diff --git a/ECSSamples/Documentation/images/ECS_Infographic.png b/ECSSamples/Documentation/images/ECS_Infographic.png
deleted file mode 100644
index f23617ef6..000000000
Binary files a/ECSSamples/Documentation/images/ECS_Infographic.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/ECS_hello_AddComponent.png b/ECSSamples/Documentation/images/ECS_hello_AddComponent.png
deleted file mode 100644
index b2998e15f..000000000
Binary files a/ECSSamples/Documentation/images/ECS_hello_AddComponent.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_basic.png b/ECSSamples/Documentation/images/ECS_hello_entity_debugger_basic.png
deleted file mode 100644
index 50db607b4..000000000
Binary files a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_basic.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_rotation.png b/ECSSamples/Documentation/images/ECS_hello_entity_debugger_rotation.png
deleted file mode 100644
index 645f1e365..000000000
Binary files a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_rotation.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_transform.png b/ECSSamples/Documentation/images/ECS_hello_entity_debugger_transform.png
deleted file mode 100644
index ef80c327c..000000000
Binary files a/ECSSamples/Documentation/images/ECS_hello_entity_debugger_transform.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/dots_helloworld_scene.png b/ECSSamples/Documentation/images/dots_helloworld_scene.png
deleted file mode 100644
index c7010e830..000000000
Binary files a/ECSSamples/Documentation/images/dots_helloworld_scene.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/entitydebugger-details.png b/ECSSamples/Documentation/images/entitydebugger-details.png
deleted file mode 100644
index 4bee83c7e..000000000
Binary files a/ECSSamples/Documentation/images/entitydebugger-details.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/entitydebugger.png b/ECSSamples/Documentation/images/entitydebugger.png
deleted file mode 100644
index c453f8bf6..000000000
Binary files a/ECSSamples/Documentation/images/entitydebugger.png and /dev/null differ
diff --git a/ECSSamples/Documentation/images/example.png b/ECSSamples/Documentation/images/example.png
deleted file mode 100644
index 216328df2..000000000
Binary files a/ECSSamples/Documentation/images/example.png and /dev/null differ
diff --git a/ECSSamples/Documentation/index.md b/ECSSamples/Documentation/index.md
deleted file mode 100644
index 02edc3b6a..000000000
--- a/ECSSamples/Documentation/index.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# Unity Data-Oriented Tech Stack
-
-This documentation covers the three main aspects of Unity's [Data-Oriented Tech Stack](Readme.md) (DOTS): Unity Entity-Component-System (ECS) as covered by the Entities package, Unity C# Job System, and the Unity Burst compiler. As Entities is the primary package involved in DOTS, it is described below:
-
-# About Entities
-
-Use the Unity Entities package to use [Entity-component-systems](https://en.wikipedia.org/wiki/Entity%E2%80%93component%E2%80%93system) (ECS) in your game.
-
-# Installing Entities
-
-To install this package, follow the instructions in the [Package Manager documentation](https://docs.unity3d.com/Packages/com.unity.package-manager-ui@latest/index.html).
-
-> **Note**: While this package is in preview, the Package Manager needs to be configured to show **Preview Packages**. (Under the **Advanced** drop-down menu, enable **Show preview packages**.) Then search for the Entities package.
-
-# Using Entities
-
-Components hold data, systems process that data. Entities refer to individual instances of component data. For more information, see the [ECS Manual](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/manual/index.html) or the [Entities API](https://docs.unity3d.com/Packages/com.unity.entities@latest?preview=1&subfolder=/api/Unity.Entities.html).
-
-## Entity Debugger
-
-You can look at currently running systems and filter entities by archetype in the Entity Debugger window:
-
-
-
-The Entity Debugger also displays various information about the underlying ECS data layout: [understand the information displayed in Entity Debugger](entity_debugger_overview.md).
-
-# Technical details
-## Requirements
-
-This version of Entities is compatible with the following versions of the Unity __Editor__:
-
-* 2019.3.0b11 and later
-
-
-## Samples contents
-
-The following table indicates the sample folders in the package where you can find useful resources:
-
-|Location|Description|
-|---|---|
-|`Samples/Assets/HelloCube`|Contains a set of basic samples for getting started with the key concepts and API's of entity-component-systems.|
-|`Samples/Assets/Advanced`|Contains the boid simulation for understanding more complex simulations|
diff --git a/ECSSamples/Documentation/is_ecs_for_you.md b/ECSSamples/Documentation/is_ecs_for_you.md
deleted file mode 100644
index db72ff8cb..000000000
--- a/ECSSamples/Documentation/is_ecs_for_you.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Is the Entity Component System for you?
-
-The Entity Component System is in preview. It is not recommended for production.
-
-At the moment there are two good reasons to use it.
-
-### You want to experiment
-
-This is exciting new technology and the promise of massive performance boosts is seducing. Try it out. Give us your feedback. We would love to talk to you on the forums.
-
-### You are trying to build a game that simply can't be done without the Entity Component system
-
-We'd love to know more about your game. Please do feel free to post on the forum about your game what you are trying to achieve and what you think the Entity Component System gives you that can't be achieved otherwise.
-
-
-## Trying the Entity Component System
-
-You've heard that ECS not only improves performance, but helps you write cleaner, clearer, and more maintainable code. You'd like to see how it works for you in practice.
-This is a fun scenario, because you get to write straightforward code from the beginning.
-
diff --git a/ECSSamples/Documentation/tiny_mscorlib_changes.md b/ECSSamples/Documentation/tiny_mscorlib_changes.md
deleted file mode 100644
index 21d56d962..000000000
--- a/ECSSamples/Documentation/tiny_mscorlib_changes.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# How to modify the Tiny mscorlib source code
-
-The code for mscorlib used with Tiny lives in the [IL2CPP
-repo](https://github.cds.internal.unity3d.com/unity/il2cpp/).
-
-To modify it, first clone the full IL2CPP repo locally. Then modify the code in the
-Il2CppCustomLocation.bee.cs file (part of the Bee package) to point to the location
-of the locally cloned IL2CPP repo.
-
-Next, modify the mscorlib code in that IL2CPP clone, and run `perl build.pl` from
-the IL2CPP root directory. Your changes will be used in the DOTS/Tiny clone now!
-
-To commit changes to the mscorlib code, open a PR to the IL2CPP repo. Once that PR
-lands, the IL2CPP package will need to be updated in the DOTS repo.
diff --git a/ECSSamples/Packages/manifest.json b/ECSSamples/Packages/manifest.json
index 31a7b454c..103361f8a 100644
--- a/ECSSamples/Packages/manifest.json
+++ b/ECSSamples/Packages/manifest.json
@@ -5,14 +5,14 @@
"com.unity.coding": "0.1.0-preview.17",
"com.unity.ide.rider": "2.0.7",
"com.unity.ide.visualstudio": "2.0.2",
- "com.unity.ide.vscode": "1.2.1",
+ "com.unity.ide.vscode": "1.2.2",
"com.unity.performance.profile-analyzer": "1.0.3",
- "com.unity.platforms.android": "0.9.0-preview.9",
- "com.unity.platforms.ios": "0.9.0-preview.9",
- "com.unity.platforms.linux": "0.9.0-preview.9",
- "com.unity.platforms.macos": "0.9.0-preview.9",
- "com.unity.platforms.web": "0.9.0-preview.9",
- "com.unity.platforms.windows": "0.9.0-preview.9",
+ "com.unity.platforms.android": "0.10.0-preview.10",
+ "com.unity.platforms.ios": "0.10.0-preview.10",
+ "com.unity.platforms.linux": "0.10.0-preview.10",
+ "com.unity.platforms.macos": "0.10.0-preview.10",
+ "com.unity.platforms.web": "0.10.0-preview.10",
+ "com.unity.platforms.windows": "0.10.0-preview.10",
"com.unity.test-framework": "1.1.16",
"com.unity.ugui": "1.0.0",
"com.unity.modules.ai": "1.0.0",
@@ -46,13 +46,13 @@
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0",
- "com.unity.rendering.hybrid": "0.10.0-preview.21"
+ "com.unity.rendering.hybrid": "0.11.0-preview.42",
+ "com.unity.entities": "0.17.0-preview.41",
+ "com.unity.collections": "0.15.0-preview.21",
+ "com.unity.jobs": "0.8.0-preview.23"
},
"enableLockFile": true,
"testables": [
- "com.unity.collections",
- "com.unity.entities",
- "com.unity.jobs",
- "com.unity.rendering.hybrid"
+ "com.unity.entities"
]
}
diff --git a/ECSSamples/Packages/packages-lock.json b/ECSSamples/Packages/packages-lock.json
index d6edfb78a..8d20d5406 100644
--- a/ECSSamples/Packages/packages-lock.json
+++ b/ECSSamples/Packages/packages-lock.json
@@ -13,8 +13,8 @@
"dependencies": {}
},
"com.unity.burst": {
- "version": "1.3.7",
- "depth": 2,
+ "version": "1.4.1",
+ "depth": 1,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1"
@@ -31,31 +31,31 @@
"url": "https://packages.unity.com"
},
"com.unity.collections": {
- "version": "0.14.0-preview.16",
- "depth": 2,
+ "version": "0.15.0-preview.21",
+ "depth": 0,
"source": "registry",
"dependencies": {
"com.unity.test-framework.performance": "2.3.1-preview",
- "com.unity.burst": "1.3.7"
+ "com.unity.burst": "1.4.1"
},
"url": "https://packages.unity.com"
},
"com.unity.entities": {
- "version": "0.16.0-preview.21",
- "depth": 1,
+ "version": "0.17.0-preview.41",
+ "depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.burst": "1.3.7",
+ "com.unity.burst": "1.4.1",
"com.unity.properties": "1.5.0-preview",
"com.unity.serialization": "1.5.0-preview",
- "com.unity.collections": "0.14.0-preview.16",
+ "com.unity.collections": "0.15.0-preview.21",
"com.unity.mathematics": "1.2.1",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.test-framework.performance": "2.3.1-preview",
"com.unity.nuget.mono-cecil": "0.1.6-preview.2",
- "com.unity.jobs": "0.7.0-preview.17",
+ "com.unity.jobs": "0.8.0-preview.23",
"com.unity.scriptablebuildpipeline": "1.9.0",
- "com.unity.platforms": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
@@ -83,32 +83,32 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
- "version": "1.2.1",
+ "version": "1.2.2",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.jobs": {
- "version": "0.7.0-preview.17",
- "depth": 2,
+ "version": "0.8.0-preview.23",
+ "depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.collections": "0.14.0-preview.16",
+ "com.unity.collections": "0.15.0-preview.21",
"com.unity.mathematics": "1.2.1"
},
"url": "https://packages.unity.com"
},
"com.unity.mathematics": {
"version": "1.2.1",
- "depth": 2,
+ "depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.nuget.mono-cecil": {
"version": "0.1.6-preview.2",
- "depth": 2,
+ "depth": 1,
"source": "registry",
"dependencies": {
"nuget.mono-cecil": "0.1.6-preview"
@@ -117,7 +117,7 @@
},
"com.unity.nuget.newtonsoft-json": {
"version": "2.0.0-preview",
- "depth": 3,
+ "depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
@@ -130,130 +130,130 @@
"url": "https://packages.unity.com"
},
"com.unity.platforms": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 1,
"source": "registry",
"dependencies": {
- "com.unity.properties": "1.5.0-preview",
- "com.unity.properties.ui": "1.5.0-preview",
+ "com.unity.properties": "1.6.0-preview",
+ "com.unity.properties.ui": "1.6.2-preview.1",
"com.unity.scriptablebuildpipeline": "1.6.4-preview",
- "com.unity.serialization": "1.5.0-preview"
+ "com.unity.serialization": "1.6.2-preview"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.android": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.desktop": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 1,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.ios": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.linux": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9",
- "com.unity.platforms.desktop": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10",
+ "com.unity.platforms.desktop": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.macos": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9",
- "com.unity.platforms.desktop": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10",
+ "com.unity.platforms.desktop": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.web": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.platforms.windows": {
- "version": "0.9.0-preview.9",
+ "version": "0.10.0-preview.10",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.platforms": "0.9.0-preview.9",
- "com.unity.platforms.desktop": "0.9.0-preview.9"
+ "com.unity.platforms": "0.10.0-preview.10",
+ "com.unity.platforms.desktop": "0.10.0-preview.10"
},
"url": "https://packages.unity.com"
},
"com.unity.properties": {
- "version": "1.5.0-preview",
+ "version": "1.6.0-preview",
"depth": 2,
"source": "registry",
"dependencies": {
"com.unity.nuget.mono-cecil": "0.1.6-preview.2",
- "com.unity.test-framework.performance": "2.0.8-preview"
+ "com.unity.test-framework.performance": "2.3.1-preview"
},
"url": "https://packages.unity.com"
},
"com.unity.properties.ui": {
- "version": "1.5.0-preview",
+ "version": "1.6.2-preview.1",
"depth": 2,
"source": "registry",
"dependencies": {
- "com.unity.properties": "1.5.0-preview",
- "com.unity.serialization": "1.5.0-preview",
+ "com.unity.properties": "1.6.0-preview",
+ "com.unity.serialization": "1.6.1-preview",
"com.unity.modules.uielements": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.rendering.hybrid": {
- "version": "0.10.0-preview.21",
+ "version": "0.11.0-preview.42",
"depth": 0,
"source": "registry",
"dependencies": {
- "com.unity.entities": "0.16.0-preview.21"
+ "com.unity.entities": "0.17.0-preview.41"
},
"url": "https://packages.unity.com"
},
"com.unity.scriptablebuildpipeline": {
"version": "1.9.0",
- "depth": 2,
+ "depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.serialization": {
- "version": "1.5.0-preview",
+ "version": "1.6.2-preview",
"depth": 2,
"source": "registry",
"dependencies": {
- "com.unity.collections": "0.8.0-preview.5",
- "com.unity.burst": "1.3.0-preview.12",
- "com.unity.jobs": "0.2.9-preview.15",
- "com.unity.properties": "1.4.3-preview",
- "com.unity.test-framework.performance": "2.0.8-preview"
+ "com.unity.collections": "0.12.0-preview.13",
+ "com.unity.burst": "1.3.5",
+ "com.unity.jobs": "0.5.0-preview.14",
+ "com.unity.properties": "1.6.0-preview",
+ "com.unity.test-framework.performance": "2.3.1-preview"
},
"url": "https://packages.unity.com"
},
@@ -270,7 +270,7 @@
},
"com.unity.test-framework.performance": {
"version": "2.3.1-preview",
- "depth": 2,
+ "depth": 1,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.0",
@@ -283,7 +283,8 @@
"depth": 0,
"source": "builtin",
"dependencies": {
- "com.unity.modules.ui": "1.0.0"
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0"
}
},
"nuget.castle-core": {
@@ -295,7 +296,7 @@
},
"nuget.mono-cecil": {
"version": "0.1.6-preview",
- "depth": 3,
+ "depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
diff --git a/ECSSamples/ProjectSettings/PackageManagerSettings.asset b/ECSSamples/ProjectSettings/PackageManagerSettings.asset
new file mode 100644
index 000000000..be4a7974e
--- /dev/null
+++ b/ECSSamples/ProjectSettings/PackageManagerSettings.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+ m_ObjectHideFlags: 61
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_EnablePreviewPackages: 0
+ m_EnablePackageDependencies: 0
+ m_AdvancedSettingsExpanded: 1
+ m_ScopedRegistriesSettingsExpanded: 1
+ oneTimeWarningShown: 0
+ m_Registries:
+ - m_Id: main
+ m_Name:
+ m_Url: https://packages.unity.com
+ m_Scopes: []
+ m_IsDefault: 1
+ m_Capabilities: 7
+ m_UserSelectedRegistryName:
+ m_UserAddingNewScopedRegistry: 0
+ m_RegistryInfoDraft:
+ m_ErrorMessage:
+ m_Original:
+ m_Id:
+ m_Name:
+ m_Url:
+ m_Scopes: []
+ m_IsDefault: 0
+ m_Capabilities: 0
+ m_Modified: 0
+ m_Name:
+ m_Url:
+ m_Scopes:
+ -
+ m_SelectedScopeIndex: 0
diff --git a/ECSSamples/ProjectSettings/ProjectSettings.asset b/ECSSamples/ProjectSettings/ProjectSettings.asset
index e00cd9847..0e3aaf93d 100644
--- a/ECSSamples/ProjectSettings/ProjectSettings.asset
+++ b/ECSSamples/ProjectSettings/ProjectSettings.asset
@@ -525,7 +525,7 @@ PlayerSettings:
ps4UseAudio3dBackend: 0
ps4UseLowGarlicFragmentationMode: 1
ps4SocialScreenEnabled: 0
- ps4ScriptOptimizationLevel: 3
+ ps4ScriptOptimizationLevel: 0
ps4Audio3dVirtualSpeakerCount: 14
ps4attribCpuUsage: 0
ps4PatchPkgPath:
diff --git a/ECSSamples/ProjectSettings/ProjectVersion.txt b/ECSSamples/ProjectSettings/ProjectVersion.txt
index 8f53c026c..3e9265082 100644
--- a/ECSSamples/ProjectSettings/ProjectVersion.txt
+++ b/ECSSamples/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2020.1.0b15
-m_EditorVersionWithRevision: 2020.1.0b15 (40d9420e7de8)
+m_EditorVersion: 2020.1.9f1
+m_EditorVersionWithRevision: 2020.1.9f1 (145f5172610f)
diff --git a/ECSSamples/ReleaseNotes.md b/ECSSamples/ReleaseNotes.md
index 68199d753..b73b8bb4d 100644
--- a/ECSSamples/ReleaseNotes.md
+++ b/ECSSamples/ReleaseNotes.md
@@ -1,3 +1,15 @@
+# Samples Version 35
+
+## Changes
+
+* Updated minimum Unity Editor version to `2020.1.9f1`.
+
+# Samples Version 34
+
+## Changes
+
+* Updated minimum Unity Editor version to `2020.1.2f1`.
+
# Samples Version 33
## Changes
@@ -5,7 +17,8 @@
* Updated minimum Unity Editor version to `2020.1.0b15`.
* The `FixedTimestepWorkaround` sample now demonstrates the use of `FixedRateUtils` to control a `ComponentSystemGroup`'s update frequency.
* Since this no longer relies on a `MonoBehaviour.FixedUpdate()`-based workaround, the sample has been renamed to `FixedTimestepSystemUpdate`.
-
+* Improvements and fixes for the `Fixed Timestep` Sample.
+
# Samples Version 32
diff --git a/README.md b/README.md
index 94bc74fd4..3e0c41b17 100644
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ Burst is a new LLVM-based, math-aware backend compiler. It compiles C# jobs into
## Installation guide for new projects
-1. Create or open a project with the Unity Editor (`2020.1.0b15` or later to use the latest DOTS packages).
+1. Create or open a project with the Unity Editor (`2020.1.9f1` or later to use the latest DOTS packages).
2. Open the Package Manager (menu: **Window** > **Package Manager**).
3. Click the small gear icon on the upper right and select the **Advanced Project Settings** menu item.
4. Check **Enable Preview Packages** in the Project Settings window.