Make use of mesh cost functions

avinationmerge
UbitUmarov 2012-09-17 15:37:05 +01:00
parent f79de2232e
commit 5915dfc26f
2 changed files with 13 additions and 24 deletions

View File

@ -429,6 +429,7 @@ namespace OpenSim.Region.ClientStack.Linden
//m_log.Debug("asset upload request via CAPS" + llsdRequest.inventory_type + " , " + llsdRequest.asset_type); //m_log.Debug("asset upload request via CAPS" + llsdRequest.inventory_type + " , " + llsdRequest.asset_type);
uint cost = 0; uint cost = 0;
LLSDAssetUploadResponseData meshcostdata = new LLSDAssetUploadResponseData();
if (llsdRequest.asset_type == "texture" || if (llsdRequest.asset_type == "texture" ||
llsdRequest.asset_type == "animation" || llsdRequest.asset_type == "animation" ||
@ -467,11 +468,15 @@ namespace OpenSim.Region.ClientStack.Linden
if (llsdRequest.asset_type == "mesh") 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(); LLSDAssetUploadResponse errorResponse = new LLSDAssetUploadResponse();
errorResponse.uploader = ""; errorResponse.uploader = "";
@ -479,10 +484,7 @@ namespace OpenSim.Region.ClientStack.Linden
return errorResponse; return errorResponse;
} }
uint textures_cost = (uint)llsdRequest.asset_resources.texture_list.Array.Count; cost = (uint)modelcost;
textures_cost *= (uint)mm.UploadCharge;
cost += textures_cost;
} }
else else
{ {
@ -536,20 +538,9 @@ namespace OpenSim.Region.ClientStack.Linden
uploadResponse.state = "upload"; uploadResponse.state = "upload";
uploadResponse.upload_price = (int)cost; uploadResponse.upload_price = (int)cost;
// use fake values for now
if (llsdRequest.asset_type == "mesh") if (llsdRequest.asset_type == "mesh")
{ {
uploadResponse.data = new LLSDAssetUploadResponseData(); uploadResponse.data = meshcostdata;
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;
} }
uploader.OnUpLoad += UploadCompleteHandler; uploader.OnUpLoad += UploadCompleteHandler;

View File

@ -27,9 +27,6 @@ namespace OpenSim.Region.ClientStack.Linden
{ {
float ModelMinCost = 5.0f; // try to favor small meshs versus sculpts 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 const float primCreationCost = 0.01f; // 256 prims cost extra 2.56
// weigthed size to money convertion // weigthed size to money convertion
@ -70,7 +67,7 @@ namespace OpenSim.Region.ClientStack.Linden
{ {
totalcost = 0; totalcost = 0;
error = string.Empty; error = string.Empty;
if (resources == null || if (resources == null ||
resources.instance_list == null || resources.instance_list == null ||
resources.instance_list.Array.Count == 0) resources.instance_list.Array.Count == 0)
@ -184,7 +181,8 @@ namespace OpenSim.Region.ClientStack.Linden
if (meshsfee < ModelMinCost) if (meshsfee < ModelMinCost)
meshsfee = ModelMinCost; meshsfee = ModelMinCost;
meshsfee *= ModelCostScale; // scale cost with basic cost changes relative to 10
meshsfee *= (float)basicCost / 10.0f;
meshsfee += 0.5f; // rounding meshsfee += 0.5f; // rounding
totalcost += (int)meshsfee; totalcost += (int)meshsfee;