//protected override void StartSystems() //{ // this.BindAllSystemsWithinApplicationScope(); // this.StartAllBoundSystems(); //} protected override void ApplicationStarted() { defaultCollection = EntityCollectionManager.GetCollection(); var levelBlueprint = new LevelBlueprint(); var levelEntity = defaultCollection.CreateEntity(levelBlueprint); var player = defaultCollection.CreateEntity(new PlayerBlueprint(_gameConfiguration.StartingFoodPoints)); var playerView = player.GetComponent <ViewComponent>(); var playerComponent = player.GetComponent <PlayerComponent>(); var levelComponent = levelEntity.GetComponent <LevelComponent>(); levelComponent.Level.DistinctUntilChanged() .Subscribe(x => { var gameObject = playerView.View as GameObject; gameObject.transform.position = Vector3.zero; SetupLevel(levelComponent); }); EventSystem.Receive <PlayerKilledEvent>() .Delay(TimeSpan.FromSeconds(_gameConfiguration.IntroLength)) .Subscribe(x => { levelBlueprint.UpdateLevel(levelComponent, 1); playerComponent.Food.Value = _gameConfiguration.StartingFoodPoints; SetupLevel(levelComponent); }); }
protected override void ApplicationStarted() { _availableComponents = _groupFactory.GetComponentTypes .Select(x => Activator.CreateInstance(x) as IComponent) .ToArray(); _availableComponentTypeIds = Enumerable.Range(0, _availableComponents.Length - 1).ToArray(); var groups = _groupFactory.CreateTestGroups(10).ToArray(); var observableGroups = new List <IObservableGroup>(); foreach (var group in groups) { var newGroup = EntityCollectionManager.GetObservableGroup(group); observableGroups.Add(newGroup); } var firstRun = ProcessEntities(ProcessCount); var secondRun = ProcessEntities(ProcessCount); var thirdRun = ProcessEntities(ProcessCount); Console.WriteLine($"Processing with {_availableComponents.Length} components and {observableGroups.Count} Observable groups"); Console.WriteLine($"Finished In: {(firstRun + secondRun + thirdRun).TotalSeconds}s"); Console.WriteLine($"First Took: {firstRun.TotalSeconds}s"); Console.WriteLine($"Second Took: {secondRun.TotalSeconds}s"); Console.WriteLine($"Third Took: {thirdRun.TotalSeconds}s"); }
protected virtual void RegisterModules() { // DependencyContainer.LoadModule<FrameworkModule>(); var mess = new EcsRx.Reactive.MessageBroker(); // DependencyContainer.Resolve<ISystemExecutor>(); EventSystem = new EventSystem(mess);// DependencyContainer.Resolve<IEventSystem>(); var factory = new Entities.DefaultEntityFactory(EventSystem); var factory2 = new DefaultEntityCollectionFactory(factory, EventSystem); var ob = new Groups.Observable.DefaultObservableObservableGroupFactory(EventSystem); EntityCollectionManager = new EntityCollectionManager(EventSystem, factory2, ob); var handler = new List <IConventionalSystemHandler>(); handler.Add(new ReactToEntitySystemHandler(EntityCollectionManager)); handler.Add(new ReactToGroupSystemHandler(EntityCollectionManager)); handler.Add(new ReactToDataSystemHandler(EntityCollectionManager)); handler.Add(new ManualSystemHandler(EntityCollectionManager)); handler.Add(new SetupSystemHandler(EntityCollectionManager)); handler.Add(new TeardownSystemHandler(EntityCollectionManager)); // var def = new EntityCollection(); // DependencyContainer.Resolve<IEntityCollectionManager>(); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); defaultPool.CreateEntity(new PlayerBlueprint("Player One")); defaultPool.CreateEntity(new PlayerBlueprint("Player Two", 150.0f)); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); var viewEntity = defaultPool.CreateEntity(); viewEntity.AddComponents(new CustomViewComponent(), new PlayerControlledComponent(), new CameraFollowsComponent()); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); entity.AddComponent <SayHelloWorldComponent>(); }
protected override void ApplicationStarted() { _availableComponentTypeIds = Enumerable.Range(0, 20).ToArray(); var componentNamespace = typeof(Component1).Namespace; _availableComponents = _groupFactory.GetComponentTypes .Where(x => x.Namespace == componentNamespace) .Select(x => Activator.CreateInstance(x) as IComponent) .ToArray(); var groups = _groupFactory.CreateTestGroups().ToArray(); foreach (var group in groups) { EntityCollectionManager.GetObservableGroup(group); } var firstRun = ProcessEntities(10000); var secondRun = ProcessEntities(10000); var thirdRun = ProcessEntities(10000); Console.WriteLine($"Finished In: {(firstRun + secondRun + thirdRun).TotalSeconds}s"); Console.WriteLine($"First Took: {firstRun.TotalSeconds}s"); Console.WriteLine($"Second Took: {secondRun.TotalSeconds}s"); Console.WriteLine($"Third Took: {thirdRun.TotalSeconds}s"); }
protected override void ApplicationStarted() { _componentTypeLookup = Container.Resolve <IComponentTypeLookup>(); _componentDatabase = Container.Resolve <IComponentDatabase>(); _batchBuilderFactory = Container.Resolve <IBatchBuilderFactory>(); _referenceBatchBuilderFactory = Container.Resolve <IReferenceBatchBuilderFactory>(); _collection = EntityCollectionManager.GetCollection(); ClassComponent1TypeId = _componentTypeLookup.GetComponentType(typeof(ClassComponent)); ClassComponent2TypeId = _componentTypeLookup.GetComponentType(typeof(ClassComponent2)); StructComponent1TypeId = _componentTypeLookup.GetComponentType(typeof(StructComponent)); StructComponent2TypeId = _componentTypeLookup.GetComponentType(typeof(StructComponent2)); var name = GetType().Name; Console.WriteLine($"{name} - {Description}"); var timer = Stopwatch.StartNew(); SetupEntities(); timer.Stop(); Console.WriteLine($"{name} - Setting up {EntityCount} entities in {timer.ElapsedMilliseconds}ms"); timer.Reset(); timer.Start(); for (var update = 0; update < SimulatedUpdates; update++) { RunProcess(); } timer.Stop(); var totalProcessTime = TimeSpan.FromMilliseconds(timer.ElapsedMilliseconds); Console.WriteLine($"{name} - Simulating {SimulatedUpdates} updates - Processing {EntityCount} entities in {totalProcessTime.TotalMilliseconds}ms"); Console.WriteLine(); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); entity.AddComponents(new ViewComponent()); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); _enemy = defaultPool.CreateEntity(new EnemyBlueprint(100)); HandleInput(); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); var existingGameObject = GameObject.Find("ExistingGameObject"); existingGameObject.LinkEntity(entity, defaultPool); }
protected override void ApplicationStarted() { var collection = EntityCollectionManager.GetCollection(); for (var i = 0; i < _cubeCount; i++) { var viewEntity = collection.CreateEntity(); viewEntity.AddComponents(new ViewComponent(), new RandomColorComponent()); } }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); // create 5k entities for (var i = 0; i < 4000; i++) { var entity = defaultPool.CreateEntity(); entity.AddComponents(new Component1(), new Component2(), new Component3()); } }
protected override void ApplicationStarted() { var collection = EntityCollectionManager.GetCollection(); var entity = collection.CreateEntity(); var helloComponent = new SayHelloComponent { Name = "Bob" }; entity.AddComponent(helloComponent); }
protected override void ApplicationStarted() { var blueprint = new MoveableBlueprint(); var defaultPool = EntityCollectionManager.GetCollection(); for (var i = 0; i < _entityCount; i++) { defaultPool.CreateEntity(blueprint); } HandleInput(); }
public void Setup(IEntity entity) { var gameBoardEntity = EntityCollectionManager.GetEntitiesFor(_gameBoardGroup).First(); var gameBoardComponent = gameBoardEntity.GetComponent <GameBoardComponent>(); var viewComponent = entity.GetGameObject(); var randomlyPlacedComponent = entity.GetComponent <RandomlyPlacedComponent>(); var randomPosition = gameBoardComponent.OpenTiles.TakeRandom(); randomlyPlacedComponent.RandomPosition = randomPosition; viewComponent.transform.localPosition = randomPosition; gameBoardComponent.OpenTiles.Remove(randomPosition); }
public void SetupSystem(ISystem system) { var disposer = new CompositeDisposable(); Subscriptions.Add(system, disposer); var castSystem = (ITeardownSystem)system; var accessor = EntityCollectionManager.GetObservableGroup(system.Group); disposer.Add( accessor.EntityRemoved.Subscribe(castSystem.Teardown) ); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); var entity = defaultPool.CreateEntity(); var canTalkComponent = new CanTalkComponent { Message = "Hello world" }; entity.AddComponents(canTalkComponent); HandleInput(); }
protected override void ApplicationStarted() { var defaultPool = EntityCollectionManager.GetCollection(); defaultPool.CreateEntity(new CharacterBlueprint("Bob", 200)); defaultPool.CreateEntity(new CharacterBlueprint("Tom", 150)); defaultPool.CreateEntity(new CharacterBlueprint("Rolf", 150)); defaultPool.CreateEntity(new CharacterBlueprint("Mez", 100)); defaultPool.CreateEntity(new CharacterBlueprint("TP", 1000)); defaultPool.CreateEntity(new CharacterBlueprint("MasterChief", 100)); defaultPool.CreateEntity(new CharacterBlueprint("Weakling", 20)); HandleInput(); }
protected override void ApplicationStarted() { var entityCollection = EntityCollectionManager.GetCollection(); var cubeEntity = entityCollection.CreateEntity(); cubeEntity.AddComponent <ViewComponent>(); cubeEntity.AddComponent <CubeComponent>(); var sphereEntity = entityCollection.CreateEntity(); sphereEntity.AddComponent <ViewComponent>(); sphereEntity.AddComponent <SphereComponent>(); }
protected override void ApplicationStarted() { _collection = EntityCollectionManager.GetCollection(); _system = new ExampleReactToGroupSystem(); for (var i = 0; i < EntityCount; i++) { var entity = _collection.CreateEntity(); entity.AddComponents(new SimpleReadComponent(), new SimpleWriteComponent()); } RunSingleThread(); RunMultiThreaded(); }
protected override void ApplicationStarted() { var collection = EntityCollectionManager.GetCollection(); for (var i = 0; i < _cubeCount; i++) { var viewEntity = collection.CreateEntity(); viewEntity.AddComponents(new ViewComponent(), new RandomColorComponent()); } var group = EntityCollectionManager.GetObservableGroup(new Group(typeof(ViewComponent), typeof(RandomColorComponent))); Debug.Log($"There are {group.Count} entities out of {collection.Count} matching"); }
protected override void ApplicationStarted() { Observable.Start(() => { var defaultPool = EntityCollectionManager.GetCollection(); // create 5k entities for (var i = 0; i < 50000; i++) { var entity = defaultPool.CreateEntity(); entity.AddComponents(new Component1(), new Component2(), new Component3()); } }, EcsScheduler.EventLoopScheduler); }
protected override void ApplicationStarted() { var collection = EntityCollectionManager.GetCollection(); var stopwatch = new Stopwatch(); stopwatch.Start(); for (var i = 0; i < EntityCount; i++) { var entity = collection.CreateEntity(); entity.AddComponents(new SimpleReadComponent(), new SimpleWriteComponent()); } stopwatch.Stop(); Console.WriteLine($"Finished In: {stopwatch.ElapsedMilliseconds}ms"); }
protected override IDependencyContainer DependencyContainer => new NinjectDependencyContainer();//throw new NotImplementedException(); protected override void ApplicationStarted() { RegisterAllBoundSystems(); var defaultPool = EntityCollectionManager.GetCollection(); var _enemy = defaultPool.CreateEntity(); _enemy.AddComponent <mjsg.CS_Script>(); ReadAllSettings(); Console.Title = ConfigurationManager.AppSettings["Name"]; //LogManager.Configuration = new XmlLoggingConfiguration("NLog.config"); //// var config = LogManager.Configuration;// new LoggingConfiguration(); //var consoleTarget = new ColoredConsoleTarget("target12") //{ // Layout = @"${date:format=HH\:mm\:ss} ${level} ${message} ${exception}" //}; //LogManager.Configuration.AddTarget(consoleTarget); ////var fileTarget = new FileTarget("target2") ////{ //// FileName = "${basedir}/file.txt", //// Layout = "${longdate} ${level} ${message} ${exception}" ////}; ////config.AddTarget(fileTarget); ////config.AddRuleForOneLevel(LogLevel.Error, fileTarget); // only errors to file //LogManager.Configuration.AddRuleForAllLevels(consoleTarget); // all to console ////LogManager.Configuration = config; //Logger logger = LogManager.GetLogger("Name.Space.Class2"); //logger.Trace("trace log message"); //logger.Debug("debug log message"); //logger.Info("info log message"); //logger.Warn("warn log message"); //logger.Error(CharFormat); //logger.Fatal(fas); // TNet.Log.TraceLog.WriteError("fafa"); TNet.Log.TraceLog.WriteInfo(CharFormat); ConsoleColor currentForeColor = Console.BackgroundColor; // SetColor(ConsoleColor.Cyan); // SetColor(currentForeColor); }
public void SetupSystem(ISystem system) { var entitySubscriptions = new Dictionary <int, IDisposable>(); EntitySubscriptions.Add(system, entitySubscriptions); var entityChangeSubscriptions = new CompositeDisposable(); SystemSubscriptions.Add(system, entityChangeSubscriptions); var castSystem = (ISetupSystem)system; var observableGroup = EntityCollectionManager.GetObservableGroup(system.Group); entityChangeSubscriptions.Add( observableGroup.EntityAdded.Subscribe(entity => { var possibleSubscription = ProcessEntity(castSystem, entity); if (possibleSubscription != null) { entitySubscriptions.Add(entity.Id, possibleSubscription); } }) ); entityChangeSubscriptions.Add( observableGroup.EntityRemoved .Subscribe(entity => { if (entitySubscriptions.ContainsKey(entity.Id)) { entitySubscriptions.RemoveAndDispose(entity.Id); } }) ); foreach (var entity in observableGroup) { var possibleSubscription = ProcessEntity(castSystem, entity); if (null != possibleSubscription) { entitySubscriptions.Add(entity.Id, possibleSubscription); } } }
private TimeSpan ProcesEntities(int amount) { var defaultPool = EntityCollectionManager.GetCollection(); EntityCollectionManager.Pools.ForEachRun(x => x.RemoveAllEntities()); var startTime = DateTime.Now; for (var i = 0; i < amount; i++) { var entity = defaultPool.CreateEntity(); entity.AddComponents(_availableComponents); entity.RemoveComponents(_availableComponents); } var endTime = DateTime.Now; return(endTime - startTime); }
private TimeSpan ProcessEntities(int amount) { var defaultPool = EntityCollectionManager.GetCollection(); EntityCollectionManager.Collections.ForEachRun(x => x.RemoveAllEntities()); GC.Collect(); var timer = Stopwatch.StartNew(); for (var i = 0; i < amount; i++) { var entity = defaultPool.CreateEntity(); entity.AddComponents(_availableComponents); entity.RemoveComponents(_availableComponentTypeIds); } timer.Stop(); return(TimeSpan.FromMilliseconds(timer.ElapsedMilliseconds)); }
private (IEntityCollectionManager, IComponentDatabase, IComponentTypeLookup) CreateFramework() { var componentLookups = new Dictionary <Type, int> { { typeof(TestComponentOne), 0 }, { typeof(TestComponentTwo), 1 }, { typeof(TestComponentThree), 2 }, { typeof(ViewComponent), 3 }, { typeof(TestStructComponentOne), 4 }, { typeof(TestStructComponentTwo), 5 } }; var componentLookupType = new ComponentTypeLookup(componentLookups); var componentDatabase = new ComponentDatabase(componentLookupType); var entityFactory = new DefaultEntityFactory(new IdPool(), componentDatabase, componentLookupType); var collectionFactory = new DefaultEntityCollectionFactory(entityFactory); var observableGroupFactory = new DefaultObservableObservableGroupFactory(); var collectionManager = new EntityCollectionManager(collectionFactory, observableGroupFactory, componentLookupType); return(collectionManager, componentDatabase, componentLookupType); }
public void SetupSystem(ISystem system) { var observableGroup = EntityCollectionManager.GetObservableGroup(system.Group); var hasEntityPredicate = system.Group is IHasPredicate; var castSystem = (IReactToGroupSystem)system; var reactObservable = castSystem.ReactToGroup(observableGroup); if (false == hasEntityPredicate) { var noPredicateSub = reactObservable.Subscribe(x => ExecuteForGroup(x, castSystem)); SystemSubscriptions.Add(system, noPredicateSub); return; } var groupPredicate = system.Group as IHasPredicate; var subscription = reactObservable.Subscribe( x => ExecuteForGroup(x.Where(groupPredicate.CanProcessEntity), castSystem) ); SystemSubscriptions.Add(system, subscription); }