// Use this for initialization void Start() { GameObject gridContainer = GameObject.FindGameObjectWithTag("GridContainer"); _gridContainer = gridContainer.GetComponent< HexGridManager >(); _navAgent = GetComponent< NavMeshAgent >(); GameObject swarmGameObject = GameObject.FindGameObjectWithTag ("SwarmTarget"); _target = swarmGameObject.GetComponent< SwarmTarget > (); _occupant = _gridContainer.CreateOccupant(gameObject, 1); _gridContainer.PositionToGrid(transform.position, ref currentGrid); }
// Use this for initialization void Start() { GameObject gridContainer = GameObject.FindGameObjectWithTag("GridContainer"); _gridContainer = gridContainer.GetComponent <HexGridManager>(); _navAgent = GetComponent <NavMeshAgent>(); GameObject swarmGameObject = GameObject.FindGameObjectWithTag("SwarmTarget"); _target = swarmGameObject.GetComponent <SwarmTarget> (); _occupant = _gridContainer.CreateOccupant(gameObject, 1); _gridContainer.PositionToGrid(transform.position, ref currentGrid); }
void Start() { transform.position = HivePosition; hiveTransform.localScale = new Vector3(hiveRadius, hiveRadius, hiveRadius); swarmKernel = swarmComputeShader.FindKernel("TargetSwarmMain"); worldKernel = swarmComputeShader.FindKernel("TargetWorldUpdateMain"); // Create rotation matrices CreateRotationMatrices(); // Create the worldtexture worldTexture = CreateRenderTexture(); // Create and init swarmer compute buffers swarmBuffer = new ComputeBuffer(numSwarmers, 56); Swarmer[] swarmers = new Swarmer[numSwarmers]; for (int i = 0; i < swarmers.Length; i++) { swarmers[i].color = new Vector3(0.20f, 1f, 0f); swarmers[i].position = HivePosition;/* + new Vector3( Random.Range(-spawnRange, spawnRange), * Random.Range(-spawnRange, spawnRange), * Random.Range(-spawnRange, spawnRange));*/ swarmers[i].previousPosition = swarmers[i].position; swarmers[i].direction = new Vector3(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)).normalized; swarmers[i].scent = 0; swarmers[i].pheromoneScent = 0; } swarmBuffer.SetData(swarmers); // Create and init swarm targets compute buffer swarmTargetBuffer = new ComputeBuffer(targets.Length, 16); SwarmTarget[] swarmTargets = new SwarmTarget[targets.Length]; for (int i = 0; i < swarmTargets.Length; i++) { swarmTargets[i].position = HivePosition + targets[i].localPosition; swarmTargets[i].hp = 1; } swarmTargetBuffer.SetData(swarmTargets); // Set swarm comput shader data swarmComputeShader.SetInt("width", worldSize.x); swarmComputeShader.SetInt("height", worldSize.y); swarmComputeShader.SetInt("depth", worldSize.z); swarmComputeShader.SetTexture(swarmKernel, "worldTex", worldTexture); swarmComputeShader.SetBuffer(swarmKernel, "swarmers", swarmBuffer); swarmComputeShader.SetBuffer(swarmKernel, "targets", swarmTargetBuffer); swarmComputeShader.SetInt("numTargets", swarmTargets.Length); swarmComputeShader.SetFloats("hiveX", HivePosition.x); swarmComputeShader.SetFloats("hiveY", HivePosition.y); swarmComputeShader.SetFloats("hiveZ", HivePosition.z); swarmComputeShader.SetFloats("traceAdd", traceAdd); swarmComputeShader.SetFloats("traceDecay", traceDecay); swarmComputeShader.SetFloat("traceAttraction", traceAttraction); swarmComputeShader.SetFloat("swarmerSpeed", swarmerSpeed); swarmComputeShader.SetMatrix("rot1", rotMat1); swarmComputeShader.SetMatrix("rot2", rotMat2); swarmComputeShader.SetMatrix("rot3", rotMat3); swarmComputeShader.SetMatrix("rot4", rotMat4); swarmComputeShader.SetMatrix("rot5", rotMat5); swarmComputeShader.SetMatrix("rot6", rotMat6); swarmComputeShader.SetFloat("randomness", randomness); swarmComputeShader.SetFloat("hiveRadius", hiveRadius); swarmComputeShader.SetTexture(worldKernel, "worldTex", worldTexture); Debug.Log($"Hiveposition: {HivePosition}"); // Set rendering materials data swarmerMaterial.SetBuffer("swarmers", swarmBuffer); // Debug debugWorldNodes = new WorldNode[NumWorldNodes]; }