public void Render(IMeshRenderer renderer, int rectangleCount,
                               Material material, UnityEngine.Color additionalColor)
            {
                if (parent != null)
                {
                    parent.Render(renderer, rectangleCount, material, additionalColor);
                    return;
                }

                if (currentMeshComponent == null)
                {
                    meshComponentNo      = 0;
                    currentMeshComponent = meshComponents[meshComponentNo];
                    currentMeshComponent.SetMaterial(material, additionalColor);
                }
                else
                {
                    Material componentMaterial =
                        currentMeshComponent.meshRenderer.sharedMaterial;
                    if (componentMaterial != material ||
                        (currentMeshComponent.property != null &&
                         currentMeshComponent.additionalColor != additionalColor))
                    {
                        int no = ++meshComponentNo;
                        if (no >= meshComponents.Count)
                        {
                            AddMeshComponent();
                        }
                        currentMeshComponent = meshComponents[no];
                        currentMeshComponent.SetMaterial(material, additionalColor);
                    }
                }

                currentMeshComponent.AddRenderer(renderer, rectangleCount, updateCount);
            }
示例#2
0
        public bool CreateControl(string assemblyName, string[] dependencies)
        {
            // Check if assembly exists
            if (!File.Exists(assemblyName))
            {
                return(false);
            }

            // Check if dependencies exists
            if (dependencies != null)
            {
                foreach (var item in dependencies)
                {
                    if (!File.Exists(item))
                    {
                        return(false);
                    }
                }
            }

            assemblyName = Path.GetFileNameWithoutExtension(assemblyName);

            // Try creating renderer instance.
            try
            {
                // Load the assembly into the current application domain.
                Assembly assembly = Assembly.Load(assemblyName);

                // Get all types implementing the IMeshRenderer interface.
                var type  = typeof(IMeshRenderer);
                var types = assembly.GetTypes().Where(s => type.IsAssignableFrom(s)).ToArray();

                if (types.Length > 0)
                {
                    // Create an instance.
                    renderer = (IMeshRenderer)Activator.CreateInstance(types[0]);
                }
            }
            catch (Exception)
            {
                return(false);
            }

            // Return true if render control was successfully created.
            return(renderer != null);
        }
            public void AddRenderer(IMeshRenderer renderer, int rc, int uc)
            {
                if (updateCount != uc)
                {
                    updateCount    = uc;
                    rendererCount  = 0;
                    rectangleCount = 0;
                }

                int i = rendererCount++;

                if (i < renderers.Count)
                {
                    renderers[i] = renderer;
                }
                else
                {
                    renderers.Add(renderer);
                }

                rectangleCount += rc;
            }
示例#4
0
            public void Render(
		IMeshRenderer renderer, int rectangleCount, Material material)
            {
                if (parent != null) {
                parent.Render(renderer, rectangleCount, material);
                return;
                }

                if (currentMeshComponent == null) {
                meshComponentNo = 0;
                currentMeshComponent = meshComponents[meshComponentNo];
                currentMeshComponent.SetMaterial(material);
                } else {
                Material componentMaterial =
                currentMeshComponent.meshRenderer.sharedMaterial;
                if (componentMaterial != material) {
                int no = ++meshComponentNo;
                if (no >= meshComponents.Count)
                    AddMeshComponent();
                currentMeshComponent = meshComponents[no];
                currentMeshComponent.SetMaterial(material);
                }
                }

                currentMeshComponent.AddRenderer(renderer, rectangleCount, updateCount);
            }
示例#5
0
            public void AddRenderer(IMeshRenderer renderer, int rc, int uc)
            {
                if (updateCount != uc) {
                updateCount = uc;
                rendererCount = 0;
                rectangleCount = 0;
                }

                int i = rendererCount++;
                if (i < renderers.Count)
                renderers[i] = renderer;
                else
                renderers.Add(renderer);

                rectangleCount += rc;
            }
示例#6
0
            public void Render(IMeshRenderer renderer, int rectangleCount,
		Material material, UnityEngine.Color additionalColor)
            {
                if (parent != null) {
                parent.Render(renderer, rectangleCount, material, additionalColor);
                return;
                }
                if (!needsUpdate)
                return;

                if (currentMeshComponent == null) {
                meshComponentNo = 0;
                currentMeshComponent = meshComponents[meshComponentNo];
                currentMeshComponent.SetMaterial(material, additionalColor);
                } else {
                Material componentMaterial =
                currentMeshComponent.meshRenderer.sharedMaterial;
                if (componentMaterial != material ||
                    (currentMeshComponent.property != null &&
                    currentMeshComponent.additionalColor != additionalColor)) {
                int no = ++meshComponentNo;
                if (no >= meshComponents.Count)
                    AddMeshComponent();
                currentMeshComponent = meshComponents[no];
                currentMeshComponent.SetMaterial(material, additionalColor);
                }
                }

                currentMeshComponent.AddRenderer(renderer, rectangleCount, updateCount);
            }
示例#7
0
        public bool CreateControl(string assemblyName, string[] dependencies)
        {
            // Check if assembly exists
            if (!File.Exists(assemblyName))
            {
                return false;
            }

            // Check if dependencies exists
            if (dependencies != null)
            {
                foreach (var item in dependencies)
                {
                    if (!File.Exists(item))
                    {
                        return false;
                    }
                }
            }

            assemblyName = Path.GetFileNameWithoutExtension(assemblyName);

            // Try creating renderer instance.
            try
            {
                // Load the assembly into the current application domain.
                Assembly assembly = Assembly.Load(assemblyName);

                // Get all types implementing the IMeshRenderer interface.
                var type = typeof(IMeshRenderer);
                var types = assembly.GetTypes().Where(s => type.IsAssignableFrom(s)).ToArray();

                if (types.Length > 0)
                {
                    // Create an instance.
                    renderer = (IMeshRenderer)Activator.CreateInstance(types[0]);
                }

            }
            catch (Exception)
            {
                return false;
            }

            // Return true if render control was successfully created.
            return (renderer != null);
        }
示例#8
0
 public void Draw(IMeshRenderer meshRenderer)
 {
     meshRenderer.Render(_mesh.Mesh, Matrix.Identity);
 }