public override void setup() { invWidth = 1.0f / P5Setting.SCREEN_W; invHeight = 1.0f / P5Setting.SCREEN_H; aspectRatio = width * invHeight; aspectRatio2 = aspectRatio * aspectRatio; // create fluid and set options fluidSolver = new MSAFluidSolver2D((int)(FLUID_WIDTH), (int)(FLUID_WIDTH * height / width)); fluidSolver.enableRGB(true).setFadeSpeed(0.003f).setDeltaT(0.5f).setVisc(0.0001f); fluidSolver.enableBoundary = enableBoundary; // create image to hold fluid picture imgFluid = createImage(fluidSolver.getWidth(), fluidSolver.getHeight(), PImangeFormat.RGB); pImageRender.image = imgFluid; // create particle system if (p5particleSystem == null) { p5particleSystem = this.gameObject.AddComponent <P5ParticleSystem> (); } p5particleSystem.Init(fluidSolver); }
public void Init(MSAFluidSolver2D fluidSolver) { allParticles = maxParticles + maxStayParticles; p5particles = new P5Particle[allParticles]; curIndex = 0; for (int i = 0; i < maxParticles; i++) { p5particles [i] = new P5Particle(); p5particles [i].fluidSolver = fluidSolver; p5particles [i].isSpark = true; } // stay particle for (int i = maxParticles; i < allParticles; i++) { p5particles [i] = new P5Particle(); p5particles [i].fluidSolver = fluidSolver; p5particles [i].isSpark = true; /* * p5particles[i].isStay = true; * float x = Random.Range(0, Setting.SCREEN_W); * float y = Random.Range(0, Setting.SCREEN_H); * Color color = stayColor; * //Color color = Color.cyan; * p5particles[i].init(x, y, color); * float t_alpha = Random.Range(0.4f, 0.9f); * //p5particles[i].mass = 0.4f; * p5particles[i].mass = Random.Range(0.4f, 0.9f); * p5particles[i].StartAppearAnime(t_alpha); */ } p5ParticleRenderer.Init(p5particles); }
void Start() { // duplicate the original texture and assign to the material invWidth = 1.0f/WIDTH; invHeight = 1.0f/HEIGHT; aspectRatio = WIDTH * invHeight; aspectRatio2 = aspectRatio * aspectRatio; fluidSolver = new MSAFluidSolver2D(128,128); fluidSolver.enableRGB(true).setFadeSpeed(0.003f).setDeltaT(0.5f).setVisc(0.0001f); //Debug.Log(fluidSolver.getWidth()+":::"+ fluidSolver.getHeight()); texture = new Texture2D(fluidSolver.getWidth(),fluidSolver.getHeight()); renderer.material.mainTexture = texture; sourceTexture = (Texture2D)Resources.Load("otoko130");//WH128+2=130 Color[] cols = sourceTexture.GetPixels();//130*130 for(var i = 0; i < fluidSolver.getNumCells(); i++){ fluidSolver.rOld[i] = cols[i].r; fluidSolver.gOld[i] = cols[i].g; fluidSolver.bOld[i] = cols[i].b; } }