#include "rive/shapes/mesh_vertex.hpp"
#include "rive/shapes/mesh.hpp"

using namespace rive;
void MeshVertex::markGeometryDirty() { parent()->as<Mesh>()->markDrawableDirty(); }

StatusCode MeshVertex::onAddedDirty(CoreContext* context) {
    StatusCode code = Super::onAddedDirty(context);
    if (code != StatusCode::Ok) {
        return code;
    }
    if (!parent()->is<Mesh>()) {
        return StatusCode::MissingObject;
    }
    parent()->as<Mesh>()->addVertex(this);
    return StatusCode::Ok;
}