From 5915dfc26f0fe02411588ddea2791d69cb67d1ed Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 17 Sep 2012 15:37:05 +0100 Subject: [PATCH] Make use of mesh cost functions --- .../Linden/Caps/BunchOfCaps/BunchOfCaps.cs | 29 +++++++------------ .../Linden/Caps/BunchOfCaps/MeshCost.cs | 8 ++--- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 580c005322..ce3ca8b725 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs @@ -429,6 +429,7 @@ namespace OpenSim.Region.ClientStack.Linden //m_log.Debug("asset upload request via CAPS" + llsdRequest.inventory_type + " , " + llsdRequest.asset_type); uint cost = 0; + LLSDAssetUploadResponseData meshcostdata = new LLSDAssetUploadResponseData(); if (llsdRequest.asset_type == "texture" || llsdRequest.asset_type == "animation" || @@ -467,11 +468,15 @@ namespace OpenSim.Region.ClientStack.Linden if (llsdRequest.asset_type == "mesh") { - cost += 20; // Constant for now to test showing a price + string error; + int modelcost; + ModelCost mc = new ModelCost(); - if (llsdRequest.asset_resources == null) + if (!mc.MeshModelCost(llsdRequest.asset_resources, mm.UploadCharge, out modelcost, + meshcostdata, out error)) { - client.SendAgentAlertMessage("Unable to upload asset. missing information.", false); + + client.SendAgentAlertMessage(error, false); LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse(); errorResponse.uploader = ""; @@ -479,10 +484,7 @@ namespace OpenSim.Region.ClientStack.Linden return errorResponse; } - uint textures_cost = (uint)llsdRequest.asset_resources.texture_list.Array.Count; - textures_cost *= (uint)mm.UploadCharge; - - cost += textures_cost; + cost = (uint)modelcost; } else { @@ -536,20 +538,9 @@ namespace OpenSim.Region.ClientStack.Linden uploadResponse.state = "upload"; uploadResponse.upload_price = (int)cost; - // use fake values for now if (llsdRequest.asset_type == "mesh") { - uploadResponse.data = new LLSDAssetUploadResponseData(); - uploadResponse.data.model_streaming_cost = 1.0; - uploadResponse.data.simulation_cost = 1.5; - - uploadResponse.data.physics_cost = 2.0; - uploadResponse.data.resource_cost = 3.0; - uploadResponse.data.upload_price_breakdown.mesh_instance = 1; - uploadResponse.data.upload_price_breakdown.mesh_physics = 2; - uploadResponse.data.upload_price_breakdown.mesh_streaming = 3; - uploadResponse.data.upload_price_breakdown.texture = 5; - uploadResponse.data.upload_price_breakdown.model = 4; + uploadResponse.data = meshcostdata; } uploader.OnUpLoad += UploadCompleteHandler; diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs index 8adacab72a..0b5d3fac45 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs @@ -27,9 +27,6 @@ namespace OpenSim.Region.ClientStack.Linden { float ModelMinCost = 5.0f; // try to favor small meshs versus sculpts - // scale prices relative to basic cost - const float ModelCostScale = 1.0f; - const float primCreationCost = 0.01f; // 256 prims cost extra 2.56 // weigthed size to money convertion @@ -70,7 +67,7 @@ namespace OpenSim.Region.ClientStack.Linden { totalcost = 0; error = string.Empty; - + if (resources == null || resources.instance_list == null || resources.instance_list.Array.Count == 0) @@ -184,7 +181,8 @@ namespace OpenSim.Region.ClientStack.Linden if (meshsfee < ModelMinCost) meshsfee = ModelMinCost; - meshsfee *= ModelCostScale; + // scale cost with basic cost changes relative to 10 + meshsfee *= (float)basicCost / 10.0f; meshsfee += 0.5f; // rounding totalcost += (int)meshsfee;