private void ProcessPhysicsList(string module, string[] cmdparms)
        {
            if (SceneManager.Instance == null || SceneManager.Instance.CurrentScene == null)
            {
                WriteError("Error: no region selected. Use 'change region' to select a region.");
                return;
            }
            Scene scene = SceneManager.Instance.CurrentScene;

            IPhysicsParameters physScene = scene.PhysicsScene as IPhysicsParameters;

            if (physScene != null)
            {
                WriteOut("Available physics parameters:");
                PhysParameterEntry[] parms = physScene.GetParameterList();
                foreach (PhysParameterEntry ent in parms)
                {
                    WriteOut("   {0}: {1}", ent.name, ent.desc);
                }
            }
            else
            {
                WriteError("Current regions's physics engine has no settable physics parameters");
            }
            return;
        }
        private void ProcessPhysicsSet(string module, string[] cmdparms)
        {
            if (cmdparms.Length < 4 || cmdparms.Length > 5)
            {
                WriteError("Parameter count error. Invocation: " + getInvocation);
                return;
            }
            string parm    = "xxx";
            string valparm = String.Empty;
            uint   localID = (uint)PhysParameterEntry.APPLY_TO_NONE; // set default value

            try
            {
                parm    = cmdparms[2];
                valparm = cmdparms[3].ToLower();
                if (cmdparms.Length > 4)
                {
                    if (cmdparms[4].ToLower() == "all")
                    {
                        localID = (uint)PhysParameterEntry.APPLY_TO_ALL;
                    }
                    else
                    {
                        localID = uint.Parse(cmdparms[2], Culture.NumberFormatInfo);
                    }
                }
            }
            catch
            {
                WriteError("  Error parsing parameters. Invocation: " + setInvocation);
                return;
            }

            if (SceneManager.Instance == null || SceneManager.Instance.CurrentScene == null)
            {
                WriteError("Error: no region selected. Use 'change region' to select a region.");
                return;
            }

            Scene scene = SceneManager.Instance.CurrentScene;
            IPhysicsParameters physScene = scene.PhysicsScene as IPhysicsParameters;

            if (physScene != null)
            {
                if (!physScene.SetPhysicsParameter(parm, valparm, localID))
                {
                    WriteError("Failed set of parameter '{0}' for region '{1}'", parm, scene.RegionInfo.RegionName);
                }
            }
            else
            {
                WriteOut("Region '{0}'s physics engine has no settable physics parameters", scene.RegionInfo.RegionName);
            }
            return;
        }
        // TODO: extend get so you can get a value from an individual localID
        private void ProcessPhysicsGet(string module, string[] cmdparms)
        {
            if (cmdparms.Length != 3)
            {
                WriteError("Parameter count error. Invocation: " + getInvocation);
                return;
            }
            string parm = cmdparms[2];

            if (SceneManager.Instance == null || SceneManager.Instance.CurrentScene == null)
            {
                WriteError("Error: no region selected. Use 'change region' to select a region.");
                return;
            }

            Scene scene = SceneManager.Instance.CurrentScene;
            IPhysicsParameters physScene = scene.PhysicsScene as IPhysicsParameters;

            if (physScene != null)
            {
                if (parm.ToLower() == "all")
                {
                    foreach (PhysParameterEntry ppe in physScene.GetParameterList())
                    {
                        string val = string.Empty;
                        if (physScene.GetPhysicsParameter(ppe.name, out val))
                        {
                            WriteOut("  {0}/{1} = {2}", scene.RegionInfo.RegionName, ppe.name, val);
                        }
                        else
                        {
                            WriteOut("  {0}/{1} = {2}", scene.RegionInfo.RegionName, ppe.name, "unknown");
                        }
                    }
                }
                else
                {
                    string val = string.Empty;
                    if (physScene.GetPhysicsParameter(parm, out val))
                    {
                        WriteOut("  {0}/{1} = {2}", scene.RegionInfo.RegionName, parm, val);
                    }
                    else
                    {
                        WriteError("Failed fetch of parameter '{0}' from region '{1}'", parm, scene.RegionInfo.RegionName);
                    }
                }
            }
            else
            {
                WriteError("Region '{0}' physics engine has no gettable physics parameters", scene.RegionInfo.RegionName);
            }
            return;
        }