Esempio n. 1
0
        private ObjectPart ObjectPartFromDbReader(NpgsqlDataReader dbReader)
        {
            var objpart = new ObjectPart(dbReader.GetUUID("ID"))
            {
                LoadedLinkNumber     = (int)dbReader["LinkNumber"],
                Position             = dbReader.GetVector3("Position"),
                Rotation             = dbReader.GetQuaternion("Rotation"),
                SitText              = (string)dbReader["SitText"],
                SitAnimation         = (string)dbReader["SitAnimation"],
                TouchText            = (string)dbReader["TouchText"],
                Name                 = (string)dbReader["Name"],
                Description          = (string)dbReader["Description"],
                SitTargetOffset      = dbReader.GetVector3("SitTargetOffset"),
                SitTargetOrientation = dbReader.GetQuaternion("SitTargetOrientation"),
                Creator              = dbReader.GetUGUI("Creator"),
                CreationDate         = dbReader.GetDate("CreationDate"),
                RezDate              = dbReader.GetDate("RezDate"),
                Flags                = dbReader.GetEnum <PrimitiveFlags>("Flags"),

                CameraAtOffset  = dbReader.GetVector3("CameraAtOffset"),
                CameraEyeOffset = dbReader.GetVector3("CameraEyeOffset"),

                PhysicsShapeType          = dbReader.GetEnum <PrimitivePhysicsShapeType>("PhysicsShapeType"),
                PathfindingType           = dbReader.GetEnum <PathfindingType>("PathfindingType"),
                PathfindingCharacterType  = dbReader.GetEnum <CharacterType>("PathfindingCharacterType"),
                WalkableCoefficientAvatar = (double)dbReader["WalkableCoefficientAvatar"],
                WalkableCoefficientA      = (double)dbReader["WalkableCoefficientA"],
                WalkableCoefficientB      = (double)dbReader["WalkableCoefficientB"],
                WalkableCoefficientC      = (double)dbReader["WalkableCoefficientC"],
                WalkableCoefficientD      = (double)dbReader["WalkableCoefficientD"],
                Material = dbReader.GetEnum <PrimitiveMaterial>("Material"),
                Size     = dbReader.GetVector3("Size"),

                MediaURL = (string)dbReader["MediaURL"],

                AngularVelocity = dbReader.GetVector3("AngularVelocity"),
                PointLight      = new PointLightParam
                {
                    DbSerialization = dbReader.GetBytes("LightData")
                },
                Projection = new ProjectionParam
                {
                    DbSerialization = dbReader.GetBytes("ProjectionData"),
                },
                Text = new TextParam
                {
                    Serialization = dbReader.GetBytes("HoverTextData")
                },
                Flexible = new FlexibleParam
                {
                    DbSerialization = dbReader.GetBytes("FlexibleData")
                },
                Sound = new SoundParam
                {
                    Serialization = dbReader.GetBytes("LoopedSoundData")
                },
                CollisionSound = new CollisionSoundParam
                {
                    Serialization = dbReader.GetBytes("ImpactSoundData")
                },
                Shape = new ObjectPart.PrimitiveShape
                {
                    Serialization = dbReader.GetBytes("PrimitiveShapeData")
                },
                ParticleSystemBytes   = dbReader.GetBytes("ParticleSystem"),
                TextureEntryBytes     = dbReader.GetBytes("TextureEntryBytes"),
                TextureAnimationBytes = dbReader.GetBytes("TextureAnimationBytes"),

                ScriptAccessPin          = (int)dbReader["ScriptAccessPin"],
                ForceMouselook           = (bool)dbReader["ForceMouselook"],
                BaseMask                 = dbReader.GetEnum <InventoryPermissionsMask>("BasePermissions"),
                OwnerMask                = dbReader.GetEnum <InventoryPermissionsMask>("CurrentPermissions"),
                EveryoneMask             = dbReader.GetEnum <InventoryPermissionsMask>("EveryOnePermissions"),
                GroupMask                = dbReader.GetEnum <InventoryPermissionsMask>("GroupPermissions"),
                NextOwnerMask            = dbReader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissions"),
                ClickAction              = dbReader.GetEnum <ClickActionType>("ClickAction"),
                PassCollisionMode        = dbReader.GetEnum <PassEventMode>("PassCollisionMode"),
                PassTouchMode            = dbReader.GetEnum <PassEventMode>("PassTouchMode"),
                Velocity                 = dbReader.GetVector3("Velocity"),
                IsSoundQueueing          = (bool)dbReader["IsSoundQueueing"],
                IsAllowedDrop            = (bool)dbReader["IsAllowedDrop"],
                PhysicsDensity           = (double)dbReader["PhysicsDensity"],
                PhysicsFriction          = (double)dbReader["PhysicsFriction"],
                PhysicsRestitution       = (double)dbReader["PhysicsRestitution"],
                PhysicsGravityMultiplier = (double)dbReader["PhysicsGravityMultiplier"],

                IsVolumeDetect    = (bool)dbReader["IsVolumeDetect"],
                IsPhantom         = (bool)dbReader["IsPhantom"],
                IsPhysics         = (bool)dbReader["IsPhysics"],
                IsRotateZEnabled  = (bool)dbReader["IsRotateZEnabled"],
                IsRotateXEnabled  = (bool)dbReader["IsRotateXEnabled"],
                IsRotateYEnabled  = (bool)dbReader["IsRotateYEnabled"],
                IsSandbox         = (bool)dbReader["IsSandbox"],
                IsBlockGrab       = (bool)dbReader["IsBlockGrab"],
                IsDieAtEdge       = (bool)dbReader["IsDieAtEdge"],
                IsReturnAtEdge    = (bool)dbReader["IsReturnAtEdge"],
                IsBlockGrabObject = (bool)dbReader["IsBlockGrabObject"],
                SandboxOrigin     = dbReader.GetVector3("SandboxOrigin"),
                ExtendedMesh      = new ExtendedMeshParams {
                    DbSerialization = dbReader.GetBytes("ExtendedMeshData")
                },
                IsSitTargetActive         = (bool)dbReader["IsSitTargetActive"],
                IsScriptedSitOnly         = (bool)dbReader["IsScriptedSitOnly"],
                AllowUnsit                = (bool)dbReader["AllowUnsit"],
                IsUnSitTargetActive       = (bool)dbReader["IsUnSitTargetActive"],
                UnSitTargetOffset         = dbReader.GetVector3("UnSitTargetOffset"),
                UnSitTargetOrientation    = dbReader.GetQuaternion("UnSitTargetOrientation"),
                LocalizationSerialization = dbReader.GetBytes("LocalizationData"),
                Damage = (double)dbReader["Damage"]
            };

            objpart.AnimationController.DbSerialization = dbReader.GetBytes("AnimationData");

            objpart.LoadFromVehicleSerialization(dbReader.GetBytes("VehicleData"));

            using (var ms = new MemoryStream(dbReader.GetBytes("DynAttrs")))
            {
                foreach (KeyValuePair <string, IValue> kvp in (Map)LlsdBinary.Deserialize(ms))
                {
                    objpart.DynAttrs.Add(kvp.Key, kvp.Value);
                }
            }

            return(objpart);
        }
        private ObjectPart ObjectPartFromMap(Map map)
        {
            var objpart = new ObjectPart(map["ID"].AsUUID)
            {
                LoadedLinkNumber     = map["LinkNumber"].AsInt,
                Position             = map["Position"].AsVector3,
                Rotation             = map["Rotation"].AsQuaternion,
                SitText              = map["SitText"].ToString(),
                TouchText            = map["TouchText"].ToString(),
                Name                 = map["Name"].ToString(),
                Description          = map["Description"].ToString(),
                SitTargetOffset      = map["SitTargetOffset"].AsVector3,
                SitTargetOrientation = map["SitTargetOrientation"].AsQuaternion,
                SitAnimation         = map["SitAnimation"].ToString(),
                Creator              = new UGUI(map["Creator"].ToString()),
                CreationDate         = (Date)map["CreationDate"],
                RezDate              = (Date)map["RezDate"],
                Flags                = (PrimitiveFlags)map["Flags"].AsUInt,

                CameraAtOffset  = map["CameraAtOffset"].AsVector3,
                CameraEyeOffset = map["CameraEyeOffset"].AsVector3,

                PhysicsShapeType          = (PrimitivePhysicsShapeType)map["PhysicsShapeType"].AsInt,
                PathfindingType           = (PathfindingType)map["PathfindingType"].AsInt,
                PathfindingCharacterType  = (CharacterType)map["PathfindingCharacterType"].AsInt,
                WalkableCoefficientAvatar = map["WalkableCoefficientAvatar"].AsReal,
                WalkableCoefficientA      = map["WalkableCoefficientA"].AsReal,
                WalkableCoefficientB      = map["WalkableCoefficientB"].AsReal,
                WalkableCoefficientC      = map["WalkableCoefficientC"].AsReal,
                WalkableCoefficientD      = map["WalkableCoefficientD"].AsReal,
                Material = (PrimitiveMaterial)map["Material"].AsInt,
                Size     = map["Size"].AsVector3,

                MediaURL = map["MediaURL"].ToString(),

                AngularVelocity       = map["AngularVelocity"].AsVector3,
                Damage                = map["Damage"].AsReal,
                ParticleSystemBytes   = (BinaryData)map["ParticleSystem"],
                TextureEntryBytes     = (BinaryData)map["TextureEntryBytes"],
                TextureAnimationBytes = (BinaryData)map["TextureAnimationBytes"],

                ScriptAccessPin = map["ScriptAccessPin"].AsInt,

                ForceMouselook = map["ForceMouselook"].AsBoolean,

                BaseMask      = (InventoryPermissionsMask)map["BasePermissions"].AsUInt,
                OwnerMask     = (InventoryPermissionsMask)map["CurrentPermissions"].AsUInt,
                EveryoneMask  = (InventoryPermissionsMask)map["EveryOnePermissions"].AsUInt,
                GroupMask     = (InventoryPermissionsMask)map["GroupPermissions"].AsUInt,
                NextOwnerMask = (InventoryPermissionsMask)map["NextOwnerPermissions"].AsUInt,

                ClickAction = (ClickActionType)map["ClickAction"].AsInt,
                PointLight  = new PointLightParam
                {
                    DbSerialization = (BinaryData)map["LightData"]
                },
                Projection = new ProjectionParam
                {
                    DbSerialization = (BinaryData)map["ProjectionData"]
                },

                ExtendedMesh = new ExtendedMeshParams
                {
                    DbSerialization = (BinaryData)map["ExtendedMeshData"]
                },

                Text = new TextParam
                {
                    Serialization = (BinaryData)map["HoverTextData"]
                },

                Flexible = new FlexibleParam
                {
                    DbSerialization = (BinaryData)map["FlexibleData"]
                },

                Sound = new SoundParam
                {
                    Serialization = (BinaryData)map["LoopedSoundData"]
                },

                CollisionSound = new CollisionSoundParam
                {
                    Serialization = (BinaryData)map["ImpactSoundData"]
                },

                Shape = new ObjectPart.PrimitiveShape
                {
                    Serialization = (BinaryData)map["PrimitiveShapeData"]
                },
                PassCollisionMode = (PassEventMode)map["PassCollisionMode"].AsInt,
                PassTouchMode     = (PassEventMode)map["PassTouchMode"].AsInt,
                Velocity          = map["Velocity"].AsVector3,
                IsSoundQueueing   = map["IsSoundQueueing"].AsBoolean,
                IsAllowedDrop     = map["IsAllowedDrop"].AsBoolean,

                PhysicsDensity           = map["PhysicsDensity"].AsReal,
                PhysicsFriction          = map["PhysicsFriction"].AsReal,
                PhysicsRestitution       = map["PhysicsRestitution"].AsReal,
                PhysicsGravityMultiplier = map["PhysicsGravityMultiplier"].AsReal,

                IsRotateXEnabled       = map["IsRotateXEnabled"].AsBoolean,
                IsRotateYEnabled       = map["IsRotateYEnabled"].AsBoolean,
                IsRotateZEnabled       = map["IsRotateZEnabled"].AsBoolean,
                IsVolumeDetect         = map["IsVolumeDetect"].AsBoolean,
                IsPhantom              = map["IsPhantom"].AsBoolean,
                IsPhysics              = map["IsPhysics"].AsBoolean,
                IsSandbox              = map["IsSandbox"].AsBoolean,
                IsBlockGrab            = map["IsBlockGrab"].AsBoolean,
                IsDieAtEdge            = map["IsDieAtEdge"].AsBoolean,
                IsReturnAtEdge         = map["IsReturnAtEdge"].AsBoolean,
                IsBlockGrabObject      = map["IsBlockGrabObject"].AsBoolean,
                SandboxOrigin          = map["SandboxOrigin"].AsVector3,
                IsSitTargetActive      = map["IsSitTargetActive"].AsBoolean,
                IsScriptedSitOnly      = map["IsScriptedSitOnly"].AsBoolean,
                AllowUnsit             = map["AllowUnsit"].AsBoolean,
                IsUnSitTargetActive    = map["IsUnSitTargetActive"].AsBoolean,
                UnSitTargetOffset      = map["UnSitTargetOffset"].AsVector3,
                UnSitTargetOrientation = map["UnSitTargetOrientation"].AsQuaternion,

                LocalizationSerialization = (BinaryData)map["LocalizationData"],
            };

            objpart.AnimationController.DbSerialization = (BinaryData)map["AnimationData"];
            objpart.LoadFromVehicleSerialization((BinaryData)map["VehicleData"]);

            using (var ms = new MemoryStream((BinaryData)map["DynAttrs"]))
            {
                foreach (var kvp in (Map)LlsdBinary.Deserialize(ms))
                {
                    objpart.DynAttrs.Add(kvp.Key, kvp.Value);
                }
            }
            return(objpart);
        }