Exemplo n.º 1
0
        public void WeWillSetTheIdOnAGameObject()
        {
            GameObject obj = new GameObject();
            int        id  = obj.GetInstanceID();

            obj.SetNewId(new Dictionary <int, UnityObject>());

            Assert.That(obj.GetInstanceID(), Is.Not.EqualTo(id));
        }
Exemplo n.º 2
0
        public void TheIdMapWillNotContainPrefabs()
        {
            GameObject go = new GameObject(true);
            TestComponent cmp = new TestComponent();
            go.AddComponent(cmp);

            Dictionary<int, UnityObject> ids = new Dictionary<int, UnityObject>();
            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(0));
        }
Exemplo n.º 3
0
        public void TheIdMapWillContainTheObjectAndItsOriginalId()
        {
            Dictionary<int, UnityObject> ids = new Dictionary<int, UnityObject>();
            GameObject go = new GameObject();

            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(2));
            Assert.That(ids.ContainsValue(go), Is.True);
            Assert.That(ids.ContainsValue(go.transform), Is.True);
        }
Exemplo n.º 4
0
        public void TheIdMapWillContainTheObjectAndItsOriginalId()
        {
            Dictionary <int, UnityObject> ids = new Dictionary <int, UnityObject>();
            GameObject go = new GameObject();

            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(2));
            Assert.That(ids.ContainsValue(go), Is.True);
            Assert.That(ids.ContainsValue(go.transform), Is.True);
        }
Exemplo n.º 5
0
        public void WeWillSetTheIdOnTheComponentsOfAGameObject()
        {
            GameObject    obj  = new GameObject();
            TestComponent comp = new TestComponent();

            obj.AddComponent(comp);
            int id = comp.GetInstanceID();

            obj.SetNewId(new Dictionary <int, UnityObject>());

            Assert.That(comp.GetInstanceID(), Is.Not.EqualTo(id));
        }
Exemplo n.º 6
0
        public void PrefabsWillNotGetNewIds()
        {
            GameObject go = new GameObject(true);
            TestComponent cmp = new TestComponent();
            go.AddComponent(cmp);

            int oldId = go.GetInstanceID();
            int oldCmpId = cmp.GetInstanceID();
            go.SetNewId(new Dictionary<int, UnityObject>());

            Assert.That(go.GetInstanceID(), Is.EqualTo(oldId));
            Assert.That(cmp.GetInstanceID(), Is.EqualTo(oldCmpId));
        }
Exemplo n.º 7
0
        public void TheIdMapWillNotContainPrefabs()
        {
            GameObject    go  = new GameObject(true);
            TestComponent cmp = new TestComponent();

            go.AddComponent(cmp);

            Dictionary <int, UnityObject> ids = new Dictionary <int, UnityObject>();

            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(0));
        }
Exemplo n.º 8
0
        public void TheIdMapWillContainAMapOfAllComponents()
        {
            Dictionary<int, UnityObject> ids = new Dictionary<int, UnityObject>();
            GameObject go = new GameObject();
            go.AddComponent(typeof(TestComponent));
            go.AddComponent(typeof(TestComponent));

            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(4));
            foreach (var item in go.GetComponents(typeof(Component)))
            {
                Assert.That(ids.ContainsValue(item), Is.True);
            }
        }
Exemplo n.º 9
0
        public void PrefabsWillNotGetNewIds()
        {
            GameObject    go  = new GameObject(true);
            TestComponent cmp = new TestComponent();

            go.AddComponent(cmp);

            int oldId    = go.GetInstanceID();
            int oldCmpId = cmp.GetInstanceID();

            go.SetNewId(new Dictionary <int, UnityObject>());

            Assert.That(go.GetInstanceID(), Is.EqualTo(oldId));
            Assert.That(cmp.GetInstanceID(), Is.EqualTo(oldCmpId));
        }
Exemplo n.º 10
0
        public void TheIdMapWillContainAMapOfAllComponents()
        {
            Dictionary <int, UnityObject> ids = new Dictionary <int, UnityObject>();
            GameObject go = new GameObject();

            go.AddComponent(typeof(TestComponent));
            go.AddComponent(typeof(TestComponent));

            go.SetNewId(ids);

            Assert.That(ids.Count, Is.EqualTo(4));
            foreach (var item in go.GetComponents(typeof(Component)))
            {
                Assert.That(ids.ContainsValue(item), Is.True);
            }
        }
Exemplo n.º 11
0
        public void WeWillSetTheIdOfOurChildrenAndItsComponents()
        {
            GameObject obj         = new GameObject();
            Transform  trans       = obj.transform;
            GameObject parent      = new GameObject();
            Transform  parentTrans = parent.transform;

            trans.parent = parentTrans;
            int id     = obj.GetInstanceID();
            int compId = trans.GetInstanceID();

            parent.SetNewId(new Dictionary <int, UnityObject>());

            Assert.That(obj.GetInstanceID(), Is.Not.EqualTo(id));
            Assert.That(trans.GetInstanceID(), Is.Not.EqualTo(compId));
        }
Exemplo n.º 12
0
        public void WeWillSetTheIdOfOurChildrenAndItsComponents()
        {
            GameObject obj = new GameObject();
            Transform trans = obj.transform;
            GameObject parent = new GameObject();
            Transform parentTrans = parent.transform;
            trans.parent = parentTrans;
            int id = obj.GetInstanceID();
            int compId = trans.GetInstanceID();
            parent.SetNewId(new Dictionary<int, UnityObject>());

            Assert.That(obj.GetInstanceID(), Is.Not.EqualTo(id));
            Assert.That(trans.GetInstanceID(), Is.Not.EqualTo(compId));
        }
Exemplo n.º 13
0
        public void WeWillSetTheIdOnTheComponentsOfAGameObject()
        {
            GameObject obj = new GameObject();
            TestComponent comp = new TestComponent();
            obj.AddComponent(comp);
            int id = comp.GetInstanceID();
            obj.SetNewId(new Dictionary<int, UnityObject>());

            Assert.That(comp.GetInstanceID(), Is.Not.EqualTo(id));
        }
Exemplo n.º 14
0
        public void WeWillSetTheIdOnAGameObject()
        {
            GameObject obj = new GameObject();
            int id = obj.GetInstanceID();
            obj.SetNewId(new Dictionary<int, UnityObject>());

            Assert.That(obj.GetInstanceID(), Is.Not.EqualTo(id));
        }
Exemplo n.º 15
0
        private void CreateStaticBatchRenderers(ContentProcessorContext context, Dictionary <int, UnityObject> idMap)
        {
            Dictionary <string, StaticBatchRenderer> staticRenderers = new Dictionary <string, StaticBatchRenderer>();

            foreach (Renderer r in scene.components.Where(c => (c is Renderer)).ToArray())
            {
                if (r.gameObject == null)
                {
                    Debug.LogError("The gameObject of " + r + " has vanished?!");
                    continue;
                }
                if (!r.gameObject.isStatic)
                {
                    continue;
                }
                string key = GetMaterialKey(r.sharedMaterials);
                if (!staticRenderers.ContainsKey(key))
                {
                    GameObject sbGo = new GameObject("Static - " + key);
                    while (idMap.ContainsKey(sbGo.GetInstanceID()))
                    {
                        sbGo.SetNewId(null);
                    }
                    StaticBatchRenderer sbr = sbGo.AddComponent <StaticBatchRenderer>();
                    while (idMap.ContainsKey(sbr.GetInstanceID()))
                    {
                        sbr.SetNewId(null);
                    }
                    staticRenderers[key]                 = sbr;
                    staticRenderers[key].useLightMap     = (scene.lightmapSettings != null);
                    staticRenderers[key].lightmapIndex   = r.lightmapIndex;
                    staticRenderers[key].sharedMaterials = (Material[])r.sharedMaterials.Clone();
                }

                MeshFilter mf = r.gameObject.GetComponent <MeshFilter>();
                if (mf == null)
                {
                    throw new Exception("The statically marked renderer at " + r.gameObject + " does not have a meshfilter.");
                }
                if (mf.meshToRender == null)
                {
                    throw new Exception("The static meshfilter at " + r.gameObject + " does not have a mesh.");
                }
                int    id     = mf.meshToRender.GetInstanceID();
                Mesh[] meshes = context.BuildAndLoadAsset <Mesh[], Mesh[]>(new ExternalReference <Mesh[]>(mf.meshToRender.asset + ".xml"), null, null, "XmlImporter");
                if (meshes == null)
                {
                    throw new Exception("The mesh with Id " + id + " was not found in assets. Gotten from " + mf);
                }
                Mesh mesh = meshes.First(m => m.GetInstanceID() == id);
                if (mesh == null)
                {
                    throw new Exception("The mesh with Id " + id + " was not found in assets. Gotten from " + mf);
                }
                if (staticRenderers[key].AddMesh(mesh, r))
                {
                    r.isPartOfStaticBatch = true;
                    mf.mesh = null;
                }
            }
            foreach (KeyValuePair <string, StaticBatchRenderer> sbr in staticRenderers)
            {
                sbr.Value.PrepareQuadTree();
            }

            scene.gameObjects.AddRange(staticRenderers.Values.Select(sbr => sbr.gameObject));
        }