Beispiel #1
0
 public void ReplaceSkyLight(LevelSkyLight oldLight, LevelSkyLight newLight)
 {
     lock (instanceMutationLock) {
         skyLights.Replace(oldLight, newLight);
         ResetSkyLight(oldLight);
         ResetSkyLight(newLight);
     }
 }
Beispiel #2
0
 protected override void ChildDeserialize(XDocument root)
 {
     skyLights.Clear();
     foreach (XElement skyLightElement in root.Root.Element(SKY_LIGHTS_ELEMENT_NAME).Elements())
     {
         skyLights.Add(LevelSkyLight.Deserialize(skyLightElement));
     }
 }
Beispiel #3
0
 public LevelSkyLight AddSkyLight(Vector3 position)
 {
     lock (instanceMutationLock) {
         LevelSkyLight newLight = new LevelSkyLight(position, Vector3.ONE, PhysicsManager.ONE_METRE_SCALED * 0.15f, 1.0f);
         skyLights.Add(newLight);
         ResetSkyLight(newLight);
         return(newLight);
     }
 }
Beispiel #4
0
 public void RemoveSkyLight(LevelSkyLight light)
 {
     lock (instanceMutationLock) {
         if (!skyLights.Contains(light))
         {
             throw new KeyNotFoundException("Given light is not added to this skylevel.");
         }
         skyLights.Remove(light);
         ResetSkyLight(light);
     }
 }
Beispiel #5
0
 public void ResetSkyLight(LevelSkyLight lsl)
 {
     using (RenderingModule.RenderStateBarrier.AcquirePermit(withLock: instanceMutationLock)) {
         if (activeSkyLights.ContainsKey(lsl))
         {
             AssetLocator.LightPass.RemoveLight(activeSkyLights.Pop(lsl));
         }
         if (skyLights.Contains(lsl))
         {
             activeSkyLights.Add(lsl, new Light(lsl.Position, lsl.Radius * SKY_SCALE, lsl.Color * lsl.LuminanceMultiplier));
             AssetLocator.LightPass.AddLight(activeSkyLights[lsl]);
         }
     }
 }