using System;
using Artemis.Storage.Entities.Profile.Abstract;
namespace Artemis.Core;
///
/// Represents a condition applied to a
///
public interface ICondition : IDisposable, IStorageModel, IPluginFeatureDependent
{
///
/// Gets the entity used to store this condition
///
public IConditionEntity Entity { get; }
///
/// Gets the profile element this condition applies to
///
public RenderProfileElement ProfileElement { get; }
///
/// Gets a boolean indicating whether the condition is currently met
///
bool IsMet { get; }
///
/// Updates the condition
///
void Update();
///
/// Updates the timeline according to the provided as the display condition sees fit.
///
void UpdateTimeline(double deltaTime);
///
/// Overrides the timeline to the provided as the display condition sees fit.
///
void OverrideTimeline(TimeSpan position);
}
///
/// Represents a condition applied to a using a
///
public interface INodeScriptCondition : ICondition
{
///
/// Gets the node script of this node script condition
///
INodeScript? NodeScript { get; }
///
/// Loads the node script this node script condition uses
///
void LoadNodeScript();
}