aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-09-15 22:59:29 +0100
committerJustin Clark-Casey (justincc)2011-09-15 22:59:29 +0100
commitc4efb97d49dec736151dfa3fa102efe6a5f6fbab (patch)
treea2d43cad036a4e6d8df4a19714e37e9328770299
parentrefactor: rename SOG/SOP.GetProperties() to SendPropertiesToClient() to refle... (diff)
downloadopensim-SC-c4efb97d49dec736151dfa3fa102efe6a5f6fbab.zip
opensim-SC-c4efb97d49dec736151dfa3fa102efe6a5f6fbab.tar.gz
opensim-SC-c4efb97d49dec736151dfa3fa102efe6a5f6fbab.tar.bz2
opensim-SC-c4efb97d49dec736151dfa3fa102efe6a5f6fbab.tar.xz
Write code to create minimum necessary body parts/clothing and avatar entries to make a newly created user appear as a non-cloud on viewer 2
Viewer 2 no longer contains the default avatar assets (i.e. "Ruth") that would appear if the user had insufficient body part/clothing entries. Instead, avatars always appear as a cloud, which is a very bad experience for out-of-the-box OpenSim. Default is currently off. My intention is to switch it on for standalone shortly. This is not particularly flexible as "Ruth" is hardcoded, but this can change in the future, in co-ordination with the existing RemoteAdmin capabilities. Need to fix creation of suitable entries for users created as estate owners on standalone. Avatars still appear with spooky empty eyes, need to see if we can address this. This commit adds a "Default Iris" to the library (thanks to Eirynne Sieyes from http://opensimulator.org/mantis/view.php?id=1461) which can be used.
-rw-r--r--OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs1
-rw-r--r--OpenSim/Services/UserAccountService/UserAccountService.cs152
-rw-r--r--bin/assets/BodyPartsAssetSet/BodyPartsAssetSet.xml10
-rw-r--r--bin/assets/BodyPartsAssetSet/base_eyes.dat26
-rw-r--r--bin/assets/BodyPartsAssetSet/base_hair.dat26
-rw-r--r--bin/assets/BodyPartsAssetSet/base_shape.dat212
-rw-r--r--bin/assets/BodyPartsAssetSet/newhair.dat63
-rw-r--r--bin/assets/TexturesAssetSet/TexturesAssetSet.xml7
-rw-r--r--bin/assets/TexturesAssetSet/default_iris.jp2bin0 -> 15719 bytes
-rw-r--r--bin/config-include/Standalone.ini1
-rw-r--r--bin/inventory/TexturesLibrary/TexturesLibraryItems.xml10
12 files changed, 362 insertions, 148 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
index b6a1564..c5a1828 100644
--- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
@@ -467,7 +467,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
467 return; 467 return;
468 } 468 }
469 469
470 // m_log.WarnFormat("[AVFACTORY]: Received request for wearables of {0}", client.AgentId); 470// m_log.DebugFormat("[AVFACTORY]: Received request for wearables of {0}", client.Name);
471 471
472 client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++); 472 client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
473 } 473 }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index c5c9260..f394a95 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1237,6 +1237,7 @@ namespace OpenSim.Region.Framework.Scenes
1237 first, last); 1237 first, last);
1238 1238
1239 1239
1240
1240 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", first, last); 1241 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", first, last);
1241 1242
1242 m_regInfo.EstateSettings.EstateOwner = account.PrincipalID; 1243 m_regInfo.EstateSettings.EstateOwner = account.PrincipalID;
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index 8b8a8f9..21ce86c 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -28,15 +28,15 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection; 30using System.Reflection;
31using log4net;
31using Nini.Config; 32using Nini.Config;
33using OpenMetaverse;
32using OpenSim.Data; 34using OpenSim.Data;
35using OpenSim.Framework;
33using OpenSim.Services.Interfaces; 36using OpenSim.Services.Interfaces;
34using OpenSim.Framework.Console; 37using OpenSim.Framework.Console;
35using GridRegion = OpenSim.Services.Interfaces.GridRegion; 38using GridRegion = OpenSim.Services.Interfaces.GridRegion;
36 39
37using OpenMetaverse;
38using log4net;
39
40namespace OpenSim.Services.UserAccountService 40namespace OpenSim.Services.UserAccountService
41{ 41{
42 public class UserAccountService : UserAccountServiceBase, IUserAccountService 42 public class UserAccountService : UserAccountServiceBase, IUserAccountService
@@ -44,10 +44,16 @@ namespace OpenSim.Services.UserAccountService
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static UserAccountService m_RootInstance; 45 private static UserAccountService m_RootInstance;
46 46
47 /// <summary>
48 /// Should we create default entries (minimum body parts/clothing, avatar wearable entries) for a new avatar?
49 /// </summary>
50 private bool m_CreateDefaultAvatarEntries;
51
47 protected IGridService m_GridService; 52 protected IGridService m_GridService;
48 protected IAuthenticationService m_AuthenticationService; 53 protected IAuthenticationService m_AuthenticationService;
49 protected IGridUserService m_GridUserService; 54 protected IGridUserService m_GridUserService;
50 protected IInventoryService m_InventoryService; 55 protected IInventoryService m_InventoryService;
56 protected IAvatarService m_AvatarService;
51 57
52 public UserAccountService(IConfigSource config) 58 public UserAccountService(IConfigSource config)
53 : base(config) 59 : base(config)
@@ -77,6 +83,12 @@ namespace OpenSim.Services.UserAccountService
77 if (invServiceDll != string.Empty) 83 if (invServiceDll != string.Empty)
78 m_InventoryService = LoadPlugin<IInventoryService>(invServiceDll, new Object[] { config }); 84 m_InventoryService = LoadPlugin<IInventoryService>(invServiceDll, new Object[] { config });
79 85
86 string avatarServiceDll = userConfig.GetString("AvatarService", string.Empty);
87 if (avatarServiceDll != string.Empty)
88 m_AvatarService = LoadPlugin<IAvatarService>(avatarServiceDll, new Object[] { config });
89
90 m_CreateDefaultAvatarEntries = userConfig.GetBoolean("CreateDefaultAvatarEntries", false);
91
80 if (MainConsole.Instance != null) 92 if (MainConsole.Instance != null)
81 { 93 {
82 MainConsole.Instance.Commands.AddCommand("UserService", false, 94 MainConsole.Instance.Commands.AddCommand("UserService", false,
@@ -102,9 +114,7 @@ namespace OpenSim.Services.UserAccountService
102 "show account <first> <last>", 114 "show account <first> <last>",
103 "Show account details for the given user", HandleShowAccount); 115 "Show account details for the given user", HandleShowAccount);
104 } 116 }
105
106 } 117 }
107
108 } 118 }
109 119
110 #region IUserAccountService 120 #region IUserAccountService
@@ -493,12 +503,20 @@ namespace OpenSim.Services.UserAccountService
493 { 503 {
494 success = m_InventoryService.CreateUserInventory(account.PrincipalID); 504 success = m_InventoryService.CreateUserInventory(account.PrincipalID);
495 if (!success) 505 if (!success)
506 {
496 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to create inventory for account {0} {1}.", 507 m_log.WarnFormat("[USER ACCOUNT SERVICE]: Unable to create inventory for account {0} {1}.",
497 firstName, lastName); 508 firstName, lastName);
509 }
510 else if (m_CreateDefaultAvatarEntries)
511 {
512 CreateDefaultAppearanceEntries(account.PrincipalID);
513 }
498 } 514 }
499 515
500 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", firstName, lastName); 516 m_log.InfoFormat("[USER ACCOUNT SERVICE]: Account {0} {1} created successfully", firstName, lastName);
501 } else { 517 }
518 else
519 {
502 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: Account creation failed for account {0} {1}", firstName, lastName); 520 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: Account creation failed for account {0} {1}", firstName, lastName);
503 } 521 }
504 } 522 }
@@ -507,5 +525,125 @@ namespace OpenSim.Services.UserAccountService
507 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: A user with the name {0} {1} already exists!", firstName, lastName); 525 m_log.ErrorFormat("[USER ACCOUNT SERVICE]: A user with the name {0} {1} already exists!", firstName, lastName);
508 } 526 }
509 } 527 }
528
529 private void CreateDefaultAppearanceEntries(UUID principalID)
530 {
531 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Creating default appearance items for {0}", principalID);
532
533 InventoryFolderBase bodyPartsFolder = m_InventoryService.GetFolderForType(principalID, AssetType.Bodypart);
534
535 InventoryItemBase eyes = new InventoryItemBase(UUID.Random(), principalID);
536 eyes.AssetID = new UUID("4bb6fa4d-1cd2-498a-a84c-95c1a0e745a7");
537 eyes.Name = "Default Eyes";
538 eyes.CreatorId = principalID.ToString();
539 eyes.AssetType = (int)AssetType.Bodypart;
540 eyes.InvType = (int)InventoryType.Wearable;
541 eyes.Folder = bodyPartsFolder.ID;
542 eyes.BasePermissions = (uint)PermissionMask.All;
543 eyes.CurrentPermissions = (uint)PermissionMask.All;
544 eyes.EveryOnePermissions = (uint)PermissionMask.All;
545 eyes.GroupPermissions = (uint)PermissionMask.All;
546 eyes.NextPermissions = (uint)PermissionMask.All;
547 eyes.Flags = (uint)WearableType.Eyes;
548 m_InventoryService.AddItem(eyes);
549
550 InventoryItemBase shape = new InventoryItemBase(UUID.Random(), principalID);
551 shape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET;
552 shape.Name = "Default Shape";
553 shape.CreatorId = principalID.ToString();
554 shape.AssetType = (int)AssetType.Bodypart;
555 shape.InvType = (int)InventoryType.Wearable;
556 shape.Folder = bodyPartsFolder.ID;
557 shape.BasePermissions = (uint)PermissionMask.All;
558 shape.CurrentPermissions = (uint)PermissionMask.All;
559 shape.EveryOnePermissions = (uint)PermissionMask.All;
560 shape.GroupPermissions = (uint)PermissionMask.All;
561 shape.NextPermissions = (uint)PermissionMask.All;
562 shape.Flags = (uint)WearableType.Shape;
563 m_InventoryService.AddItem(shape);
564
565 InventoryItemBase skin = new InventoryItemBase(UUID.Random(), principalID);
566 skin.AssetID = AvatarWearable.DEFAULT_SKIN_ASSET;
567 skin.Name = "Default Skin";
568 skin.CreatorId = principalID.ToString();
569 skin.AssetType = (int)AssetType.Bodypart;
570 skin.InvType = (int)InventoryType.Wearable;
571 skin.Folder = bodyPartsFolder.ID;
572 skin.BasePermissions = (uint)PermissionMask.All;
573 skin.CurrentPermissions = (uint)PermissionMask.All;
574 skin.EveryOnePermissions = (uint)PermissionMask.All;
575 skin.GroupPermissions = (uint)PermissionMask.All;
576 skin.NextPermissions = (uint)PermissionMask.All;
577 skin.Flags = (uint)WearableType.Skin;
578 m_InventoryService.AddItem(skin);
579
580 InventoryItemBase hair = new InventoryItemBase(UUID.Random(), principalID);
581 hair.AssetID = AvatarWearable.DEFAULT_HAIR_ASSET;
582 hair.Name = "Default Hair";
583 hair.CreatorId = principalID.ToString();
584 hair.AssetType = (int)AssetType.Bodypart;
585 hair.InvType = (int)InventoryType.Wearable;
586 hair.Folder = bodyPartsFolder.ID;
587 hair.BasePermissions = (uint)PermissionMask.All;
588 hair.CurrentPermissions = (uint)PermissionMask.All;
589 hair.EveryOnePermissions = (uint)PermissionMask.All;
590 hair.GroupPermissions = (uint)PermissionMask.All;
591 hair.NextPermissions = (uint)PermissionMask.All;
592 hair.Flags = (uint)WearableType.Hair;
593 m_InventoryService.AddItem(hair);
594
595 InventoryFolderBase clothingFolder = m_InventoryService.GetFolderForType(principalID, AssetType.Clothing);
596
597 InventoryItemBase shirt = new InventoryItemBase(UUID.Random(), principalID);
598 shirt.AssetID = AvatarWearable.DEFAULT_SHIRT_ASSET;
599 shirt.Name = "Default Shirt";
600 shirt.CreatorId = principalID.ToString();
601 shirt.AssetType = (int)AssetType.Clothing;
602 shirt.InvType = (int)InventoryType.Wearable;
603 shirt.Folder = clothingFolder.ID;
604 shirt.BasePermissions = (uint)PermissionMask.All;
605 shirt.CurrentPermissions = (uint)PermissionMask.All;
606 shirt.EveryOnePermissions = (uint)PermissionMask.All;
607 shirt.GroupPermissions = (uint)PermissionMask.All;
608 shirt.NextPermissions = (uint)PermissionMask.All;
609 shirt.Flags = (uint)WearableType.Shirt;
610 m_InventoryService.AddItem(shirt);
611
612 InventoryItemBase pants = new InventoryItemBase(UUID.Random(), principalID);
613 pants.AssetID = AvatarWearable.DEFAULT_PANTS_ASSET;
614 pants.Name = "Default Pants";
615 pants.CreatorId = principalID.ToString();
616 pants.AssetType = (int)AssetType.Clothing;
617 pants.InvType = (int)InventoryType.Wearable;
618 pants.Folder = clothingFolder.ID;
619 pants.BasePermissions = (uint)PermissionMask.All;
620 pants.CurrentPermissions = (uint)PermissionMask.All;
621 pants.EveryOnePermissions = (uint)PermissionMask.All;
622 pants.GroupPermissions = (uint)PermissionMask.All;
623 pants.NextPermissions = (uint)PermissionMask.All;
624 pants.Flags = (uint)WearableType.Pants;
625 m_InventoryService.AddItem(pants);
626
627 if (m_AvatarService != null)
628 {
629 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Creating default avatar entries for {0}", principalID);
630
631 AvatarWearable[] wearables = new AvatarWearable[6];
632 wearables[AvatarWearable.EYES] = new AvatarWearable(eyes.ID, eyes.AssetID);
633 wearables[AvatarWearable.BODY] = new AvatarWearable(shape.ID, shape.AssetID);
634 wearables[AvatarWearable.SKIN] = new AvatarWearable(skin.ID, skin.AssetID);
635 wearables[AvatarWearable.HAIR] = new AvatarWearable(hair.ID, hair.AssetID);
636 wearables[AvatarWearable.SHIRT] = new AvatarWearable(shirt.ID, shirt.AssetID);
637 wearables[AvatarWearable.PANTS] = new AvatarWearable(pants.ID, pants.AssetID);
638
639 AvatarAppearance ap = new AvatarAppearance();
640 for (int i = 0; i < 6; i++)
641 {
642 ap.SetWearable(i, wearables[i]);
643 }
644
645 m_AvatarService.SetAppearance(principalID, ap);
646 }
647 }
510 } 648 }
511} 649} \ No newline at end of file
diff --git a/bin/assets/BodyPartsAssetSet/BodyPartsAssetSet.xml b/bin/assets/BodyPartsAssetSet/BodyPartsAssetSet.xml
index 8ef0fe7..a3d7ba3 100644
--- a/bin/assets/BodyPartsAssetSet/BodyPartsAssetSet.xml
+++ b/bin/assets/BodyPartsAssetSet/BodyPartsAssetSet.xml
@@ -4,7 +4,7 @@
4 <Key Name="assetID" Value="d342e6c0-b9d2-11dc-95ff-0800200c9a66"/> 4 <Key Name="assetID" Value="d342e6c0-b9d2-11dc-95ff-0800200c9a66"/>
5 <Key Name="name" Value="Hair"/> 5 <Key Name="name" Value="Hair"/>
6 <Key Name="assetType" Value="13" /> 6 <Key Name="assetType" Value="13" />
7 <Key Name="fileName" Value="newhair.dat"/> 7 <Key Name="fileName" Value="base_hair.dat"/>
8 </Section> 8 </Section>
9 9
10 <Section Name="Skin"> 10 <Section Name="Skin">
@@ -34,6 +34,14 @@
34 <Key Name="assetType" Value="13" /> 34 <Key Name="assetType" Value="13" />
35 <Key Name="fileName" Value="base_shape.dat"/> 35 <Key Name="fileName" Value="base_shape.dat"/>
36 </Section> 36 </Section>
37
38 <Section Name="Eyes">
39 <Key Name="assetID" Value="4bb6fa4d-1cd2-498a-a84c-95c1a0e745a7"/>
40 <Key Name="name" Value="Eyes"/>
41 <Key Name="assetType" Value="13" />
42 <Key Name="fileName" Value="base_eyes.dat"/>
43 </Section>
44
37<!-- 45<!--
38 <Section Name="Jim Shape"> 46 <Section Name="Jim Shape">
39 <Key Name="assetID" Value="66c41e39-38f9-f75a-024e-585989bfab74"/> 47 <Key Name="assetID" Value="66c41e39-38f9-f75a-024e-585989bfab74"/>
diff --git a/bin/assets/BodyPartsAssetSet/base_eyes.dat b/bin/assets/BodyPartsAssetSet/base_eyes.dat
new file mode 100644
index 0000000..520157c
--- /dev/null
+++ b/bin/assets/BodyPartsAssetSet/base_eyes.dat
@@ -0,0 +1,26 @@
1LLWearable version 22
2New Eyes
3
4 permissions 0
5 {
6 base_mask 7fffffff
7 owner_mask 7fffffff
8 group_mask 00000000
9 everyone_mask 00000000
10 next_owner_mask 00082000
11 creator_id 11111111-1111-0000-0000-000100bba000
12 owner_id 11111111-1111-0000-0000-000100bba000
13 last_owner_id 00000000-0000-0000-0000-000000000000
14 group_id 00000000-0000-0000-0000-000000000000
15 }
16 sale_info 0
17 {
18 sale_type not
19 sale_price 10
20 }
21type 3
22parameters 2
2398 0
2499 0
25textures 1
263 6522e74d-1660-4e7f-b601-6f48c1659a77
diff --git a/bin/assets/BodyPartsAssetSet/base_hair.dat b/bin/assets/BodyPartsAssetSet/base_hair.dat
new file mode 100644
index 0000000..520157c
--- /dev/null
+++ b/bin/assets/BodyPartsAssetSet/base_hair.dat
@@ -0,0 +1,26 @@
1LLWearable version 22
2New Eyes
3
4 permissions 0
5 {
6 base_mask 7fffffff
7 owner_mask 7fffffff
8 group_mask 00000000
9 everyone_mask 00000000
10 next_owner_mask 00082000
11 creator_id 11111111-1111-0000-0000-000100bba000
12 owner_id 11111111-1111-0000-0000-000100bba000
13 last_owner_id 00000000-0000-0000-0000-000000000000
14 group_id 00000000-0000-0000-0000-000000000000
15 }
16 sale_info 0
17 {
18 sale_type not
19 sale_price 10
20 }
21type 3
22parameters 2
2398 0
2499 0
25textures 1
263 6522e74d-1660-4e7f-b601-6f48c1659a77
diff --git a/bin/assets/BodyPartsAssetSet/base_shape.dat b/bin/assets/BodyPartsAssetSet/base_shape.dat
index d9a361f..bf719c9 100644
--- a/bin/assets/BodyPartsAssetSet/base_shape.dat
+++ b/bin/assets/BodyPartsAssetSet/base_shape.dat
@@ -1,105 +1,165 @@
1LLWearable version 22 1LLWearable version 22
2Female Shape and Outfit 3 Shape 2New Shape
3Created by system from avatar's appearance. 3
4 permissions 0 4 permissions 0
5 { 5 {
6 base_mask 00000000 6 base_mask 7fffffff
7 owner_mask 00000000 7 owner_mask 7fffffff
8 group_mask 00000000 8 group_mask 00000000
9 everyone_mask 00000000 9 everyone_mask 00000000
10 next_owner_mask 00000000 10 next_owner_mask 00082000
11 creator_id 11111111-1111-0000-0000-000100bba000 11 creator_id 11111111-1111-0000-0000-000100bba000
12 owner_id 11111111-1111-0000-0000-000100bba000 12 owner_id 11111111-1111-0000-0000-000100bba000
13 last_owner_id 11111111-1111-0000-0000-000100bba000 13 last_owner_id 00000000-0000-0000-0000-000000000000
14 group_id 00000000-0000-0000-0000-000000000000 14 group_id 00000000-0000-0000-0000-000000000000
15 } 15 }
16 sale_info 0 16 sale_info 0
17 { 17 {
18 sale_type not 18 sale_type not
19 sale_price 0 19 sale_price 10
20 } 20 }
21type 0 21type 0
22parameters 82 22parameters 142
231 .21 231 0
242 -.5 242 0
254 -.11 254 0
265 -.1 265 0
276 -.3 276 0
287 -.4 287 0
298 -.5 298 0
3010 .7 3010 0
3111 .34 3111 0
3212 -.5 3212 0
3313 0 3313 0
3414 .04 3414 0
3515 .58 3515 0
3617 .56 3617 0
3718 -.26 3718 0
3819 -.73 3819 0
3920 -.34 3920 0
4021 -.01 4021 0
4122 1 4122 0
4223 -.5 4223 0
4324 -.63 4324 0
4425 .44 4425 0
4527 .05 4526 0
4633 -.24 4627 0
4734 -.7 4728 0
4835 -.16 4829 .12
4936 -.2 4930 .12
5037 -.98 5032 0
5138 -.5 5133 0
5234 0
5335 0
5436 -.5
5537 0
5638 0
5740 0
5280 0 5880 0
53105 .07 59100 0
54155 -.22 60104 0
61105 .5
62106 0
63151 0
64152 0
65153 0
66155 0
67156 0
55157 0 68157 0
56185 -1 69185 0
57193 .86 70186 0
58196 -.74 71187 0
59505 .65 72188 0
60506 .12 73189 0
61507 -1.5 74193 .5
75194 .67
76195 .33
77196 0
78505 .5
79506 0
80507 0
62515 0 81515 0
63517 .16 82517 0
64518 .8 83518 0
65629 0 84626 0
85627 0
86629 .5
87630 0
88631 0
89633 0
90634 0
91635 0
66637 0 92637 0
67646 .4 93646 0
68647 1 94647 0
69649 .36 95648 0
70650 .85 96649 .5
71652 .49 97650 0
72653 -1 98651 0
99652 .5
100653 0
101655 -.08
73656 0 102656 0
74659 .65 103657 0
104658 0
105659 .5
106660 0
107661 0
75662 .5 108662 .5
76663 0 109663 0
77664 0 110664 0
78665 0 111665 0
79675 -.15 112675 0
80676 .26 113676 0
81678 .28 114677 0
82682 .27 115678 .5
83683 -.19 116679 -.08
84684 -.09 117680 -.08
118681 -.08
119682 .5
120683 -.15
121684 0
85685 0 122685 0
86690 .45 123686 0
87692 .4 124687 0
88693 -0 125688 0
89753 -.5 126689 0
90756 -.08 127690 .5
91758 .24 128691 0
92759 .6 129692 0
93760 .11 130693 .6
94764 -.38 131694 -.08
95765 -.3 132695 0
96769 .42 133753 0
97773 .51 134756 0
98795 .16 135758 0
99796 .11 136759 .5
100799 .36 137760 0
138764 0
139765 0
140767 0
141768 0
142769 .5
143770 0
144772 0
145773 .5
146794 .17
147795 .25
148796 0
149797 0
150798 0
151799 .5
101841 0 152841 0
102842 -.82 153842 0
154843 0
155853 0
156854 0
157855 0
103879 0 158879 0
104880 0 159880 0
1601103 0
1611104 0
1621105 0
1631200 0
1641201 0
105textures 0 165textures 0
diff --git a/bin/assets/BodyPartsAssetSet/newhair.dat b/bin/assets/BodyPartsAssetSet/newhair.dat
deleted file mode 100644
index 3c5a8c9..0000000
--- a/bin/assets/BodyPartsAssetSet/newhair.dat
+++ /dev/null
@@ -1,63 +0,0 @@
1LLWearable version 22
2New Hair
3
4 permissions 0
5 {
6 base_mask 7fffffff
7 owner_mask 7fffffff
8 group_mask 00000000
9 everyone_mask 00000000
10 next_owner_mask 00082000
11 creator_id a52db6d0-e96c-4454-85e5-3523722daa25
12 owner_id a52db6d0-e96c-4454-85e5-3523722daa25
13 last_owner_id 00000000-0000-0000-0000-000000000000
14 group_id 00000000-0000-0000-0000-000000000000
15 }
16 sale_info 0
17 {
18 sale_type not
19 sale_price 10
20 }
21type 2
22parameters 39
2316 0
2431 .5
25112 0
26113 0
27114 .5
28115 0
29119 .5
30130 .45
31131 .5
32132 .39
33133 .25
34134 .5
35135 .55
36136 .5
37137 .5
38140 0
39141 0
40142 0
41143 .13
42166 0
43167 0
44168 0
45169 0
46177 0
47181 .14
48182 .7
49183 .05
50184 0
51192 0
52674 -.3
53750 .7
54752 .5
55754 0
56755 .05
57757 -1
58762 0
59763 .55
60785 0
61789 0
62textures 1
634 7ca39b4c-bd19-4699-aff7-f93fd03d3e7b
diff --git a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
index 3af9c99..ecf2005 100644
--- a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
+++ b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
@@ -430,6 +430,13 @@
430 <Key Name="fileName" Value="default_avatar.jp2" /> 430 <Key Name="fileName" Value="default_avatar.jp2" />
431 </Section> 431 </Section>
432 432
433 <Section Name="Default Iris">
434 <Key Name="assetID" Value="6522e74d-1660-4e7f-b601-6f48c1659a77"/>
435 <Key Name="name" Value="Default Iris"/>
436 <Key Name="assetType" Value="0" />
437 <Key Name="fileName" Value="default_iris.jp2" />
438 </Section>
439
433 <Section Name="Cypress 1"> 440 <Section Name="Cypress 1">
434 <Key Name="assetID" Value="fb2ae204-3fd1-df33-594f-c9f882830e66"/> 441 <Key Name="assetID" Value="fb2ae204-3fd1-df33-594f-c9f882830e66"/>
435 <Key Name="name" Value="Cypress 1"/> 442 <Key Name="name" Value="Cypress 1"/>
diff --git a/bin/assets/TexturesAssetSet/default_iris.jp2 b/bin/assets/TexturesAssetSet/default_iris.jp2
new file mode 100644
index 0000000..b932a06
--- /dev/null
+++ b/bin/assets/TexturesAssetSet/default_iris.jp2
Binary files differ
diff --git a/bin/config-include/Standalone.ini b/bin/config-include/Standalone.ini
index bf89d0b..8aaa154 100644
--- a/bin/config-include/Standalone.ini
+++ b/bin/config-include/Standalone.ini
@@ -70,6 +70,7 @@
70 GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService" 70 GridUserService = "OpenSim.Services.UserAccountService.dll:GridUserService"
71 GridService = "OpenSim.Services.GridService.dll:GridService" 71 GridService = "OpenSim.Services.GridService.dll:GridService"
72 InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService" 72 InventoryService = "OpenSim.Services.InventoryService.dll:XInventoryService"
73 AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
73 74
74[GridUserService] 75[GridUserService]
75 LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService" 76 LocalServiceModule = "OpenSim.Services.UserAccountService.dll:GridUserService"
diff --git a/bin/inventory/TexturesLibrary/TexturesLibraryItems.xml b/bin/inventory/TexturesLibrary/TexturesLibraryItems.xml
index a018a0d..e1452f6 100644
--- a/bin/inventory/TexturesLibrary/TexturesLibraryItems.xml
+++ b/bin/inventory/TexturesLibrary/TexturesLibraryItems.xml
@@ -561,4 +561,14 @@
561 <Key Name="assetType" Value="0" /> 561 <Key Name="assetType" Value="0" />
562 <Key Name="inventoryType" Value="0" /> 562 <Key Name="inventoryType" Value="0" />
563 </Section> 563 </Section>
564
565 <Section Name="Default Iris Texture">
566 <Key Name="inventoryID" Value="00000000-0000-2222-9999-000000000013"/>
567 <Key Name="assetID" Value="6e610cae-3b0d-4729-b482-2c31ab2e49f9"/>
568 <Key Name="folderID" Value="00000112-000f-0000-0000-000100bba001"/>
569 <Key Name="description" Value=""/>
570 <Key Name="name" Value="Default Iris Texture" />
571 <Key Name="assetType" Value="0" />
572 <Key Name="inventoryType" Value="0" />
573 </Section>
564</Nini> 574</Nini>