/// <summary> /// Fix all the vehicle params after rebuilding the representation /// </summary> /// <param name="part"></param> private void FixVehicleParams (SceneObjectPart part) { part.PhysActor.VehicleType = part.VehicleType; OpenMetaverse.StructuredData.OSD o = part.GetComponentState ("VehicleParameters"); foreach (OpenMetaverse.StructuredData.OSD param in part.VehicleFlags) { part.PhysActor.VehicleFlags (param.AsInteger(), false); } foreach (KeyValuePair<string, OpenMetaverse.StructuredData.OSD> param in part.VehicleParameters) { if (param.Value.Type == OpenMetaverse.StructuredData.OSDType.Real) part.PhysActor.VehicleFloatParam (int.Parse (param.Key), (float)param.Value.AsReal ()); else if (param.Value.Type == OpenMetaverse.StructuredData.OSDType.Array) { OpenMetaverse.StructuredData.OSDArray a = (OpenMetaverse.StructuredData.OSDArray)param.Value; if (a.Count == 3) part.PhysActor.VehicleVectorParam (int.Parse (param.Key), param.Value.AsVector3 ()); else part.PhysActor.VehicleRotationParam (int.Parse (param.Key), param.Value.AsQuaternion ()); } } }