public SceneNode GetSceneNode(IDictionary <string, object> parameters, GameEntity entity) { var materialFunc = GetMaterialFunc(); SceneNode scn = new SceneNode(); MeshAttachable mesh = new MeshAttachable(Name, Platform.Instance.Content.Load <Model>(Mesh), materialFunc(parameters)); GameWorldManager.Instance.RegisterMesh(mesh, entity); scn.AddAttachable(mesh); return(scn); }
private void GameEntityCreateSceneNodes(GameEntity entity, Vector3 scale, IDictionary <string, object> parameters) { /* create main node */ SceneNode mainNode = new SceneNode(); /* rest of nodes */ foreach (MeshSceneNodePrefab scnp in _sceneNodesPrefab.Values) { SceneNode scn = scnp.GetSceneNode(parameters, entity); entity.SceneNodes.Add(scnp.Name, scn); mainNode.AddChild(scn); scn.SetScale(scn.GetScale() * scale); } foreach (ArrayMeshSceneNodePrefab ascnp in _arrayMeshSceneNodesPrefab.Values) { for (int i = ascnp.StartIndex; i <= ascnp.EndIndex; i++) { SceneNode scn = ascnp.GetSceneNode(parameters, entity); mainNode.AddChild(scn); scn.SetScale(scale); if (ascnp.Path != null && entity.PhysicsEntity.GetBodyFromPath(ascnp.Path, i) != null) { BodyController controller = new BodyController(scn, entity.PhysicsEntity.GetBodyFromPath(ascnp.Path, i), entity); entity.BodyControllers.Add(controller); FrameUpdateManager.Instance.Register(controller); } } } foreach (var cameraSceneNodePrefab in _cameraSceneNodesPrefab) { mainNode.AddAttachable( new CameraAttachable(cameraSceneNodePrefab.Value.LookingDirection, cameraSceneNodePrefab.Value.UpVector, cameraSceneNodePrefab.Value.Near, cameraSceneNodePrefab.Value.Far, cameraSceneNodePrefab.Value.Fov, cameraSceneNodePrefab.Value.AspectRatio) ); } /* finish main node */ SceneManager.Instance.RegisterSceneTree(mainNode); entity.MainNode = mainNode; }
public SceneNode GetSceneNode(IDictionary <string, object> parameters, GameEntity entity) { var materialFunc = GetMaterialFunc(); SceneNode scn = new SceneNode(); MeshAttachable mesh = new MeshAttachable(Name, Platform.Instance.Content.Load <Model>(Mesh), materialFunc(parameters)); GameWorldManager.Instance.RegisterMesh(mesh, entity); scn.AddAttachable(mesh); scn.SetPosition(LocalPosition); scn.SetRotation(LocalRotation); scn.SetScale(LocalScale); scn.Invisible = Invisible; scn.DrawsDepth = DrawsDepth; return(scn); }