#include "rive/shapes/path_vertex.hpp"
#include "rive/shapes/path.hpp"

using namespace rive;

StatusCode PathVertex::onAddedDirty(CoreContext* context)
{
  StatusCode code = Super::onAddedDirty(context);
  if (code != StatusCode::Ok)
  {
    return code;
  }
#ifndef WITH_RIVE_EDITOR
  // Runtime-only: importer guarantees parent-first hydration so
  // `parent()` is always resolved here. Editor build moves this
  // registration into `editorParentChanged` (called by Pass 4.5
  // of the dispatcher AFTER `onAddedClean` confirms parent is
  // non-null) so coop's intra-batch out-of-order doesn't crash.
  if (!parent()->is<Path>())
  {
    return StatusCode::MissingObject;
  }
  parent()->as<Path>()->addVertex(this);
#endif
  return StatusCode::Ok;
}

void PathVertex::markGeometryDirty()
{
  if (parent() == nullptr)
  {
    // This is an acceptable condition as the parametric paths create points
    // that are not part of the core context.
    return;
  }
  parent()->as<Path>()->markPathDirty();
}