private void Awake() { controller = new BoidController(meshFilter); controller.Generate(); StartCoroutine(controller.Simulate()); SetupSlider(maxSpeedSlider, maxSpeedText, controller.maxSpeed, value => controller.maxSpeed = value); SetupSlider(interactionRadiusSlider, interactionRadiusText, controller.interactionRadius, value => controller.interactionRadius = value); SetupSlider(cohesionCoefficientSlider, cohesionCoefficientText, controller.cohesionCoefficient, value => controller.cohesionCoefficient = value); SetupSlider(separationDistanceSlider, separationDistanceText, controller.separationDistance, value => controller.separationDistance = value); SetupSlider(separationCoefficientSlider, separationCoefficientText, controller.separationCoefficient, value => controller.separationCoefficient = value); SetupSlider(alignmentCoefficientSlider, alignmentCoefficientText, controller.alignmentCoefficient, value => controller.alignmentCoefficient = value); simulateToggle.onValueChanged.AddListener(value => simulate = value); generateButton.onClick.AddListener(controller.Generate); }
private void Generate() { controller = new BoidController(); GeneratePalette(); Color colorA = GetMainColorHSV().ToColor(); Color colorB = GetSecondaryColorHSV().ToColor(); config.template = MeshDraft.Tetrahedron(0.3f); // Assuming that we are dealing with tetrahedron, first vertex should be boid's "nose" config.template.colors.Add(colorA); for (int i = 1; i < config.template.vertexCount; i++) { config.template.colors.Add(colorB); } meshFilter.mesh = controller.Generate(config); }