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