public void Generate() { GoUtils.ClearTransformChilds(transform); Func <string, GameObject> findGo = name => { var t = transform.Find(name); if (t != null) { return(t.gameObject); } return(null); }; foreach (var s in sprites) { var go = findGo(s.name); if (go == null) { go = GoUtils.AddAnEmptyGameObject(s.name, transform); } var renderer = go.GetComponent <SpriteRenderer>(); if (renderer == null) { renderer = go.AddComponent <SpriteRenderer>(); } renderer.sprite = s; } }
public void OnEnable() { Color clearColor = new Color(0f, 0f, 0f, 0f); //Set up catch cameras. runtimeDatasMap.Clear(); foreach (var pair in lightLayerMap) { var runtimeData = new LayerRuntimeData(); var go = GoUtils.AddAnEmptyGameObject("Catch " + pair.Key, transform); var camera = CameraUtils.AddRenderCamera(go, pair.Value.catchLayer); camera.depth = -2; camera.backgroundColor = clearColor; runtimeData.catchCamera = camera; runtimeData.catchTexture = ScreenTextureAllocator.generateRenderTexture(); runtimeData.catchCamera.targetTexture = runtimeData.catchTexture; StartCoroutine(UpdateRuntimeData(runtimeData)); runtimeDatasMap.Add(pair.Key, runtimeData); } MixEffect.SetLightMixShader(LightMixMesh); MixEffect.SetScreenMixShader(ScreenMix); BlurEffect.SetShader(BlurShader); finalTexture = ScreenTextureAllocator.generateRenderTexture(); layers = new List <string>(lightLayerMap.Keys); layers.Sort((ll, rl) => lightLayerMap[ll].depth.CompareTo(lightLayerMap[rl].depth)); originMainCameraCullingMask = Camera.main.cullingMask; Camera.main.cullingMask = finalTexLayerMask; }
public void SetSprite(SpriteRenderer sr) { sr.gameObject.layer = LayerMask.NameToLayer(layer); sr.sortingLayerName = sortingLayer; sr.sortingOrder = sortingOrder; var parallaxMove = GoUtils.GetOrAddComponent <ParallaxMove>(sr.gameObject); parallaxMove.degrees = parallaxMoveDegree; parallaxMove.basePosGet = () => VectorUtils.V32(Camera.main.transform.position); Func <Vector2> srPosGet = () => VectorUtils.V32(sr.transform.position); Action <Vector2> srPosSet = (pos) => sr.transform.position = VectorUtils.V23(pos, sr.transform.position.z); parallaxMove.pivotRef = new ClassRef <Vector2>(srPosSet, srPosGet); }