From 19d271d3fc96360e3c2b0889ef0a2e1f97f25fe7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Tue, 21 Feb 2012 01:45:17 +0000 Subject: [PATCH] Remove PhysXPlugin and wrappers. In over 4 years this never progressed beyond an unimplemented stub. This doesn't mean that it can't come back if someone is interested in implementing PhysX support. --- .../Physics/PhysXPlugin/AssemblyInfo.cs | 58 --- .../Physics/PhysXPlugin/PhysXCharacter.cs | 349 ------------------ .../Region/Physics/PhysXPlugin/PhysXPlugin.cs | 76 ---- .../Region/Physics/PhysXPlugin/PhysXPrim.cs | 341 ----------------- .../Region/Physics/PhysXPlugin/PhysXScene.cs | 177 --------- bin/PhysX-wrapper.dll | Bin 57344 -> 0 bytes bin/PhysX_Wrapper_Dotnet.dll | Bin 8704 -> 0 bytes prebuild.xml | 25 -- 8 files changed, 1026 deletions(-) delete mode 100644 OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs delete mode 100644 OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs delete mode 100644 OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs delete mode 100644 OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs delete mode 100644 OpenSim/Region/Physics/PhysXPlugin/PhysXScene.cs delete mode 100755 bin/PhysX-wrapper.dll delete mode 100755 bin/PhysX_Wrapper_Dotnet.dll diff --git a/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs deleted file mode 100644 index fa5e66a3a8..0000000000 --- a/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Reflection; -using System.Runtime.InteropServices; - -// Information about this assembly is defined by the following -// attributes. -// -// change them to the information which is associated with the assembly -// you compile. - -[assembly : AssemblyTitle("RealPhysXplugin")] -[assembly : AssemblyDescription("")] -[assembly : AssemblyConfiguration("")] -[assembly : AssemblyCompany("http://opensimulator.org")] -[assembly : AssemblyProduct("RealPhysXplugin")] -[assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")] -[assembly : AssemblyTrademark("")] -[assembly : AssemblyCulture("")] - -// This sets the default COM visibility of types in the assembly to invisible. -// If you need to expose a type to COM, use [ComVisible(true)] on that type. - -[assembly : ComVisible(false)] - -// The assembly version has following format : -// -// Major.Minor.Build.Revision -// -// You can specify all values by your own or you can build default build and revision -// numbers with the '*' character (the default): - -[assembly : AssemblyVersion("0.6.5.*")] diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs deleted file mode 100644 index 9216a9eff8..0000000000 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXCharacter.cs +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Physics.Manager; -using PhysXWrapper; -using Quaternion=OpenMetaverse.Quaternion; -using System.Reflection; -using log4net; -using OpenMetaverse; - -namespace OpenSim.Region.Physics.PhysXPlugin -{ - public class PhysXCharacter : PhysicsActor - { - private Vector3 _position; - private Vector3 _velocity; - private Vector3 m_rotationalVelocity = Vector3.Zero; - private Vector3 _acceleration; - private NxCharacter _character; - private bool flying; - private bool iscolliding = false; - private float gravityAccel; - - public PhysXCharacter(NxCharacter character) - { - _character = character; - } - - public override int PhysicsActorType - { - get { return (int) ActorTypes.Agent; } - set { return; } - } - - public override bool SetAlwaysRun - { - get { return false; } - set { return; } - } - - public override uint LocalID - { - set { return; } - } - - public override bool Grabbed - { - set { return; } - } - - public override bool Selected - { - set { return; } - } - - public override float Buoyancy - { - get { return 0f; } - set { return; } - } - - public override bool FloatOnWater - { - set { return; } - } - - public override bool IsPhysical - { - get { return false; } - set { return; } - } - - public override bool ThrottleUpdates - { - get { return false; } - set { return; } - } - - public override bool Flying - { - get { return flying; } - set { flying = value; } - } - - public override bool IsColliding - { - get { return iscolliding; } - set { iscolliding = value; } - } - - public override bool CollidingGround - { - get { return false; } - set { return; } - } - - public override bool CollidingObj - { - get { return false; } - set { return; } - } - - public override Vector3 RotationalVelocity - { - get { return m_rotationalVelocity; } - set { m_rotationalVelocity = value; } - } - - public override bool Stopped - { - get { return false; } - } - - public override Vector3 Position - { - get { return _position; } - set - { - _position = value; - Vec3 ps = new Vec3(); - ps.X = value.X; - ps.Y = value.Y; - ps.Z = value.Z; - _character.Position = ps; - } - } - - public override Vector3 Size - { - get { return Vector3.Zero; } - set { } - } - - public override float Mass - { - get { return 0f; } - } - - public override Vector3 Force - { - get { return Vector3.Zero; } - set { return; } - } - - public override int VehicleType - { - get { return 0; } - set { return; } - } - - public override void VehicleFloatParam(int param, float value) - { - } - - public override void VehicleVectorParam(int param, Vector3 value) - { - } - - public override void VehicleRotationParam(int param, Quaternion rotation) - { - } - - public override void VehicleFlags(int param, bool remove) - { - } - - public override void SetVolumeDetect(int param) - { - } - - public override Vector3 CenterOfMass - { - get { return Vector3.Zero; } - } - - public override Vector3 GeometricCenter - { - get { return Vector3.Zero; } - } - - public override Vector3 Velocity - { - get { return _velocity; } - set { _velocity = value; } - } - - public override float CollisionScore - { - get { return 0f; } - set { } - } - - public override bool Kinematic - { - get { return false; } - set { } - } - - public override Quaternion Orientation - { - get { return Quaternion.Identity; } - set { } - } - - public override Vector3 Acceleration - { - get { return _acceleration; } - set { _acceleration = value; } - } - - public override void AddForce(Vector3 force, bool pushforce) - { - } - - public override Vector3 Torque - { - get { return Vector3.Zero; } - set { return; } - } - - public override void AddAngularForce(Vector3 force, bool pushforce) - { - } - - public override void link(PhysicsActor obj) - { - } - - public override void delink() - { - } - - public override void LockAngularMotion(Vector3 axis) - { - } - - public override void SetMomentum(Vector3 momentum) - { - } - - public void Move(float timeStep) - { - Vec3 vec = new Vec3(); - vec.X = _velocity.X*timeStep; - vec.Y = _velocity.Y*timeStep; - if (flying) - { - vec.Z = (_velocity.Z)*timeStep; - } - else - { - gravityAccel += -9.8f; - vec.Z = (gravityAccel + _velocity.Z)*timeStep; - } - int res = _character.Move(vec); - if (res == 1) - { - gravityAccel = 0; - } - } - - public override PrimitiveBaseShape Shape - { - set { return; } - } - - public void UpdatePosition() - { - Vec3 vec = _character.Position; - _position.X = vec.X; - _position.Y = vec.Y; - _position.Z = vec.Z; - } - - public override void CrossingFailure() - { - } - - public override Vector3 PIDTarget { set { return; } } - public override bool PIDActive { set { return; } } - public override float PIDTau { set { return; } } - - public override float PIDHoverHeight { set { return; } } - public override bool PIDHoverActive { set { return; } } - public override PIDHoverType PIDHoverType { set { return; } } - public override float PIDHoverTau { set { return; } } - - public override Quaternion APIDTarget - { - set { return; } - } - - public override bool APIDActive - { - set { return; } - } - - public override float APIDStrength - { - set { return; } - } - - public override float APIDDamping - { - set { return; } - } - - public override void SubscribeEvents(int ms) - { - - } - public override void UnSubscribeEvents() - { - - } - public override bool SubscribedEvents() - { - return false; - } - } -} diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs deleted file mode 100644 index ca7a4f8379..0000000000 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Physics.Manager; -using PhysXWrapper; -using Quaternion=OpenMetaverse.Quaternion; -using System.Reflection; -using log4net; -using OpenMetaverse; - -namespace OpenSim.Region.Physics.PhysXPlugin -{ - /// - /// Will be the PhysX plugin but for now will be a very basic physics engine - /// - public class PhysXPlugin : IPhysicsPlugin - { - //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private PhysXScene _mScene; - - public PhysXPlugin() - { - } - - public bool Init() - { - return true; - } - - public PhysicsScene GetScene(string sceneIdentifier) - { - if (_mScene == null) - { - _mScene = new PhysXScene(sceneIdentifier); - } - return (_mScene); - } - - public string GetName() - { - return ("RealPhysX"); - } - - public void Dispose() - { - } - } -} diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs deleted file mode 100644 index 42bd119e37..0000000000 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPrim.cs +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Physics.Manager; -using PhysXWrapper; -using Quaternion=OpenMetaverse.Quaternion; -using System.Reflection; -using log4net; -using OpenMetaverse; - -namespace OpenSim.Region.Physics.PhysXPlugin -{ - public class PhysXPrim : PhysicsActor - { - private Vector3 _velocity; - private Vector3 _acceleration; - private Vector3 m_rotationalVelocity; - private NxActor _prim; - - public PhysXPrim(NxActor prim) - { - _velocity = Vector3.Zero; - _acceleration = Vector3.Zero; - _prim = prim; - } - - public override int PhysicsActorType - { - get { return (int) ActorTypes.Prim; } - set { return; } - } - - public override bool IsPhysical - { - get { return false; } - set { return; } - } - - public override bool SetAlwaysRun - { - get { return false; } - set { return; } - } - - public override uint LocalID - { - set { return; } - } - - public override bool Grabbed - { - set { return; } - } - - public override bool Selected - { - set { return; } - } - - public override float Buoyancy - { - get { return 0f; } - set { return; } - } - - public override bool FloatOnWater - { - set { return; } - } - - public override bool ThrottleUpdates - { - get { return false; } - set { return; } - } - - public override Vector3 RotationalVelocity - { - get { return m_rotationalVelocity; } - set { m_rotationalVelocity = value; } - } - - public override bool Flying - { - get { return false; //no flying prims for you - } - set { } - } - - public override bool IsColliding - { - get { return false; } - set { } - } - - public override bool CollidingGround - { - get { return false; } - set { return; } - } - - public override bool CollidingObj - { - get { return false; } - set { return; } - } - - public override bool Stopped - { - get { return false; } - } - - public override Vector3 Position - { - get - { - Vector3 pos = Vector3.Zero; - Vec3 vec = _prim.Position; - pos.X = vec.X; - pos.Y = vec.Y; - pos.Z = vec.Z; - return pos; - } - set - { - Vector3 vec = value; - Vec3 pos = new Vec3(); - pos.X = vec.X; - pos.Y = vec.Y; - pos.Z = vec.Z; - _prim.Position = pos; - } - } - - public override PrimitiveBaseShape Shape - { - set { return; } - } - - public override Vector3 Velocity - { - get { return _velocity; } - set { _velocity = value; } - } - - public override Vector3 Torque - { - get { return Vector3.Zero; } - set { return; } - } - - public override float CollisionScore - { - get { return 0f; } - set { } - } - - public override bool Kinematic - { - get { return _prim.Kinematic; } - set { _prim.Kinematic = value; } - } - - public override Quaternion Orientation - { - get - { - Quaternion res; - PhysXWrapper.Quaternion quat = _prim.GetOrientation(); - res.W = quat.W; - res.X = quat.X; - res.Y = quat.Y; - res.Z = quat.Z; - return res; - } - set { } - } - - public override Vector3 Acceleration - { - get { return _acceleration; } - set { _acceleration = value; } - } - - public override void AddForce(Vector3 force, bool pushforce) - { - } - - public override void AddAngularForce(Vector3 force, bool pushforce) - { - } - - public override void SetMomentum(Vector3 momentum) - { - } - - public override Vector3 Size - { - get { return Vector3.Zero; } - set { } - } - - public override void link(PhysicsActor obj) - { - } - - public override void delink() - { - } - - public override void LockAngularMotion(Vector3 axis) - { - - } - - public override float Mass - { - get { return 0f; } - } - - public override Vector3 Force - { - get { return Vector3.Zero; } - set { return; } - } - - public override int VehicleType - { - get { return 0; } - set { return; } - } - - public override void VehicleFloatParam(int param, float value) - { - - } - - public override void VehicleVectorParam(int param, Vector3 value) - { - - } - - public override void VehicleRotationParam(int param, Quaternion rotation) - { - - } - - public override void VehicleFlags(int param, bool remove) { } - - public override void SetVolumeDetect(int param) - { - - } - - public override Vector3 CenterOfMass - { - get { return Vector3.Zero; } - } - - public override Vector3 GeometricCenter - { - get { return Vector3.Zero; } - } - - public override void CrossingFailure() - { - } - - public override Vector3 PIDTarget { set { return; } } - public override bool PIDActive { set { return; } } - public override float PIDTau { set { return; } } - - public override float PIDHoverHeight { set { return; } } - public override bool PIDHoverActive { set { return; } } - public override PIDHoverType PIDHoverType { set { return; } } - public override float PIDHoverTau { set { return; } } - - public override Quaternion APIDTarget - { - set { return; } - } - - public override bool APIDActive - { - set { return; } - } - - public override float APIDStrength - { - set { return; } - } - - public override float APIDDamping - { - set { return; } - } - - - - public override void SubscribeEvents(int ms) - { - - } - public override void UnSubscribeEvents() - { - - } - public override bool SubscribedEvents() - { - return false; - } - } -} diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXScene.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXScene.cs deleted file mode 100644 index beb340412f..0000000000 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXScene.cs +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Region.Physics.Manager; -using PhysXWrapper; -using Quaternion=OpenMetaverse.Quaternion; -using System.Reflection; -using log4net; -using OpenMetaverse; - -namespace OpenSim.Region.Physics.PhysXPlugin -{ - public class PhysXScene : PhysicsScene - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private List _characters = new List(); - private List _prims = new List(); - private float[] _heightMap = null; - private NxPhysicsSDK mySdk; - private NxScene scene; - - // protected internal string sceneIdentifier; - public PhysXScene(string _sceneIdentifier) - { - //sceneIdentifier = _sceneIdentifier; - - mySdk = NxPhysicsSDK.CreateSDK(); - m_log.Info("Sdk created - now creating scene"); - scene = mySdk.CreateScene(); - } - - public override void Initialise(IMesher meshmerizer, IConfigSource config) - { - // Does nothing right now - } - public override void Dispose() - { - - } - - public override void SetWaterLevel(float baseheight) - { - - } - - public override PhysicsActor AddAvatar(string avName, Vector3 position, Vector3 size, bool isFlying) - { - Vec3 pos = new Vec3(); - pos.X = position.X; - pos.Y = position.Y; - pos.Z = position.Z; - PhysXCharacter act = new PhysXCharacter(scene.AddCharacter(pos)); - act.Flying = isFlying; - act.Position = position; - _characters.Add(act); - return act; - } - - public override void RemovePrim(PhysicsActor prim) - { - } - - public override void RemoveAvatar(PhysicsActor actor) - { - } - - private PhysicsActor AddPrim(Vector3 position, Vector3 size, Quaternion rotation) - { - Vec3 pos = new Vec3(); - pos.X = position.X; - pos.Y = position.Y; - pos.Z = position.Z; - Vec3 siz = new Vec3(); - siz.X = size.X; - siz.Y = size.Y; - siz.Z = size.Z; - PhysXPrim act = new PhysXPrim(scene.AddNewBox(pos, siz)); - _prims.Add(act); - return act; - } - - public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, Vector3 position, - Vector3 size, Quaternion rotation, bool isPhysical, uint localid) - { - return AddPrim(position, size, rotation); - } - - public override void AddPhysicsActorTaint(PhysicsActor prim) - { - } - - public override float Simulate(float timeStep) - { - float fps = 0f; - try - { - foreach (PhysXCharacter actor in _characters) - { - actor.Move(timeStep); - } - scene.Simulate(timeStep); - scene.FetchResults(); - scene.UpdateControllers(); - - foreach (PhysXCharacter actor in _characters) - { - actor.UpdatePosition(); - } - } - catch (Exception e) - { - m_log.Error(e.Message); - } - return fps; - } - - public override void GetResults() - { - } - - public override bool IsThreaded - { - // for now we won't be multithreaded - get { return (false); } - } - - public override void SetTerrain(float[] heightMap) - { - if (_heightMap != null) - { - m_log.Debug("PhysX - deleting old terrain"); - scene.DeleteTerrain(); - } - _heightMap = heightMap; - scene.AddTerrain(heightMap); - } - - public override void DeleteTerrain() - { - scene.DeleteTerrain(); - } - - public override Dictionary GetTopColliders() - { - Dictionary returncolliders = new Dictionary(); - return returncolliders; - } - } -} diff --git a/bin/PhysX-wrapper.dll b/bin/PhysX-wrapper.dll deleted file mode 100755 index 5259ffcd75b5363a55bcd1fab3f8d345c43bed27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 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 diff --git a/bin/PhysX_Wrapper_Dotnet.dll b/bin/PhysX_Wrapper_Dotnet.dll deleted file mode 100755 index c66bf3ab1994bab261e876972ad54e83159c15fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 - - - - ../../../../bin/Physics/ - - - - - ../../../../bin/Physics/ - - - - ../../../../bin/ - - - - - - - - - - - -