/// Create a new instance private Option <SpawnedObject> NewInstance(NTransform origin) { if (_limit) { if (_instances.Count >= _limit.Unwrap()) { return(Option.None <SpawnedObject>()); } } var rtn = Scene.Spawn(_factory); if (rtn) { var gp = rtn.Unwrap(); var instance = new SpawnedObject { GameObject = gp, Origin = origin, Renderer = gp.GetComponentInChildren <Renderer>() }; ApplyTransform(instance); _instances.Add(instance); return(Option.Some(instance)); } return(Option.None <SpawnedObject>()); }
/// Load from target public void From(NTransform transform) { Position = transform.Position; Scale = transform.Scale; Rotation = transform.Rotation; Color = default(Color32); Active = true; }
/// Get an instance /// To release an instance, simply set active to false. public Option<SpawnedObject> Instance(NTransform origin) { var stored = NextFree(origin); if (stored) { return stored; } return NewInstance(origin); }
/// Get an instance /// To release an instance, simply set active to false. public Option <SpawnedObject> Instance(NTransform origin) { var stored = NextFree(origin); if (stored) { return(stored); } return(NewInstance(origin)); }
public void test_creates_copy() { var blank = this.SpawnBlank(); blank.Move(new Vector3(1f, 1f, 1f)); var transform = new NTransform(blank); blank.Move(new Vector3(2f, 2f, 2f)); Assert(transform.Position == new Vector3(1f, 1f, 1f)); this.TearDown(); }
/// Return the next free instance private Option <SpawnedObject> NextFree(NTransform origin) { SpawnedObject match = null; foreach (var instance in _instances) { if (!instance.GameObject.activeSelf) { match = instance; break; } } if (match != null) { match.GameObject.SetActive(true); match.Origin = origin; ApplyTransform(match); return(Option.Some(match)); } return(Option.None <SpawnedObject>()); }
/// Return the next free instance private Option<SpawnedObject> NextFree(NTransform origin) { SpawnedObject match = null; foreach (var instance in _instances) { if (!instance.GameObject.activeSelf) { match = instance; break; } } if (match != null) { match.GameObject.SetActive(true); match.Origin = origin; ApplyTransform(match); return Option.Some(match); } return Option.None<SpawnedObject>(); }
/// Create a new instance private Option<SpawnedObject> NewInstance(NTransform origin) { if (_limit) { if (_instances.Count >= _limit.Unwrap()) { return Option.None<SpawnedObject>(); } } var rtn = Scene.Spawn(_factory); if (rtn) { var gp = rtn.Unwrap(); var instance = new SpawnedObject { GameObject = gp, Origin = origin, Renderer = gp.GetComponentInChildren<Renderer>() }; ApplyTransform(instance); _instances.Add(instance); return Option.Some(instance); } return Option.None<SpawnedObject>(); }