// Use this for initialization void Start() { float height = 2.0f * Camera.main.orthographicSize; screenWidthInPoints = height * Camera.main.aspect; spawner = GetComponent <SpawnHandler>(); playerAudio = GetComponent <AudioSource>(); car = GetComponent <CarControls>(); fly = GetComponent <FlyControls>(); gameState = GetComponent <GameState>(); playerRenderer = GetComponent <SpriteRenderer>(); playerAnimator = GetComponent <Animator>(); heartIndicatorRenderer = heartIndicator.GetComponent <SpriteRenderer>(); // Start on ground vehicleState = VehicleStateEnum.Ground; currentControls = car; }
/// <summary> /// /// </summary> /// <param name="control"></param> public override void Load(Control control) { base.Load(control); camera = new PerspectiveCamera(45, control.Width / (float)control.Height, 0.1f, 15000); this.camera.Position.Z = 1000; controls = new FlyControls(control, camera); controls.MovementSpeed = 1000.0f; controls.RollSpeed = (float)Math.PI / 10; scene = new Scene(); scene.Fog = new Fog(Color.Black, 1, 15000); scene.AutoUpdate = false; var light1 = new PointLight((Color)colorConvertor.ConvertFromString("#ff2200")); light1.Position = new Vector3(0, 0, 0); scene.Add(light1); var light2 = new DirectionalLight(Color.White); light2.Position = new Vector3(0, 0, 1).Normalize(); scene.Add(light2); var geometry = new List <GeometryEx>(); geometry.Add(new GeometryEx() { distance = 50, geometry = new IcosahedronGeometry(100, 4) }); geometry.Add(new GeometryEx() { distance = 300, geometry = new IcosahedronGeometry(100, 3) }); geometry.Add(new GeometryEx() { distance = 1000, geometry = new IcosahedronGeometry(100, 2) }); geometry.Add(new GeometryEx() { distance = 2000, geometry = new IcosahedronGeometry(100, 1) }); geometry.Add(new GeometryEx() { distance = 8000, geometry = new IcosahedronGeometry(100, 4) }); var material = new MeshLambertMaterial() { Color = Color.White, Wireframe = true }; for (var j = 0; j < 1000; j++) { var lod = new LOD(); for (var i = 0; i < geometry.Count; i++) { var mesh = new Mesh(geometry[i].geometry, material); mesh.Scale = new Vector3(1.5f, 1.5f, 1.5f); mesh.UpdateMatrix(); mesh.MatrixAutoUpdate = false; lod.AddLevel(mesh, geometry[i].distance); } lod.Position.X = 10000 * (0.5f - Mat.Random()); lod.Position.Y = 7500 * (0.5f - Mat.Random()); lod.Position.Z = 10000 * (0.5f - Mat.Random()); lod.UpdateMatrix(); lod.MatrixAutoUpdate = false; scene.Add(lod); } renderer.SortObjects = false; }