Beispiel #1
0
 public PECharacter(String avName, PEScene parent_scene, Vector3 pos,
                    CollisionLocker dode, Vector3 size, float pid_d, float pid_p,
                    float capsule_radius, float tensor, float density, float height_fudge_factor,
                    float walk_divisor, float rundivisor)
 {
     _position = pos;
     _size     = size;
     _density  = density;
     //base.ChangingActorID = RegionSyncServerModule.ActorID;
     //return;
 }
Beispiel #2
0
        public OdeCharacter(String avName, OdeScene parent_scene, PhysicsVector pos, CollisionLocker dode, PhysicsVector size, float pid_d, float pid_p, float capsule_radius, float tensor, float density, float height_fudge_factor, float walk_divisor, float rundivisor)
        {
            // ode = dode;
            _velocity        = new PhysicsVector();
            _target_velocity = new PhysicsVector();


            if (PhysicsVector.isFinite(pos))
            {
                if (pos.Z > 9999999)
                {
                    pos.Z = parent_scene.GetTerrainHeightAtXY(127, 127) + 5;
                }
                if (pos.Z < -90000)
                {
                    pos.Z = parent_scene.GetTerrainHeightAtXY(127, 127) + 5;
                }
                _position         = pos;
                m_taintPosition.X = pos.X;
                m_taintPosition.Y = pos.Y;
                m_taintPosition.Z = pos.Z;
            }
            else
            {
                _position         = new PhysicsVector(128, 128, parent_scene.GetTerrainHeightAtXY(128, 128) + 10);
                m_taintPosition.X = _position.X;
                m_taintPosition.Y = _position.Y;
                m_taintPosition.Z = _position.Z;
                m_log.Warn("[PHYSICS]: Got NaN Position on Character Create");
            }


            _acceleration = new PhysicsVector();
            _parent_scene = parent_scene;

            PID_D             = pid_d;
            PID_P             = pid_p;
            CAPSULE_RADIUS    = capsule_radius;
            m_tensor          = tensor;
            m_density         = density;
            heightFudgeFactor = height_fudge_factor;
            walkDivisor       = walk_divisor;
            runDivisor        = rundivisor;


            // m_StandUpRotation =
            //     new d.Matrix3(0.5f, 0.7071068f, 0.5f, -0.7071068f, 0f, 0.7071068f, 0.5f, -0.7071068f,
            //                   0.5f);

            for (int i = 0; i < 11; i++)
            {
                m_colliderarr[i] = false;
            }
            CAPSULE_LENGTH = (size.Z * 1.15f) - CAPSULE_RADIUS * 2.0f;
            //m_log.Info("[SIZE]: " + CAPSULE_LENGTH.ToString());
            m_tainted_CAPSULE_LENGTH = CAPSULE_LENGTH;

            m_isPhysical         = false; // current status: no ODE information exists
            m_tainted_isPhysical = true;  // new tainted status: need to create ODE information


            _parent_scene.AddPhysicsActorTaint(this);

            m_name = avName;
        }
Beispiel #3
0
 public AuroraODEPlugin()
 {
     ode = new CollisionLocker();
 }
Beispiel #4
0
 public PEPrim(String primName, PEScene parent_scene, Vector3 pos, Vector3 size,
               Quaternion rotation, IMesh mesh, PrimitiveBaseShape pbs, bool pisPhysical, CollisionLocker dode)
 {
     _position    = pos;
     _size        = size;
     _orientation = rotation;
     // m_log.DebugFormat("[REMOTE PRIM ENGINE] PEPrim creation of {0}", primName);
 }