Example #1
0
        /// <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 + "'");
        }