public void SetMaskMappingAxisInMaterial(MappingAxis mappingAxis, Material material) { if ((material.shader == _maskedSpriteWorldCoordsShader) || (material.shader == _maskedUnlitWorldCoordsShader)) { switch (mappingAxis) { case MappingAxis.X: material.SetFloat("_Axis", 0); material.EnableKeyword("_AXIS_X"); material.DisableKeyword("_AXIS_Y"); material.DisableKeyword("_AXIS_Z"); break; case MappingAxis.Y: material.SetFloat("_Axis", 1); material.DisableKeyword("_AXIS_X"); material.EnableKeyword("_AXIS_Y"); material.DisableKeyword("_AXIS_Z"); break; case MappingAxis.Z: material.SetFloat("_Axis", 2); material.DisableKeyword("_AXIS_X"); material.DisableKeyword("_AXIS_Y"); material.EnableKeyword("_AXIS_Z"); break; } } }
private void SetMaskMappingAxisInMaterials(MappingAxis mappingAxis) { foreach (Material material in CollectDifferentMaterials()) { SetMaskMappingAxisInMaterial(mappingAxis, material); } }
private void SetMaskMappingAxisInMaterials(MappingAxis mappingAxis) { if (transform.parent == null) { return; } Renderer[] renderers = transform.parent.gameObject.GetComponentsInChildren <Renderer>(); Graphic[] UIComponents = transform.parent.gameObject.GetComponentsInChildren <Graphic>(); List <Material> differentMaterials = new List <Material>(); foreach (Renderer renderer in renderers) { if (renderer.gameObject != gameObject) { foreach (Material material in renderer.sharedMaterials) { if (!differentMaterials.Contains(material)) { differentMaterials.Add(material); SetMaskMappingAxisInMaterial(mappingAxis, material); } } } } foreach (Graphic UIComponent in UIComponents) { if (UIComponent.gameObject != gameObject) { if (!differentMaterials.Contains(UIComponent.material)) { differentMaterials.Add(UIComponent.material); SetMaskMappingAxisInMaterial(mappingAxis, UIComponent.material); } } } }
private void ChangeMappingAxis(MappingAxis currMaskMappingWorldAxis, MappingAxis prevMaskMappingWorldAxis, bool currInvertAxis) { if (currMaskMappingWorldAxis == MappingAxis.X) { if (prevMaskMappingWorldAxis == MappingAxis.Y) { transform.eulerAngles = new Vector3(0, currInvertAxis ? -90 : 90, transform.eulerAngles.y); } else { transform.eulerAngles = new Vector3(0, currInvertAxis ? -90 : 90, transform.eulerAngles.z); } } else if (currMaskMappingWorldAxis == MappingAxis.Y) { if (prevMaskMappingWorldAxis == MappingAxis.Y) { transform.eulerAngles = new Vector3(currInvertAxis ? -90 : 90, transform.eulerAngles.y, 0); } else { transform.eulerAngles = new Vector3(currInvertAxis ? -90 : 90, transform.eulerAngles.z, 0); } } else if (currMaskMappingWorldAxis == MappingAxis.Z) { if (prevMaskMappingWorldAxis == MappingAxis.Y) { transform.eulerAngles = new Vector3(0, currInvertAxis ? -180 : 0, transform.eulerAngles.y); } else { transform.eulerAngles = new Vector3(0, currInvertAxis ? -180 : 0, transform.eulerAngles.z); } } SetMaskMappingAxisInMaterials(currMaskMappingWorldAxis); }
private void SetMaskMappingAxisInMaterials(MappingAxis mappingAxis) { if (transform.parent == null) { return; } Renderer[] renderers = transform.parent.gameObject.GetComponentsInChildren<Renderer>(); List<Material> differentMaterials = new List<Material>(); foreach (Renderer renderer in renderers) { if (renderer.gameObject != gameObject) { foreach (Material material in renderer.sharedMaterials) { if (!differentMaterials.Contains(material)) { differentMaterials.Add(material); SetMaskMappingAxisInMaterial(mappingAxis, material); } } } } }