Пример #1
0
AABB AABB::FromString(const char *str, const char **outEndStr)
{
	assume(str);
	if (!str)
		return AABB(vec::nan, vec::nan);
	AABB a;
	MATH_SKIP_WORD(str, "AABB(");
	MATH_SKIP_WORD(str, "Min:(");
	a.minPoint = PointVecFromString(str, &str);
	MATH_SKIP_WORD(str, " Max:(");
	a.maxPoint = PointVecFromString(str, &str);
	if (outEndStr)
		*outEndStr = str;
	return a;
}
Пример #2
0
Sphere Sphere::FromString(const char *str, const char **outEndStr)
{
	assume(str);
	if (!str)
		return Sphere(vec::nan, FLOAT_NAN);
	Sphere s;
	MATH_SKIP_WORD(str, "Sphere(");
	MATH_SKIP_WORD(str, "pos:(");
	s.pos = PointVecFromString(str, &str);
	MATH_SKIP_WORD(str, " r:");
	s.r = DeserializeFloat(str, &str);
	if (outEndStr)
		*outEndStr = str;
	return s;
}
Пример #3
0
Ray Ray::FromString(const char *str, const char **outEndStr)
{
	assume(str);
	if (!str)
		return Ray(vec::nan, vec::nan);
	Ray r;
	MATH_SKIP_WORD(str, "Ray(");
	MATH_SKIP_WORD(str, "Pos:(");
	r.pos = PointVecFromString(str, &str);
	MATH_SKIP_WORD(str, " Dir:(");
	r.dir = DirVecFromString(str, &str);
	if (outEndStr)
		*outEndStr = str;
	return r;
}
Пример #4
0
Line Line::FromString(const char *str, const char **outEndStr)
{
    assume(str);
    if (!str)
        return Line(vec::nan, vec::nan);
    Line l;
    MATH_SKIP_WORD(str, "Line(");
    MATH_SKIP_WORD(str, "Pos:(");
    l.pos = PointVecFromString(str, &str);
    MATH_SKIP_WORD(str, " Dir:(");
    l.dir = DirVecFromString(str, &str);
    if (outEndStr)
        *outEndStr = str;
    return l;
}
Пример #5
0
OBB OBB::FromString(const char *str, const char **outEndStr)
{
	assume(str);
	if (!str)
		return OBB(vec::nan, vec::nan, vec::nan, vec::nan, vec::nan);
	OBB o;
	MATH_SKIP_WORD(str, "OBB(");
	MATH_SKIP_WORD(str, "Pos:(");
	o.pos = PointVecFromString(str, &str);
	MATH_SKIP_WORD(str, " Halfsize:(");
	o.r = DirVecFromString(str, &str);
	MATH_SKIP_WORD(str, " X:(");
	o.axis[0] = DirVecFromString(str, &str);
	MATH_SKIP_WORD(str, " Y:(");
	o.axis[1] = DirVecFromString(str, &str);
	MATH_SKIP_WORD(str, " Z:(");
	o.axis[2] = DirVecFromString(str, &str);
	if (outEndStr)
		*outEndStr = str;
	return o;
}