72 lines
1.3 KiB
C#
72 lines
1.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Godot;
|
|
using System;
|
|
|
|
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass]
|
|
public partial class ScatterList:Scatterer
|
|
{
|
|
[Export]
|
|
public bool childrenNeedToBeVisible = true;
|
|
[Export]
|
|
public bool childrenNeedToBeProcessing = false;
|
|
|
|
[Export]
|
|
public bool clearChildContainers = false;
|
|
|
|
|
|
public override void _Process( double delta )
|
|
{
|
|
if ( clearContainers )
|
|
{
|
|
clearContainers = false;
|
|
ClearContainers();
|
|
}
|
|
|
|
if ( clearChildContainers )
|
|
{
|
|
clearChildContainers = false;
|
|
Nodes.ForEachDirectChild<Scatterer>( this, s => s.ClearContainers() );
|
|
}
|
|
|
|
if ( ! ( update || updateAlways ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
update = false;
|
|
|
|
ScatterAndInstantiatePoints();
|
|
}
|
|
|
|
protected override List<ScatterPoint> _Scatter( List<ScatterPoint> points )
|
|
{
|
|
var output = points;
|
|
|
|
Nodes.ForEachDirectChild<Scatterer>( this,
|
|
( s )=>
|
|
{
|
|
if ( ! IsChildEnabled( s ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
output = s.Scatter( output );
|
|
}
|
|
);
|
|
|
|
return output;
|
|
}
|
|
|
|
bool IsChildEnabled( Scatterer s )
|
|
{
|
|
return IsChildEnabled( s, childrenNeedToBeVisible, childrenNeedToBeProcessing );
|
|
}
|
|
|
|
}
|
|
} |