OpenSim/Hack/SimulatorVersion
をテンプレートにして作成
[
トップ
] [
タイトル一覧
|
ページ一覧
|
新規
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
** SIM Boundary [#obc15ec7]
- OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
- Simulate() 関数内の actor.UpdatePositionAndVelocity() ...
if (actor != null) {
actor.UpdatePositionAndVelocity();
// by Fumi.Iseki for falling at SIM boundary
d.Vector3 vec = d.BodyGetPosition(actor.Body);
if (vec.Y<=0.0f || vec.Y>=255.95f || vec.X<=0.0f || v...
if (vec.Y<=0.0f) vec.Y = 0.1f;
else if (vec.Y>255.95f) vec.Y = 255.95f;
if (vec.X<=0.0f) vec.X = 0.1f;
else if (vec.X>255.95f) vec.X = 255.95f;
float height = GetTerrainHeightAtXY(Vec.X, Vec.Y);
if (actor.Flying) {
if (vec.Z < height + 2) {
vec.Z = height + actor.Size.Z/2;
actor.Velocity.Z = 0;
actor.IsColliding = true;
}
}
else {
if (vec.Z < height + actor.Size.Z/2) {
vec.Z = height + actor.Size.Z/2;
actor.Velocity.Z = 0;
actor.IsColliding = true;
actor.CollidingGround = true;
}
}
actor.Position = new PhysicsVector(vec.X, vec.Y, ...
d.BodySetPosition(actor.Body, vec.X, vec.Y, vec.Z...
}
}
終了行:
** SIM Boundary [#obc15ec7]
- OpenSim/Region/Physics/OdePlugin/OdePlugin.cs
- Simulate() 関数内の actor.UpdatePositionAndVelocity() ...
if (actor != null) {
actor.UpdatePositionAndVelocity();
// by Fumi.Iseki for falling at SIM boundary
d.Vector3 vec = d.BodyGetPosition(actor.Body);
if (vec.Y<=0.0f || vec.Y>=255.95f || vec.X<=0.0f || v...
if (vec.Y<=0.0f) vec.Y = 0.1f;
else if (vec.Y>255.95f) vec.Y = 255.95f;
if (vec.X<=0.0f) vec.X = 0.1f;
else if (vec.X>255.95f) vec.X = 255.95f;
float height = GetTerrainHeightAtXY(Vec.X, Vec.Y);
if (actor.Flying) {
if (vec.Z < height + 2) {
vec.Z = height + actor.Size.Z/2;
actor.Velocity.Z = 0;
actor.IsColliding = true;
}
}
else {
if (vec.Z < height + actor.Size.Z/2) {
vec.Z = height + actor.Size.Z/2;
actor.Velocity.Z = 0;
actor.IsColliding = true;
actor.CollidingGround = true;
}
}
actor.Position = new PhysicsVector(vec.X, vec.Y, ...
d.BodySetPosition(actor.Body, vec.X, vec.Y, vec.Z...
}
}
ページ名: