Ejemplo n.º 1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="modelName"></param>
        /// <param name="df"></param>
        public uint AddInstance(string modelName, ADT.Wotlk.MDDF df)
        {
            renderLock.WaitOne();
            int hash = modelName.ToLower().GetHashCode();
            float wowRotY = Utils.SharpMath.mirrorAngle(df.orientationX);
            float wowRotZ = df.orientationY;
            float wowRotX = df.orientationZ;
            wowRotY *= 0.017453f;
            wowRotZ *= 0.017453f;
            wowRotX *= 0.017453f;
            wowRotZ += (float)Math.PI / 2.0f;
            wowRotZ = Utils.SharpMath.mirrorAngleRadian(wowRotZ);

            if (BatchRenderers.ContainsKey(hash))
            {
                uint id = BatchRenderers[hash].AddInstance(-Utils.Metrics.MidPoint + df.posX, -Utils.Metrics.MidPoint + df.posZ, df.posY, df.scaleFactor / 1024.0f, new SlimDX.Vector3(wowRotY, wowRotX, wowRotZ));
                renderLock.ReleaseMutex();
                return id;
            }
            try
            {
                M2BatchRender rndr = new M2BatchRender(modelName);
                uint ret = rndr.AddInstance(-Utils.Metrics.MidPoint + df.posX, -Utils.Metrics.MidPoint + df.posZ, df.posY, df.scaleFactor / 1024.0f, new SlimDX.Vector3(wowRotY, wowRotX, wowRotZ));
                BatchRenderers.Add(hash, rndr);
                renderLock.ReleaseMutex();
                return ret;
            }
            catch (Exception)
            {
                renderLock.ReleaseMutex();
                throw;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="modelName"></param>
        /// <param name="df"></param>
        public uint AddInstance(string modelName, ADT.Wotlk.MDDF df)
        {
            renderLock.WaitOne();
            int   hash    = modelName.ToLower().GetHashCode();
            float wowRotY = Utils.SharpMath.mirrorAngle(df.orientationX);
            float wowRotZ = df.orientationY;
            float wowRotX = df.orientationZ;

            wowRotY *= 0.017453f;
            wowRotZ *= 0.017453f;
            wowRotX *= 0.017453f;
            wowRotZ += (float)Math.PI / 2.0f;
            wowRotZ  = Utils.SharpMath.mirrorAngleRadian(wowRotZ);

            if (BatchRenderers.ContainsKey(hash))
            {
                uint id = BatchRenderers[hash].AddInstance(-Utils.Metrics.MidPoint + df.posX, -Utils.Metrics.MidPoint + df.posZ, df.posY, df.scaleFactor / 1024.0f, new SlimDX.Vector3(wowRotY, wowRotX, wowRotZ));
                renderLock.ReleaseMutex();
                return(id);
            }
            try
            {
                M2BatchRender rndr = new M2BatchRender(modelName);
                uint          ret  = rndr.AddInstance(-Utils.Metrics.MidPoint + df.posX, -Utils.Metrics.MidPoint + df.posZ, df.posY, df.scaleFactor / 1024.0f, new SlimDX.Vector3(wowRotY, wowRotX, wowRotZ));
                BatchRenderers.Add(hash, rndr);
                renderLock.ReleaseMutex();
                return(ret);
            }
            catch (Exception)
            {
                renderLock.ReleaseMutex();
                throw;
            }
        }
Ejemplo n.º 3
0
 internal M2InstanceLoader(M2BatchRender render)
 {
     Renderer = render;
 }
Ejemplo n.º 4
0
 public ModelIntersector(M2BatchRender renderer)
 {
     mRenderer = renderer;
 }
Ejemplo n.º 5
0
 public ModelIntersector(M2BatchRender renderer)
 {
     mRenderer = renderer;
 }
Ejemplo n.º 6
0
 internal M2InstanceLoader( M2BatchRender render)
 {
     Renderer = render;
 }