Exemplo n.º 1
0
        /// <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 ());
                }
            }
        }