aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/AvatarAppearance.cs28
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs7
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs13
3 files changed, 43 insertions, 5 deletions
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs
index 3874c47..257997e 100644
--- a/OpenSim/Framework/AvatarAppearance.cs
+++ b/OpenSim/Framework/AvatarAppearance.cs
@@ -72,6 +72,7 @@ namespace OpenSim.Framework
72 protected float m_avatarAnimOffset = 0; 72 protected float m_avatarAnimOffset = 0;
73 protected WearableCacheItem[] m_cacheitems; 73 protected WearableCacheItem[] m_cacheitems;
74 protected bool m_cacheItemsDirty = true; 74 protected bool m_cacheItemsDirty = true;
75 public static Primitive.TextureEntry Invisible = null;
75 76
76 public virtual int Serial 77 public virtual int Serial
77 { 78 {
@@ -134,8 +135,30 @@ namespace OpenSim.Framework
134 set { m_cacheItemsDirty = value; } 135 set { m_cacheItemsDirty = value; }
135 } 136 }
136 137
138 private void CreateInvisibleTextureEntry()
139 {
140 if (Invisible != null)
141 return;
142 Invisible = new Primitive.TextureEntry(new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"));
143
144 Invisible.FaceTextures[8] = new Primitive.TextureEntryFace(null);
145 Invisible.FaceTextures[8].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
146 Invisible.FaceTextures[9] = new Primitive.TextureEntryFace(null);
147 Invisible.FaceTextures[9].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
148 Invisible.FaceTextures[10] = new Primitive.TextureEntryFace(null);
149 Invisible.FaceTextures[10].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
150 Invisible.FaceTextures[11] = new Primitive.TextureEntryFace(null);
151 Invisible.FaceTextures[11].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
152 Invisible.FaceTextures[19] = new Primitive.TextureEntryFace(null);
153 Invisible.FaceTextures[19].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
154 Invisible.FaceTextures[20] = new Primitive.TextureEntryFace(null);
155 Invisible.FaceTextures[20].TextureID = new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903");
156 }
157
137 public AvatarAppearance() 158 public AvatarAppearance()
138 { 159 {
160 CreateInvisibleTextureEntry();
161
139// m_log.WarnFormat("[AVATAR APPEARANCE]: create empty appearance"); 162// m_log.WarnFormat("[AVATAR APPEARANCE]: create empty appearance");
140 163
141 m_serial = 0; 164 m_serial = 0;
@@ -149,6 +172,9 @@ namespace OpenSim.Framework
149 172
150 public AvatarAppearance(OSDMap map) 173 public AvatarAppearance(OSDMap map)
151 { 174 {
175 CreateInvisibleTextureEntry();
176
177 Invisible = new Primitive.TextureEntry(new UUID("8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"));
152// m_log.WarnFormat("[AVATAR APPEARANCE]: create appearance from OSDMap"); 178// m_log.WarnFormat("[AVATAR APPEARANCE]: create appearance from OSDMap");
153 179
154 Unpack(map); 180 Unpack(map);
@@ -157,6 +183,7 @@ namespace OpenSim.Framework
157 183
158 public AvatarAppearance(AvatarWearable[] wearables, Primitive.TextureEntry textureEntry, byte[] visualParams) 184 public AvatarAppearance(AvatarWearable[] wearables, Primitive.TextureEntry textureEntry, byte[] visualParams)
159 { 185 {
186 CreateInvisibleTextureEntry();
160// m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance"); 187// m_log.WarnFormat("[AVATAR APPEARANCE] create initialized appearance");
161 188
162 m_serial = 0; 189 m_serial = 0;
@@ -194,6 +221,7 @@ namespace OpenSim.Framework
194 221
195 public AvatarAppearance(AvatarAppearance appearance, bool copyWearables, bool copyBaked) 222 public AvatarAppearance(AvatarAppearance appearance, bool copyWearables, bool copyBaked)
196 { 223 {
224 CreateInvisibleTextureEntry();
197// m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance"); 225// m_log.WarnFormat("[AVATAR APPEARANCE] create from an existing appearance");
198 226
199 if (appearance == null) 227 if (appearance == null)
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index f2f7cf9..b7a4b93 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -5142,7 +5142,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5142 acceleration = Vector3.Zero; 5142 acceleration = Vector3.Zero;
5143 5143
5144 if (sendTexture) 5144 if (sendTexture)
5145 textureEntry = presence.Appearance.Texture.GetBytes(); 5145 {
5146 if (presence.Invisible)
5147 textureEntry = AvatarAppearance.Invisible.GetBytes();
5148 else
5149 textureEntry = presence.Appearance.Texture.GetBytes();
5150 }
5146 else 5151 else
5147 textureEntry = null; 5152 textureEntry = null;
5148 } 5153 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 7086b52..5a3e554 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -90,6 +90,7 @@ namespace OpenSim.Region.Framework.Scenes
90 90
91 public bool isNPC { get; private set; } 91 public bool isNPC { get; private set; }
92 92
93 public bool Invisible { get; set; }
93 private PresenceType m_presenceType; 94 private PresenceType m_presenceType;
94 public PresenceType PresenceType { 95 public PresenceType PresenceType {
95 get {return m_presenceType;} 96 get {return m_presenceType;}
@@ -949,6 +950,7 @@ namespace OpenSim.Region.Framework.Scenes
949 public ScenePresence( 950 public ScenePresence(
950 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type) 951 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type)
951 { 952 {
953 Invisible = false;
952 AttachmentsSyncLock = new Object(); 954 AttachmentsSyncLock = new Object();
953 AllowMovement = true; 955 AllowMovement = true;
954 IsChildAgent = true; 956 IsChildAgent = true;
@@ -3709,14 +3711,17 @@ namespace OpenSim.Region.Framework.Scenes
3709// "[SCENE PRESENCE]: Sending appearance data from {0} {1} to {2} {3}", Name, m_uuid, avatar.Name, avatar.UUID); 3711// "[SCENE PRESENCE]: Sending appearance data from {0} {1} to {2} {3}", Name, m_uuid, avatar.Name, avatar.UUID);
3710 if (ParcelHideThisAvatar && currentParcelUUID != avatar.currentParcelUUID && avatar.GodLevel < 200) 3712 if (ParcelHideThisAvatar && currentParcelUUID != avatar.currentParcelUUID && avatar.GodLevel < 200)
3711 return; 3713 return;
3712 avatar.ControllingClient.SendAppearance( 3714 SendAppearanceToAgentNF(avatar);
3713 UUID, Appearance.VisualParams, Appearance.Texture.GetBytes());
3714 } 3715 }
3715 3716
3716 public void SendAppearanceToAgentNF(ScenePresence avatar) 3717 public void SendAppearanceToAgentNF(ScenePresence avatar)
3717 { 3718 {
3718 avatar.ControllingClient.SendAppearance( 3719 if (Invisible)
3719 UUID, Appearance.VisualParams, Appearance.Texture.GetBytes()); 3720 avatar.ControllingClient.SendAppearance(
3721 UUID, Appearance.VisualParams, AvatarAppearance.Invisible.GetBytes());
3722 else
3723 avatar.ControllingClient.SendAppearance(
3724 UUID, Appearance.VisualParams, Appearance.Texture.GetBytes());
3720 } 3725 }
3721 3726
3722 public void SendAnimPackToAgent(ScenePresence p) 3727 public void SendAnimPackToAgent(ScenePresence p)