亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? body.cpp

?? ROBOCUP 仿真3D server 源碼
?? CPP
字號:
/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*-   this file is part of rcssserver3D   Fri May 9 2003   Copyright (C) 2003 Koblenz University   $Id: body.cpp,v 1.19 2004/05/01 11:30:31 rollmark Exp $   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; version 2 of the License.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.*/#include "body.h"#include "world.h"#include "../sceneserver/scene.h"#include "zeitgeist/logserver/logserver.h"using namespace boost;using namespace oxygen;using namespace salt;using namespace std;Body::Body() : ODEObject(), mODEBody(0){}Body::~Body(){    if (mODEBody)        {            dBodyDestroy(mODEBody);            mODEBody = 0;        }}dBodyID Body::GetODEBody() const{    return mODEBody;}void Body::Enable(){    dBodyEnable(mODEBody);}void Body::Disable(){    dBodyDisable(mODEBody);}bool Body::IsEnabled() const{    return (dBodyIsEnabled(mODEBody) != 0);}void Body::UseGravity(bool f){    if (f == true)        {            // body is affected by gravity            dBodySetGravityMode(mODEBody, 1);        }    else        {            // body is not affected by gravity            dBodySetGravityMode(mODEBody, 0);        }}bool Body::UsesGravity() const{    return (dBodyGetGravityMode(mODEBody) != 0);}bool Body::CreateBody(){    if (mODEBody != 0)        {            return true;        }    dWorldID world = GetWorldID();    if (world == 0)        {            return false;        }    // create the managed body    mODEBody = dBodyCreate(world);    if (mODEBody == 0)        {            GetLog()->Error()                << "(Body) ERROR: could not create new ODE body\n";            return false;        }    return true;}void Body::OnLink(){    ODEObject::OnLink();    if (! CreateBody())        {            return;        }    // let the body, take on the world space position of the parent    dBodySetData(mODEBody, this);    shared_ptr<BaseNode> baseNode = shared_static_cast<BaseNode>        (make_shared(GetParent()));    const Matrix& mat = baseNode->GetWorldTransform();    SetRotation(mat);    SetPosition(mat.Pos());}voidBody::SetMass(float mass){    dMass ODEMass;    dBodyGetMass(mODEBody, &ODEMass);    dMassAdjust(&ODEMass, mass);    dBodySetMass(mODEBody, &ODEMass);}floatBody::GetMass() const{    dMass m;    dBodyGetMass(mODEBody, &m);    return m.mass;}void Body::GetMassParameters(dMass& mass) const{    dBodyGetMass(mODEBody, &mass);}void Body::SetMassParameters(const dMass& mass){    dBodySetMass(mODEBody, &mass);}void Body::SetSphere(float density, float radius){    dMass ODEMass;    dMassSetSphere(&ODEMass, density, radius);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetSphereTotal(float total_mass, float radius){    dMass ODEMass;    dMassSetSphereTotal(&ODEMass, total_mass, radius);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetBox(float density, const Vector3f& size){    dMass ODEMass;    dMassSetBox(&ODEMass, density, size[0], size[1], size[2]);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetBoxTotal(float total_mass, const salt::Vector3f& size){    dMass ODEMass;    dMassSetBoxTotal(&ODEMass, total_mass, size[0], size[1], size[2]);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetCylinder (float density, float radius, float length){    dMass ODEMass;    // direction: (1=x, 2=y, 3=z)    int direction = 3;    dMassSetCylinder (&ODEMass, density, direction, radius, length);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetCylinderTotal(float total_mass, float radius, float length){    dMass ODEMass;    // direction: (1=x, 2=y, 3=z)    int direction = 3;    dMassSetCylinderTotal(&ODEMass, total_mass, direction, radius, length);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetCappedCylinder (float density, float radius, float length){    dMass ODEMass;    // direction: (1=x, 2=y, 3=z)    int direction = 3;    dMassSetCappedCylinder (&ODEMass, density, direction, radius, length);    dBodySetMass(mODEBody, &ODEMass);}void Body::SetCappedCylinderTotal(float total_mass, float radius, float length){    dMass ODEMass;    // direction: (1=x, 2=y, 3=z)    int direction = 3;    dMassSetCappedCylinderTotal(&ODEMass, total_mass,                                direction, radius, length);    dBodySetMass(mODEBody, &ODEMass);}Vector3f Body::GetVelocity() const{    const dReal* vel = dBodyGetLinearVel(mODEBody);    return Vector3f(vel[0], vel[1], vel[2]);}void Body::SetVelocity(const Vector3f& vel){    dBodySetLinearVel(mODEBody, vel[0], vel[1], vel[2]);}voidBody::SetRotation(const Matrix& rot){    dMatrix3 m;    ConvertRotationMatrix(rot,m);    dBodySetRotation(mODEBody,m);}Vector3fBody::GetAngularVelocity() const{    const dReal* vel = dBodyGetAngularVel(mODEBody);    return Vector3f(vel[0], vel[1], vel[2]);}voidBody::SetAngularVelocity(const Vector3f& vel){    dBodySetAngularVel(mODEBody, vel[0], vel[1], vel[2]);}void Body::PostPhysicsUpdateInternal(){    // synchronize parent node with the bodies position and    // orientation    const dReal* pos = dBodyGetPosition(mODEBody);    const dReal* rot = dBodyGetRotation(mODEBody);    shared_ptr<BaseNode> baseNode = shared_static_cast<BaseNode>        (make_shared(GetParent()));    Matrix mat;    mat.m[0] = rot[0];    mat.m[1] = rot[4];    mat.m[2] = rot[8];    mat.m[3] = 0;    mat.m[4] = rot[1];    mat.m[5] = rot[5];    mat.m[6] = rot[9];    mat.m[7] = 0;    mat.m[8] = rot[2];    mat.m[9] = rot[6];    mat.m[10] = rot[10];    mat.m[11] = 0;    mat.m[12] = pos[0];    mat.m[13] = pos[1];    mat.m[14] = pos[2];    mat.m[15] = 1;    baseNode->SetWorldTransform(mat);}shared_ptr<Body> Body::GetBody(dBodyID id){    if (id == 0)        {            return shared_ptr<Body>();        }    Body* bodyPtr =        static_cast<Body*>(dBodyGetData(id));    if (bodyPtr == 0)        {            // we cannot use the logserver here            cerr << "ERROR: (Body) no body found for dBodyID "                 << id << "\n";            return shared_ptr<Body>();        }    shared_ptr<Body> body = shared_static_cast<Body>        (make_shared(bodyPtr->GetSelf()));    if (body.get() == 0)        {            // we cannot use the logserver here            cerr << "ERROR: (Body) got no shared_ptr for dBodyID "                 << id << "\n";        }    return body;}voidBody::AddForce(const Vector3f& force){    dBodyAddForce(mODEBody, force.x(), force.y(), force.z());}voidBody::AddTorque(const Vector3f& torque){    dBodyAddTorque(mODEBody, torque.x(), torque.y(), torque.z());}voidBody::SetPosition(const Vector3f& pos){    dBodySetPosition(mODEBody, pos.x(), pos.y(), pos.z());    // the parent node will be updated in the next physics cycle}Vector3fBody::GetPosition() const{    const dReal* pos = dBodyGetPosition(mODEBody);    return Vector3f(pos[0], pos[1], pos[2]);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产真实乱子伦精品视频| 亚洲二区在线观看| 欧美一区二区三区日韩视频| 99国产欧美另类久久久精品| 国产高清视频一区| 高清成人免费视频| 91在线视频网址| 91国偷自产一区二区开放时间| 99国产精品视频免费观看| www.日韩大片| 91国模大尺度私拍在线视频| 欧美亚州韩日在线看免费版国语版| 色综合久久久久| 欧美日韩高清一区二区不卡| 欧美一区二区三区男人的天堂| 欧美一区二区免费视频| 精品久久久久一区二区国产| 欧美精品一区二| 国产精品丝袜91| 一区二区三区四区激情| 蜜乳av一区二区| 国产.精品.日韩.另类.中文.在线.播放| 国产精品主播直播| zzijzzij亚洲日本少妇熟睡| 欧美中文字幕不卡| 精品乱人伦一区二区三区| 国产三级精品视频| 亚洲自拍与偷拍| 久久精品国产精品亚洲精品| 懂色一区二区三区免费观看 | 亚洲1区2区3区4区| 日韩不卡免费视频| 成人性生交大片免费| 欧美写真视频网站| 日韩欧美三级在线| 亚洲欧美另类久久久精品| 蜜臀av国产精品久久久久| 成人深夜在线观看| 91超碰这里只有精品国产| 亚洲国产精品t66y| 蜜臀精品久久久久久蜜臀| 丁香六月久久综合狠狠色| 欧美日韩国产精选| 国产精品美女视频| 精品综合免费视频观看| 一本色道**综合亚洲精品蜜桃冫| 日韩免费观看高清完整版在线观看| 国产精品国产三级国产| 久久99久久久欧美国产| 欧美丝袜丝交足nylons| 国产精品乱码一区二区三区软件| 日韩在线卡一卡二| 91麻豆产精品久久久久久| 久久毛片高清国产| 日本v片在线高清不卡在线观看| 91一区二区在线| 国产亚洲综合色| 美女被吸乳得到大胸91| 欧美日韩国产一级片| 亚洲男人的天堂一区二区| 国产久卡久卡久卡久卡视频精品| 91精品国产高清一区二区三区| 中文字幕中文字幕在线一区| 国产成人在线视频播放| 欧美大片在线观看| 日本vs亚洲vs韩国一区三区| 欧美在线短视频| 亚洲欧美国产三级| 99re视频精品| 最新日韩av在线| 99久久伊人精品| 国产精品久久久久桃色tv| 国产精品99久| 一区二区三区鲁丝不卡| av亚洲精华国产精华精华| 国产亚洲欧洲997久久综合| 国内精品免费**视频| 久久久精品免费网站| 国产麻豆9l精品三级站| 精品精品国产高清a毛片牛牛 | 欧美人与性动xxxx| 亚洲国产毛片aaaaa无费看| 色综合一个色综合亚洲| 洋洋成人永久网站入口| 在线观看免费一区| 午夜精品影院在线观看| 欧美精品99久久久**| 日本大胆欧美人术艺术动态| 日韩一卡二卡三卡国产欧美| 免费人成黄页网站在线一区二区| 日韩一区二区视频在线观看| 加勒比av一区二区| 国产欧美视频一区二区三区| 成人一二三区视频| 亚洲男人的天堂在线观看| 欧美中文字幕一二三区视频| 午夜亚洲福利老司机| 日韩一区二区免费高清| 国产精品一品视频| 亚洲伦理在线精品| 欧美日韩视频一区二区| 久久99久久99| 最新国产精品久久精品| 欧美日韩一级视频| 韩国精品久久久| 亚洲精品国产第一综合99久久 | 亚洲电影在线免费观看| 日韩一级片网址| 国产成人日日夜夜| 亚洲尤物在线视频观看| 久久众筹精品私拍模特| 99re8在线精品视频免费播放| 午夜视频一区二区| 久久久久久久久一| 欧美日韩国产片| 成人一区在线看| 日日嗨av一区二区三区四区| 欧美激情艳妇裸体舞| 337p亚洲精品色噜噜狠狠| 国产aⅴ精品一区二区三区色成熟| 亚洲欧美日韩人成在线播放| 欧美tickling挠脚心丨vk| 色婷婷综合久久久久中文一区二区| 久久精品国产久精国产| 亚洲gay无套男同| 国产精品久久久久一区| 精品嫩草影院久久| 欧美日韩一区三区四区| 99国内精品久久| 成人免费看视频| 老汉av免费一区二区三区| 亚洲国产综合色| 国产精品美女一区二区| 久久女同精品一区二区| 日韩午夜小视频| 欧美日本不卡视频| 欧美午夜精品电影| 成人国产精品免费观看动漫| 韩国欧美一区二区| 蜜桃av噜噜一区二区三区小说| 亚洲无线码一区二区三区| 国产精品国产a| 国产精品美女久久久久久久| 日韩午夜av一区| 欧美高清视频在线高清观看mv色露露十八 | zzijzzij亚洲日本少妇熟睡| 国产激情精品久久久第一区二区 | 色综合网站在线| 成人黄色一级视频| 国产成人啪午夜精品网站男同| 精品一区二区三区久久久| 欧美96一区二区免费视频| 日韩av一级电影| 久久精品国产77777蜜臀| 日本v片在线高清不卡在线观看| 午夜不卡av在线| 日韩电影免费一区| 免费观看30秒视频久久| 精一区二区三区| 懂色一区二区三区免费观看| 成人午夜av影视| 一本久久综合亚洲鲁鲁五月天 | 99精品久久免费看蜜臀剧情介绍| 成人高清视频在线| 91视频免费观看| 欧美日韩久久久| 欧美成人在线直播| 国产午夜亚洲精品羞羞网站| 成人免费在线视频| 亚洲va在线va天堂| 激情六月婷婷久久| 亚洲高清免费观看高清完整版在线观看| 国产一区二区三区在线观看精品| 六月婷婷色综合| 中文子幕无线码一区tr| 欧美成人vps| 国产性色一区二区| 中文字幕日韩精品一区| 一区二区免费看| 精品无人区卡一卡二卡三乱码免费卡 | 蜜臂av日日欢夜夜爽一区| 国内精品久久久久影院一蜜桃| 国产不卡视频在线播放| 99久久伊人久久99| 91精品麻豆日日躁夜夜躁| 久久久午夜电影| 久久国产日韩欧美精品| 成人晚上爱看视频| 6080国产精品一区二区| 国产精品久久久久婷婷二区次| 亚洲国产精品一区二区www在线| 久久 天天综合| 91福利在线播放| 久久亚洲综合色| 亚洲电影欧美电影有声小说| 国产精品99久久久久久似苏梦涵 | 91精品中文字幕一区二区三区| 久久午夜老司机| 午夜视黄欧洲亚洲| 91在线你懂得|