public static void InitShaderRenderers(Transform root, List <Renderer> shaderRenderers, ref Renderer shadowRenderer, ref ShadowSlicePlane shadowSlicePlane) { shaderRenderers.Clear(); Renderer[] componentsInChildren = root.GetComponentsInChildren <Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Renderer renderer = componentsInChildren[i]; if (renderer == null) { Debug.LogError("item is null"); } else if (ShadowSlicePlaneMgr.IsShadow(renderer.get_gameObject())) { shadowRenderer = renderer; shadowSlicePlane = renderer.GetComponent <ShadowSlicePlane>(); if (shadowSlicePlane == null) { Debug.LogError("shadowSlicePlane is null"); } } else { shaderRenderers.Add(renderer); } } }
private static void ShowShadow(long uuid, Transform actorTarget, ActorParent actorParent, bool bHideShadow, int modelId = 0) { if (GameLevelManager.IsRealTimeShadowOn()) { ShadowController.SetShadowModelRender(actorTarget, bHideShadow); } else { float scale = 1f; if (modelId > 0) { AvatarModel avatarModel = DataReader <AvatarModel> .Get(modelId); if (avatarModel != null) { scale = avatarModel.projectorScale; } } ShadowSlicePlaneMgr.ShowShadowSlicePlane(uuid, actorTarget, actorParent, bHideShadow, scale); } }
public static void SetIsNearCamera(Transform root, bool isHide = false) { if (!SystemConfig.IsFindOcclusionByCameraOn) { return; } if (!SystemConfig.IsShaderEffectOn) { return; } if (root == null) { return; } Renderer[] componentsInChildren = root.GetComponentsInChildren <Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Renderer renderer = componentsInChildren[i]; if (!LayerSystem.IsSpecialEffectLayers(renderer.get_gameObject().get_layer()) && !ShadowSlicePlaneMgr.IsShadow(renderer.get_gameObject())) { Material[] materials = renderer.get_materials(); if (materials != null && materials.Length > 0) { AdjustTransparency adjustTransparency = renderer.get_gameObject().AddMissingComponent <AdjustTransparency>(); adjustTransparency.SetIsNearCamera(isHide); } } } }