コード例 #1
0
        // draws all gameobjects linearly
        public void DrawAll(Camera cam, Effect effect, GameTime gameTime, bool ifGenerateShadowMaps)
        {
            if (ifGenerateShadowMaps)
            {
                if (Params.Shadows)
                {
                    if (DirectionalLights[0] != null && DirectionalLights[0].CastShadows)
                    {
                        DirectionalLights[0].GenerateShadowMap();
                    }

                    if (PointLights.Count > 0 && PointLights[0].CastShadows)
                    {
                        PointLights[0].GenerateShadowMap();
                    }

                    if (Params.SoftShadows && ifRenderShadows)
                    {
                        RenderGlobalBlurredShadows();
                        ifRenderShadows = false;
                    }
                }
            }

            if (Params.UseGraph)
            {
                ObjectsQT.Draw(cam != null ? cam : this.Cam, effect, gameTime);
            }
            else
            {
                drawLasts.Clear();
                foreach (GameObject obj in ObjectsDictionary.Values)
                {
                    if (obj.DrawLast)
                    {
                        drawLasts.Add(obj);
                    }
                    else
                    {
                        obj.Draw(cam, effect, gameTime);
                    }
                }

                int lCount = drawLasts.Count;
                for (int i = 0; i < lCount; ++i)
                {
                    drawLasts[i].Draw(cam, effect, gameTime);
                }
            }

            if (ifGenerateShadowMaps && !ifRenderShadows)
            {
                ifRenderShadows = true;
            }
        }
コード例 #2
0
 public void AddObject(GameObject obj)
 {
     if (this.ObjectsDictionary.ContainsKey(obj.UniqueID))
     {
         Debug.Log("That ID exists");
     }
     this.ObjectsDictionary.Add(obj.UniqueID, obj);
     if (Params.UseGraph)
     {
         ObjectsQT.Add(obj);
     }
 }
コード例 #3
0
        public void UpdateAll(GameTime gameTime)
        {
            ObjectsQT.Update();

            Params.Time = Params.Time.AddMilliseconds(Params.TimeMultiplier * gameTime.ElapsedGameTime.TotalMilliseconds);

            //[vansten] Added testing code for physics simulation
            AI.BehaviorTree.BehaviorTreeManager.Instance.Update(gameTime);
            foreach (GameObject obj in ObjectsDictionary.Values)
            {
                obj.Update(gameTime);
            }
            Cam.Update(gameTime);

            if (runtimeRemoved.Count > 0 || runtimeAdded.Count > 0)
            {
                SolveRuntimeAdditions();
            }
        }
コード例 #4
0
        public bool DeleteObject(uint uniqueID)
        {
            GameObject temp;
            bool       placek = ObjectsDictionary.TryGetValue(uniqueID, out temp);

            if (temp != null)
            {
                if (Params.UseGraph)
                {
                    ObjectsQT.Remove(temp);
                }
                ObjectsDictionary.Remove(uniqueID);
                return(true);
            }
            else
            {
                return(false);
            }
        }