https://github.com/codewriter-packages/morpeh.systemstateprocessor
Reactivity for Morpeh ECS
https://github.com/codewriter-packages/morpeh.systemstateprocessor
ecs entity-component-system unity unity3d
Last synced: about 1 year ago
JSON representation
Reactivity for Morpeh ECS
- Host: GitHub
- URL: https://github.com/codewriter-packages/morpeh.systemstateprocessor
- Owner: codewriter-packages
- License: mit
- Created: 2022-12-27T11:14:46.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-21T09:17:17.000Z (over 2 years ago)
- Last Synced: 2025-04-01T15:41:25.699Z (about 1 year ago)
- Topics: ecs, entity-component-system, unity, unity3d
- Language: C#
- Homepage:
- Size: 18.6 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Morpeh.SystemStateProcessor [](#) [](#) 
_Reactivity for Morpeh ECS_
## How to use?
```csharp
using System;
using Scellecs.Morpeh;
using Scellecs.Morpeh.Systems;
using UnityEngine;
[Serializable] public struct HeroComponent : IComponent { }
[Serializable] public struct HeroDamagedMarker : IComponent { }
[Serializable] public struct HeroDeadMarker : IComponent { }
public class HealthBarSystem : UpdateSystem {
[SerializeField] private GameObject healthBarPrefab;
private SystemStateProcessor heroProcessor;
public override void OnAwake() {
heroProcessor = World.Filter
.With()
.With()
.Without()
.ToSystemStateProcessor(CreateHealthBarForHero, RemoveHealthBarForHero);
}
public override void Dispose() {
heroProcessor.Dispose();
}
public override void OnUpdate(float deltaTime) {
heroProcessor.Process();
}
// Called when an entity has been added to the Filter
private HealthBarSystemStateComponent CreateHealthBarForHero(Entity heroEntity) {
var healthBar = Instantiate(healthBarPrefab);
return new HealthBarSystemStateComponent {
healthBar = healthBar,
};
}
// Called when an entity has been removed from filter or has been destroyed
private void RemoveHealthBarForHero(ref HealthBarSystemStateComponent state) {
Destroy(state.healthBar);
}
[Serializable]
private struct HealthBarSystemStateComponent : ISystemStateComponent {
public GameObject healthBar;
}
}
```
## License
Morpeh.SystemStateProcessor is [MIT licensed](./LICENSE.md).