示例#1
0
        /// <summary>
        /// Add a new model to the OcTree structure, creating a new node if it
        /// is necessary.
        /// </summary>
        /// <param name="model">Reference to the model to be added.</param>
        /// <returns>true if the model was added, false otherwise.</returns>
        public int AddModel(DrawableModel model)
        {
            OcTreeNode node = SearchNode(model.Position);

            NodeType type = NodeType.None;

            if (model.Model.FileName == "Content/Models/CubeBaseFrontStaircase2-1")
            {
                type = NodeType.Staircase1Down;
            }
            else if (model.Model.FileName == "Content/Models/CubeBaseFrontStaircase2-2")
            {
                type = NodeType.Staircase2Down;
            }
            else if (model.Model.FileName == "Content/Models/CubeBaseFrontLadder")
            {
                type = NodeType.Ladder;
            }
            else if (model.Model.FileName.Contains("Door"))
            {
                type = NodeType.Door;
            }

            return(node.AddModel(type, model));
        }
示例#2
0
        /// <summary>
        /// Add a new model to the OcTree structure, creating a new node if it
        /// is necessary.
        /// </summary>
        /// <param name="model">Reference to the model to be added.</param>
        /// <param name="position">Position of the model.</param>
        /// <param name="rotation">Rotation of the mode.</param>
        /// <param name="scale">Scale of the model.</param>
        /// <returns>true if the model was added, false otherwise.</returns>
        public int AddModel(GameModel model, Vector3 position, Vector3 rotation, Vector3 scale)
        {
            OcTreeNode node = SearchNode(position);

            DrawableModel newModel = new DrawableModel(model, position, rotation, scale, _modelsStoredInQuadTree++);
            NodeType      type     = NodeType.None;

            if (newModel.Model.FileName == "Content/Models/CubeBaseFrontStaircase2-1")
            {
                if (rotation.X == MathHelper.ToRadians(270))
                {
                    type = NodeType.Staircase1Up;
                }
                else
                {
                    type = NodeType.Staircase1Down;
                }
            }
            else if (newModel.Model.FileName == "Content/Models/CubeBaseFrontStaircase2-2")
            {
                if (rotation.X == MathHelper.ToRadians(270))
                {
                    type = NodeType.Staircase2Up;
                }
                else
                {
                    type = NodeType.Staircase2Down;
                }
            }
            else if (newModel.Model.FileName == "Content/Models/CubeBaseFrontLadder")
            {
                type = NodeType.Ladder;
            }
            else if (newModel.Model.FileName.Contains("Door"))
            {
                type = NodeType.Door;
            }

            return(node.AddModel(type, newModel));
        }