diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 170 |
1 files changed, 138 insertions, 32 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e4ccce8..9db8ca0 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -7674,25 +7674,96 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7674 | } | 7674 | } |
7675 | break; | 7675 | break; |
7676 | 7676 | ||
7677 | case (int)ScriptBaseClass.PRIM_BUMP_SHINY: | 7677 | case (int)ScriptBaseClass.PRIM_BUMP_SHINY: |
7678 | // TODO-------------- | 7678 | if (remain < 1) |
7679 | if (remain < 1) | 7679 | return res; |
7680 | return res; | 7680 | face = (int)rules.GetLSLIntegerItem(idx++); |
7681 | 7681 | ||
7682 | face=(int)rules.GetLSLIntegerItem(idx++); | 7682 | tex = part.Shape.Textures; |
7683 | 7683 | int shiny; | |
7684 | res.Add(new LSL_Integer(0)); | 7684 | if (face == ScriptBaseClass.ALL_SIDES) |
7685 | res.Add(new LSL_Integer(0)); | 7685 | { |
7686 | for (face = 0; face < GetNumberOfSides(part); face++) | ||
7687 | { | ||
7688 | Shininess shinyness = tex.GetFace((uint)face).Shiny; | ||
7689 | if (shinyness == Shininess.High) | ||
7690 | { | ||
7691 | shiny = ScriptBaseClass.PRIM_SHINY_HIGH; | ||
7692 | } | ||
7693 | else if (shinyness == Shininess.Medium) | ||
7694 | { | ||
7695 | shiny = ScriptBaseClass.PRIM_SHINY_MEDIUM; | ||
7696 | } | ||
7697 | else if (shinyness == Shininess.Low) | ||
7698 | { | ||
7699 | shiny = ScriptBaseClass.PRIM_SHINY_LOW; | ||
7700 | } | ||
7701 | else | ||
7702 | { | ||
7703 | shiny = ScriptBaseClass.PRIM_SHINY_NONE; | ||
7704 | } | ||
7705 | res.Add(new LSL_Integer(shiny)); | ||
7706 | res.Add(new LSL_Integer((int)tex.GetFace((uint)face).Bump)); | ||
7707 | } | ||
7708 | } | ||
7709 | else | ||
7710 | { | ||
7711 | Shininess shinyness = tex.GetFace((uint)face).Shiny; | ||
7712 | if (shinyness == Shininess.High) | ||
7713 | { | ||
7714 | shiny = ScriptBaseClass.PRIM_SHINY_HIGH; | ||
7715 | } | ||
7716 | else if (shinyness == Shininess.Medium) | ||
7717 | { | ||
7718 | shiny = ScriptBaseClass.PRIM_SHINY_MEDIUM; | ||
7719 | } | ||
7720 | else if (shinyness == Shininess.Low) | ||
7721 | { | ||
7722 | shiny = ScriptBaseClass.PRIM_SHINY_LOW; | ||
7723 | } | ||
7724 | else | ||
7725 | { | ||
7726 | shiny = ScriptBaseClass.PRIM_SHINY_NONE; | ||
7727 | } | ||
7728 | res.Add(new LSL_Integer(shiny)); | ||
7729 | res.Add(new LSL_Integer((int)tex.GetFace((uint)face).Bump)); | ||
7730 | } | ||
7686 | break; | 7731 | break; |
7687 | 7732 | ||
7688 | case (int)ScriptBaseClass.PRIM_FULLBRIGHT: | 7733 | case (int)ScriptBaseClass.PRIM_FULLBRIGHT: |
7689 | // TODO-------------- | 7734 | if (remain < 1) |
7690 | if (remain < 1) | 7735 | return res; |
7691 | return res; | 7736 | face = (int)rules.GetLSLIntegerItem(idx++); |
7692 | 7737 | ||
7693 | face=(int)rules.GetLSLIntegerItem(idx++); | 7738 | tex = part.Shape.Textures; |
7694 | 7739 | int fullbright; | |
7695 | res.Add(new LSL_Integer(0)); | 7740 | if (face == ScriptBaseClass.ALL_SIDES) |
7741 | { | ||
7742 | for (face = 0; face < GetNumberOfSides(part); face++) | ||
7743 | { | ||
7744 | if (tex.GetFace((uint)face).Fullbright == true) | ||
7745 | { | ||
7746 | fullbright = ScriptBaseClass.TRUE; | ||
7747 | } | ||
7748 | else | ||
7749 | { | ||
7750 | fullbright = ScriptBaseClass.FALSE; | ||
7751 | } | ||
7752 | res.Add(new LSL_Integer(fullbright)); | ||
7753 | } | ||
7754 | } | ||
7755 | else | ||
7756 | { | ||
7757 | if (tex.GetFace((uint)face).Fullbright == true) | ||
7758 | { | ||
7759 | fullbright = ScriptBaseClass.TRUE; | ||
7760 | } | ||
7761 | else | ||
7762 | { | ||
7763 | fullbright = ScriptBaseClass.FALSE; | ||
7764 | } | ||
7765 | res.Add(new LSL_Integer(fullbright)); | ||
7766 | } | ||
7696 | break; | 7767 | break; |
7697 | 7768 | ||
7698 | case (int)ScriptBaseClass.PRIM_FLEXIBLE: | 7769 | case (int)ScriptBaseClass.PRIM_FLEXIBLE: |
@@ -7713,14 +7784,37 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7713 | break; | 7784 | break; |
7714 | 7785 | ||
7715 | case (int)ScriptBaseClass.PRIM_TEXGEN: | 7786 | case (int)ScriptBaseClass.PRIM_TEXGEN: |
7716 | // TODO-------------- | 7787 | // (PRIM_TEXGEN_DEFAULT, PRIM_TEXGEN_PLANAR) |
7717 | // (PRIM_TEXGEN_DEFAULT, PRIM_TEXGEN_PLANAR) | 7788 | if (remain < 1) |
7718 | if (remain < 1) | 7789 | return res; |
7719 | return res; | 7790 | face = (int)rules.GetLSLIntegerItem(idx++); |
7720 | 7791 | ||
7721 | face=(int)rules.GetLSLIntegerItem(idx++); | 7792 | tex = part.Shape.Textures; |
7722 | 7793 | if (face == ScriptBaseClass.ALL_SIDES) | |
7723 | res.Add(new LSL_Integer(0)); | 7794 | { |
7795 | for (face = 0; face < GetNumberOfSides(part); face++) | ||
7796 | { | ||
7797 | if (tex.GetFace((uint)face).TexMapType == MappingType.Planar) | ||
7798 | { | ||
7799 | res.Add(new LSL_Integer(ScriptBaseClass.PRIM_TEXGEN_PLANAR)); | ||
7800 | } | ||
7801 | else | ||
7802 | { | ||
7803 | res.Add(new LSL_Integer(ScriptBaseClass.PRIM_TEXGEN_DEFAULT)); | ||
7804 | } | ||
7805 | } | ||
7806 | } | ||
7807 | else | ||
7808 | { | ||
7809 | if (tex.GetFace((uint)face).TexMapType == MappingType.Planar) | ||
7810 | { | ||
7811 | res.Add(new LSL_Integer(ScriptBaseClass.PRIM_TEXGEN_PLANAR)); | ||
7812 | } | ||
7813 | else | ||
7814 | { | ||
7815 | res.Add(new LSL_Integer(ScriptBaseClass.PRIM_TEXGEN_DEFAULT)); | ||
7816 | } | ||
7817 | } | ||
7724 | break; | 7818 | break; |
7725 | 7819 | ||
7726 | case (int)ScriptBaseClass.PRIM_POINT_LIGHT: | 7820 | case (int)ScriptBaseClass.PRIM_POINT_LIGHT: |
@@ -7738,14 +7832,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
7738 | res.Add(new LSL_Float(shape.LightFalloff)); // falloff | 7832 | res.Add(new LSL_Float(shape.LightFalloff)); // falloff |
7739 | break; | 7833 | break; |
7740 | 7834 | ||
7741 | case (int)ScriptBaseClass.PRIM_GLOW: | 7835 | case (int)ScriptBaseClass.PRIM_GLOW: |
7742 | // TODO-------------- | 7836 | if (remain < 1) |
7743 | if (remain < 1) | ||
7744 | return res; | 7837 | return res; |
7745 | 7838 | face = (int)rules.GetLSLIntegerItem(idx++); | |
7746 | face=(int)rules.GetLSLIntegerItem(idx++); | 7839 | |
7747 | 7840 | tex = part.Shape.Textures; | |
7748 | res.Add(new LSL_Float(0)); | 7841 | float primglow; |
7842 | if (face == ScriptBaseClass.ALL_SIDES) | ||
7843 | { | ||
7844 | for (face = 0; face < GetNumberOfSides(part); face++) | ||
7845 | { | ||
7846 | primglow = tex.GetFace((uint)face).Glow; | ||
7847 | res.Add(new LSL_Float(primglow)); | ||
7848 | } | ||
7849 | } | ||
7850 | else | ||
7851 | { | ||
7852 | primglow = tex.GetFace((uint)face).Glow; | ||
7853 | res.Add(new LSL_Float(primglow)); | ||
7854 | } | ||
7749 | break; | 7855 | break; |
7750 | } | 7856 | } |
7751 | } | 7857 | } |