public void EntityCreationOfMultipleEntities() { ECSManager manager = ECSManagerFactory.CreateECSManager(); List <Entity> entities = new List <Entity>(128); for (int i = 0; i < 128; i++) { Entity newEntity = manager.CreateEntity(); entities.Add(newEntity); } manager.Update(new GameTime()); for (int i = 0; i < 128; i++) { Entity newEntity = manager.CreateEntity(); entities.Add(newEntity); Entity entityForDestroy = entities[0]; entities.RemoveAt(0); entityForDestroy.Destroy(); manager.Update(new GameTime()); } }
public void EntityCreationAndRetrievingBasicComponent() { ECSManager manager = ECSManagerFactory.CreateECSManager(); Entity newEntity = manager.CreateEntity(); Assert.IsNotNull(newEntity.GetComponentOrDefault <Transform2DComponent>()); Assert.IsNotNull(newEntity.Transform); }
private void Start() { uiLevelController = FindObjectOfType <UILevelController>(); if (uiLevelController == null) { Debug.LogError($"{nameof(UILevelController)} not found in the scene"); } ecsManager = FindObjectOfType <ECSManager>(); navigation = FindObjectOfType <NavigationController>(); ecsManager.PerformLevelSetUp(); }
static void Main(string[] args) { ECSManager ecsm = new ECSManager(); //add systems ecsm.AddSystem <PersonInitSystem>(); ecsm.AddSystem <AgeIncrementSystem>(); ecsm.AddSystem <StateInitializationSystem>(); while (true) { ecsm.Update(); } }
protected override void OnUpdate() { Entities.ForEach((ref Translation transform) => { ECSManager manager = ECSManager.GetECSManager(); Graphics.DrawMesh( manager.mesh, transform.Value, Quaternion.identity, manager.material, 0 ); }); }
internal override void ValidateAndExecute(ECSEntity ecsEntity, ECSManager manager) { if (Subtractive != null && Subtractive.Any(type => manager.HasComponent(ecsEntity, type))) { return; } if (!manager.HasComponent <TComponent1>(ecsEntity)) { return; } TComponent1 component1 = manager.GetComponent <TComponent1>(ecsEntity); Execute(ecsEntity, ref component1); }
static void Main(string[] args) { // fisrt of all, perform scanning of assemblies for factory ECSManagerFactory.ScanAssemblies(AppDomain.CurrentDomain.GetAssemblies()); // after that, we can create ECS Manager ECSManager manager = ECSManagerFactory.CreateECSManager(); // let's create first entity! Entity firstEntity = manager.CreateEntity(); // now let's get transform component and move entity a little bit Transform2DComponent component = firstEntity.GetComponentOrDefault <Transform2DComponent>(); component.Position += new Vector2(10, 10); // attach a new component and change its values TestComponent newComponent = firstEntity.AttachComponent <TestComponent>(); newComponent.Variable1 += 10; GameTime testGameTime = new GameTime(TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(100)); // here is the call of Update() // All routine, connected to creation of entities, attaching of components and etc. is performed within Update() manager.Update(testGameTime); // it is better to call Draw, isn't it? manager.Draw(testGameTime); // here is the one more call of Update() // Now all components are registered and can be processed in Systems manager.Update(testGameTime); // Now it is time to shutdown ECS manager - lets perform unloading of content manager.UnloadContent(); }
public RenderSystem() { ecs = ECSManager.Instance; world = World.Instance; }
public CollisionWithEntityResolutionSystem() { world = World.Instance; ecs = ECSManager.Instance; }
public void Setup() { ecsManager = new ECSManager(new ComponentAssignCreator()); ecsManager.Register <AddValueProcessing>(); entitySystems = ecsManager.Init(); }
void Awake() { instance = this; }
public void Setup() { ecsManager = new ECSManager(new ComponentAssignCreator()); }
public InitializationSystem() { ecs = ECSManager.Instance; world = World.Instance; }
public void InitializeECSScope(Assembly assembly) { ECSManager = new ECSManager(assembly); }
private static void Main(string[] args) { Game.CreateWindow(800, 600, "LELEngine"); // Load Default Scene Game.Mono.LoadDefaultScene(); // Setup scene for debug GameObject cam = Game.Mono.ActiveScene.CreateGameObject("MainCamera"); GameObject CameraRig = Game.Mono.ActiveScene.CreateGameObject("CameraRig"); GameObject lightRig = Game.Mono.ActiveScene.CreateGameObject("LightRig"); GameObject light = Game.Mono.ActiveScene.CreateGameObject("LDirectional"); // Setup light light.transform.SetParent(lightRig.transform); light.transform.localRotation = Quaternion.Identity; light.transform.localPosition = new Vector3(0, 0, -200); light.transform.scale = Vector3.One * 10; light.AddComponent <DirectionalLight>(); lightRig.transform.position = Vector3.Zero; lightRig.transform.rotation = QuaternionHelper.Euler(10, 40, 0); // Setup sun sphere MeshRenderer m = light.AddComponent <MeshRenderer>(); m.SetMaterial("Sun.material"); m.SetMesh("sphere.obj"); // Setup camera CameraRig.AddComponent <CameraController>(); Camera c = cam.AddComponent <Camera>(); cam.transform.SetParent(CameraRig.transform); CameraRig.transform.position = Vector3.Zero; CameraRig.transform.rotation = QuaternionHelper.Euler(0, 180, 0); cam.transform.localPosition = new Vector3(0, 4, -15f); cam.transform.localRotation = Quaternion.Identity; c.FoV = 70; c.FarClip = 1000f; c.NearClip = 0.1f; // Setup lighting Lighting.Ambient.Color = Color4.LightGreen; Lighting.Ambient.Strength = 0.3f; Lighting.Directional.Color = Color4.AntiqueWhite; Lighting.Directional.Strength = 1f; Lighting.Specular.Strength = 1f; Lighting.Specular.Shine = 32f; foreach (GameObject go in Game.Mono.ActiveScene.SceneGameObjects) { if (go.Name == "Floor") { MeshRenderer mr = go.AddComponent <MeshRenderer>(); mr.SetMaterial("Cube.material"); mr.SetMesh("quad.obj"); mr.transform.rotation = QuaternionHelper.Euler(0, 0, 90); mr.transform.scale = Vector3.One * 500; mr.transform.position = new Vector3(0, -10, 10f); } } // Create ShipGraphics GameObject shipGraphics = Game.Mono.ActiveScene.CreateGameObject("ShipGraphics"); shipGraphics.transform.rotation = Quaternion.Identity; shipGraphics.transform.scale = Vector3.One * 5f; //Create ShipController GameObject shipController = Game.Mono.ActiveScene.CreateGameObject("ShipController"); shipController.transform.rotation = Quaternion.Identity; shipGraphics.transform.SetParent(shipController.transform); shipGraphics.transform.localPosition = Vector3.Zero; shipGraphics.transform.localRotation = QuaternionHelper.Euler(-90, 180, 0); MeshRenderer shipGraphicsMR = shipGraphics.AddComponent <MeshRenderer>(); shipGraphicsMR.SetMaterial("Axe.material"); shipGraphicsMR.SetMesh("axe.obj"); PlayerShipControl shipControllerPSC = shipController.AddComponent <PlayerShipControl>(); Game.Mono.InitializeECSScope(Assembly.GetExecutingAssembly()); ECSManager manager = Game.Mono.ECSManager; ECSEntity ecsEntity = manager.CreateEntity(); manager.SetComponent(ecsEntity, new FrameRateCounterComponent()); Game.Mono.Run(); // Main function is frozen until game window closes }
internal abstract void ValidateAndExecute(ECSEntity ecsEntity, ECSManager manager);
static Services() { ECS = new ECSManager(); ECS.AddContext <MainContext>(); EditorContext = new EditorContext(); }