public void Execute(ref ExecuteContext <Parameters, Providers> context) { if (context.Outputs.Count == 0) { return; } if (m_Random.state == 0) { m_Random.InitState(2747636419u); } var outputSampleBuffer = context.Outputs.GetSampleBuffer(0); var outputChannels = outputSampleBuffer.Channels; var parameters = context.Parameters; var inputCount = context.Inputs.Count; for (var channel = 0; channel < outputChannels; ++channel) { var outputBuffer = outputSampleBuffer.GetBuffer(channel); for (var i = 0; i < inputCount; i++) { var inputBuff = context.Inputs.GetSampleBuffer(i).GetBuffer(channel); for (var s = 0; s < outputBuffer.Length; s++) { outputBuffer[s] += inputBuff[s]; } } for (var s = 0; s < outputBuffer.Length; s++) { outputBuffer[s] += m_Random.NextFloat() * 2.0f - 1.0f + parameters.GetFloat(Parameters.Offset, s); } } }
void Start() { m_ResultsDelayedQueries = new bool[m_QueryCount]; m_ResultsDirectQueries = new bool[m_QueryCountPerFrame]; m_BlackBoard = new BlackBoard(m_EntryCount, m_QueryCount); m_BlackBoardSystem = World.Active.GetOrCreateSystem <BlackBoardSystem>(); m_BlackBoardSystem.BlackBoards.Add("TestBlackBoard", m_BlackBoard); m_Rand = new Random(); m_Rand.InitState(); for (int i = 0; i < m_EntryCount; i++) { m_BlackBoard.SetEntry(i, m_Rand.NextInt()); } for (int i = 0; i < m_QueryCount; i++) { var value1 = m_Rand.NextInt(); var value2 = m_Rand.NextInt(); m_BlackBoard.SetQuery( i, m_Rand.NextInt(0, m_EntryCount), value1 < value2 ? value1 : value2, value1 < value2 ? value2 : value1); } }
private void Start() { _followCamera = FindObjectOfType <FollowCamera>(); _animator = GetComponent <Animator>(); _random = new Random(); _random.InitState(); }
static Mesh CreateMesh(Material material) { var random = new Random(); random.InitState(12345); var vertices = new Vector3[POINT_MAX * 2]; for (var i = 0; i < POINT_MAX; ++i) { float x = random.NextFloat(-RANGE, RANGE); float y = random.NextFloat(-RANGE, RANGE); float z = random.NextFloat(-RANGE, RANGE); var point = new Vector3(x, y, z); vertices[i * 2 + 0] = point; vertices[i * 2 + 1] = point; } var indices = new int[POINT_MAX * 2]; for (var i = 0; i < POINT_MAX * 2; ++i) { indices[i] = i; } var colors = new Color[POINT_MAX * 2]; for (var i = 0; i < POINT_MAX; ++i) { colors[i * 2 + 0] = new Color(0f, 0f, 0f /* not used */, 1f); colors[i * 2 + 1] = new Color(0f, 0f, 0f /* not used */, 0f); } var uvs = new Vector2[POINT_MAX * 2]; for (var i = 0; i < POINT_MAX; ++i) { uvs[i * 2 + 0] = new Vector2(1f, 0f); uvs[i * 2 + 1] = new Vector2(0f, 1f); } var mesh = new Mesh(); mesh.name = "debris"; mesh.vertices = vertices; mesh.colors = colors; mesh.uv = uvs; mesh.bounds = new Bounds(Vector3.zero, Vector3.one * 99999999); mesh.SetIndices(indices, MeshTopology.Lines, 0); mesh.UploadMeshData(true /* markNoLogerReadable */); _material = material; material.SetFloat("_Range", RANGE); material.SetFloat("_RangeR", 1f / RANGE); const float cpower = 0.4f; material.SetColor(MaterialColor, new Color(cpower, cpower, cpower)); // mesh_ = mesh; return(mesh); }
public static void Initialize(Material material) { // pool_ = new ObjectPool<Spark>(NUM*BATCH_NUM); _random.InitState(12345); _mesh = CreateMesh(material); _matricesInRenderer = new Matrix4x4[1] { Matrix4x4.identity, }; }
public void TestPerformance() { //map for (var i = 0; i < 100; i++) { var node = EntityManager.CreateEntity(); EntityManager.AddComponentData(node, new TestNode { Cost = 1, Id = i }); } //request var random = new Random(); random.InitState(); for (var i = 0; i < 1000; i++) { var request = EntityManager.CreateEntity(); EntityManager.AddComponentData(request, new PathFindingRequest { StartId = 0, GoalId = random.NextInt(90, 99) }); } var system = World.GetOrCreateSystem <TestSystem>(); system.resultECB = World.GetOrCreateSystem <EndInitializationEntityCommandBufferSystem>(); system.cleanECB = World.GetOrCreateSystem <EndSimulationEntityCommandBufferSystem>(); Stopwatch sw = Stopwatch.StartNew(); system.Update(); system.resultECB.Update(); EntityManager.CompleteAllJobs(); var resultQuery = EntityManager.CreateEntityQuery( typeof(PathResult), typeof(PathRoute)); var resultEntities = resultQuery.ToEntityArray(Allocator.TempJob); var results = resultQuery.ToComponentDataArray <PathResult>(Allocator.TempJob); Assert.AreEqual(1000, results.Length); foreach (var result in results) { Assert.AreEqual(true, result.Success, result.Log.ToString()); } resultEntities.Dispose(); results.Dispose(); sw.Stop(); Debug.Log(sw.ElapsedMilliseconds); }
static string GetColorStringFromHash(uint hash) { var rnd = new Unity.Mathematics.Random(); rnd.InitState(hash); var color = Color.HSVToRGB(rnd.NextFloat(0.1f, 0.9f), rnd.NextFloat(0.5f, 1), rnd.NextFloat(0.5f, 1)); var colorStr = ColorUtility.ToHtmlStringRGB(color); return(colorStr); }
IEnumerator ParallelGenRoutine() { if (!_isRandomInited) { _isRandomInited = true; Random.InitState(_seed); _random.InitState((uint)_seed); } while (_chunkGenQueue.Count > 0) { Profiler.BeginSample("Chunk procgen"); if (!_chunkGenQueue.TryDequeue(out var chunkPos)) { break; } var x = chunkPos.X; var z = chunkPos.Z; var heightmapJob = new HeightGenJob() { BaseScale = 20, Seed = _seed, SizeX = Chunk.CHUNK_SIZE_X, SizeY = Chunk.CHUNK_SIZE_Z, OffsetX = Chunk.CHUNK_SIZE_X * x, OffsetY = Chunk.CHUNK_SIZE_Z * z, Height = new Unity.Collections.NativeArray <byte>(Chunk.CHUNK_SIZE_X * Chunk.CHUNK_SIZE_Z, Unity.Collections.Allocator.Persistent) }; var hHandle = heightmapJob.Schedule(256, 128); hHandle.Complete(); var waterLevel = Utils.WorldOptions.WaterLevel; var blockCount = Chunk.CHUNK_SIZE_X * Chunk.CHUNK_SIZE_Y * Chunk.CHUNK_SIZE_Z; var fillJob = new ChunkGenJob() { SizeH = Chunk.CHUNK_SIZE_X, SizeY = Chunk.CHUNK_SIZE_Y, Random = _random, SeaLevel = waterLevel, HeightMap = heightmapJob.Height, Blocks = new Unity.Collections.NativeArray <BlockData>(blockCount, Unity.Collections.Allocator.Persistent) }; var fillHandler = fillJob.Schedule(blockCount, 512); var height = heightmapJob.Height.ToArray(); var maxY = waterLevel; for (int i = 0; i < height.Length; i++) { if (height[i] > maxY) { maxY = height[i]; } } Profiler.EndSample(); if (!ImmediateMode) { yield return(new WaitForEndOfFrame()); } fillHandler.Complete(); var readyChunk = new GeneratedChunkData(new Int3(x * Chunk.CHUNK_SIZE_X, 0, z * Chunk.CHUNK_SIZE_Z), fillJob.Blocks.ToArray(), heightmapJob.Height.ToArray(), maxY + 1, waterLevel); _readyChunks.Enqueue(readyChunk); heightmapJob.Height.Dispose(); fillJob.Blocks.Dispose(); } _routineRuuning = false; yield break; }
public void Init() { random = new Random(); random.InitState((uint)(Time.realtimeSinceStartup * 100)); }