[Add] VContainer

This commit is contained in:
2026-04-07 04:51:37 +07:00
parent 76562726ec
commit 4f9b878775
193 changed files with 8036 additions and 0 deletions
@@ -0,0 +1,48 @@
#if VCONTAINER_ECS_INTEGRATION
using System;
using Unity.Entities;
using UnityEngine.LowLevel;
namespace VContainer.Unity
{
public sealed class WorldInstanceProvider : IInstanceProvider
{
readonly string name;
readonly Action<World> initialization;
public WorldInstanceProvider(string name, Action<World> initialization = null)
{
this.name = name;
this.initialization = initialization;
}
public object SpawnInstance(IObjectResolver resolver)
{
var world = new World(name);
if (initialization != null)
{
initialization(world);
}
else
{
#if UNITY_2022_2_OR_NEWER
world.CreateSystemManaged<InitializationSystemGroup>();
world.CreateSystemManaged<SimulationSystemGroup>();
world.CreateSystemManaged<PresentationSystemGroup>();
ScriptBehaviourUpdateOrder.RemoveWorldFromCurrentPlayerLoop(world);
ScriptBehaviourUpdateOrder.AppendWorldToCurrentPlayerLoop(world);
#else
world.CreateSystem<InitializationSystemGroup>();
world.CreateSystem<SimulationSystemGroup>();
world.CreateSystem<PresentationSystemGroup>();
ScriptBehaviourUpdateOrder.RemoveWorldFromCurrentPlayerLoop(world);
ScriptBehaviourUpdateOrder.AddWorldToCurrentPlayerLoop(world);
#endif
}
return world;
}
}
}
#endif