public override void Create() { name = "Metaballs (2D)"; pass = new MetaballRender2DPass("Metaballs2D"); MetaballSystem2D metaballSystem = MetaballSystem2D.GetInstance(); //if (metaballSystem.updated) //{ // pass.outlineSize = metaballSystem.outlineSize; // pass.innerColor = metaballSystem.innerColor; // pass.outlineColor = metaballSystem.outlineColor; //} //else //{ // metaballSystem.outlineSize = settings.outlineSize; // metaballSystem.innerColor = settings.innerColor; // metaballSystem.outlineColor = settings.outlineColor; // metaballSystem.updated = true; // pass.outlineSize = settings.outlineSize; // pass.innerColor = settings.innerColor; // pass.outlineColor = settings.outlineColor; //} pass.settings = settings; pass.renderPassEvent = settings.renderPassEvent; }
public static MetaballSystem2D GetInstance() { if (instance == null) { instance = new MetaballSystem2D(); } return(instance); }
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { MetaballSystem2D metaballSystem = MetaballSystem2D.GetInstance(); if (metaballSystem.updated) { outlineSize = metaballSystem.outlineSize; innerColor = metaballSystem.innerColor; outlineColor = metaballSystem.outlineColor; } else { metaballSystem.outlineSize = settings.outlineSize; metaballSystem.innerColor = settings.innerColor; metaballSystem.outlineColor = settings.outlineColor; metaballSystem.updated = true; outlineSize = settings.outlineSize; innerColor = settings.innerColor; outlineColor = settings.outlineColor; } CommandBuffer cmd = CommandBufferPool.Get(profilerTag); if (isFirstRender) { isFirstRender = false; cmd.SetGlobalVectorArray("_MetaballData", new Vector4[1000]); } List <Metaball2D> metaballs = MetaballSystem2D.Get(); List <Vector4> metaballData = new List <Vector4>(metaballs.Count); for (int i = 0; i < metaballs.Count; ++i) { Vector2 pos = renderingData.cameraData.camera.WorldToScreenPoint(metaballs[i].transform.position); float radius = metaballs[i].GetRadius(); metaballData.Add(new Vector4(pos.x, pos.y, radius, 0.0f)); } if (metaballData.Count > 0) { cmd.SetGlobalInt("_MetaballCount", metaballs.Count); cmd.SetGlobalVectorArray("_MetaballData", metaballData); cmd.SetGlobalFloat("_OutlineSize", outlineSize); cmd.SetGlobalColor("_InnerColor", innerColor); cmd.SetGlobalColor("_OutlineColor", outlineColor); cmd.SetGlobalFloat("_CameraSize", renderingData.cameraData.camera.orthographicSize); cmd.Blit(source, source, material); context.ExecuteCommandBuffer(cmd); } cmd.Clear(); CommandBufferPool.Release(cmd); }
private void Awake() { rbMass = GetComponent <Rigidbody2D>().mass; mass = rbMass; collider = GetComponent <CircleCollider2D>(); MetaballSystem2D.Add(this); Transform parent = null; try { parent = FindObjectOfType <GameManager>().metaballParent; } catch (Exception) { } if (parent != null) { transform.SetParent(parent); } }
void Awake() { metaballSystem = MetaballSystem2D.GetInstance(); }
private void OnDestroy() { MetaballSystem2D.Remove(this); }
private void Awake() { collider = GetComponent <CircleCollider2D>(); MetaballSystem2D.Add(this); }