Example #1
0
BoneFrameData * JSONDataParser::_parseBoneFrame(const rapidjson::Value& rawData, unsigned frameStart, unsigned frameCount) const
{
    const auto frame = BaseObject::borrowObject<BoneFrameData>();
    frame->parent = this->_armature->getBone(_getString(rawData, PARENT, ""));
    frame->tweenRotate = _getNumber(rawData, TWEEN_ROTATE, (int)0);
    frame->tweenScale = _getBoolean(rawData, TWEEN_SCALE, true);

    _parseTweenFrame<BoneFrameData>(rawData, *frame, frameStart, frameCount);

    if (rawData.HasMember(TRANSFORM))
    {
        _parseTransform(rawData[TRANSFORM], frame->transform);
    }

    const auto bone = static_cast<BoneTimelineData*>(this->_timeline)->bone;

    if ((rawData.HasMember(EVENT) || rawData.HasMember(SOUND)))
    {
        _parseEventData(rawData, frame->events, bone, nullptr);
        this->_animation->hasBoneTimelineEvent = true;
    }

    if (rawData.HasMember(ACTION))
    {
        const auto slot = this->_armature->getSlot(bone->name);
        _parseActionData(rawData, frame->actions, bone, slot);
        this->_animation->hasBoneTimelineEvent = true;
    }

    return frame;
}
Example #2
0
DisplayData * JSONDataParser::_parseDisplay(const rapidjson::Value & rawData)
{
    const auto display = BaseObject::borrowObject<DisplayData>();
    display->name = _getString(rawData, NAME, "");

    if (rawData.HasMember(TYPE) && rawData[TYPE].IsString())
    {
        display->type = _getDisplayType(rawData[TYPE].GetString());
    }
    else
    {
        display->type = (DisplayType)_getNumber(rawData, TYPE, (int)DisplayType::Image);
    }

    display->isRelativePivot = true;
    if (rawData.HasMember(PIVOT))
    {
        const auto& pivotObject = rawData[PIVOT];
        display->pivot.x = _getNumber(pivotObject, X, 0.f);
        display->pivot.y = _getNumber(pivotObject, Y, 0.f);
    }
    else if (this->_isParentCooriinate)
    {
        const auto& transformObject = rawData[TRANSFORM];
        display->isRelativePivot = false;
        display->pivot.x = _getNumber(transformObject, PIVOT_X, 0.f) * this->_armatureScale;
        display->pivot.y = _getNumber(transformObject, PIVOT_Y, 0.f) * this->_armatureScale;
    }
    else
    {
        display->pivot.x = 0.5f;
        display->pivot.y = 0.5f;
    }

    if (rawData.HasMember(TRANSFORM))
    {
        _parseTransform(rawData[TRANSFORM], display->transform);
    }

    switch (display->type)
    {
        case DisplayType::Image:
            break;

        case DisplayType::Armature:
            break;

        case DisplayType::Mesh:
            display->meshData = _parseMesh(rawData);
            break;
    }

    return display;
}
Example #3
0
bool StyleData::parse(const Value& v, unsigned long projectId)
{
    std::string typeStr = getJSONString(v, "type");
    type = _getType(typeStr);
    
    zoom_level_min = atoi(getJSONString(v, "zoom_level_min", "2").c_str());
    zoom_level_max = atoi(getJSONString(v, "zoom_level_max", "20").c_str());
    icon = getJSONString(v, "icon-mobile", "point");
    transform = getJSONString(v, "transform", "");
    transormValid = _parseTransform(transform);
    
    dasharray = getJSONString(v, "dasharray", "");
    if(dasharray.empty())
        dasharray = getJSONString(v, "outline-dasharray", "");
    
    color = _parseColor( getJSONString(v, "color"), colorValid );
    color.v[3] = atof(getJSONString(v, "opacity", "1.0").c_str());
    size = atof(getJSONString(v, "size", "0").c_str());
    outline_color = _parseColor( getJSONString(v, "outline-color"), outlineColorValid );
    outline_color.v[3] = atof(getJSONString(v, "outline-opacity", "1.0").c_str());
    outline_size = atof(getJSONString(v, "outline-size", "0").c_str());
    filter = getJSONString(v, "filter");
    filter_hash = getJSONString(v, "filter_hash");

    // Font style
    field_name = getJSONString(v, "field-name");
    font_name = getJSONString(v, "font-name");
    font_filename = getJSONString(v, "font-filename");
    font_size = atof(getJSONString(v, "font-size", "0").c_str());
    font_opacity = atof(getJSONString(v, "font-opacity", "1").c_str());

    font_color = _parseColor( getJSONString(v, "font-color"), fontColorValid);
    font_halo_color = _parseColor( getJSONString(v, "font-halo-color"), fontHaloColorValid);
    font_halo_size = atof(getJSONString(v, "font-halo-size", "0").c_str());
    offset_x = atof(getJSONString(v, "offset-x", "0").c_str());
    offset_y = atof(getJSONString(v, "offset-y", "0").c_str());
    mode = getJSONString(v, "mode");
    modeType = _getType(mode);
    allow_overlap = getJSONBool(v, "allow-overlap", false);

    if(type==ICON)
    {
        fullIconPath = SupportFiles::getFullPath(projectId) + icon;
    }
    return true;
}
Example #4
0
BoneData * JSONDataParser::_parseBone(const rapidjson::Value & rawData)
{
    const auto bone = BaseObject::borrowObject<BoneData>();
    bone->name = _getString(rawData, NAME, "");
    bone->inheritTranslation = _getBoolean(rawData, INHERIT_TRANSLATION, true);
    bone->inheritRotation = _getBoolean(rawData, INHERIT_ROTATION, true);
    bone->inheritScale = _getBoolean(rawData, INHERIT_SCALE, true);
    bone->length = _getNumber(rawData, LENGTH, 0.f) * _armatureScale;

    if (rawData.HasMember(TRANSFORM))
    {
        _parseTransform(rawData[TRANSFORM], bone->transform);
    }

    if (this->_isParentCooriinate) 
    {
        bone->inheritRotation = true;
        bone->inheritScale = false;
    }

    return bone;
}