more upload changes (plus untouch prebuild.xml)
parent
7ae0b5e605
commit
a1a0a90720
|
@ -118,12 +118,20 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
private IAssetService m_assetService;
|
||||
private bool m_dumpAssetsToFile = false;
|
||||
private string m_regionName;
|
||||
|
||||
private int m_levelUpload = 0;
|
||||
private float m_PrimScaleMin = 0.001f;
|
||||
private bool m_enableFreeTestUpload = false;
|
||||
private bool m_enableModelUploadTextureToInventory = false;
|
||||
|
||||
private bool m_enableFreeTestUpload = false; // allows "TEST-" prefix hack
|
||||
private bool m_ForceFreeTestUpload = false; // forces all uploads to be test
|
||||
|
||||
private bool m_enableModelUploadTextureToInventory = false; // place uploaded textures also in inventory
|
||||
// may not be visible till relog
|
||||
|
||||
private bool m_RestrictFreeTestUploadPerms = false; // reduces also the permitions. Needs a creator defined!!
|
||||
private UUID m_testAssetsCreatorID = UUID.Zero;
|
||||
|
||||
private float m_PrimScaleMin = 0.001f;
|
||||
|
||||
private enum FileAgentInventoryState : int
|
||||
{
|
||||
idle = 0,
|
||||
|
@ -143,16 +151,16 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
// tell it about scene object limits
|
||||
m_ModelCost.NonPhysicalPrimScaleMax = m_Scene.m_maxNonphys;
|
||||
m_ModelCost.PhysicalPrimScaleMax = m_Scene.m_maxPhys;
|
||||
// m_ModelCost.PrimScaleMin = ??
|
||||
|
||||
// m_ModelCost.ObjectLinkedPartsMax = ??
|
||||
// m_PrimScaleMin = ??
|
||||
// m_ModelCost.PrimScaleMin = ??
|
||||
|
||||
m_PrimScaleMin = m_ModelCost.PrimScaleMin;
|
||||
float modelTextureUploadFactor = m_ModelCost.ModelTextureCostFactor;
|
||||
float modelUploadFactor = m_ModelCost.ModelMeshCostFactor;
|
||||
float modelMinUploadCostFactor = m_ModelCost.ModelMinCostFactor;
|
||||
|
||||
// can be UUID.zero. This is me at OSG, should be a valid grid ID, is case a bad config
|
||||
UUID.TryParse("58e06f33-ea8c-4ff6-9af5-420606926118", out m_testAssetsCreatorID);
|
||||
float modelPrimCreationCost = m_ModelCost.primCreationCost;
|
||||
float modelMeshByteCost = m_ModelCost.bytecost;
|
||||
|
||||
IConfigSource config = m_Scene.Config;
|
||||
if (config != null)
|
||||
|
@ -175,10 +183,16 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
modelUploadFactor = EconomyConfig.GetFloat("MeshModelUploadCostFactor", modelUploadFactor);
|
||||
modelTextureUploadFactor = EconomyConfig.GetFloat("MeshModelUploadTextureCostFactor", modelTextureUploadFactor);
|
||||
modelMinUploadCostFactor = EconomyConfig.GetFloat("MeshModelMinCostFactor", modelMinUploadCostFactor);
|
||||
m_enableModelUploadTextureToInventory = EconomyConfig.GetBoolean("MeshModelAllowTextureToInventory", false);
|
||||
// next 2 are normalized so final cost is afected by modelUploadFactor above and normal cost
|
||||
modelPrimCreationCost = EconomyConfig.GetFloat("ModelPrimCreationCost", modelPrimCreationCost);
|
||||
modelMeshByteCost = EconomyConfig.GetFloat("ModelMeshByteCost", modelMeshByteCost);
|
||||
|
||||
m_enableFreeTestUpload = EconomyConfig.GetBoolean("AllowFreeTestUpload", false);
|
||||
string testcreator = EconomyConfig.GetString("TestAssetsCreatorID", m_testAssetsCreatorID.ToString());
|
||||
m_enableModelUploadTextureToInventory = EconomyConfig.GetBoolean("MeshModelAllowTextureToInventory", m_enableModelUploadTextureToInventory);
|
||||
|
||||
m_RestrictFreeTestUploadPerms = EconomyConfig.GetBoolean("m_RestrictFreeTestUploadPerms", m_RestrictFreeTestUploadPerms);
|
||||
m_enableFreeTestUpload = EconomyConfig.GetBoolean("AllowFreeTestUpload", m_enableFreeTestUpload);
|
||||
m_ForceFreeTestUpload = EconomyConfig.GetBoolean("ForceFreeTestUpload", m_ForceFreeTestUpload);
|
||||
string testcreator = EconomyConfig.GetString("TestAssetsCreatorID", "");
|
||||
if (testcreator != "")
|
||||
{
|
||||
UUID id;
|
||||
|
@ -190,6 +204,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
m_ModelCost.ModelMeshCostFactor = modelUploadFactor;
|
||||
m_ModelCost.ModelTextureCostFactor = modelTextureUploadFactor;
|
||||
m_ModelCost.ModelMinCostFactor = modelMinUploadCostFactor;
|
||||
m_ModelCost.primCreationCost = modelPrimCreationCost;
|
||||
m_ModelCost.bytecost = modelMeshByteCost;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -490,6 +506,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
int nreqinstances = 0;
|
||||
bool IsAtestUpload = false;
|
||||
|
||||
string assetName = llsdRequest.name;
|
||||
|
||||
LLSDAssetUploadResponseData meshcostdata = new LLSDAssetUploadResponseData();
|
||||
|
||||
if (llsdRequest.asset_type == "texture" ||
|
||||
|
@ -497,7 +515,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
llsdRequest.asset_type == "mesh" ||
|
||||
llsdRequest.asset_type == "sound")
|
||||
{
|
||||
ScenePresence avatar = null;
|
||||
ScenePresence avatar = null;
|
||||
m_Scene.TryGetScenePresence(m_HostCapsObj.AgentID, out avatar);
|
||||
|
||||
// check user level
|
||||
|
@ -519,7 +537,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
}
|
||||
}
|
||||
|
||||
// check funds
|
||||
// check test upload and funds
|
||||
if (client != null)
|
||||
{
|
||||
IMoneyModule mm = m_Scene.RequestModuleInterface<IMoneyModule>();
|
||||
|
@ -558,41 +576,53 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
cost = baseCost;
|
||||
}
|
||||
|
||||
if (m_enableFreeTestUpload && cost > 0 && mm != null)
|
||||
if (cost > 0 && mm != null)
|
||||
{
|
||||
string str = llsdRequest.name;
|
||||
if (str.Length > 5 && str.StartsWith("TEST-"))
|
||||
// check for test upload
|
||||
|
||||
if (m_ForceFreeTestUpload) // all are test
|
||||
{
|
||||
warning += "Upload will have no cost, but for personal test purposes only. Other uses are forbiden";
|
||||
if (!(assetName.Length > 5 && assetName.StartsWith("TEST-"))) // has normal name lets change it
|
||||
assetName = "TEST-" + assetName;
|
||||
|
||||
IsAtestUpload = true;
|
||||
}
|
||||
|
||||
else if (m_enableFreeTestUpload) // only if prefixed with "TEST-"
|
||||
{
|
||||
|
||||
IsAtestUpload = (assetName.Length > 5 && assetName.StartsWith("TEST-"));
|
||||
}
|
||||
|
||||
|
||||
if(IsAtestUpload) // let user know, still showing cost estimation
|
||||
warning += "Upload will have no cost, for personal test purposes only. Other uses are forbiden. Items may not work on another region";
|
||||
|
||||
// check funds
|
||||
else
|
||||
{
|
||||
if (!mm.UploadCovered(client.AgentId, (int)cost))
|
||||
{
|
||||
LLSDAssetUploadError resperror = new LLSDAssetUploadError();
|
||||
resperror.message = "Insuficient funds";
|
||||
resperror.identifier = UUID.Zero;
|
||||
|
||||
LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse();
|
||||
errorResponse.uploader = "";
|
||||
errorResponse.state = "error";
|
||||
errorResponse.error = resperror;
|
||||
lock (m_ModelCost)
|
||||
m_FileAgentInventoryState = FileAgentInventoryState.idle;
|
||||
return errorResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (client != null && warning != String.Empty)
|
||||
client.SendAgentAlertMessage(warning, true);
|
||||
|
||||
// check funds
|
||||
if (!IsAtestUpload && mm != null && cost >0)
|
||||
{
|
||||
if (!mm.UploadCovered(client.AgentId, (int)cost))
|
||||
{
|
||||
LLSDAssetUploadError resperror = new LLSDAssetUploadError();
|
||||
resperror.message = "Insuficient funds";
|
||||
resperror.identifier = UUID.Zero;
|
||||
|
||||
LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse();
|
||||
errorResponse.uploader = "";
|
||||
errorResponse.state = "error";
|
||||
errorResponse.error = resperror;
|
||||
lock (m_ModelCost)
|
||||
m_FileAgentInventoryState = FileAgentInventoryState.idle;
|
||||
return errorResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
string assetName = llsdRequest.name;
|
||||
|
||||
string assetDes = llsdRequest.description;
|
||||
string capsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath;
|
||||
UUID newAsset = UUID.Random();
|
||||
|
@ -607,7 +637,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
AssetUploader uploader =
|
||||
new AssetUploader(assetName, assetDes, newAsset, newInvItem, parentFolder, llsdRequest.inventory_type,
|
||||
llsdRequest.asset_type, capsBase + uploaderPath, m_HostCapsObj.HttpListener, m_dumpAssetsToFile, cost,
|
||||
texturesFolder, nreqtextures, nreqmeshs, nreqinstances,IsAtestUpload);
|
||||
texturesFolder, nreqtextures, nreqmeshs, nreqinstances, IsAtestUpload);
|
||||
|
||||
m_HostCapsObj.HttpListener.AddStreamHandler(
|
||||
new BinaryStreamHandler(
|
||||
|
@ -667,12 +697,16 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
sbyte assType = 0;
|
||||
sbyte inType = 0;
|
||||
|
||||
IClientAPI client = null;
|
||||
|
||||
UUID owner_id = m_HostCapsObj.AgentID;
|
||||
UUID creatorID;
|
||||
|
||||
bool istest = IsAtestUpload && m_enableFreeTestUpload && (cost > 0);
|
||||
|
||||
if (istest)
|
||||
bool restrictPerms = m_RestrictFreeTestUploadPerms && istest;
|
||||
|
||||
if (istest && m_testAssetsCreatorID != UUID.Zero)
|
||||
creatorID = m_testAssetsCreatorID;
|
||||
else
|
||||
creatorID = owner_id;
|
||||
|
@ -755,10 +789,19 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
|
||||
List<UUID> textures = new List<UUID>();
|
||||
|
||||
|
||||
if (doTextInv)
|
||||
m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client);
|
||||
|
||||
if(client == null) // don't put textures in inventory if there is no client
|
||||
doTextInv = false;
|
||||
|
||||
for (int i = 0; i < texture_list.Count; i++)
|
||||
{
|
||||
AssetBase textureAsset = new AssetBase(UUID.Random(), assetName, (sbyte)AssetType.Texture, creatorIDstr);
|
||||
textureAsset.Data = texture_list[i].AsBinary();
|
||||
if (istest)
|
||||
textureAsset.Local = true;
|
||||
m_assetService.Store(textureAsset);
|
||||
textures.Add(textureAsset.FullID);
|
||||
|
||||
|
@ -788,9 +831,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
texitem.NextPermissions = (uint)PermissionMask.All;
|
||||
texitem.CreationDate = Util.UnixTimeSinceEpoch();
|
||||
|
||||
AddNewInventoryItem(m_HostCapsObj.AgentID, texitem, 0);
|
||||
m_Scene.AddInventoryItem(client, texitem);
|
||||
texitem = null;
|
||||
// this aren't showing up in viewer until relog :(
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -800,6 +842,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
{
|
||||
AssetBase meshAsset = new AssetBase(UUID.Random(), assetName, (sbyte)AssetType.Mesh, creatorIDstr);
|
||||
meshAsset.Data = mesh_list[i].AsBinary();
|
||||
if (istest)
|
||||
meshAsset.Local = true;
|
||||
m_assetService.Store(meshAsset);
|
||||
meshAssets.Add(meshAsset.FullID);
|
||||
}
|
||||
|
@ -908,14 +952,12 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
// UUID owner_id = permissions["owner_id"].AsUUID();
|
||||
// int owner_mask = permissions["owner_mask"].AsInteger();
|
||||
// no longer used - end ------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
SceneObjectPart prim
|
||||
= new SceneObjectPart(owner_id, pbs, position, Quaternion.Identity, Vector3.Zero);
|
||||
|
||||
prim.Scale = scale;
|
||||
// prim.OffsetPosition = position;
|
||||
rotations.Add(rotation);
|
||||
positions.Add(position);
|
||||
prim.UUID = UUID.Random();
|
||||
|
@ -930,18 +972,20 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
else
|
||||
prim.Name = assetName + "#" + i.ToString();
|
||||
|
||||
if (istest)
|
||||
if (restrictPerms)
|
||||
{
|
||||
prim.BaseMask = (uint)(PermissionMask.Move | PermissionMask.Modify);
|
||||
prim.EveryoneMask = 0;
|
||||
prim.GroupMask = 0;
|
||||
prim.NextOwnerMask = 0;
|
||||
prim.OwnerMask = (uint)(PermissionMask.Move | PermissionMask.Modify);
|
||||
|
||||
prim.Description = "For personal testing only. Other uses are forbiden";
|
||||
}
|
||||
|
||||
if(istest)
|
||||
prim.Description = "For personal testing only. Other uses are forbiden";
|
||||
else
|
||||
prim.Description = "";
|
||||
|
||||
prim.Material = material;
|
||||
prim.PhysicsShapeType = physicsShapeType;
|
||||
|
||||
|
@ -1007,6 +1051,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
AssetBase asset;
|
||||
asset = new AssetBase(assetID, assetName, assType, creatorIDstr);
|
||||
asset.Data = data;
|
||||
if (istest)
|
||||
asset.Local = true;
|
||||
if (AddNewAsset != null)
|
||||
AddNewAsset(asset);
|
||||
else if (m_assetService != null)
|
||||
|
@ -1019,7 +1065,10 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
item.ID = inventoryItem;
|
||||
item.AssetID = asset.FullID;
|
||||
if (istest)
|
||||
{
|
||||
item.Description = "For personal testing only. Other uses are forbiden";
|
||||
item.Flags = (uint) (InventoryItemFlags.SharedSingleReference);
|
||||
}
|
||||
else
|
||||
item.Description = assetDescription;
|
||||
item.Name = assetName;
|
||||
|
@ -1030,7 +1079,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
// If we set PermissionMask.All then when we rez the item the next permissions will replace the current
|
||||
// (owner) permissions. This becomes a problem if next permissions are changed.
|
||||
|
||||
if (istest)
|
||||
if (restrictPerms)
|
||||
{
|
||||
item.CurrentPermissions
|
||||
= (uint)(PermissionMask.Move | PermissionMask.Modify);
|
||||
|
@ -1051,16 +1100,18 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
|
||||
item.CreationDate = Util.UnixTimeSinceEpoch();
|
||||
|
||||
IClientAPI client = null;
|
||||
m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client);
|
||||
|
||||
if (AddNewInventoryItem != null)
|
||||
{
|
||||
if (istest)
|
||||
{
|
||||
m_Scene.AddInventoryItem(client, item);
|
||||
/*
|
||||
AddNewInventoryItem(m_HostCapsObj.AgentID, item, 0);
|
||||
if (client != null)
|
||||
client.SendAgentAlertMessage("Upload complete with no cost for personal testing purposes only. Other uses are forbiden", true);
|
||||
client.SendAgentAlertMessage("Upload will have no cost, for personal test purposes only. Other uses are forbiden. Items may not work on a another region" , true);
|
||||
*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1487,22 +1538,34 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
handlerUpLoad(m_assetName, m_assetDes, newAssetID, inv, parentFolder, data, m_invType, m_assetType,
|
||||
m_cost, m_texturesFolder, m_nreqtextures, m_nreqmeshs, m_nreqinstances, m_IsAtestUpload, ref m_error);
|
||||
}
|
||||
if(m_error == String.Empty)
|
||||
{
|
||||
uploadComplete.new_asset = newAssetID.ToString();
|
||||
uploadComplete.new_inventory_item = inv;
|
||||
// if (m_texturesFolder != UUID.Zero)
|
||||
// uploadComplete.new_texture_folder_id = m_texturesFolder;
|
||||
uploadComplete.state = "complete";
|
||||
}
|
||||
else
|
||||
if (m_IsAtestUpload)
|
||||
{
|
||||
LLSDAssetUploadError resperror = new LLSDAssetUploadError();
|
||||
resperror.message = m_error;
|
||||
resperror.message = "Upload SUCESSEFULL for testing purposes only. Other uses are forbiden. Item may not work on other region";
|
||||
resperror.identifier = inv;
|
||||
|
||||
uploadComplete.error = resperror;
|
||||
uploadComplete.state = "failed";
|
||||
uploadComplete.state = "Upload4Testing";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_error == String.Empty)
|
||||
{
|
||||
uploadComplete.new_asset = newAssetID.ToString();
|
||||
uploadComplete.new_inventory_item = inv;
|
||||
// if (m_texturesFolder != UUID.Zero)
|
||||
// uploadComplete.new_texture_folder_id = m_texturesFolder;
|
||||
uploadComplete.state = "complete";
|
||||
}
|
||||
else
|
||||
{
|
||||
LLSDAssetUploadError resperror = new LLSDAssetUploadError();
|
||||
resperror.message = m_error;
|
||||
resperror.identifier = inv;
|
||||
|
||||
uploadComplete.error = resperror;
|
||||
uploadComplete.state = "failed";
|
||||
}
|
||||
}
|
||||
|
||||
res = LLSDHelpers.SerialiseLLSDReply(uploadComplete);
|
||||
|
|
|
@ -35,18 +35,15 @@ namespace OpenSim.Region.ClientStack.Linden
|
|||
// fees are normalized to 1.0
|
||||
// this parameters scale them to basic cost ( so 1.0 translates to 10 )
|
||||
|
||||
public float ModelMeshCostFactor = 0f; //Free
|
||||
public float ModelMinCostFactor = 0f; // Free
|
||||
//public float ModelMeshCostFactor = 1.0f; // scale total cost relative to basic (excluding textures)
|
||||
//public float ModelMinCostFactor = 0.5f; // minimum total model free excluding textures
|
||||
public float ModelMeshCostFactor = 0.0f; // scale total cost relative to basic (excluding textures)
|
||||
public float ModelTextureCostFactor = 1.0f; // scale textures fee to basic.
|
||||
public float ModelMinCostFactor = 0.0f; // 0.5f; // minimum total model free excluding textures
|
||||
|
||||
public float ModelTextureCostFactor = 1.00f; // keep full price because texture price
|
||||
// is based on it's storage needs not on usability
|
||||
// itens costs in normalized values
|
||||
// ie will be multiplied by basicCost and factors above
|
||||
const float primCreationCost = 0.002f; // extra cost for each prim creation overhead
|
||||
public float primCreationCost = 0.002f; // extra cost for each prim creation overhead
|
||||
// weigthed size to normalized cost
|
||||
const float bytecost = 1e-5f;
|
||||
public float bytecost = 1e-5f;
|
||||
|
||||
// mesh upload fees based on compressed data sizes
|
||||
// several data sections are counted more that once
|
||||
|
|
|
@ -33,7 +33,6 @@
|
|||
</Configuration>
|
||||
|
||||
<!-- Core OpenSim Projects -->
|
||||
|
||||
<!--
|
||||
<Project frameworkVersion="v3_5" name="OpenSim.Model" path="OpenSim/Model" type="Library">
|
||||
<Configuration name="Debug">
|
||||
|
|
Loading…
Reference in New Issue