Beispiel #1
0
        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());
            }
        }
Beispiel #2
0
        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();
    }
Beispiel #4
0
        static void Main(string[] args)
        {
            ECSManager ecsm = new ECSManager();

            //add systems
            ecsm.AddSystem <PersonInitSystem>();
            ecsm.AddSystem <AgeIncrementSystem>();
            ecsm.AddSystem <StateInitializationSystem>();

            while (true)
            {
                ecsm.Update();
            }
        }
Beispiel #5
0
    protected override void OnUpdate()
    {
        Entities.ForEach((ref Translation transform) => {
            ECSManager manager = ECSManager.GetECSManager();

            Graphics.DrawMesh(
                manager.mesh,
                transform.Value,
                Quaternion.identity,
                manager.material,
                0
                );
        });
    }
Beispiel #6
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);
        }
Beispiel #7
0
        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;
 }
Beispiel #9
0
 public CollisionWithEntityResolutionSystem()
 {
     world = World.Instance;
     ecs   = ECSManager.Instance;
 }
Beispiel #10
0
 public void Setup()
 {
     ecsManager = new ECSManager(new ComponentAssignCreator());
     ecsManager.Register <AddValueProcessing>();
     entitySystems = ecsManager.Init();
 }
Beispiel #11
0
 void Awake()
 {
     instance = this;
 }
 public void Setup()
 {
     ecsManager = new ECSManager(new ComponentAssignCreator());
 }
 public InitializationSystem()
 {
     ecs   = ECSManager.Instance;
     world = World.Instance;
 }
Beispiel #14
0
 public void InitializeECSScope(Assembly assembly)
 {
     ECSManager = new ECSManager(assembly);
 }
Beispiel #15
0
        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
        }
Beispiel #16
0
 internal abstract void ValidateAndExecute(ECSEntity ecsEntity, ECSManager manager);
Beispiel #17
0
 static Services()
 {
     ECS = new ECSManager();
     ECS.AddContext <MainContext>();
     EditorContext = new EditorContext();
 }