本文整理汇总了C++中GetVelocity函数的典型用法代码示例。如果您正苦于以下问题:C++ GetVelocity函数的具体用法?C++ GetVelocity怎么用?C++ GetVelocity使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetVelocity函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: GetModel
void Ship::Render(Graphics::Renderer *renderer, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform)
{
if (IsDead()) return;
//angthrust negated, for some reason
GetModel()->SetThrust(vector3f(m_thrusters), -vector3f(m_angThrusters));
matrix3x3f mt;
matrix3x3dtof(viewTransform.Inverse().GetOrient(), mt);
s_heatGradientParams.heatingMatrix = mt;
s_heatGradientParams.heatingNormal = vector3f(GetVelocity().Normalized());
s_heatGradientParams.heatingAmount = Clamp(GetHullTemperature(),0.0,1.0);
// This has to be done per-model with a shield and just before it's rendered
const bool shieldsVisible = m_shieldCooldown > 0.01f && m_stats.shield_mass_left > (m_stats.shield_mass / 100.0f);
GetShields()->SetEnabled(shieldsVisible);
GetShields()->Update(m_shieldCooldown, 0.01f*GetPercentShields());
//strncpy(params.pText[0], GetLabel().c_str(), sizeof(params.pText));
RenderModel(renderer, camera, viewCoords, viewTransform);
m_navLights->Render(renderer);
renderer->GetStats().AddToStatCount(Graphics::Stats::STAT_SHIPS, 1);
if (m_ecmRecharge > 0.0f) {
// ECM effect: a cloud of particles for a sparkly effect
vector3f v[100];
for (int i=0; i<100; i++) {
const double r1 = Pi::rng.Double()-0.5;
const double r2 = Pi::rng.Double()-0.5;
const double r3 = Pi::rng.Double()-0.5;
v[i] = vector3f(GetPhysRadius()*vector3d(r1, r2, r3).NormalizedSafe());
}
Color c(128,128,255,255);
float totalRechargeTime = GetECMRechargeTime();
if (totalRechargeTime >= 0.0f) {
c.a = (m_ecmRecharge / totalRechargeTime) * 255;
}
SfxManager::ecmParticle->diffuse = c;
matrix4x4f t;
for (int i=0; i<12; i++) t[i] = float(viewTransform[i]);
t[12] = viewCoords.x;
t[13] = viewCoords.y;
t[14] = viewCoords.z;
t[15] = 1.0f;
renderer->SetTransform(t);
renderer->DrawPointSprites(100, v, SfxManager::additiveAlphaState, SfxManager::ecmParticle.get(), 50.f);
}
}
开发者ID:tomm,项目名称:pioneer,代码行数:51,代码来源:Ship.cpp
示例2: Update
void Encoder::Update(const common::UpdateInfo &info) {
msgs::Float64 pos_msg, vel_msg;
if (stopped) {
pos_msg.set_data(stop_value);
pos_pub->Publish(pos_msg);
vel_msg.set_data(0);
vel_pub->Publish(vel_msg);
} else {
pos_msg.set_data(GetAngle() - zero);
pos_pub->Publish(pos_msg);
vel_msg.set_data(GetVelocity());
vel_pub->Publish(vel_msg);
}
}
开发者ID:FRC3238,项目名称:allwpilib,代码行数:14,代码来源:encoder.cpp
示例3: GetVelocity
int CprojectileIGC::Export(void* data)
{
if (data)
{
DataProjectileIGC* dataProjectile = (DataProjectileIGC*)data;
dataProjectile->projectileTypeID = m_projectileType->GetObjectID();
dataProjectile->velocity = GetVelocity();
dataProjectile->forward = GetOrientation().GetForward();
}
return sizeof(DataProjectileIGC);
}
开发者ID:BackTrak,项目名称:Allegiance-R4-Engine,代码行数:14,代码来源:projectileIGC.cpp
示例4: GetVelocity
bool ODERigidObject::WriteState(File& f) const
{
//TODO: use body quaternion
Vector3 w,v;
const dReal* pos=dBodyGetPosition(bodyID);
const dReal* q=dBodyGetQuaternion(bodyID);
GetVelocity(w,v);
if(!WriteArrayFile(f,pos,3)) return false;
if(!WriteArrayFile(f,q,4)) return false;
if(!WriteFile(f,w)) return false;
if(!WriteFile(f,v)) return false;
return true;
}
开发者ID:RGrant92,项目名称:Klampt,代码行数:14,代码来源:ODERigidObject.cpp
示例5: Missile
Missile * Ship::SpawnMissile(ShipType::Id missile_type, int power) {
if (GetFlightState() != FLYING)
return 0;
Missile *missile = new Missile(missile_type, this, power);
missile->SetOrient(GetOrient());
missile->SetFrame(GetFrame());
// XXX DODGY! need to put it in a sensible location
vector3d dir = -GetOrient().VectorZ();
missile->SetPosition(GetPosition()+50.0*dir);
missile->SetVelocity(GetVelocity());
Pi::game->GetSpace()->AddBody(missile);
return missile;
}
开发者ID:HeadHunterEG,项目名称:pioneer,代码行数:14,代码来源:Ship.cpp
示例6: Properties
bool Ship::OnCollision(Object *b, Uint32 flags, double relVel)
{
// hitting space station docking surfaces shouldn't do damage
if (b->IsType(Object::SPACESTATION) && (flags & 0x10)) {
return true;
}
// hitting cargo scoop surface shouldn't do damage
int cargoscoop_cap = 0;
Properties().Get("cargo_scoop_cap", cargoscoop_cap);
if (cargoscoop_cap > 0 && b->IsType(Object::CARGOBODY) && !dynamic_cast<Body*>(b)->IsDead()) {
LuaRef item = dynamic_cast<CargoBody*>(b)->GetCargoType();
if (LuaObject<Ship>::CallMethod<int>(this, "AddEquip", item) > 0) { // try to add it to the ship cargo.
Pi::game->GetSpace()->KillBody(dynamic_cast<Body*>(b));
if (this->IsType(Object::PLAYER))
Pi::game->log->Add(stringf(Lang::CARGO_SCOOP_ACTIVE_1_TONNE_X_COLLECTED, formatarg("item", ScopedTable(item).CallMethod<std::string>("GetName"))));
// XXX SfxManager::Add(this, TYPE_SCOOP);
UpdateEquipStats();
return true;
}
if (this->IsType(Object::PLAYER))
Pi::game->log->Add(Lang::CARGO_SCOOP_ATTEMPTED);
}
if (b->IsType(Object::PLANET)) {
// geoms still enabled when landed
if (m_flightState != FLYING) return false;
else {
if (GetVelocity().Length() < MAX_LANDING_SPEED) {
m_testLanded = true;
return true;
}
}
}
if (
b->IsType(Object::CITYONPLANET) ||
b->IsType(Object::SHIP) ||
b->IsType(Object::PLAYER) ||
b->IsType(Object::SPACESTATION) ||
b->IsType(Object::PLANET) ||
b->IsType(Object::STAR) ||
b->IsType(Object::CARGOBODY))
{
LuaEvent::Queue("onShipCollided", this,
b->IsType(Object::CITYONPLANET) ? dynamic_cast<CityOnPlanet*>(b)->GetPlanet() : dynamic_cast<Body*>(b));
}
return DynamicBody::OnCollision(b, flags, relVel);
}
开发者ID:tomm,项目名称:pioneer,代码行数:50,代码来源:Ship.cpp
示例7: Missile
Missile * Ship::SpawnMissile(ShipType::Id missile_type, int power) {
if (GetFlightState() != FLYING)
return 0;
Missile *missile = new Missile(missile_type, this, power);
missile->SetOrient(GetOrient());
missile->SetFrame(GetFrame());
const vector3d pos = GetOrient() * vector3d(0, GetAabb().min.y - 10, GetAabb().min.z);
const vector3d vel = -40.0 * GetOrient().VectorZ();
missile->SetPosition(GetPosition()+pos);
missile->SetVelocity(GetVelocity()+vel);
Pi::game->GetSpace()->AddBody(missile);
return missile;
}
开发者ID:tomm,项目名称:pioneer,代码行数:14,代码来源:Ship.cpp
示例8: UTIL_Remove
//-----------------------------------------------------------------------------
// Purpose: Plays the engine sound.
//-----------------------------------------------------------------------------
void CNPC_Houndeye::NPCThink(void)
{
if (m_pEnergyWave)
{
if (gpGlobals->curtime > m_flEndEnergyWaveTime)
{
UTIL_Remove(m_pEnergyWave);
m_pEnergyWave = NULL;
}
}
// -----------------------------------------------------
// Update collision group
// While I'm running I'm allowed to penetrate
// other houndeyes
// -----------------------------------------------------
Vector vVelocity;
GetVelocity( &vVelocity, NULL );
if (vVelocity.Length() > 10)
{
SetCollisionGroup( HL2COLLISION_GROUP_HOUNDEYE );
}
else
{
// Don't go solid if resting in another houndeye
trace_t tr;
AI_TraceHull( GetAbsOrigin(), GetAbsOrigin() + Vector(0,0,1),
GetHullMins(), GetHullMaxs(),
MASK_NPCSOLID, this, COLLISION_GROUP_NONE, &tr );
if (!tr.startsolid)
{
SetCollisionGroup( COLLISION_GROUP_NONE );
}
else
{
SetCollisionGroup( HL2COLLISION_GROUP_HOUNDEYE );
}
}
/*
if (GetCollisionGroup() == HL2COLLISION_GROUP_HOUNDEYE)
{
NDebugOverlay::Box(GetAbsOrigin(), GetHullMins(), GetHullMaxs(), 0, 255, 0, 0, 0);
}
else
{
NDebugOverlay::Box(GetAbsOrigin(), GetHullMins(), GetHullMaxs(), 255, 0, 0, 0, 0);
}
*/
BaseClass::NPCThink();
}
开发者ID:AluminumKen,项目名称:hl2sb-src,代码行数:53,代码来源:npc_houndeye.cpp
示例9: GetVelocity
void Ship::TestLanded()
{
m_testLanded = false;
if (m_launchLockTimeout > 0.0f) return;
if (m_wheelState < 1.0f) return;
if (GetFrame()->GetBodyFor()->IsType(Object::PLANET)) {
double speed = GetVelocity().Length();
vector3d up = GetPosition().Normalized();
const double planetRadius = static_cast<Planet*>(GetFrame()->GetBodyFor())->GetTerrainHeight(up);
if (speed < MAX_LANDING_SPEED) {
// orient the damn thing right
// Q: i'm totally lost. why is the inverse of the body rot matrix being used?
// A: NFI. it just works this way
matrix4x4d rot;
GetRotMatrix(rot);
matrix4x4d invRot = rot.InverseOf();
// check player is sortof sensibly oriented for landing
const double dot = vector3d(invRot[1], invRot[5], invRot[9]).Normalized().Dot(up);
if (dot > 0.99) {
Aabb aabb;
GetAabb(aabb);
// position at zero altitude
SetPosition(up * (planetRadius - aabb.min.y));
vector3d forward = rot * vector3d(0,0,1);
vector3d other = up.Cross(forward).Normalized();
forward = other.Cross(up);
rot = matrix4x4d::MakeRotMatrix(other, up, forward);
rot = rot.InverseOf();
SetRotMatrix(rot);
SetVelocity(vector3d(0, 0, 0));
SetAngVelocity(vector3d(0, 0, 0));
SetForce(vector3d(0, 0, 0));
SetTorque(vector3d(0, 0, 0));
// we don't use DynamicBody::Disable because that also disables the geom, and that must still get collisions
DisableBodyOnly();
ClearThrusterState();
m_flightState = LANDED;
Sound::PlaySfx("Rough_Landing", 1.0f, 1.0f, 0);
Pi::luaOnShipLanded->Queue(this, GetFrame()->GetBodyFor());
}
}
}
}
开发者ID:GAlexx,项目名称:pioneer,代码行数:50,代码来源:Ship.cpp
示例10: GetOrient
void Missile::StaticUpdate(const float timeStep)
{
// Note: direct call to AI->TimeStepUpdate
if (m_curAICmd!=nullptr) m_curAICmd->TimeStepUpdate();
//Add smoke trails for missiles on thruster state
static double s_timeAccum = 0.0;
s_timeAccum += timeStep;
if (!is_equal_exact(GetThrusterState().LengthSqr(), 0.0) && (s_timeAccum > 4 || 0.1*Pi::rng.Double() < timeStep)) {
s_timeAccum = 0.0;
const vector3d pos = GetOrient() * vector3d(0, 0 , 5);
const float speed = std::min(10.0*GetVelocity().Length()*std::max(1.0,fabs(GetThrusterState().z)),100.0);
SfxManager::AddThrustSmoke(this, speed, pos);
}
}
开发者ID:senderghost,项目名称:pioneer,代码行数:15,代码来源:Missile.cpp
示例11: GetPosition
void FastProjectile::OnTrigger(tbc::PhysicsManager::BodyID trigger_id, ContextObject* other_object, tbc::PhysicsManager::BodyID body_id, const vec3& position, const vec3& normal) {
(void)trigger_id;
(void)body_id;
(void)position;
if (++tick_count_ < 10 && other_object->GetInstanceId() == GetOwnerInstanceId()) { // Disallow self-hit during the first few frames.
return;
}
if (explosive_energy_) {
ProjectileUtil::Detonate(this, &is_detonated_, launcher_, GetPosition(), GetVelocity(), normal, explosive_energy_, 0);
} else {
ProjectileUtil::OnBulletHit(this, &is_detonated_, launcher_, other_object);
}
}
开发者ID:highfestiva,项目名称:life,代码行数:15,代码来源:fastprojectile.cpp
示例12: GetVelocity
void ADefyingGravityCharacter::UpdateAnimation()
{
const FVector PlayerVelocity = GetVelocity();
const float PlayerSpeed = PlayerVelocity.Size();
// Are we moving or standing still?
UPaperFlipbook* DesiredAnimation = (PlayerSpeed > 0.0f) ? catWalkAnimation : idleCatAnimation;
if (GetCharacterMovement()->IsFalling())
{
DesiredAnimation = JumpCatAnimation;
}
if( GetSprite()->GetFlipbook() != DesiredAnimation )
{
GetSprite()->SetFlipbook(DesiredAnimation);
}
}
开发者ID:hanzes,项目名称:DefyingGravity,代码行数:16,代码来源:DefyingGravityCharacter.cpp
示例13: GetVelocity
int Smoke::Update()
{
D3DXVECTOR3 v = GetVelocity();
v.x *= 0.75f;
if (v.y>0) v.y -= 0.125f;
SetVelocity(v);
if (iLifeTimer >= 50)
vScale.x = vScale.y = (60-iLifeTimer)/10.f;
else
fAlpha = min(iLifeTimer/40.f, 1);
if (iLifeTimer == 0)
erase();
iLifeTimer -= 1;
return GameObj::Update();
}
开发者ID:Rinirihiriro,项目名称:SmallPlanet,代码行数:16,代码来源:Smoke.cpp
示例14: JumpVec
//Aボタンでジャンプする瞬間の処理
void Player::JumpMotion(){
auto PtrTrans = GetComponent<Transform>();
//重力
auto PtrGravity = GetComponent<Gravity>();
//ジャンプスタート
Vector3 JumpVec(0.0f, 4.0f, 0);
if (PtrTrans->GetParent()){
//親がいたら、アクションコンポーネントの移動アクションを探す
//移動ボックスに乗っている場合、その慣性をジャンプに加算する
auto ActionPtr = PtrTrans->GetParent()->GetComponent<Action>(false);
if (ActionPtr){
JumpVec += ActionPtr->GetVelocity();
}
}
PtrGravity->StartJump(JumpVec);
}
开发者ID:WiZFramework,项目名称:DxBase2016,代码行数:17,代码来源:Player.cpp
示例15: DefaultBehavior
bool Enemy::DefaultBehavior() {
auto PtrRigid = GetComponent<Rigidbody>();
auto Velo = PtrRigid->GetVelocity();
Velo *= 0.95f;
PtrRigid->SetVelocity(Velo);
auto MapPtr = m_CelMap.lock();
if (MapPtr) {
auto PlayerPtr = GetStage()->GetSharedGameObject<Player>(L"Player");
auto PlayerPos = PlayerPtr->GetComponent<Transform>()->GetPosition();
CellIndex PlayerCell;
if (MapPtr->FindCell(PlayerPos, PlayerCell)) {
return false;
}
}
return true;
}
开发者ID:WiZFramework,项目名称:BaseCross,代码行数:16,代码来源:Character.cpp
示例16: GetFrame
void DynamicBody::CalcExternalForce()
{
// gravity
if (!GetFrame()) return; // no external force if not in a frame
Body *body = GetFrame()->GetBody();
if (body && !body->IsType(Object::SPACESTATION)) { // they ought to have mass though...
vector3d b1b2 = GetPosition();
double m1m2 = GetMass() * body->GetMass();
double invrsqr = 1.0 / b1b2.LengthSqr();
double force = G*m1m2 * invrsqr;
m_externalForce = -b1b2 * sqrt(invrsqr) * force;
}
else m_externalForce = vector3d(0.0);
m_gravityForce = m_externalForce;
// atmospheric drag
if (body && GetFrame()->IsRotFrame() && body->IsType(Object::PLANET))
{
Planet *planet = static_cast<Planet*>(body);
double dist = GetPosition().Length();
double speed = m_vel.Length();
double pressure, density;
planet->GetAtmosphericState(dist, &pressure, &density);
const double radius = GetClipRadius(); // bogus, preserving behaviour
const double AREA = radius;
// ^^^ yes that is as stupid as it looks
const double DRAG_COEFF = 0.1; // 'smooth sphere'
vector3d dragDir = -m_vel.NormalizedSafe();
vector3d fDrag = 0.5*density*speed*speed*AREA*DRAG_COEFF*dragDir;
// make this a bit less daft at high time accel
// only allow atmosForce to increase by .1g per frame
vector3d f1g = m_atmosForce + dragDir * GetMass();
if (fDrag.LengthSqr() > f1g.LengthSqr()) m_atmosForce = f1g;
else m_atmosForce = fDrag;
m_externalForce += m_atmosForce;
}
else m_atmosForce = vector3d(0.0);
// centrifugal and coriolis forces for rotating frames
if (GetFrame()->IsRotFrame()) {
vector3d angRot(0, GetFrame()->GetAngSpeed(), 0);
m_externalForce -= m_mass * angRot.Cross(angRot.Cross(GetPosition())); // centrifugal
m_externalForce -= 2 * m_mass * angRot.Cross(GetVelocity()); // coriolis
}
}
开发者ID:giriko,项目名称:pioneer,代码行数:47,代码来源:DynamicBody.cpp
示例17: player_hash_fn
void Ship::GetServerUpdateMessage(ServerShipUpdate& message) const
{
const std::hash<std::string> player_hash_fn;
message.ship_id = player_hash_fn(GetName());
Vector3f vec = GetPosition();
message.position[0] = vec[0];
message.position[1] = vec[1];
message.position[2] = vec[2];
vec = GetVelocity();
message.velocity[0] = vec[0];
message.velocity[1] = vec[1];
message.velocity[2] = vec[2];
message.orientation = fmodf(GetOrientation(), 360.0f);
message.angularVelocity = GetAngularVelocity();
message.health = health;
message.shield = shield;
}
开发者ID:metiscus,项目名称:space,代码行数:17,代码来源:Ship.cpp
示例18: StartJump
void APlayerCharacter::StartJump()
{
if (GetVelocity().Z == 0)
{
isJumpingGruntCheck = true;
isJumpingGroundCheck = true;
UPeterAnimInstance* PeterAnimInstance = Cast<UPeterAnimInstance>(GetMesh()->GetAnimInstance());
if (PeterAnimInstance)
{
PeterAnimInstance->bStartedJump = true;
}
Jump();
}
}
开发者ID:Snowman5717,项目名称:SymphonyOfShadows,代码行数:17,代码来源:PlayerCharacter.cpp
示例19: prefix
void Ship::FireWeapon(int num)
{
if (m_flightState != FLYING)
return;
std::string prefix(num?"laser_rear_":"laser_front_");
int damage = 0;
Properties().Get(prefix+"damage", damage);
if (!damage)
return;
Properties().PushLuaTable();
LuaTable prop(Lua::manager->GetLuaState(), -1);
const matrix3x3d &m = GetOrient();
const vector3d dir = m * vector3d(m_gun[num].dir);
const vector3d pos = m * vector3d(m_gun[num].pos) + GetPosition();
m_gun[num].temperature += 0.01f;
m_gun[num].recharge = prop.Get<float>(prefix+"rechargeTime");
const vector3d baseVel = GetVelocity();
const vector3d dirVel = prop.Get<float>(prefix+"speed") * dir.Normalized();
const Color c(prop.Get<float>(prefix+"rgba_r"), prop.Get<float>(prefix+"rgba_g"),
prop.Get<float>(prefix+"rgba_b"), prop.Get<float>(prefix+"rgba_a"));
const float lifespan = prop.Get<float>(prefix+"lifespan");
const float width = prop.Get<float>(prefix+"width");
const float length = prop.Get<float>(prefix+"length");
const bool mining = prop.Get<int>(prefix+"mining");
if (prop.Get<int>(prefix+"dual"))
{
const vector3d orient_norm = m.VectorY();
const vector3d sep = 5.0 * dir.Cross(orient_norm).NormalizedSafe();
Projectile::Add(this, lifespan, damage, length, width, mining, c, pos + sep, baseVel, dirVel);
Projectile::Add(this, lifespan, damage, length, width, mining, c, pos - sep, baseVel, dirVel);
} else {
Projectile::Add(this, lifespan, damage, length, width, mining, c, pos, baseVel, dirVel);
}
Sound::BodyMakeNoise(this, "Pulse_Laser", 1.0f);
lua_pop(prop.GetLua(), 1);
LuaEvent::Queue("onShipFiring", this);
}
开发者ID:tomm,项目名称:pioneer,代码行数:45,代码来源:Ship.cpp
示例20: UpdateEquipStats
bool Ship::OnCollision(Object *b, Uint32 flags, double relVel)
{
// hitting space station docking surfaces shouldn't do damage
if (b->IsType(Object::SPACESTATION) && (flags & 0x10)) {
return true;
}
// hitting cargo scoop surface shouldn't do damage
if ((m_equipment.Get(Equip::SLOT_CARGOSCOOP) != Equip::NONE) && b->IsType(Object::CARGOBODY) && m_stats.free_capacity) {
Equip::Type item = dynamic_cast<CargoBody*>(b)->GetCargoType();
Pi::game->GetSpace()->KillBody(dynamic_cast<Body*>(b));
m_equipment.Add(item);
UpdateEquipStats();
if (this->IsType(Object::PLAYER))
Pi::Message(stringf(Lang::CARGO_SCOOP_ACTIVE_1_TONNE_X_COLLECTED, formatarg("item", Equip::types[item].name)));
// XXX Sfx::Add(this, Sfx::TYPE_SCOOP);
return true;
}
if (b->IsType(Object::PLANET)) {
// geoms still enabled when landed
if (m_flightState != FLYING) return false;
else {
if (GetVelocity().Length() < MAX_LANDING_SPEED) {
m_testLanded = true;
return true;
}
}
}
if (
b->IsType(Object::CITYONPLANET) ||
b->IsType(Object::SHIP) ||
b->IsType(Object::PLAYER) ||
b->IsType(Object::SPACESTATION) ||
b->IsType(Object::PLANET) ||
b->IsType(Object::STAR) ||
b->IsType(Object::CARGOBODY))
{
LuaEvent::Queue("onShipCollided", this,
b->IsType(Object::CITYONPLANET) ? dynamic_cast<CityOnPlanet*>(b)->GetPlanet() : dynamic_cast<Body*>(b));
}
return DynamicBody::OnCollision(b, flags, relVel);
}
开发者ID:HeadHunterEG,项目名称:pioneer,代码行数:45,代码来源:Ship.cpp
注:本文中的GetVelocity函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论