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; }
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; }
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); }
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); }
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); }