public GameObject AddGameObject(string type) { GameObject gameObject = null; switch (type) { case "Cube": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Cube, _defaultMaterial); break; case "Cylinder": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Cylinder, _defaultMaterial); break; case "Quad": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Quad, _defaultMaterial); break; case "Plane": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Plane, _defaultMaterial); break; case "Pyramid": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Pyramid, _defaultMaterial); break; case "Sphere": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Sphere, _defaultMaterial); break; case "Torus": gameObject = GameObject.CreatePrimitive(PrimitiveTypes.Torus, _defaultMaterial); break; case "Terrain": gameObject = GameObjectFactory.CreateTerrain(); var terrain = gameObject.GetComponent <Terrain>(); terrain.Flatten(); terrain.Renderer.Material = _defaultMaterial; break; case "Water": gameObject = GameObjectFactory.CreateWater(TextureFactory.CreateColor(Color.AliceBlue, 1, 1), TextureFactory.CreateNoise(32), Vector3.One); break; case "Directional": gameObject = CreateLight(type, LightType.Directional); break; case "Point": gameObject = CreateLight(type, LightType.Point); break; case "Spot": gameObject = CreateLight(type, LightType.Spot); break; case "Camera": gameObject = GameObjectFactory.CreateCamera(); var cameraRenderer = gameObject.AddComponent <EditorIconRenderer>(); cameraRenderer.Setup("Camera_Icon"); cameraRenderer.AddComponent <SphereCollider>(); break; default: break; } gameObject.Name = type; AddGameObject(gameObject); return(gameObject); }