flagflag  If you want to see English page, please click "English" Button at Left.
1: 2009-08-13 (木) 16:48:56 iseki ソース 現: 2009-08-31 (月) 18:31:57 iseki ソース
Line 1: Line 1:
** SIM Boundary [#obc15ec7] ** SIM Boundary [#obc15ec7]
 +- OpenSim/Region/Physics/OdePlugin/OdePlug​in.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 || vec.X>=255.95f) {
 +       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, vec.Z);
 +       d.BodySetPosition(actor.Body, vec.X, vec.Y, vec.Z);
 +   }
 + }


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 11月翌月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<今日>

オンライン状況

120 人のユーザが現在オンラインです。 (51 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 120

もっと...

アクセスカウンタ

今日 : 1545154515451545
昨日 : 3947394739473947
総計 : 2446542824465428244654282446542824465428244654282446542824465428
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com