/// 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;
 }
Пример #3
0
 /// 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));
        }
Пример #6
0
    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>();
 }