void Update() { if (Input.GetMouseButton(0)) { smokepos = transform.position; smokepos.z += Input.GetAxis("Mouse X") * xspeed * 0.02f; smokepos.y += Input.GetAxis("Mouse Y") * yspeed * 0.02f; } if (source && source.frames.Count > 0 && emitobjects.Count > 0) { source.Prepare(); t += Time.deltaTime; if (t > flowrate) { t -= flowrate; for (int i = 0; i < count; i++) { GameObject go = Pop(); if (go) { MegaFlowEffect ef = go.GetComponent <MegaFlowEffect>(); MegaFlowSmokeObjDef def = emitobjects[ef.emitindex]; float z = (Random.value - 0.5f) * width * 2.0f; float y = (Random.value - 0.5f) * height * 2.0f; float x = (Random.value - 0.5f) * 0.95f; Vector3 pos = Vector3.zero; pos.z = z; pos.y = y; pos.x = x; pos += offset; Vector3 scl = Vector3.one; scl.x = Random.Range(def.scalelow.x, def.scalehigh.x); //Random.value + 0.4f) * 2.0f; scl.y = Random.Range(def.scalelow.y, def.scalehigh.y); //Random.value + 0.4f) * 2.0f; scl.z = Random.Range(def.scalelow.z, def.scalehigh.z); //Random.value + 0.4f) * 2.0f; //scl.y = (Random.value + 0.4f) * 2.0f; //scl.z = (Random.value + 0.4f) * 2.0f; Vector3 rotspeed = Vector3.zero; rotspeed.x = Random.Range(def.rotspeedlow.x, def.rotspeedhigh.x); rotspeed.y = Random.Range(def.rotspeedlow.y, def.rotspeedhigh.y); rotspeed.z = Random.Range(def.rotspeedlow.z, def.rotspeedhigh.z); Vector3 srot = Vector3.zero; srot.x = Random.Range(def.rotlow.x, def.rothigh.x); srot.y = Random.Range(def.rotlow.y, def.rothigh.y); srot.z = Random.Range(def.rotlow.z, def.rothigh.z); Quaternion rot = Quaternion.Euler(srot); //Random.rotation; go.transform.position = transform.localToWorldMatrix.MultiplyPoint3x4(pos); go.transform.localScale = scl; ef.vel = transform.right * vel.x; ef.mass = mass; ef.Gravity = Gravity; ef.scale = scale; ef.framenum = framenum; ef.rot = rot.eulerAngles; ef.rotspeed = rotspeed; //Random.insideUnitSphere * 180.0f; Renderer rend = go.GetComponent <Renderer>(); if (cols.Count > 0) { if (colindex >= cols.Count) { colindex = 0; } //Renderer rend = go.GetComponent<Renderer>(); if (rend && rend.sharedMaterial) { rend.sharedMaterial.color = cols[colindex] * 0.5f; } colindex++; } rend.enabled = false; MegaFlowSmokeObj sobj = new MegaFlowSmokeObj(); sobj.obj = go; sobj.lifetime = lifetime; objects.Add(sobj); } } } } for (int i = 0; i < objects.Count; i++) { objects[i].lifetime -= Time.deltaTime; if (objects[i].lifetime < 0.0f) { GameObject sobj = objects[i].obj; Push(sobj); objects.RemoveAt(i); i--; } } }
void Update() { if ( Input.GetMouseButton(0) ) { smokepos = transform.position; smokepos.z += Input.GetAxis("Mouse X") * xspeed * 0.02f; smokepos.y += Input.GetAxis("Mouse Y") * yspeed * 0.02f; } if ( source && source.frames.Count > 0 && emitobjects.Count > 0 ) { source.Prepare(); t += Time.deltaTime; if ( t > flowrate ) { t -= flowrate; for ( int i = 0; i < count; i++ ) { GameObject go = Pop(); if ( go ) { MegaFlowEffect ef = go.GetComponent<MegaFlowEffect>(); MegaFlowSmokeObjDef def = emitobjects[ef.emitindex]; float z = (Random.value - 0.5f) * width * 2.0f; float y = (Random.value - 0.5f) * height * 2.0f; float x = (Random.value - 0.5f) * 0.95f; Vector3 pos = Vector3.zero; pos.z = z; pos.y = y; pos.x = x; pos += offset; Vector3 scl = Vector3.one; scl.x = Random.Range(def.scalelow.x, def.scalehigh.x); //Random.value + 0.4f) * 2.0f; scl.y = Random.Range(def.scalelow.y, def.scalehigh.y); //Random.value + 0.4f) * 2.0f; scl.z = Random.Range(def.scalelow.z, def.scalehigh.z); //Random.value + 0.4f) * 2.0f; //scl.y = (Random.value + 0.4f) * 2.0f; //scl.z = (Random.value + 0.4f) * 2.0f; Vector3 rotspeed = Vector3.zero; rotspeed.x = Random.Range(def.rotspeedlow.x, def.rotspeedhigh.x); rotspeed.y = Random.Range(def.rotspeedlow.y, def.rotspeedhigh.y); rotspeed.z = Random.Range(def.rotspeedlow.z, def.rotspeedhigh.z); Vector3 srot = Vector3.zero; srot.x = Random.Range(def.rotlow.x, def.rothigh.x); srot.y = Random.Range(def.rotlow.y, def.rothigh.y); srot.z = Random.Range(def.rotlow.z, def.rothigh.z); Quaternion rot = Quaternion.Euler(srot); //Random.rotation; go.transform.position = transform.localToWorldMatrix.MultiplyPoint3x4(pos); go.transform.localScale = scl; ef.vel = transform.right * vel.x; ef.mass = mass; ef.Gravity = Gravity; ef.scale = scale; ef.framenum = framenum; ef.rot = rot.eulerAngles; ef.rotspeed = rotspeed; //Random.insideUnitSphere * 180.0f; Renderer rend = go.GetComponent<Renderer>(); if ( cols.Count > 0 ) { if ( colindex >= cols.Count ) colindex = 0; //Renderer rend = go.GetComponent<Renderer>(); if ( rend && rend.material ) rend.material.color = cols[colindex] * 0.5f; colindex++; } rend.enabled = false; MegaFlowSmokeObj sobj = new MegaFlowSmokeObj(); sobj.obj = go; sobj.lifetime = lifetime; objects.Add(sobj); } } } } for ( int i = 0; i < objects.Count; i++ ) { objects[i].lifetime -= Time.deltaTime; if ( objects[i].lifetime < 0.0f ) { GameObject sobj = objects[i].obj; Push(sobj); objects.RemoveAt(i); i--; } } }