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; }