public LSL_Float llGetObjectMass(string id)
        {
            if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID))
            {
                return(new LSL_Float());
            }

            UUID key = new UUID();

            if (UUID.TryParse(id, out key))
            {
                try {
                    ISceneChildEntity obj = World.GetSceneObjectPart(key);
                    if (obj != null)
                    {
                        return(obj.GetMass());
                    }
                    // the object is null so the key is for an avatar
                    IScenePresence avatar = World.GetScenePresence(key);
                    if (avatar != null)
                    {
                        if (avatar.IsChildAgent)
                        {
                            // reference http://www.lslwiki.net/lslwiki/wakka.php?wakka=llGetObjectMass
                            // child agents have a mass of 1.0
                            return(1);
                        }

                        return(avatar.PhysicsActor.Mass);
                    }
                } catch (KeyNotFoundException) {
                    return(0); // The Object/Agent not in the region so just return zero
                }
            }
            return(0);
        }