private void OnEnable() { if (noise == null) { noise = new FastSimplexNoise(); } CheckMesh(); GenerateTables(); updatingBubble = true; Task task = UpdateBubbleAsync(); task.ConfigureAwait(false); }
private void GenerateRandomGrowthValues() { random = new System.Random(seed); randomGrowthValues = new float[transform.childCount]; for (int i = 0; i < randomGrowthValues.Length; i++) { randomGrowthValues[i] = (float)random.NextDouble(); } if (noise == null) { noise = new FastSimplexNoise(seed); } }
public override void Initialize(Vector3 surfacePosition) { base.Initialize(surfacePosition); ISceneTransitionService transitionService; if (MixedRealityServiceRegistry.TryGetService <ISceneTransitionService>(out transitionService)) { transitionService.OnTransitionStarted += OnTransitionStarted; } tileScale = 1f / numColumns; tileOffsets = new Vector2[numTiles]; int tileNum = 0; for (int row = 0; row < numRows; row++) { for (int column = 0; column < numColumns; column++) { Vector2 uv = Vector2.zero; uv.x = tileScale * column; uv.y = (tileScale * -row) - tileScale; tileOffsets[tileNum] = uv; tileNum++; if (tileNum >= numTiles) { break; } } if (tileNum >= numTiles) { break; } } noise = new FastSimplexNoise(); transitionColor = Color.black; forces = new Force[fingers.Length]; fingertips = new Fingertip[fingers.Length]; wisps = new Wisp[numWisps]; quads = new Quad[numWisps]; finalQuads = new Quad[numWisps]; renderOrder = new List <RenderOrder>(numWisps); for (int i = 0; i < numWisps; i++) { Wisp wisp = new Wisp(); wisp.TargetPoint = SurfacePosition + (Random.insideUnitSphere * SurfaceRadius); wisp.Point = wisp.TargetPoint; wisp.Velocity = Random.insideUnitSphere * initialVelocity; wisp.TargetRadius = Mathf.Lerp(wispSize.x, wispSize.y, (float)noise.Evaluate(wisp.Point.x, wisp.Point.y, wisp.Point.z)); wisp.Radius = wisp.TargetRadius; wisp.TileOffset = Random.Range(0, numTiles); wisps[i] = wisp; Quad quad = Quad.FromWisp(baseWispColor.Evaluate(Random.Range(0f, 1f)), wisp.Point, wisp.Radius, Vector3.up, Vector3.right, tileOffsets[wisp.TileOffset], tileScale); quad.Color = transitionColor; quads[i] = quad; finalQuads[i] = quads[i]; RenderOrder r = new RenderOrder(); renderOrder.Add(r); } for (int i = 0; i < fingers.Length; i++) { Transform finger = fingers[i]; Fingertip fingertip = fingertips[i]; fingertip.Block = new MaterialPropertyBlock(); fingertip.Trail = finger.GetComponentInChildren <TrailRenderer>(); fingertip.Mesh = finger.GetComponentInChildren <MeshRenderer>(); fingertip.PingAudio = finger.GetComponentInChildren <AudioSource>(); fingertips[i] = fingertip; } Camera.onPostRender += PostRender; updateWisps = true; Task task = UpdateWispsTask(); }