public TestCharacter(string name) { charObj = new GameObject(); charObj.name = name; character = charObj.AddComponent<Character>(); Assert.NotNull(character); health = charObj.GetComponent<CharacterHealth>(); Assert.NotNull(health); health.Start(); enterHitBox = charObj.CreateChild("entreAreas").AddComponent<HitBox>(); enterHitBox.type = HitBoxType.EnterAreas; enterHitBox.gameObject.layer = 1; enterBox2D = enterHitBox.gameObject.AddComponent<BoxCollider2D>(); enterBox2D.size = new Vector2(1, 1); enterHitBox.owner = health; enterHitBox.Start(); dealHitBox = charObj.CreateChild("dealHitBox").AddComponent<HitBox>(); Assert.NotNull(dealHitBox); dealHitBox.type = HitBoxType.DealDamage; dealHitBox.collideWith = (1 << 2); // | (1 << ?) dealHitBox.gameObject.layer = 2; damage = dealHitBox.gameObject.AddComponent<Damage>(); damage.causer = health; damage.Start(); dealHitBox.owner = health; dealBox2D = dealHitBox.gameObject.AddComponent<BoxCollider2D>(); dealBox2D.size = new Vector2(1, 1); dealHitBox.Start(); recieveHitBox = charObj.CreateChild("recieveHitBox").AddComponent<HitBox>(); Assert.NotNull(recieveHitBox); recieveHitBox.type = HitBoxType.RecieveDamage; recieveHitBox.collideWith = (1 << 2); recieveHitBox.gameObject.layer = 2; recieveHitBox.owner = health; recieveBox2D = recieveHitBox.gameObject.AddComponent<BoxCollider2D>(); recieveBox2D.size = new Vector2(1, 1); recieveHitBox.Start(); // init health callbacks health.onHeal += () => { onHealCalled = true; }; health.onDamage += () => { onDamageCalled = true; }; health.onImmunity += () => { onImmunityCalled = true; }; health.onMaxHealth += () => { onMaxHealthCalled = true; }; health.onInjured += (Damage dt, CharacterHealth to) => { onInjuredCalled = true; }; health.onHurt += (Damage dt, CharacterHealth to) => { onHurtCalled = true; }; health.onDeath += () => { onDeathCalled = true; }; health.onGameOver += () => { onGameOverCalled = true; }; health.onInvulnerabilityStart += () => { onInvulnerabilityStartCalled = true; }; health.onInvulnerabilityEnd += () => { onInvulnerabilityEndCalled = true; }; health.onRespawn += () => { onRespawnCalled = true; }; }