/// <summary> /// Initiailizes the scene /// Sets many properties that ODE requires to be stable /// These settings need to be tweaked 'exactly' right or weird stuff happens. /// </summary> private void Initialise(Vector3 regionExtent) { WorldExtents.X = regionExtent.X; m_regionWidth = (uint)regionExtent.X; WorldExtents.Y = regionExtent.Y; m_regionHeight = (uint)regionExtent.Y; m_suportCombine = false; nearCallback = near; triCallback = TriCallback; triArrayCallback = TriArrayCallback; m_rayCastManager = new ODERayCastRequestManager(this); // Create the world and the first space world = d.WorldCreate(); space = d.HashSpaceCreate(IntPtr.Zero); contactgroup = d.JointGroupCreate(0); d.WorldSetAutoDisableFlag(world, false); #if USE_DRAWSTUFF Thread viewthread = new Thread(new ParameterizedThreadStart(startvisualization)); viewthread.Start(); #endif // _watermap = new float[258 * 258]; // Zero out the prim spaces array (we split our space into smaller spaces so // we can hit test less. }
/// <summary> /// Initiailizes the scene /// Sets many properties that ODE requires to be stable /// These settings need to be tweaked 'exactly' right or weird stuff happens. /// </summary> public OdeScene(CollisionLocker dode, string sceneIdentifier) { m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + sceneIdentifier); OdeLock = new Object(); ode = dode; nearCallback = near; triCallback = TriCallback; triArrayCallback = TriArrayCallback; m_rayCastManager = new ODERayCastRequestManager(this); lock (OdeLock) { // Create the world and the first space world = d.WorldCreate(); space = d.HashSpaceCreate(IntPtr.Zero); contactgroup = d.JointGroupCreate(0); //contactgroup d.WorldSetAutoDisableFlag(world, false); #if USE_DRAWSTUFF Thread viewthread = new Thread(new ParameterizedThreadStart(startvisualization)); viewthread.Start(); #endif } _watermap = new float[258 * 258]; // Zero out the prim spaces array (we split our space into smaller spaces so // we can hit test less. }
/// <summary> /// Initiailizes the scene /// Sets many properties that ODE requires to be stable /// These settings need to be tweaked 'exactly' right or weird stuff happens. /// </summary> public OdeScene(string sceneIdentifier) { m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString() + "." + sceneIdentifier); Name = sceneIdentifier; OdeLock = new Object(); SimulationLock = new Object(); nearCallback = near; triCallback = TriCallback; triArrayCallback = TriArrayCallback; m_rayCastManager = new ODERayCastRequestManager(this); lock (OdeLock) { // Create the world and the first space try { world = d.WorldCreate(); TopSpace = d.HashSpaceCreate(IntPtr.Zero); // now the major subspaces ActiveSpace = d.HashSpaceCreate(TopSpace); StaticSpace = d.HashSpaceCreate(TopSpace); } catch { // i must RtC#FM } d.HashSpaceSetLevels(TopSpace, -2, 8); // cell sizes from .25 to 256 ?? need check what this really does d.HashSpaceSetLevels(ActiveSpace, -2, 8); d.HashSpaceSetLevels(StaticSpace, -2, 8); // demote to second level d.SpaceSetSublevel(ActiveSpace, 1); d.SpaceSetSublevel(StaticSpace, 1); contactgroup = d.JointGroupCreate(0); //contactgroup d.WorldSetAutoDisableFlag(world, false); #if USE_DRAWSTUFF Thread viewthread = new Thread(new ParameterizedThreadStart(startvisualization)); viewthread.Start(); #endif } _watermap = new float[258 * 258]; }