Ejemplo n.º 1
0
        void Can_handle_id_overflow_by_filling_spots()
        {
            ObjectTagger  tagger         = new ObjectTagger(10);
            List <object> handledObjects = new List <object>();

            for (int i = 0; i < 9; i++)
            {
                var obj = new object();
                tagger.GetOrCreateTag(obj);
                handledObjects.Add(obj);
            }

            // Ids are all used.
            handledObjects.Clear();
            GC.Collect(2, GCCollectionMode.Forced, true);
            Thread.Sleep(100);
            // The next one is the already prepared next id.
            var obj10 = new object();
            var tag10 = tagger.GetOrCreateTag(obj10);

            tag10.Should().Be(10ul);
            // The next after that will overflow.
            var obj1 = new object();
            var tag1 = tagger.GetOrCreateTag(obj1);

            tag1.Should().Be(1ul);
        }
Ejemplo n.º 2
0
        void Can_deliver_same_tag_for_same_instance()
        {
            ObjectTagger tagger = new ObjectTagger();
            var          obj    = new object();
            var          tag1   = tagger.GetOrCreateTag(obj);
            var          tag2   = tagger.GetOrCreateTag(obj);

            tag1.Should().Be(tag2);
        }
Ejemplo n.º 3
0
        void Can_detect_id_overflow()
        {
            ObjectTagger  tagger         = new ObjectTagger(10);
            List <object> handledObjects = new List <object>();

            for (int i = 0; i < 9; i++)
            {
                var obj = new object();
                tagger.GetOrCreateTag(obj);
                handledObjects.Add(obj);
            }
            var lastObj = new object();

            Assert.Throws <Exception>(() => { tagger.GetOrCreateTag(lastObj); });
        }
Ejemplo n.º 4
0
    public void TagAndLayerAll()
    {
        GameObject[] gameObjects = FindObjectsOfType(typeof(GameObject)) as GameObject[];

        int objectsTagged = 0;

        foreach (GameObject g in gameObjects)
        {
            string needTag   = "";
            string needLayer = "";

            objectsTagged = 0;

            if (g.tag != "Untagged")
            {
                needTag = g.tag;
            }

            if (LayerMask.LayerToName(g.layer) != "Default")
            {
                needLayer = LayerMask.LayerToName(g.layer);
            }

            if (needTag != "" || needLayer != "")
            {
                objectsTagged++;

                ObjectTagger ot = g.GetComponent <ObjectTagger>();

                if (ot == null)
                {
                    ot = g.AddComponent <ObjectTagger>();
                }

                ot.objectTag   = needTag;
                ot.objectLayer = needLayer;

                if (untagCurrentObjects)
                {
                    g.tag   = "Untagged";
                    g.layer = 0;
                }
            }
        }

        Debug.Log("ObjectTagger set on " + objectsTagged + " scene objects");
    }