void Init() { for (int i = 0; i < seaResolution; i++) { for (int j = 0; j < seaResolution; j++) { particlesAtr[i * seaResolution + j] = new myParticle(radius); particlesArray[i * seaResolution + j].position = particlesAtr[i * seaResolution + j].GetPosition(); } } particleSystem.SetParticles(particlesArray, particlesArray.Length); }
private void AdvectTracersSliceThreaded(System.Object info) { ThreadInfo threadInfo = (ThreadInfo)info; float timeStep = threadInfo.timeStep; int itStart = threadInfo.begin; int itEnd = threadInfo.end; VortonSim vortonSim = threadInfo.vortonSim; ManualResetEvent handle = threadInfo.handle; for (int offset = itStart; offset < itEnd; ++offset) { // For each passive tracer in this slice... Vector3 velocity = ((Vector)vortonSim.mVelGrid.Interpolate(vortonSim.mTracers[offset].position)).v; myParticle newTracer = new myParticle(); newTracer.position = vortonSim.mTracers[offset].position + velocity * timeStep; newTracer.velocity = velocity; // Cache for use in collisions vortonSim.mTracersAux[offset] = newTracer; } handle.Set(); }
// Start is called before the first frame update void Start() { tSet.Clear(); //mC=gameObject.GetComponent<MeshCollider>(); mF = gameObject.GetComponent <MeshFilter> (); originalMesh = mF.mesh; trianglesList = mF.sharedMesh.triangles; normalList = mF.sharedMesh.normals; softVerts = mF.sharedMesh.vertices; foreach (Collider cld in GetComponents <Collider>()) { Destroy(cld); } //mC = gameObject.AddComponent<MeshCollider> (); //mC.sharedMesh = originalMesh; //mC.convex = true; for (int i = 0; i < originalMesh.vertexCount; i++) { myParticle temp = new myParticle(originalMesh.vertices[i], Vector3.zero, Vector3.zero); particlesList.Add(temp); } F = new Vector3[particlesList.Count]; for (int i = 0; i < originalMesh.triangles.Length; i += 3) { if (!particlesList[originalMesh.triangles[i]].linkParticle.ContainsKey(originalMesh.triangles[i + 1])) { particlesList[originalMesh.triangles[i]].linkParticle.Add(originalMesh.triangles[i + 1], (particlesList[originalMesh.triangles[i]].position - particlesList[originalMesh.triangles[i + 1]].position).magnitude); } if (!particlesList[originalMesh.triangles[i]].linkParticle.ContainsKey(originalMesh.triangles[i + 2])) { particlesList[originalMesh.triangles[i]].linkParticle.Add(originalMesh.triangles[i + 2], (particlesList[originalMesh.triangles[i]].position - particlesList[originalMesh.triangles[i + 2]].position).magnitude); } if (!particlesList[originalMesh.triangles[i + 1]].linkParticle.ContainsKey(originalMesh.triangles[i])) { particlesList[originalMesh.triangles[i + 1]].linkParticle.Add(originalMesh.triangles[i], (particlesList[originalMesh.triangles[i + 1]].position - particlesList[originalMesh.triangles[i]].position).magnitude); } if (!particlesList[originalMesh.triangles[i + 1]].linkParticle.ContainsKey(originalMesh.triangles[i + 2])) { particlesList[originalMesh.triangles[i + 1]].linkParticle.Add(originalMesh.triangles[i + 2], (particlesList[originalMesh.triangles[i + 1]].position - particlesList[originalMesh.triangles[i + 2]].position).magnitude); } if (!particlesList[originalMesh.triangles[i + 2]].linkParticle.ContainsKey(originalMesh.triangles[i])) { particlesList[originalMesh.triangles[i + 2]].linkParticle.Add(originalMesh.triangles[i], (particlesList[originalMesh.triangles[i]].position - particlesList[originalMesh.triangles[i + 2]].position).magnitude); } if (!particlesList[originalMesh.triangles[i + 2]].linkParticle.ContainsKey(originalMesh.triangles[i + 1])) { particlesList[originalMesh.triangles[i + 2]].linkParticle.Add(originalMesh.triangles[i + 1], (particlesList[originalMesh.triangles[i + 2]].position - particlesList[originalMesh.triangles[i + 1]].position).magnitude); } //Debug.Log(originalMesh.triangles[i]); } for (int i = 0; i < particlesList.Count; i++) { for (int n = i + 1; n < particlesList.Count; n++) { if (particlesList[i].position == particlesList[n].position) { if (!particlesList[i].sameParticle.Contains(n)) { particlesList[i].sameParticle.Add(n); } if (!particlesList[n].sameParticle.Contains(i)) { particlesList[n].sameParticle.Add(i); } } } } var objMesh = ColliderObj.GetComponent <MeshFilter>().mesh; for (int i = 0; i < objMesh.triangles.Length; i += 3) { myTriangle tempV = new myTriangle(objMesh.vertices[objMesh.triangles[i]], objMesh.vertices[objMesh.triangles[i + 1]], objMesh.vertices[objMesh.triangles[i + 2]], objMesh.normals[objMesh.triangles[i]]); triangleList.Add(tempV); } //ContainR=ColliderObj.localScale.x>ColliderObj.localScale.y?ColliderObj.localScale.x:ColliderObj.localScale.y; //ContainR=ContainR>ColliderObj.localScale.z?ContainR:ColliderObj.localScale.z; }