aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Sun
diff options
context:
space:
mode:
authorMic Bowman2014-01-28 22:40:39 -0800
committerMic Bowman2014-01-28 22:40:39 -0800
commit3f5c6c897f9ed6a8a78e8beddf4f5713995d5f34 (patch)
tree2819e747b0471846707c1f0ef08548ed0512994c /OpenSim/Region/CoreModules/World/Sun
parentTemporarily disable brush test. It will come back when tuning is complete. (diff)
downloadopensim-SC_OLD-3f5c6c897f9ed6a8a78e8beddf4f5713995d5f34.zip
opensim-SC_OLD-3f5c6c897f9ed6a8a78e8beddf4f5713995d5f34.tar.gz
opensim-SC_OLD-3f5c6c897f9ed6a8a78e8beddf4f5713995d5f34.tar.bz2
opensim-SC_OLD-3f5c6c897f9ed6a8a78e8beddf4f5713995d5f34.tar.xz
One more run at fixing the sun module. Parameter setting fixed to
work through the OSSL interface. And setting the parameters now adjusts all the dependent variables correctly so the sun moves at the modified rate.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Sun')
-rw-r--r--OpenSim/Region/CoreModules/World/Sun/SunModule.cs104
1 files changed, 52 insertions, 52 deletions
diff --git a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs
index e04cb29..561552a 100644
--- a/OpenSim/Region/CoreModules/World/Sun/SunModule.cs
+++ b/OpenSim/Region/CoreModules/World/Sun/SunModule.cs
@@ -261,10 +261,8 @@ namespace OpenSim.Region.CoreModules
261 261
262 private float GetCurrentTimeAsLindenSunHour() 262 private float GetCurrentTimeAsLindenSunHour()
263 { 263 {
264 if (m_SunFixed) 264 float curtime = m_SunFixed ? m_SunFixedHour : GetCurrentSunHour();
265 return m_SunFixedHour + 6; 265 return (curtime + 6.0f) % 24.0f;
266
267 return GetCurrentSunHour() + 6.0f;
268 } 266 }
269 267
270 #region INonSharedRegion Methods 268 #region INonSharedRegion Methods
@@ -517,7 +515,7 @@ namespace OpenSim.Region.CoreModules
517 return m_UpdateInterval; 515 return m_UpdateInterval;
518 516
519 case "current_time": 517 case "current_time":
520 return CurrentTime; 518 return GetCurrentTimeAsLindenSunHour();
521 519
522 default: 520 default:
523 throw new Exception("Unknown sun parameter."); 521 throw new Exception("Unknown sun parameter.");
@@ -526,7 +524,51 @@ namespace OpenSim.Region.CoreModules
526 524
527 public void SetSunParameter(string param, double value) 525 public void SetSunParameter(string param, double value)
528 { 526 {
529 HandleSunConsoleCommand("sun", new string[] {param, value.ToString() }); 527 switch (param)
528 {
529 case "year_length":
530 m_YearLengthDays = (int)value;
531 SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
532 SeasonSpeed = m_SeasonalCycle/SecondsPerYear;
533 break;
534
535 case "day_length":
536 m_DayLengthHours = value;
537 SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60);
538 SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
539 SunSpeed = m_SunCycle/SecondsPerSunCycle;
540 SeasonSpeed = m_SeasonalCycle/SecondsPerYear;
541 break;
542
543 case "day_night_offset":
544 m_HorizonShift = value;
545 HorizonShift = m_HorizonShift;
546 break;
547
548 case "day_time_sun_hour_scale":
549 m_DayTimeSunHourScale = value;
550 break;
551
552 case "update_interval":
553 m_UpdateInterval = (int)value;
554 break;
555
556 case "current_time":
557 value = (value + 18.0) % 24.0;
558 // set the current offset so that the effective sun time is the parameter
559 m_CurrentTimeOffset = 0; // clear this first so we use raw time
560 m_CurrentTimeOffset = (ulong)(SecondsPerSunCycle * value/ 24.0) - (CurrentTime % SecondsPerSunCycle);
561 break;
562
563 default:
564 throw new Exception("Unknown sun parameter.");
565
566 // Generate shared values
567 GenSunPos();
568
569 // When sun settings are updated, we should update all clients with new settings.
570 SunUpdateToAllClients();
571 }
530 } 572 }
531 573
532 public float GetCurrentSunHour() 574 public float GetCurrentSunHour()
@@ -606,57 +648,15 @@ namespace OpenSim.Region.CoreModules
606 } 648 }
607 else if (args.Length == 3) 649 else if (args.Length == 3)
608 { 650 {
609 float value = 0.0f; 651 double value = 0.0;
610 if (!float.TryParse(args[2], out value)) 652 if (! double.TryParse(args[2], out value))
611 { 653 {
612 Output.Add(String.Format("The parameter value {0} is not a valid number.", args[2])); 654 Output.Add(String.Format("The parameter value {0} is not a valid number.", args[2]));
655 return Output;
613 } 656 }
614 657
615 switch (args[1].ToLower()) 658 SetSunParameter(args[1].ToLower(), value);
616 {
617 case "year_length":
618 m_YearLengthDays = (int)value;
619 SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
620 break;
621
622 case "day_length":
623 m_DayLengthHours = value;
624 SecondsPerSunCycle = (uint) (m_DayLengthHours * 60 * 60);
625 SecondsPerYear = (uint) (SecondsPerSunCycle*m_YearLengthDays);
626 break;
627
628 case "day_night_offset":
629 m_HorizonShift = value;
630 HorizonShift = m_HorizonShift;
631 break;
632
633 case "day_time_sun_hour_scale":
634 m_DayTimeSunHourScale = value;
635 break;
636
637 case "update_interval":
638 m_UpdateInterval = (int)value;
639 break;
640
641 case "current_time":
642 // best to get the current time offset out of the currenttime equation then
643 // reset it
644 m_CurrentTimeOffset = 0;
645 m_CurrentTimeOffset = CurrentTime - (ulong)value;
646 break;
647
648 default:
649 Output.Add(String.Format("Unknown parameter {0}.", args[1]));
650 return Output;
651 }
652
653 Output.Add(String.Format("Parameter {0} set to {1}.", args[1], value.ToString())); 659 Output.Add(String.Format("Parameter {0} set to {1}.", args[1], value.ToString()));
654
655 // Generate shared values
656 GenSunPos();
657
658 // When sun settings are updated, we should update all clients with new settings.
659 SunUpdateToAllClients();
660 } 660 }
661 661
662 return Output; 662 return Output;