Skip to content

Instantly share code, notes, and snippets.

@mchamplain
mchamplain / TimerSystem.cs
Created May 25, 2017 02:40 — forked from FNGgames/TimerSystem.cs
Entitas Timer System
using Entitas;
using UnityEngine;
public class TimerSystem : IExecuteSystem, ICleanupSystem
{
readonly IGroup<GameEntity> _timers;
readonly IGroup<GameEntity> _timerCompletes;
readonly GameContext _context;
public TimerSystem(Contexts contexts)
@mchamplain
mchamplain / GameController.cs
Created May 26, 2017 03:46 — forked from FNGgames/GameController.cs
store ids for every entity in a component then look up the entities by their ID using a PrimaryEntityIndex
void Start()
{
// ...
_contexts.game.OnEntityCreated += AddId;
_contexts.input.OnEntityCreated += AddId;
// ...
}
private void AddId(IContext context, IEntity entity)
{
@mchamplain
mchamplain / Day.php
Created May 14, 2020 01:37 — forked from Ocramius/Day.php
Example abstraction that only allows a resolution of "day" for time inside a specific business domain
<?php
declare(strict_types=1);
namespace Core\Domain\Time;
use DateTimeImmutable;
use DateTimeZone;
use Generator;
use Iterator;
@mchamplain
mchamplain / IApplicationService.cs
Created October 12, 2023 01:30 — forked from FNGgames/IApplicationService.cs
Entitias Scene Initialization Example
public interface IApplicationService : IService
{
HashSet<string> GetValidScenes();
void Load(string sceneName, Action<string, float> onProgress, Action<string> onComplete);
void Unload(string sceneName, Action<string, float> onProgress, Action<string> onComplete);
void Quit();
}
@mchamplain
mchamplain / SceneHelpers.cs
Created October 12, 2023 01:32 — forked from FNGgames/SceneHelpers.cs
Scene Loader
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine.SceneManagement;
public static class SceneHelpers
{
public static string[] GetValidSceneNames()
{
@mchamplain
mchamplain / FSMState.cs
Created October 12, 2023 01:32 — forked from FNGgames/FSMState.cs
Generic Finite State Machine
public abstract class FSMState<T_Data, T_Id>
{
public abstract T_Id id { get; protected set; }
public virtual void OnEnter(T_Data data) { }
public virtual void OnUpdate(T_Data data) { }
public virtual void OnExit(T_Data data) { }
public delegate void TransitionEventHandler(T_Id id);
public event TransitionEventHandler TransitionEvent;