Exemplo n.º 1
0
 public GameObjectStreamer(string rootObjectName, MaterialRepository materialRepository, Transform parentForStreamedObjects, CollisionStreamingType collisions, bool supportsFlattening)
 {
     m_materialRepository   = materialRepository;
     m_gameObjectRepository = new GameObjectRepository(rootObjectName, parentForStreamedObjects, materialRepository, supportsFlattening);
     m_gameObjectCreator    = new GameObjectFactory();
     m_collisions           = collisions;
 }
Exemplo n.º 2
0
 public GameObjectStreamer(string rootObjectName, MaterialRepository materialRepository, Transform parentForStreamedObjects, CollisionStreamingType collisions)
 {
     m_materialRepository   = materialRepository;
     m_gameObjectRepository = new GameObjectRepository(rootObjectName, parentForStreamedObjects, materialRepository);
     m_gameObjectCreator    = new GameObjectFactory(m_gameObjectRepository.Root.transform);
     m_collisions           = collisions;
 }
Exemplo n.º 3
0
        public GameObject[] CreateGameObjects(Mesh[] meshes, Material material, CollisionStreamingType collisionType)
        {
            var gameObjects = new GameObject[meshes.Length];

            for (int meshIndex = 0; meshIndex < meshes.Length; ++meshIndex)
            {
                var name = CreateGameObjectName(meshes[meshIndex].name, meshIndex);
                gameObjects[meshIndex] = CreateGameObject(meshes[meshIndex], material, name, collisionType);
            }

            return(gameObjects);
        }
Exemplo n.º 4
0
        private GameObject CreateGameObject(Mesh mesh, Material material, string objectName, CollisionStreamingType collisionType)
        {
            var gameObject = new GameObject(objectName);

            gameObject.SetActive(false);

            gameObject.transform.parent     = m_parentTransform;
            gameObject.transform.localScale = Vector3.one;
            gameObject.AddComponent <MeshFilter>().sharedMesh       = mesh;
            gameObject.AddComponent <MeshRenderer>().sharedMaterial = material;

            switch (collisionType)
            {
            case CollisionStreamingType.SingleSidedCollision:
            {
                gameObject.AddComponent <MeshCollider>().sharedMesh = mesh;
                break;
            }

            case CollisionStreamingType.DoubleSidedCollision:
            {
                gameObject.AddComponent <MeshCollider>().sharedMesh = CreateDoubleSidedCollisionMesh(mesh);
                break;
            }
            }
            return(gameObject);
        }
Exemplo n.º 5
0
 public void ChangeCollision(CollisionStreamingType collision)
 {
     m_collisions = collision;
 }
        public GameObject[] CreateGameObjects(Mesh[] meshes, Material material, Transform parentTransform, CollisionStreamingType collisionType, bool shouldUploadToGPU)
        {
            var gameObjects = new GameObject[meshes.Length];

            for (int meshIndex = 0; meshIndex < meshes.Length; ++meshIndex)
            {
                var name = CreateGameObjectName(meshes[meshIndex].name, meshIndex);
                gameObjects[meshIndex] = CreateGameObject(meshes[meshIndex], material, name, parentTransform, collisionType, shouldUploadToGPU);
            }

            return(gameObjects);
        }
        private GameObject CreateGameObject(Mesh mesh, Material material, string objectName, Transform parentTransform, CollisionStreamingType collisionType, bool shouldUploadToGPU)
        {
            var gameObject = new GameObject(objectName);

            gameObject.SetActive(false);
            gameObject.transform.SetParent(parentTransform, false);

            gameObject.AddComponent <MeshFilter>().sharedMesh = mesh;

            if (objectName.ToLower().Contains("interior"))
            {
                // Making a copy of the indoor material at this point as each indoor renderable has a separate material
                // state.  This is updated during the render loop for non-unity platforms, but for unity we need our
                // materials to be immutable at render time.
                gameObject.AddComponent <MeshRenderer>().sharedMaterial = new Material(material);
            }
            else
            {
                gameObject.AddComponent <MeshRenderer>().sharedMaterial = material;
            }

            switch (collisionType)
            {
            case CollisionStreamingType.NoCollision:
            {
                if (shouldUploadToGPU)
                {
                    mesh.UploadMeshData(true);
                }

                break;
            }

            case CollisionStreamingType.SingleSidedCollision:
            {
                gameObject.AddComponent <MeshCollider>().sharedMesh = mesh;
                break;
            }

            case CollisionStreamingType.DoubleSidedCollision:
            {
                gameObject.AddComponent <MeshCollider>().sharedMesh = CreateDoubleSidedCollisionMesh(mesh);
                break;
            }
            }
            return(gameObject);
        }