public void Update(GameTime dt)
        {
            if (Data == null || Data.Count == 0)
            {
                return;
            }

            SceneNode pnode = Data[0] as SceneNode;

            if (pnode != null)
            {
                pnode.SetRotation(Quaternion.CreateFromAxisAngle(Vector3.UnitZ, ( float )dt.TotalGameTime.TotalMilliseconds * _rotationSpeed));
            }

            foreach (object obj in Data)
            {
                SceneNode node = obj as SceneNode;

                if (node != null)
                {
                    MeshAttachable attachable = node.Attachable.Count > 0 ? node.Attachable[0] as MeshAttachable : null;

                    //  if(attachable != null)
                    //	attachable.Material.SetParameter("");
                }
            }
        }
예제 #2
0
        public GameEntity GetEntityByMesh(MeshAttachable mesh)
        {
            if (_meshes.ContainsKey(mesh))
            {
                return(_meshes[mesh]);
            }

            return(null);
        }
예제 #3
0
        public void RegisterMesh(MeshAttachable mesh, GameEntity entity)
        {
            _meshes.Add(mesh, entity);

            if (!_entitiesMapToMeshes.ContainsKey(entity))
            {
                _entitiesMapToMeshes.Add(entity, new List <MeshAttachable>());
            }

            _entitiesMapToMeshes[entity].Add(mesh);
        }
        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);
        }
예제 #5
0
        public BoundingBox GetTransformedBoundingBox()
        {
            foreach (Attachable at in _attachables)
            {
                MeshAttachable myMesh = at as MeshAttachable;

                if (myMesh != null)
                {
                    return(myMesh.GetTransformedAABB());
                }
            }
            return(new BoundingBox());
        }
예제 #6
0
        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);
        }
예제 #7
0
        public BoundingSphere GetBoundingSphere()
        {
            if (!_hasBSphere)
            {
                foreach (Attachable at in _attachables)
                {
                    MeshAttachable myMesh = ( MeshAttachable )at;

                    if (myMesh != null)
                    {
                        if (!_hasBSphere)
                        {
                            _bSphere    = myMesh.BoundingSphere;
                            _hasBSphere = true;
                        }
                        else
                        {
                            _bSphere = BoundingSphere.CreateMerged(_bSphere, myMesh.BoundingSphere);
                        }
                    }
                }
            }
            return(_bSphere);
        }
        private void HighlightSelectedEntity()
        {
            if (_selectedEntity != null)
            {
                if (!_state.Equals(EditorState.None))
                {
                    foreach (KeyValuePair <string, SceneNode> keyValuePair in _selectedEntity.SceneNodes)
                    {
                        SceneNode node = keyValuePair.Value;

                        foreach (Attachable attachable in node.Attachable)
                        {
                            MeshAttachable ma = attachable as MeshAttachable;

                            if (ma != null)
                            {
                                ma.Highlighted = true;
                                ma.HighColor   = Vector3.UnitY;
                            }
                        }
                    }
                }
            }
        }