void Curve3D::_set_data(const Dictionary &p_data) { ERR_FAIL_COND(!p_data.has("points")); ERR_FAIL_COND(!p_data.has("tilts")); PoolVector3Array rp = p_data["points"]; int pc = rp.size(); ERR_FAIL_COND(pc % 3 != 0); points.resize(pc / 3); PoolVector3Array::Read r = rp.read(); PoolRealArray rtl = p_data["tilts"]; PoolRealArray::Read rt = rtl.read(); for (int i = 0; i < points.size(); i++) { points[i].in = r[i * 3 + 0]; points[i].out = r[i * 3 + 1]; points[i].pos = r[i * 3 + 2]; points[i].tilt = rt[i]; } baked_cache_dirty = true; }