/// <summary>
        ///
        /// </summary>
        /// <param name="enabled"></param>
        /// <param name="visibleDist"></param>
        /// <param name="invisbleDist"></param>
        public void SetFade(bool enabled, float visibleDist, float invisbleDist)
        {
            if (mRenderMethod == BillboardMethod.Accelerated)
            {
                if (enabled)
                {
                    if (mMaterial == null)
                    {
                        throw new Exception("Billboard fading cannot be enabled without a material applied first");
                    }

                    //Update material reference list
                    if (mFadeEnabled)
                    {
                        Debug.Assert(mFadeMaterial != null);
                        SBMaterialRef.RemoveMaterialRef(mFadeMaterial);
                    }
                    else
                    {
                        Debug.Assert(mMaterial != null);
                        SBMaterialRef.RemoveMaterialRef(mMaterial);
                    }

                    mFadeMaterial = GetFadeMaterial(visibleDist, invisbleDist);
                    SBMaterialRef.AddMaterialRef(mFadeMaterial, mBBOrigin);

                    //Apply material to entity
                    if (mEntity != null)
                    {
                        mEntity.MaterialName = mFadeMaterial.Name;
                    }

                    mFadeEnabled       = enabled;
                    mFadeVisibleDist   = visibleDist;
                    mFadeInvisibleDist = invisbleDist;
                }
                else
                {
                    if (mFadeEnabled)
                    {
                        //Update material reference list
                        Debug.Assert(mFadeMaterial != null);
                        Debug.Assert(mMaterial != null);
                        SBMaterialRef.RemoveMaterialRef(mFadeMaterial);
                        SBMaterialRef.AddMaterialRef(mMaterial, mBBOrigin);
                        //Apply material to entity
                        if (mEntity != null)
                        {
                            mEntity.MaterialName = mFadeMaterial.Name;
                        }

                        mFadeEnabled       = enabled;
                        mFadeVisibleDist   = visibleDist;
                        mFadeInvisibleDist = invisbleDist;
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="matP"></param>
        public static void RemoveMaterialRef(Material matP)
        {
            SBMaterialRef matRef = null;

            if (mSelfList.TryGetValue(matP, out matRef))
            {
                if (--matRef.mRefCount == 0)
                {
                    mSelfList.Remove(matRef.Material);
                }
            }
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="matP"></param>
        /// <param name="origin"></param>
        public static void AddMaterialRef(Material matP, BillboardOrigin origin)
        {
            Material      mat    = matP;
            SBMaterialRef matRef = null;

            if (!mSelfList.TryGetValue(mat, out matRef))
            {
                matRef = new SBMaterialRef(mat, origin);
            }
            else
            {
                //its allready there, increase the refcount
                matRef.mRefCount++;
            }
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="matP"></param>
 /// <param name="origin"></param>
 public static void AddMaterialRef(Material matP, BillboardOrigin origin)
 {
     Material mat = matP;
     SBMaterialRef matRef = null;
     if (!mSelfList.TryGetValue(mat, out matRef))
     {
         matRef = new SBMaterialRef(mat, origin);
     }
     else
     {
         //its allready there, increase the refcount
         matRef.mRefCount++;
     }
 }