internal void Light() { allLights = LightObject.GetLights(); DirectionalLights.Clear(); PointLights.Clear(); SpotLights.Clear(); for (int i = 0; i < allLights.Count; i++) { if (allLights[i].type == LightType.Spot) { //if (l.cookie == null) // l.cookie = DefaultSpotCookie; SpotLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Point) { PointLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Directional) { DirectionalLights.Add(allLights[i]); } if (UseAlloyLight) { allLights[i].light.GetOrAddComponent <AlloyAreaLight>().UpdateBinding(); } } }
internal void Light() { allLights = GameObject.FindObjectsOfType <Light>(); DirectionalLights.Clear(); PointLights.Clear(); SpotLights.Clear(); for (int i = 0; i < allLights.Length; i++) { if (allLights[i].type == LightType.Spot) { /* * if (l.cookie == null) * l.cookie = DefaultSpotCookie; */ SpotLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Point) { PointLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Directional) { DirectionalLights.Add(allLights[i]); } if (UseAlloyLight) { allLights[i].GetOrAddComponent <AlloyAreaLight>().UpdateBinding(); } } }
internal void Light() { allLights = LightObject.GetLights(); DirectionalLights.Clear(); PointLights.Clear(); SpotLights.Clear(); for (int i = 0; i < allLights.Count; i++) { if (allLights[i].type == LightType.Spot) { //if (l.cookie == null) // l.cookie = DefaultSpotCookie; SpotLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Point) { PointLights.Add(allLights[i]); } else if (allLights[i].type == LightType.Directional) { if (Graphics.Instance.Settings.UsePCSS) { if (null == pcss) { pcss = allLights[i].light.GetOrAddComponent <PCSSLight>(); } if (null != pcss) { pcss.enabled = true; } } else { if (null == pcss) { pcss = allLights[i].light.GetComponent <PCSSLight>(); } if (null != pcss) { pcss.enabled = false; } } DirectionalLights.Add(allLights[i]); } if (UseAlloyLight) { allLights[i].light.GetOrAddComponent <AlloyAreaLight>().UpdateBinding(); } } }
private void InitializeLightingScene() { //All lighting objects are requires to be in a layer named Lighting var lighting = m_level.getLayerByName("Lighting").Items; for (int i = 0; i < lighting.Count; ++i) { Vector3 lightPosition = new Vector3(); lightPosition.X = lighting[i].Position.X; lightPosition.Y = lighting[i].Position.Y; lightPosition.Z = 0; PointLights.Add(new PointLight() { Colour = Color.Red, LightIntensity = 4, LightRadius = 50, LightPosition = lightPosition }); } }
private void AddNode(LightNode lightNode) { Debug.Assert(lightNode.ActualIsEnabled, "Scene query contains disabled nodes."); // Ignore light if the reference position is not in the clip geometry. if (lightNode.Clip != null && _referencePosition.HasValue) { bool haveContact = HaveContact(lightNode.Clip, _referencePosition.Value); if (lightNode.InvertClip == haveContact) { return; } } // ----- Sort by estimated light contribution. // All lights except IBL will be sorted by contribution. // Note: If we have no reference node, it still makes sense to sort the objects // by their contribution. We choose to get the light contribution at the position // of each light. Vector3F position = _referencePosition ?? lightNode.PoseWorld.Position; //lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); // Or simpler: Sort light nodes by distance. --> Use for image-based lights. // (We use distance², because it is faster.) //float distance = (position - lightNode.PoseWorld.Position).LengthSquared; //lightNode.SortTag = -distance; // minus because we use descending sort. if (lightNode.Light is AmbientLight) { AmbientLights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } else if (lightNode.Light is DirectionalLight) { DirectionalLights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } else if (lightNode.Light is PointLight) { PointLights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } else if (lightNode.Light is Spotlight) { Spotlights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } else if (lightNode.Light is ProjectorLight) { ProjectorLights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } else if (lightNode.Light is ImageBasedLight) { ImageBasedLights.Add(lightNode); float distance = (position - lightNode.PoseWorld.Position).LengthSquared; lightNode.SortTag = -distance; // minus because we use descending sort. } else { OtherLights.Add(lightNode); lightNode.SortTag = lightNode.GetLightContribution(position, 0.7f); } }
public void Add(PointLight pointLight) { PointLights.Add(pointLight); }