本文整理汇总了C#中Artemis.EntityWorld.Update方法的典型用法代码示例。如果您正苦于以下问题:C# EntityWorld.Update方法的具体用法?C# EntityWorld.Update怎么用?C# EntityWorld.Update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Artemis.EntityWorld
的用法示例。
在下文中一共展示了EntityWorld.Update方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AttributesTestsMethod
public void AttributesTestsMethod()
{
EntityWorld world = new EntityWorld();
world.PoolCleanupDelay = 1;
world.InitializeAll();
Debug.Assert(world.SystemManager.Systems.Size == 2);
Entity et = world.CreateEntity();
var power = et.AddComponentFromPool<Power2>();
power.POWER = 100;
et.Refresh();
Entity et1 = world.CreateEntityFromTemplate("teste");
Debug.Assert(et1 != null);
{
world.Update(0, ExecutionType.UpdateSynchronous);
}
et.RemoveComponent<Power2>();
et.Refresh();
{
world.Update(0, ExecutionType.UpdateSynchronous);
}
et.AddComponentFromPool<Power2>();
et.GetComponent<Power2>().POWER = 100;
et.Refresh();
world.Update(0, ExecutionType.UpdateSynchronous);
}
示例2: Start
public void Start()
{
GameWindow.Window = new RenderWindow(new VideoMode(1280, 720), "Subject2Change");
GameWindow.Window.SetFramerateLimit(120);
GameWindow.Window.SetVisible(true);
GameWindow.Window.Closed += OnClosed;
GameWindow.Window.KeyPressed += GameEventHandler.OnKeyPressed;
GameWindow.Window.Resized += GameEventHandler.OnResized;
GameWindow.Window.KeyReleased += GameEventHandler.OnKeyReleased;
_world = new EntityWorld(false, true, true);
//Entity camera = _world.CreateEntityFromTemplate("camera");
EntityFactory.CreatePlayer(_world);
Sprite testSprite = SFMLwrap.LoadSprite("test.png", SFMLwrap.DefaultScale);
while (GameWindow.Window.IsOpen())
{
GameWindow.Window.DispatchEvents();
GameWindow.Window.Clear(Color.Blue);
testSprite.Position = EntityFactory.Player.GetComponent<TransformC>().Position;
_world.Update();
//SpriteBatch batch = new SpriteBatch(GameWindow.Window);
GameWindow.Window.Draw(testSprite);
GameWindow.Window.Display();
}
}
示例3: TestDummies
public void TestDummies()
{
Debug.WriteLine("Initialize EntityWorld: ");
EntityWorld entityWorld = new EntityWorld();
entityWorld.SystemManager.SetSystem(new TestCommunicationSystem(), GameLoopType.Update);
entityWorld.InitializeAll();
Debug.WriteLine("OK");
Debug.WriteLine("Fill EntityWorld with " + Load + " grouped entities: ");
for (int index = Load - 1; index >= 0; --index)
{
TestEntityFactory.CreateTestHealthEntity(entityWorld, "test");
}
Debug.WriteLine("OK");
Debug.WriteLine("Add a tagged entity to EntityWorld: ");
TestEntityFactory.CreateTestHealthEntity(entityWorld, null, "tag");
Debug.WriteLine("OK");
Debug.WriteLine("Update EntityWorld: ");
Stopwatch stopwatch = Stopwatch.StartNew();
entityWorld.Update();
entityWorld.Draw();
stopwatch.Stop();
Debug.WriteLine("duration " + FastDateTime.ToString(stopwatch.Elapsed) + " ");
Debug.WriteLine("OK");
int actualNumberOfSystems = entityWorld.SystemManager.Systems.Count;
const int ExpectedNumberOfSystems = 1;
Debug.WriteLine("Number of Systems: {0} ", actualNumberOfSystems);
Assert.AreEqual(ExpectedNumberOfSystems, actualNumberOfSystems);
Debug.WriteLine("OK");
Entity actualTaggedEntity = entityWorld.TagManager.GetEntity("tag");
Debug.WriteLine("Is tagged entity present: {0} ", actualTaggedEntity != null);
Assert.IsNotNull(actualTaggedEntity);
Debug.WriteLine("OK");
int actualNumberOfGroupedEntities = entityWorld.GroupManager.GetEntities("test").Count;
const int ExpectedNumberOfGroupedEntities = Load;
Debug.WriteLine("Number of grouped entities: {0} ", actualNumberOfGroupedEntities);
Assert.AreEqual(ExpectedNumberOfGroupedEntities, actualNumberOfGroupedEntities);
Debug.WriteLine("OK");
#if DEBUG
int actualNumberOfActiveEntities = entityWorld.EntityManager.EntitiesRequestedCount;
const int ExpectedNumberOfActiveEntities = ExpectedNumberOfGroupedEntities + ExpectedNumberOfSystems;
Debug.WriteLine("Number of active entities: {0} ", actualNumberOfActiveEntities);
Assert.AreEqual(ExpectedNumberOfActiveEntities, actualNumberOfActiveEntities);
Debug.WriteLine("OK");
#endif
}
示例4: TestAttributes
public void TestAttributes()
{
Debug.WriteLine("Initialize EntityWorld: ");
EntityWorld entityWorld = new EntityWorld { PoolCleanupDelay = 1 };
#if (!FULLDOTNET && !METRO) || CLIENTPROFILE
entityWorld.InitializeAll(global::System.Reflection.Assembly.GetExecutingAssembly());
#else
entityWorld.InitializeAll(true);
#endif
Debug.WriteLine("OK");
const int ExpectedNumberOfSystems = 2;
int actualNumberOfSystems = entityWorld.SystemManager.Systems.Count;
Assert.AreEqual(ExpectedNumberOfSystems, actualNumberOfSystems, "Number of initial systems does not fit.");
Debug.WriteLine("Number of Systems: {0} OK", actualNumberOfSystems);
Debug.WriteLine("Build up entity with component from pool manually: ");
Entity entityWithPooledComponent = TestEntityFactory.CreateTestPowerEntityWithPooledComponent(entityWorld);
Debug.WriteLine("OK");
Debug.WriteLine("Build up entity from template: ");
Entity entityFromTemplate = entityWorld.CreateEntityFromTemplate("test");
Assert.IsNotNull(entityFromTemplate, "Entity from test template is null.");
Debug.WriteLine("OK");
entityWorld.Update();
entityWorld.Draw();
Debug.WriteLine("Remove component from entity: ");
entityWithPooledComponent.RemoveComponent<TestPowerComponentPoolable>();
entityWorld.Update();
entityWorld.Draw();
Assert.IsFalse(entityWithPooledComponent.HasComponent<TestPowerComponentPoolable>(), "Entity has still deleted component.");
Debug.WriteLine("OK");
Debug.WriteLine("Add component to entity: ");
entityWithPooledComponent.AddComponentFromPool<TestPowerComponentPoolable>();
entityWithPooledComponent.GetComponent<TestPowerComponentPoolable>().Power = 100;
entityWorld.Update();
entityWorld.Draw();
Assert.IsTrue(entityWithPooledComponent.HasComponent<TestPowerComponentPoolable>(), "Could not add component to entity.");
Debug.WriteLine("OK");
}
示例5: TestUniqId
public void TestUniqId()
{
global::System.Diagnostics.Debug.WriteLine("Initialize EntityWorld: ");
EntityWorld entityWorld = new EntityWorld();
entityWorld.SystemManager.SetSystem(new TestCommunicationSystem(), GameLoopType.Update);
#if !FULLDOTNET && !METRO
entityWorld.InitializeAll();
#else
entityWorld.InitializeAll(false);
#endif
global::System.Diagnostics.Debug.WriteLine("OK");
var ent1 = TestEntityFactory.CreateTestHealthEntityWithID(entityWorld, -5);
global::System.Diagnostics.Debug.WriteLine("ID1 " + ent1.UniqueId );
Debug.Assert(ent1.UniqueId == -5, "Ids dont match");
var ent2 = TestEntityFactory.CreateTestHealthEntity(entityWorld);
global::System.Diagnostics.Debug.WriteLine("ID2 " + ent2.UniqueId);
Debug.Assert(ent2.UniqueId != -5 && ent2.UniqueId > 0, "Ids cant match");
var entrec = entityWorld.EntityManager.GetEntityByUniqueID(-5);
Debug.Assert(ent1 == entrec, "Entities must match");
entrec = entityWorld.EntityManager.GetEntity(ent1.Id);
Debug.Assert(ent1 == entrec, "Entities must match");
entityWorld.DeleteEntity(ent1);
entityWorld.Update();
entrec = entityWorld.EntityManager.GetEntityByUniqueID(-5);
Debug.Assert(entrec==null, "Entity must be null");
entrec = entityWorld.EntityManager.GetEntity(ent1.Id);
Debug.Assert(entrec == null, "Entity must be null");
global::System.Diagnostics.Debug.WriteLine("OK");
}
示例6: TestRenderMultiHealthBarSystem
public void TestRenderMultiHealthBarSystem()
{
Debug.WriteLine("Initialize EntityWorld: ");
HealthBag.Clear();
ComponentPool.Clear();
HealthBag.Add(new TestHealthComponent());
HealthBag.Add(new TestHealthComponent());
ComponentPool.Add(typeof(TestHealthComponent), HealthBag);
EntityWorld entityWorld = new EntityWorld();
entityWorld.EntityManager.RemovedComponentEvent += RemovedComponent;
entityWorld.EntityManager.RemovedEntityEvent += RemovedEntity;
entityWorld.SystemManager.SetSystem(new TestRenderHealthBarMultiSystem(), GameLoopType.Update);
entityWorld.InitializeAll();
Debug.WriteLine("OK");
Debug.WriteLine("Fill EntityWorld with " + Load + " entities: ");
List<Entity> entities = new List<Entity>();
for (int index = Load - 1; index >= 0; --index)
{
Entity entity = TestEntityFactory.CreateTestHealthEntity(entityWorld);
entities.Add(entity);
}
Debug.WriteLine("OK");
const int Passes = 9;
Stopwatch stopwatch = Stopwatch.StartNew();
for (int index = 0; index < Passes; ++index)
{
entityWorld.Update();
entityWorld.Draw();
}
stopwatch.Stop();
Debug.WriteLine("Update (" + Passes + " passes) duration: {0}", FastDateTime.ToString(stopwatch.Elapsed));
int expectedPoints = 100 - (Passes * 10);
if (expectedPoints < 0)
{
expectedPoints = 0;
}
int df = entities.Count(item => Math.Abs((int)(item.GetComponent<TestHealthComponent>().Points - expectedPoints)) < float.Epsilon);
Assert.AreEqual(Load, df);
Debug.WriteLine("Found {0} entities with health of {1}.", df, expectedPoints);
}
示例7: TestSystemCommunication
public void TestSystemCommunication()
{
Debug.WriteLine("Initialize EntityWorld: ");
EntitySystem.BlackBoard.SetEntry("Damage", 5);
EntityWorld entityWorld = new EntityWorld();
entityWorld.SystemManager.SetSystem(new TestCommunicationSystem(), GameLoopType.Update);
entityWorld.InitializeAll();
Debug.WriteLine("OK");
Debug.WriteLine("Fill EntityWorld with " + Load + " entities: ");
List<Entity> entities = new List<Entity>();
for (int index = Load; index >= 0; --index)
{
Entity entity = TestEntityFactory.CreateTestHealthEntity(entityWorld);
entities.Add(entity);
}
Debug.WriteLine("OK");
Stopwatch stopwatch = Stopwatch.StartNew();
entityWorld.Update();
entityWorld.Draw();
stopwatch.Stop();
Debug.WriteLine("Update 1 duration: {0}", FastDateTime.ToString(stopwatch.Elapsed));
EntitySystem.BlackBoard.SetEntry("Damage", 10);
stopwatch.Restart();
entityWorld.Update();
entityWorld.Draw();
stopwatch.Stop();
Debug.WriteLine("Update 2 duration: {0}", FastDateTime.ToString(stopwatch.Elapsed));
Debug.WriteLine("Test entities: ");
const float Expected = 85.0f;
foreach (Entity item in entities)
{
Assert.AreEqual(Expected, item.GetComponent<TestHealthComponent>().Points);
}
Debug.WriteLine("OK");
EntitySystem.BlackBoard.RemoveEntry("Damage");
}
示例8: TestSimpleSystem
public void TestSimpleSystem()
{
Debug.WriteLine("Initialize EntityWorld: ");
EntityWorld entityWorld = new EntityWorld();
entityWorld.SystemManager.SetSystem(new TestNormalEntityProcessingSystem1(), GameLoopType.Update);
entityWorld.InitializeAll();
Debug.WriteLine("OK");
Entity entity1 = TestEntityFactory.CreateTestHealthEntity(entityWorld);
Assert.IsNotNull(entity1);
Entity entity2 = TestEntityFactory.CreateTestPowerEntity(entityWorld);
Assert.IsNotNull(entity2);
Stopwatch stopwatch = Stopwatch.StartNew();
entityWorld.Update();
entityWorld.Draw();
stopwatch.Stop();
#if DEBUG
Debug.WriteLine("Processed update and draw with duration {0} for {1} elements", FastDateTime.ToString(stopwatch.Elapsed), entityWorld.EntityManager.EntitiesRequestedCount);
#else
Debug.WriteLine("Processed update and draw with duration {0} for {1} elements", FastDateTime.ToString(stopwatch.Elapsed), entityWorld.EntityManager.ActiveEntities.Count);
#endif
const float Expected1 = 90.0f;
Assert.AreEqual(Expected1, entity1.GetComponent<TestHealthComponent>().Points);
const float Expected2 = 100.0f;
Assert.AreEqual(Expected2, entity2.GetComponent<TestHealthComponent>().Points);
Assert.AreEqual(Expected2, entity2.GetComponent<TestPowerComponent>().Power);
}
示例9: TestMultipleSystems
public void TestMultipleSystems()
{
Debug.WriteLine("Initialize EntityWorld: ");
HealthBag.Clear();
ComponentPool.Clear();
HealthBag.Add(new TestHealthComponent());
HealthBag.Add(new TestHealthComponent());
ComponentPool.Add(typeof(TestHealthComponent), HealthBag);
EntityWorld entityWorld = new EntityWorld();
entityWorld.EntityManager.RemovedComponentEvent += RemovedComponent;
entityWorld.EntityManager.RemovedEntityEvent += RemovedEntity;
entityWorld.SystemManager.SetSystem(new TestRenderHealthBarSingleSystem(), GameLoopType.Update);
entityWorld.SystemManager.SetSystem(new TestEntityProcessingSystem1(), GameLoopType.Update);
entityWorld.SystemManager.SetSystem(new TestEntityProcessingSystem2(), GameLoopType.Update);
entityWorld.SystemManager.SetSystem(new TestEntityProcessingSystem3(), GameLoopType.Update);
entityWorld.InitializeAll();
Debug.WriteLine("OK");
Debug.WriteLine("Fill EntityWorld with " + Load + " entities: ");
List<Entity> entities = new List<Entity>();
for (int index = Load - 1; index >= 0; --index)
{
Entity entity = TestEntityFactory.CreateTestHealthEntity(entityWorld);
entities.Add(entity);
}
Debug.WriteLine("OK");
const int Passes = 3;
Stopwatch stopwatch = Stopwatch.StartNew();
for (int index = 0; index < Passes; ++index)
{
entityWorld.Update();
entityWorld.Draw();
}
stopwatch.Stop();
Debug.WriteLine("Update (" + Passes + " passes) duration: {0}", FastDateTime.ToString(stopwatch.Elapsed));
/*
int df = 0;
foreach (Entity entity in entities)
{
if (Math.Abs(entity.GetComponent<TestHealthComponent>().Points - 90) < float.Epsilon)
{
df++;
}
else
{
Debug.WriteLine("Error " + df);
}
}
*/
}
示例10: SystemComunicationTeste
public void SystemComunicationTeste()
{
EntitySystem.BlackBoard.SetEntry<int>("Damage", 5);
EntityWorld world = new EntityWorld();
SystemManager systemManager = world.SystemManager;
DummyCommunicationSystem DummyCommunicationSystem = new DummyCommunicationSystem();
systemManager.SetSystem(DummyCommunicationSystem, ExecutionType.UpdateSynchronous);
world.InitializeAll(false);
List<Entity> l = new List<Entity>();
for (int i = 0; i < 100; i++)
{
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP += 100;
et.Refresh();
l.Add(et);
}
{
DateTime dt = DateTime.Now;
world.Update(0);
Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
}
EntitySystem.BlackBoard.SetEntry<int>("Damage", 10);
{
DateTime dt = DateTime.Now;
world.Update(0);
Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
}
foreach (var item in l)
{
Debug.Assert(item.GetComponent<Health>().HP == 85);
}
}
示例11: SecondMostSimpleSystemEverTest
public void SecondMostSimpleSystemEverTest()
{
EntityWorld world = new EntityWorld();
world.InitializeAll(true);
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP = 100;
et.Refresh();
Entity et1 = world.CreateEntity();
et1.AddComponent(new Power());
et1.GetComponent<Power>().POWER = 100;
et1.Refresh();
{
world.Update(0);
}
///two systems runnning
///each remove 10 HP
Debug.Assert(et.GetComponent<Health>().HP == 80);
Debug.Assert(et1.GetComponent<Power>().POWER == 90);
}
示例12: QueueSystemTeste
public void QueueSystemTeste()
{
EntityWorld world = new EntityWorld();
SystemManager systemManager = world.SystemManager;
QueueSystemTest QueueSystemTest = new ArtemisTest.QueueSystemTest();
QueueSystemTest QueueSystemTest2 = new ArtemisTest.QueueSystemTest();
systemManager.SetSystem(QueueSystemTest, ExecutionType.UpdateAsynchronous);
systemManager.SetSystem(QueueSystemTest2, ExecutionType.UpdateAsynchronous);
QueueSystemTest2 QueueSystemTestteste = new ArtemisTest.QueueSystemTest2();
systemManager.SetSystem(QueueSystemTestteste, ExecutionType.UpdateAsynchronous);
world.InitializeAll(false);
QueueSystemTest.SetQueueProcessingLimit(20, QueueSystemTest.Id);
Debug.Assert(QueueSystemTest.GetQueueProcessingLimit(QueueSystemTest.Id) == QueueSystemTest.GetQueueProcessingLimit(QueueSystemTest2.Id));
Debug.Assert(QueueSystemTest.GetQueueProcessingLimit(QueueSystemTestteste.Id) != QueueSystemTest.GetQueueProcessingLimit(QueueSystemTest2.Id));
QueueSystemTest.SetQueueProcessingLimit(1000, QueueSystemTest.Id);
QueueSystemTest.SetQueueProcessingLimit(2000, QueueSystemTestteste.Id);
List<Entity> l = new List<Entity>();
for (int i = 0; i < 1000000; i++)
{
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP = 100;
QueueSystemTest.AddToQueue(et, QueueSystemTest.Id);
l.Add(et);
}
List<Entity> l2 = new List<Entity>();
for (int i = 0; i < 1000000; i++)
{
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP = 100;
QueueSystemTest.AddToQueue(et, QueueSystemTestteste.Id);
l2.Add(et);
}
Console.WriteLine("Start");
while (QueueSystemTest.QueueCount(QueueSystemTest.Id) > 0 || QueueSystemTest.QueueCount(QueueSystemTestteste.Id) > 0)
{
DateTime dt = DateTime.Now;
world.Update(0, ExecutionType.UpdateAsynchronous);
Console.WriteLine("Count: " + QueueSystemTest.QueueCount(QueueSystemTest.Id));
Console.WriteLine("Time: " + (DateTime.Now - dt).TotalMilliseconds);
}
Console.WriteLine("End");
foreach (var item in l)
{
Debug.Assert(item.GetComponent<Health>().HP == 90);
}
foreach (var item in l2)
{
Debug.Assert(item.GetComponent<Health>().HP == 80);
}
}
示例13: multsystem
public void multsystem()
{
healthBag.Clear();
componentPool.Clear();
healthBag.Add(new Health());
healthBag.Add(new Health());
componentPool.Add(typeof(Health), healthBag);
EntityWorld world = new EntityWorld();
SystemManager systemManager = world.SystemManager;
world.EntityManager.RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent);
world.EntityManager.RemovedEntityEvent += new RemovedEntityHandler(RemovedEntity);
EntitySystem hs = systemManager.SetSystem(new SingleHealthBarRenderSystem(),ExecutionType.UpdateAsynchronous);
hs = systemManager.SetSystem(new DummySystem(),ExecutionType.UpdateAsynchronous);
hs = systemManager.SetSystem(new DummySystem2(), ExecutionType.UpdateAsynchronous);
hs = systemManager.SetSystem(new DummySystem3(), ExecutionType.UpdateAsynchronous);
world.InitializeAll(false);
List<Entity> l = new List<Entity>();
for (int i = 0; i < 100000; i++)
{
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP += 100;
et.Refresh();
l.Add(et);
}
for (int i = 0; i < 100; i++)
{
DateTime dt = DateTime.Now;
world.Update(0,ExecutionType.UpdateAsynchronous);
//systemManager.UpdateSynchronous(ExecutionType.Update);
Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
}
//int df = 0;
//foreach (var item in l)
//{
// if (item.GetComponent<Health>().GetHealth() == 90)
// {
// df++;
// }
// else
// {
// Console.WriteLine("errro");
// }
//}
}
示例14: multi
public void multi()
{
healthBag.Add(new Health());
healthBag.Add(new Health());
componentPool.Add(typeof(Health), healthBag);
EntityWorld world = new EntityWorld();
SystemManager systemManager = world.SystemManager;
world.EntityManager.RemovedComponentEvent += new RemovedComponentHandler(RemovedComponent);
world.EntityManager.RemovedEntityEvent += new RemovedEntityHandler(RemovedEntity);
EntitySystem hs = systemManager.SetSystem(new MultHealthBarRenderSystem(), ExecutionType.UpdateSynchronous);
world.InitializeAll(false);
List<Entity> l = new List<Entity>();
for (int i = 0; i < 1000; i++)
{
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP += 100;
et.Refresh();
l.Add(et);
}
for (int i = 0; i < 100; i++)
{
DateTime dt = DateTime.Now;
world.Update(0);
Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
}
int df = 0;
foreach (var item in l)
{
if (item.GetComponent<Health>().HP == 90)
{
df++;
}
}
}
示例15: MostSimpleSystemEverTest
public void MostSimpleSystemEverTest()
{
EntityWorld world = new EntityWorld();
SystemManager systemManager = world.SystemManager;
MostSimpleSystemEver DummyCommunicationSystem = new MostSimpleSystemEver();
systemManager.SetSystem(DummyCommunicationSystem, ExecutionType.UpdateSynchronous);
world.InitializeAll(false);
Entity et = world.CreateEntity();
et.AddComponent(new Health());
et.GetComponent<Health>().HP = 100;
et.Refresh();
Entity et1 = world.CreateEntity();
et1.AddComponent(new Health());
et1.AddComponent(new Power());
et1.GetComponent<Health>().HP = 100;
et1.GetComponent<Power>().POWER = 100;
et1.Refresh();
{
DateTime dt = DateTime.Now;
world.Update(0);
Console.WriteLine((DateTime.Now - dt).TotalMilliseconds);
}
Debug.Assert(et.GetComponent<Health>().HP == 90);
Debug.Assert(et1.GetComponent<Health>().HP == 100);
Debug.Assert(et1.GetComponent<Power>().POWER == 100);
}