Пример #1
0
        /// <summary>
        /// Generates the visual remeshing tasks, as needed.
        /// </summary>
        /// <param name="properties">The chunk properties.</param>
        /// <param name="tasks">The task list to add to.</param>
        private void GenerateVisuals(ChunkProperties properties, RemeshTaskStack taskStack)
        {
            List <int> materials = new List <int>();

            foreach (var pos in BlockIterator(properties.ChunkSize.Value))
            {
                var type = properties.GetBlock(pos);

                if (!type.IsVisible)
                {
                    continue;
                }

                for (int j = 0; j < 6; j++)
                {
                    var material = type.GetMaterialID(j);
                    if (materials.Contains(material))
                    {
                        continue;
                    }

                    materials.Add(material);
                    taskStack.AddTask(new VisualRemeshTask(properties, material));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Generates the collision remesh task, as needed.
        /// </summary>
        /// <param name="properties">The chunk properties.</param>
        /// <param name="tasks">The task list to add to.</param>
        private void GenerateCollision(ChunkProperties properties, RemeshTaskStack taskStack)
        {
            foreach (var pos in BlockIterator(properties.ChunkSize.Value))
            {
                var type = properties.GetBlock(pos);

                if (type.IsSolid)
                {
                    taskStack.AddTask(new CollisionRemeshTask(properties));
                    return;
                }
            }
        }
Пример #3
0
 /// <summary>
 /// Creates a new chunk remesh event.
 /// </summary>
 /// <param name="task">The task information.</param>
 internal ChunkRemeshEvent(RemeshTaskStack task) => Task = task;
Пример #4
0
 /// <inheritdoc cref="IRemeshTask"/>
 public void CreateTasks(ChunkProperties properties, RemeshTaskStack taskStack)
 {
     GenerateVisuals(properties, taskStack);
     GenerateCollision(properties, taskStack);
 }