public void Update(float dtime)
        {
            MotionSimulation.Step(dtime);
#if BETA_RELEASE
            ClientProfilers.NearestNeighbours.Start();
#endif
            inRangeAcc += dtime;
            if (inRangeAcc >= 0.4f)
            {
                if (Program.Settings.NearestNeighborsEnabled)
                {
                    InRange.Update();
                }
                inRangeAcc = 0;
            }
#if BETA_RELEASE
            ClientProfilers.NearestNeighbours.Stop();
            ClientProfilers.GameEntityUpdate.Start();
#endif
            foreach (var v in new List <Map.GameEntity>(objects))
            {
                v.GameUpdate(dtime);
            }
#if BETA_RELEASE
            ClientProfilers.GameEntityUpdate.Stop();
#endif
            UpdateActiveScripts(dtime);

#if SEE_THROUGH
            if (lastSeeThroughs != null)
            {
                foreach (var v in new List <Map.GameEntity>(lastSeeThroughs))
                {
                    ((Graphics.Content.MetaModel)v.MainGraphic).Opacity = 1;

                    /*((Graphics.Content.MetaModel)v.MainGraphic).Opacity += dtime;
                     * if (((Graphics.Content.MetaModel)v.MainGraphic).Opacity >= 1)
                     * {
                     *  lastSeeThroughs.Remove(v);
                     *  ((Graphics.Content.MetaModel)v.MainGraphic).HasAlpha = false;
                     * }*/
                }
            }
            var line = new Common.Bounding.Line(Game.Instance.Scene.Camera.Position, Game.Instance.Map.MainCharacter.Position);
            lastSeeThroughs = seeThroughables.Cull(line);
            foreach (var v in lastSeeThroughs)
            {
                ((Graphics.Content.MetaModel)v.MainGraphic).AlphaRef = 10;
                ((Graphics.Content.MetaModel)v.MainGraphic).Opacity  = 0.3f;

                /*((Graphics.Content.MetaModel)v.MainGraphic).HasAlpha = true;
                 * if(((Graphics.Content.MetaModel)v.MainGraphic).Opacity > 0.3f)
                 *  ((Graphics.Content.MetaModel)v.MainGraphic).Opacity -= dtime;*/
            }
#endif
        }
示例#2
0
        public static bool Intersect(Common.Bounding.Line a, BoundingMetaMesh b, out object intersection)
        {
            // not sure what this is supposed to return yet so I'll postpone it until it is needed
            intersection = null;

            Vector3 v = a.P1 - a.P0;
            Ray     r = new Ray(a.P0, Vector3.Normalize(v));

            object obj;
            bool   hit = Intersect(r, b, out obj);

            if (hit)
            {
                return(((Common.RayIntersection)obj).Distance <= v.Length());
            }
            return(false);
        }
示例#3
0
 public static bool Intersect(Common.Bounding.Line a, MetaBoundingBox b, out object intersection)
 {
     return(Common.Intersection.Intersect(a, b.GetBoundingBox(content).Value, out intersection));
 }
        public void Update(float dtime)
        {
            MotionSimulation.Step(dtime);
            #if BETA_RELEASE
            ClientProfilers.NearestNeighbours.Start();
            #endif
            inRangeAcc += dtime;
            if (inRangeAcc >= 0.4f)
            {
                if (Program.Settings.NearestNeighborsEnabled)
                    InRange.Update();
                inRangeAcc = 0;
            }
            #if BETA_RELEASE
            ClientProfilers.NearestNeighbours.Stop();
            ClientProfilers.GameEntityUpdate.Start();
            #endif
            foreach (var v in new List<Map.GameEntity>(objects))
                v.GameUpdate(dtime);
            #if BETA_RELEASE
            ClientProfilers.GameEntityUpdate.Stop();
            #endif
            UpdateActiveScripts(dtime);

            #if SEE_THROUGH
            if(lastSeeThroughs != null)
                foreach (var v in new List<Map.GameEntity>(lastSeeThroughs))
                {
                    ((Graphics.Content.MetaModel)v.MainGraphic).Opacity = 1;
                    /*((Graphics.Content.MetaModel)v.MainGraphic).Opacity += dtime;
                    if (((Graphics.Content.MetaModel)v.MainGraphic).Opacity >= 1)
                    {
                        lastSeeThroughs.Remove(v);
                        ((Graphics.Content.MetaModel)v.MainGraphic).HasAlpha = false;
                    }*/
                }
            var line = new Common.Bounding.Line(Game.Instance.Scene.Camera.Position, Game.Instance.Map.MainCharacter.Position);
            lastSeeThroughs = seeThroughables.Cull(line);
            foreach (var v in lastSeeThroughs)
            {
                ((Graphics.Content.MetaModel)v.MainGraphic).AlphaRef = 10;
                ((Graphics.Content.MetaModel)v.MainGraphic).Opacity = 0.3f;
                /*((Graphics.Content.MetaModel)v.MainGraphic).HasAlpha = true;
                if(((Graphics.Content.MetaModel)v.MainGraphic).Opacity > 0.3f)
                    ((Graphics.Content.MetaModel)v.MainGraphic).Opacity -= dtime;*/
            }
            #endif
        }