/// <summary> /// Try to set the colors of the meshes on the specified controller. /// </summary> /// <param name="controller"></param> public void SetColors(ModuleEmissiveControllerBase controller) { if (!TryInitialize(controller)) { return; } int sourceIndex = 0; for (int emissiveIndex = 0; emissiveIndex < controller.Emissives.Count; ++emissiveIndex) { ModuleControllableEmissive emissive = controller.Emissives[emissiveIndex]; for (int meshIndex = 0; meshIndex < emissive.Count; ++meshIndex) { if (sourceIndex >= sources.Length) { return; } IColorSource source = sources[sourceIndex++]; if (source.HasColor) { emissive.SetColorAt(source.OutputColor, meshIndex); } } } }
private void ShowMeshes(Part part) { MeshRenderer[] renderers = ModuleControllableEmissive.GetMeshes(part); if ((renderers == null) || (renderers.Length < 1)) { throw GetException("Part has no meshes: " + Logging.GetTitle(part)); } StringBuilder builder = new StringBuilder(); builder.AppendFormat("Part '{0}' has {1} meshes:", Logging.GetTitle(part), renderers.Length); for (int i = 0; i < renderers.Length; ++i) { builder.AppendFormat("\n{0}: {1}", i, DescribeMesh(renderers[i])); } Logging.Log(builder.ToString()); }
/// <summary> /// Get a descriptive string for a ModuleControllableEmissive. /// </summary> /// <param name="emissive"></param> /// <returns></returns> private string DescribeEmissive(ModuleControllableEmissive emissive) { StringBuilder builder = new StringBuilder(); builder .Append(string.IsNullOrEmpty(emissive.emissiveName) ? emissive.ClassName : emissive.emissiveName) .Append(": "); if (string.IsNullOrEmpty(emissive.target)) { builder.Append("no target!"); } else { builder.AppendFormat("target \"{0}\"", emissive.target); } return(builder.ToString()); }
private void ShowPart(Part part, string qualifier, string[] arguments) { if (qualifier == null) { Logging.Log(string.Format( "Part '{0}' has {1} meshes, {2} emissives, {3} controllers.", Logging.GetTitle(part), ModuleControllableEmissive.GetMeshes(part).Length, FindModules <ModuleControllableEmissive>(part).Count, FindModules <ModuleEmissiveControllerBase>(part).Count)); return; } if (qualifier == MESHES) { ShowMeshes(part); return; } if (qualifier == EMISSIVES) { ShowModules <ModuleControllableEmissive>(part, "emissives", DescribeEmissive); return; } if (qualifier == CONTROLLERS) { ShowModules <ModuleEmissiveControllerBase>(part, "controllers", DescribeController); return; } if (qualifier == CONTROLLER) { if (arguments.Length < 1) { throw GetException("No controller index specified"); } List <ModuleEmissiveControllerBase> controllers = FindModules <ModuleEmissiveControllerBase>(part); int index = parseInteger(arguments[0], 0, controllers.Count, "controller index"); ShowController(controllers[index], arguments.SubArray(1)); return; } throw GetException("/" + DebugConsole.COMMAND + " " + COMMAND + ": unknown qualifier '" + qualifier + "'"); }