当前位置: 首页>>代码示例>>C++>>正文


C++ CollisionObject2D::set_shape_transform方法代码示例

本文整理汇总了C++中CollisionObject2D::set_shape_transform方法的典型用法代码示例。如果您正苦于以下问题:C++ CollisionObject2D::set_shape_transform方法的具体用法?C++ CollisionObject2D::set_shape_transform怎么用?C++ CollisionObject2D::set_shape_transform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CollisionObject2D的用法示例。


在下文中一共展示了CollisionObject2D::set_shape_transform方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: switch

void CollisionShape2D::_notification(int p_what) {

    switch(p_what) {

    case NOTIFICATION_ENTER_TREE: {
        unparenting=false;
        can_update_body=get_tree()->is_editor_hint();
        if (!get_tree()->is_editor_hint()) {
            //display above all else
            set_z_as_relative(false);
            set_z(VS::CANVAS_ITEM_Z_MAX-1);
        }

    }
    break;
    case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {

        if (!is_inside_tree())
            break;
        if (can_update_body) {
            _update_parent();
        } else if (update_shape_index>=0) {

            CollisionObject2D *co = get_parent()->cast_to<CollisionObject2D>();
            if (co) {
                co->set_shape_transform(update_shape_index,get_transform());
            }

        }

    }
    break;
    case NOTIFICATION_EXIT_TREE: {
        can_update_body=false;

    }
    break;
    /*
    case NOTIFICATION_TRANSFORM_CHANGED: {

    	if (!is_inside_scene())
    		break;
    	_update_parent();

    } break;*/
    case NOTIFICATION_DRAW: {

        if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
            break;
        }

        if (!shape.is_valid()) {
            break;
        }

        rect=Rect2();



        Color draw_col=get_tree()->get_debug_collisions_color();
        shape->draw(get_canvas_item(),draw_col);


        rect=shape->get_rect();
        rect=rect.grow(3);

    }
    break;
    case NOTIFICATION_UNPARENTED: {
        unparenting = true;
        _update_parent();
    }
    break;
    }

}
开发者ID:93i,项目名称:godot,代码行数:76,代码来源:collision_shape_2d.cpp

示例2: c

void CollisionPolygon2D::_notification(int p_what) {


    switch(p_what) {
        case NOTIFICATION_ENTER_TREE: {
            unparenting=false;
            can_update_body=get_tree()->is_editor_hint();
            if (!get_tree()->is_editor_hint()) {
                //display above all else
                set_z_as_relative(false);
                set_z(VS::CANVAS_ITEM_Z_MAX-1);
            }

        } break;
        case NOTIFICATION_EXIT_TREE: {
            can_update_body=false;
        } break;
        case NOTIFICATION_LOCAL_TRANSFORM_CHANGED: {

            if (!is_inside_tree())
                break;
            if (can_update_body) {
                _update_parent();
            } else if (shape_from>=0 && shape_to>=0) {
                CollisionObject2D *co = get_parent()->cast_to<CollisionObject2D>();
                for(int i=shape_from;i<=shape_to;i++) {
                    co->set_shape_transform(i,get_transform());
                }
            }


        } break;

        case NOTIFICATION_DRAW: {

            if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint()) {
                break;
            }


            for(int i=0;i<polygon.size();i++) {

                Vector2 p = polygon[i];
                Vector2 n = polygon[(i+1)%polygon.size()];
                draw_line(p,n,Color(0.9,0.2,0.0,0.8),3);
            }
#define DEBUG_DECOMPOSE
#if defined(TOOLS_ENABLED) && defined (DEBUG_DECOMPOSE)

            Vector< Vector<Vector2> > decomp = _decompose_in_convex();

            Color c(0.4,0.9,0.1);
            for(int i=0;i<decomp.size();i++) {

                c.set_hsv( Math::fmod(c.get_h() + 0.738,1),c.get_s(),c.get_v(),0.5);
                draw_colored_polygon(decomp[i],c);
            }
#else
            draw_colored_polygon(polygon,get_tree()->get_debug_collisions_color());
#endif


        } break;
        case NOTIFICATION_UNPARENTED: {
            unparenting = true;
            _update_parent();
        } break;

    }
}
开发者ID:pkowal1982,项目名称:godot,代码行数:70,代码来源:collision_polygon_2d.cpp


注:本文中的CollisionObject2D::set_shape_transform方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。