flagflag  

SIM Boundary anchor.png

  • 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); 
   }       
}

Front page   Freeze Diff Backup Copy Rename Reload   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 1869, today: 2, yesterday: 0
Last-modified: 2009-08-31 (Mon) 18:31:57 (JST) (5782d) by iseki

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthJul 2025Next Month
Su Mo Tu We Th Fr Sa
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 31
Today

Who's Online

120 user(s) are online (7 user(s) are browsing xpwiki)

Members: 0
Guests: 120

more...

Access Counter

Today : 1446514465144651446514465
Yesterday : 2172621726217262172621726
Total : 2734464327344643273446432734464327344643273446432734464327344643
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com