public void ResetCamera(State state) { Camera.Position = Vector3.ZERO; Camera.Orientation = Quaternion.IDENTITY; CameraNode = new SimNode(state.SceneManager.RootSceneNode.CreateChildSceneNode()); CameraChildNode = new SimNode(CameraNode.SceneNode, Camera); }
public PhysicsNode(SimNode simNode, State State) : base(simNode.SceneNode) { SceneNode = simNode.SceneNode; SceneNode child = SceneNode; while (child.NumChildren() > 0) child = child.GetChild(0) as SceneNode; var hull = new MogreNewt.CollisionPrimitives.ConvexHull(State.PhysicsWorld.World, child, child.Orientation, 0.002f, SceneNode.Name.GetHashCode()); Body = new Body(State.PhysicsWorld.World, hull); Body.AttachNode(SceneNode); Body.IsGravityEnabled = true; Body.SetPositionOrientation(SceneNode._getDerivedPosition(), SceneNode.Orientation); // REALPosition Orient Body.ForceCallback += State.PhysicsWorld.ForceCallback; // Body.AngularDamping = new Vector3(1,1,1); // Body.LinearDamping = 1; Body.UserData = new PhysicsControlData(); hull.Dispose(); }
public override void CreateSimNode() { enabled = true; state.SceneManager.DestroyEntity("SubNode"); state.SceneManager.DestroyLight("subLight"); Entity sub = state.SceneManager.CreateEntity("SubNode", @"MockSub.mesh"); var sceneNode = new SceneNode(state.SceneManager); sceneNode.AttachObject(sub); sceneNode.Yaw(Math.HALF_PI); SimNode = new SimNode(state.SceneManager.RootSceneNode, sceneNode); Light subLight = state.SceneManager.CreateLight("subLight"); subLight.Type = Light.LightTypes.LT_SPOTLIGHT; subLight.Direction = new Vector3(0, 0, -1); subLight.SpotlightOuterAngle = new Radian(0.4F); subLight.SpotlightInnerAngle = new Radian(0.2F); subLight.SpotlightFalloff = 100.0F; subLight.SetAttenuation(100, 0F, 0.0F, 0.01F); SimNode.SceneNode.AttachObject(subLight); SimNode.SceneNode.Position = new Vector3(0, 0, 20); }
public void Init(State State) { this.State = State; State.PhysicsWorld = this; World = new MogreNewt.World(); World.SetPlatformArchitecture(MogreNewt.World.PlatformArchitecture.PA_BEST_HARDWARE); World.SetWorldSize(new Vector3(-500, -500, -500), new Vector3(500, 500, 500)); World.SetSolverModel(MogreNewt.World.SolverModelMode.SM_2_PASS); World.DebuggerInstance.Init(State.SceneManager); // using the new "SceneParser" TreeCollision primitive. this will automatically parse an entire tree of // SceneNodes (parsing all children), and add collision for all meshes in the tree. var statCol = new MogreNewt.CollisionPrimitives.TreeCollisionSceneParser(World); statCol.ParseScene(State.SceneManager.RootSceneNode, true, 0); // was floornode var sceneBody = new Body(World, statCol); statCol.Dispose(); sceneBody.AttachNode(State.SceneManager.RootSceneNode); // was floornode sceneBody.SetPositionOrientation(new Vector3(0.0f, 0.0f, 0.0f), Quaternion.IDENTITY); var ent = State.SceneManager.CreateEntity("cylinder_body", "mocksub.mesh"); var simNode = new SimNode(State.SceneManager.RootSceneNode, ent); // rigid body. var phyNode = new PhysicsNode(simNode, State); phyNode.Body.SetPositionOrientation(new Vector3(0, 10, 0), Quaternion.IDENTITY); phyNode.Body.SetMassMatrix(125, Vector3.ZERO); var physicsNode = new PhysicsNode(State.SubNode, State); physicsNode.Body.SetMassMatrix(125, Vector3.ZERO); // TODO: FIX THIS State.SubNode = physicsNode; // initial position State.Root.FrameStarted += NewtonUpdate; }
public void AddChild(SimNode node) { AddChild(node.SceneNode); }
public void RemoveChild(SimNode node) { RemoveChild(node.SceneNode); }
private void RecreateSceneNode() { if (SimNode != null) { state.SceneManager.RootSceneNode.RemoveChild(base.SimNode.SceneNode); SimNode.SceneNode.RemoveAndDestroyAllChildren(); } mesh = string.IsNullOrEmpty(mesh) ? @"pathsegment.mesh" : new FileInfo(mesh).Name; var sceneEntity = state.SceneManager.CreateEntity(Name + Random.Next(), mesh); var sceneNode = state.SceneManager.RootSceneNode.CreateChildSceneNode(); sceneNode.AttachObject(sceneEntity); sceneNode.Position = Position; sceneNode.Orientation = Orientation; sceneNode.Scale(Scale, Scale, Scale); SimNode = new SimNode(sceneNode); }
public BaseEntity(SimNode node) { this.SimNode = node; }
public override void CreateSimNode() { enabled = true; new SimHydrax().Init(state); SimNode = new SimNode(state.SceneManager.RootSceneNode); }