aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs134
1 files changed, 132 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
index a2aa713..caa068d 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs
@@ -760,8 +760,138 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
760 } 760 }
761 761
762 public double llGetRegionTimeDilation() { return 1.0f; } 762 public double llGetRegionTimeDilation() { return 1.0f; }
763 public double llGetRegionFPS() { return 10.0f; } 763 public double llGetRegionFPS() { return 10.0f; }
764 public void llParticleSystem(List<Object> rules) { NotImplemented("llParticleSystem"); } 764
765 /* particle system rules should be coming into this routine as doubles, that is
766 rule[0] should be an integer from this list and rule[1] should be the arg
767 for the same integer. wiki.secondlife.com has most of this mapping, but some
768 came from http://www.caligari-designs.com/p4u2
769
770 We iterate through the list for 'Count' elements, incrementing by two for each
771 iteration and set the members of Primitive.ParticleSystem, one at a time.
772 */
773 public enum PrimitiveRule : int
774 {
775 PSYS_PART_FLAGS = 0,
776 PSYS_PART_START_COLOR = 1,
777 PSYS_PART_START_ALPHA = 2,
778 PSYS_PART_END_COLOR = 3,
779 PSYS_PART_END_ALPHA = 4,
780 PSYS_PART_START_SCALE = 5,
781 PSYS_PART_END_SCALE = 6,
782 PSYS_PART_MAX_AGE = 7,
783 PSYS_SRC_ACCEL = 8,
784 PSYS_SRC_PATTERN = 9,
785 PSYS_SRC_TEXTURE = 12,
786 PSYS_SRC_BURST_RATE = 13,
787 PSYS_SRC_BURST_PART_COUNT = 15,
788 PSYS_SRC_BURST_RADIUS = 16,
789 PSYS_SRC_BURST_SPEED_MIN = 17,
790 PSYS_SRC_BURST_SPEED_MAX = 18,
791 PSYS_SRC_MAX_AGE = 19,
792 PSYS_SRC_TARGET_KEY = 20,
793 PSYS_SRC_OMEGA = 21,
794 PSYS_SRC_ANGLE_BEGIN = 22,
795 PSYS_SRC_ANGLE_END = 23
796 }
797
798 public void llParticleSystem(List<Object> rules)
799 {
800 Primitive.ParticleSystem prules = new Primitive.ParticleSystem();
801 for (int i = 0; i < rules.Count; i += 2)
802 {
803 switch ((int)rules[i])
804 {
805 case (int)PrimitiveRule.PSYS_PART_FLAGS:
806 prules.PartFlags = (uint)rules[i + 1];
807 break;
808
809 case (int)PrimitiveRule.PSYS_PART_START_COLOR:
810 prules.PartStartColor = (LLColor)rules[i + 1];
811 break;
812
813 case (int)PrimitiveRule.PSYS_PART_START_ALPHA:
814 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
815 break;
816
817 case (int)PrimitiveRule.PSYS_PART_END_COLOR:
818 prules.PartEndColor = (LLColor)rules[i + 1];
819 break;
820
821 case (int)PrimitiveRule.PSYS_PART_END_ALPHA:
822 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
823 break;
824
825 case (int)PrimitiveRule.PSYS_PART_START_SCALE:
826 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
827 break;
828
829 case (int)PrimitiveRule.PSYS_PART_END_SCALE:
830 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
831 break;
832
833 case (int)PrimitiveRule.PSYS_PART_MAX_AGE:
834 prules.MaxAge = (float)rules[i + 1];
835 break;
836
837 case (int)PrimitiveRule.PSYS_SRC_ACCEL:
838 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
839 break;
840
841 case (int)PrimitiveRule.PSYS_SRC_PATTERN:
842 //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1];
843 break;
844
845 case (int)PrimitiveRule.PSYS_SRC_TEXTURE:
846 prules.Texture = (LLUUID)rules[i + 1];
847 break;
848
849 case (int)PrimitiveRule.PSYS_SRC_BURST_RATE:
850 prules.BurstRate = (float)rules[i + 1];
851 break;
852
853 case (int)PrimitiveRule.PSYS_SRC_BURST_PART_COUNT:
854 prules.BurstPartCount = (byte)rules[i + 1];
855 break;
856
857 case (int)PrimitiveRule.PSYS_SRC_BURST_RADIUS:
858 prules.BurstRadius = (float)rules[i + 1];
859 break;
860
861 case (int)PrimitiveRule.PSYS_SRC_BURST_SPEED_MIN:
862 prules.BurstSpeedMin = (float)rules[i + 1];
863 break;
864
865 case (int)PrimitiveRule.PSYS_SRC_BURST_SPEED_MAX:
866 prules.BurstSpeedMax = (float)rules[i + 1];
867 break;
868
869 case (int)PrimitiveRule.PSYS_SRC_MAX_AGE:
870 prules.MaxAge = (float)rules[i + 1];
871 break;
872
873 case (int)PrimitiveRule.PSYS_SRC_TARGET_KEY:
874 prules.Target = (LLUUID)rules[i + 1];
875 break;
876
877 case (int)PrimitiveRule.PSYS_SRC_OMEGA:
878 //cast?? prules.MaxAge = (float)rules[i + 1];
879 break;
880
881 case (int)PrimitiveRule.PSYS_SRC_ANGLE_BEGIN:
882 prules.InnerAngle = (float)rules[i + 1];
883 break;
884
885 case (int)PrimitiveRule.PSYS_SRC_ANGLE_END:
886 prules.OuterAngle = (float)rules[i + 1];
887 break;
888
889 }
890 }
891
892 m_host.AddNewParticleSystem(prules);
893 }
894
765 public void llGroundRepel(double height, int water, double tau) { NotImplemented("llGroundRepel"); } 895 public void llGroundRepel(double height, int water, double tau) { NotImplemented("llGroundRepel"); }
766 public void llGiveInventoryList() { NotImplemented("llGiveInventoryList"); } 896 public void llGiveInventoryList() { NotImplemented("llGiveInventoryList"); }
767 public void llSetVehicleType(int type) { NotImplemented("llSetVehicleType"); } 897 public void llSetVehicleType(int type) { NotImplemented("llSetVehicleType"); }