public static void UpdateEffectReflector(MyEffectReflectorBase effect, bool subtractCameraPosition) { MyRenderLight reflectorLight = null; foreach (MyRenderLight light in m_renderLights) { if (light.ReflectorOn) { reflectorLight = light; break; } } if (reflectorLight != null && reflectorLight.ReflectorOn) { effect.SetReflectorDirection(reflectorLight.ReflectorDirection); effect.SetReflectorConeMaxAngleCos(reflectorLight.ReflectorConeMaxAngleCos); effect.SetReflectorColor(reflectorLight.ReflectorColor); effect.SetReflectorRange(reflectorLight.ReflectorRange); } else { effect.SetReflectorRange(0); } if (subtractCameraPosition) { effect.SetCameraPosition(Vector3.Zero); } else { effect.SetCameraPosition((Vector3)MyRenderCamera.Position); } }
public MyLightGlare(MyRenderLight light) { GlareMaterial = "LightGlare"; m_parent = light; m_occlusionBox = new BoundingBoxD(); }
static void SetLightToEffect(MyEffectDynamicLightingBase effect, int index, MyRenderLight light, bool subtractCameraPosition) { if (subtractCameraPosition == true) { effect.SetDynamicLightsPosition(index, (Vector3)(light.Position - MyRenderCamera.Position)); } else { effect.SetDynamicLightsPosition(index, (Vector3)light.Position); } //Cannot use *light.Intensity because it makes visual artifacts effect.SetDynamicLightsColor(index, light.Color * MathHelper.Clamp(light.Intensity, 0, 1)); effect.SetDynamicLightsFalloff(index, light.Falloff); effect.SetDynamicLightsRange(index, light.Range); }