/// 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>());
        }
Пример #2
0
 /// Remove a game object from this target
 public void Remove(GameObject target)
 {
     if (Target.GameObject == target)
     {
         Target = null;
     }
 }
 /// Remove a game object from this target
 public void Remove(GameObject target)
 {
     if (Target.GameObject == target)
       {
     Target = null;
       }
 }
        /// 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>());
        }
 /// Apply a transform
 private void ApplyTransform(SpawnedObject target)
 {
     target.GameObject.transform.position   = target.Origin.Position;
     target.GameObject.transform.rotation   = target.Origin.Rotation;
     target.GameObject.transform.localScale = target.Origin.Scale;
 }
Пример #6
0
 /// Create a new instance
 public SingleSpawned(SpawnedObject target)
 {
     Target = target;
     Target.GameObject.transform.name = "SpawnedObject";
 }
 /// Create a new instance
 public SingleSpawned(SpawnedObject target)
 {
     Target = target;
       Target.GameObject.transform.name = "SpawnedObject";
 }
 /// Apply a transform
 private void ApplyTransform(SpawnedObject target)
 {
     target.GameObject.transform.position = target.Origin.Position;
       target.GameObject.transform.rotation = target.Origin.Rotation;
       target.GameObject.transform.localScale = target.Origin.Scale;
 }
 /// 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>();
 }