void factory_OnLinkPhase(BulletFactory obj)
 {
     if (rigidBodies.Count > 0)
     {
         TransformSimObject = rigidBodies[0].Owner.getOtherSimObject(transformSimObjectName);
         if (TransformSimObject == null)
         {
             SimObjectErrorManager.AddError(new SimObjectError()
             {
                 SimObject   = "TransformedBulletScene",
                 Type        = this.GetType().Name,
                 Subsystem   = BulletInterface.PluginName,
                 ElementName = getName(),
                 Message     = String.Format("Cannot find Transform Target Sim Object named '{0}'.", transformSimObjectName)
             });
             TransformSimObject = new GenericSimObject(getName() + "TransformedBulletScene_AutoCreatedSimObject", Vector3.Zero, Quaternion.Identity, Vector3.ScaleIdentity, true);
         }
         positionBroadcaster = TransformSimObject.getElement(positionBroadcasterName) as PositionBroadcaster;
         if (positionBroadcaster != null)
         {
             positionBroadcaster.PositionChanged += positionBroadcaster_PositionChanged;
         }
         else
         {
             SimObjectErrorManager.AddError(new SimObjectError()
             {
                 SimObject   = "TransformedBulletScene",
                 Type        = this.GetType().Name,
                 Subsystem   = BulletInterface.PluginName,
                 ElementName = getName(),
                 Message     = String.Format("Cannot find PositionBroadcaster named '{0}' in Transform Target Sim Object '{1}'.", positionBroadcasterName, transformSimObjectName)
             });
         }
     }
     else
     {
         SimObjectErrorManager.AddError(new SimObjectError()
         {
             SimObject   = "TransformedBulletScene",
             Type        = this.GetType().Name,
             Subsystem   = BulletInterface.PluginName,
             ElementName = getName(),
             Message     = "No Actors in Bullet Scene"
         });
         TransformSimObject = new GenericSimObject(getName() + "TransformedBulletScene_AutoCreatedSimObject", Vector3.Zero, Quaternion.Identity, Vector3.ScaleIdentity, true);
         //Note that no position broadcaster is created here, the dummy sim object will not move so we don't actually care.
         //If you do decide to care add a PositionBroadcaster to the created TransformSimObject. This is really just an error state anyway, this behavior should not be used
         //create an actual simobject setup correctly to track if you are using this scene.
     }
 }
Beispiel #2
0
        internal IEnumerable <SceneBuildStatus> changeSceneStatus(String file, ResourceProvider resourceProvider)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            sceneViewController.resetAllCameraPositions();
            unloadScene();
            SimObjectErrorManager.Clear();

            foreach (var status in medicalController.openScene(file, resourceProvider))
            {
                yield return(status);
            }

            SimSubScene defaultScene = medicalController.CurrentScene.getDefaultSubScene();

            if (BeforeSceneLoadProperties != null)
            {
                BeforeSceneLoadProperties.Invoke(medicalController.CurrentScene);
            }
            if (defaultScene != null)
            {
                OgreSceneManager ogreScene = defaultScene.getSimElementManager <OgreSceneManager>();

                SimulationScene medicalScene = defaultScene.getSimElementManager <SimulationScene>();
                sceneViewController.createFromPresets(medicalScene.WindowPresets.Default, false);

                sceneViewController.createCameras(medicalController.CurrentScene);
                lightManager.sceneLoaded(medicalController.CurrentScene);

                if (SceneLoaded != null)
                {
                    SceneLoaded.Invoke(medicalController.CurrentScene);
                }

                anatomyController.sceneLoaded();
            }

            if (SimObjectErrorManager.HasErrors)
            {
                NotificationManager.showCallbackNotification("Errors loading the scene.\nClick for details.", MessageBoxIcons.Error, showLoadErrorGui);
            }

            sw.Stop();
            Logging.Log.Debug("Scene '{0}' loaded in {1} ms", file, sw.ElapsedMilliseconds);
        }
Beispiel #3
0
 public void createProduct(BEPUikScene scene)
 {
     try
     {
         element.createProduct(instance, scene);
     }
     catch (BEPUikBlacklistException ex)
     {
         SimObjectErrorManager.AddAndLogError(new SimObjectError()
         {
             Subsystem   = BEPUikInterface.PluginName,
             ElementName = element.Name,
             Type        = element.GetType().Name,
             SimObject   = instance.Name,
             Message     = ex.Message
         });
     }
 }
Beispiel #4
0
        internal void addBone(BEPUikBone bone)
        {
            BEPUikSolver solver;

            if (namedSolvers.TryGetValue(bone.SolverName, out solver))
            {
                solver.addBone(bone);
            }
            else
            {
                SimObjectErrorManager.AddAndLogError(new SimObjectError()
                {
                    Subsystem   = BEPUikInterface.PluginName,
                    ElementName = bone.Name,
                    Type        = bone.GetType().Name,
                    SimObject   = bone.Owner.Name,
                    Message     = String.Format("Cannot find an IKSolver named '{0}' Bone not added to scene.", bone.SolverName)
                });
            }
        }
Beispiel #5
0
        internal void removeControl(BEPUikControl control)
        {
            BEPUikSolver solver;

            if (namedSolvers.TryGetValue(control.Bone.SolverName, out solver))
            {
                solver.removeControl(control);
            }
            else
            {
                SimObjectErrorManager.AddAndLogError(new SimObjectError()
                {
                    Subsystem   = BEPUikInterface.PluginName,
                    ElementName = control.Name,
                    Type        = control.GetType().Name,
                    SimObject   = control.Owner.Name,
                    Message     = String.Format("Cannot find an IKSolver named '{0}' Control not added to scene.", control.Bone.SolverName)
                });
            }
        }