コード例 #1
0
        public override void DrawWorker(Vector3 loc, Rot4 rot, ThingDef thingDef, Thing thing, float extraRotation)
        {
            if (thingDef == null)
            {
                Log.ErrorOnce("Fire DrawWorker with null thingDef: " + loc, 3427324);
                return;
            }
            if (subGraphics == null)
            {
                Log.ErrorOnce("Graphic_Flicker has no subgraphics " + thingDef, 358773632);
                return;
            }
            int num = Find.TickManager.TicksGame;

            if (thing != null)
            {
                num += Mathf.Abs(thing.thingIDNumber ^ 0x80FD52);
            }
            int   num2 = num / 15;
            int   num3 = Mathf.Abs(num2 ^ ((thing?.thingIDNumber ?? 0) * 391)) % subGraphics.Length;
            float num4 = 1f;
            CompProperties_FireOverlay compProperties_FireOverlay = null;
            Fire fire = thing as Fire;

            if (fire != null)
            {
                num4 = fire.fireSize;
            }
            else if (thingDef != null)
            {
                compProperties_FireOverlay = thingDef.GetCompProperties <CompProperties_FireOverlay>();
                if (compProperties_FireOverlay != null)
                {
                    num4 = compProperties_FireOverlay.fireSize;
                }
            }
            if (num3 < 0 || num3 >= subGraphics.Length)
            {
                Log.ErrorOnce("Fire drawing out of range: " + num3, 7453435);
                num3 = 0;
            }
            Graphic graphic = subGraphics[num3];
            float   num5    = Mathf.Min(num4 / 1.2f, 1.2f);
            Vector3 a       = GenRadial.RadialPattern[num2 % GenRadial.RadialPattern.Length].ToVector3() / GenRadial.MaxRadialPatternRadius;

            a *= 0.05f;
            Vector3 pos = loc + a * num4;

            if (compProperties_FireOverlay != null)
            {
                pos += compProperties_FireOverlay.offset;
            }
            Vector3   s      = new Vector3(num5, 1f, num5);
            Matrix4x4 matrix = default(Matrix4x4);

            matrix.SetTRS(pos, Quaternion.identity, s);
            Graphics.DrawMesh(MeshPool.plane10, matrix, graphic.MatSingle, 0);
        }
コード例 #2
0
ファイル: GraphicClasses.cs プロジェクト: Plythios/RimVali
 public override void DrawWorker(
     Vector3 loc,
     Rot4 rot,
     ThingDef thingDef,
     Thing thing,
     float extraRotation)
 {
     if (thingDef == null)
     {
         Log.ErrorOnce("Fire DrawWorker with null thingDef: " + (object)loc, 3427324, false);
     }
     else if (this.subGraphics == null)
     {
         Log.ErrorOnce("Graphic_Flicker has no subgraphics " + (object)thingDef, 358773632, false);
     }
     else
     {
         int ticksGame = Find.TickManager.TicksGame;
         if (thing != null)
         {
             ticksGame += Mathf.Abs(thing.thingIDNumber ^ 8453458);
         }
         int   num1  = ticksGame / 15;
         int   index = Mathf.Abs(num1 ^ (thing != null ? thing.thingIDNumber : 0) * 391) % this.subGraphics.Length;
         float num2  = 1f;
         CompProperties_FireOverlay propertiesFireOverlay = (CompProperties_FireOverlay)null;
         if (thing is Fire fire)
         {
             num2 = fire.fireSize;
         }
         else if (thingDef != null)
         {
             propertiesFireOverlay = thingDef.GetCompProperties <CompProperties_FireOverlay>();
             if (propertiesFireOverlay != null)
             {
                 num2 = propertiesFireOverlay.fireSize;
             }
         }
         if (index < 0 || index >= this.subGraphics.Length)
         {
             Log.ErrorOnce("Fire drawing out of range: " + (object)index, 7453435, false);
             index = 0;
         }
         AvaliGraphic subGraphic = this.subGraphics[index];
         float        num3       = Mathf.Min(num2 / 1.2f, 1.2f);
         Vector3      vector3    = GenRadial.RadialPattern[num1 % GenRadial.RadialPattern.Length].ToVector3() / GenRadial.MaxRadialPatternRadius * 0.05f;
         Vector3      pos        = loc + vector3 * num2;
         if (propertiesFireOverlay != null)
         {
             pos += propertiesFireOverlay.offset;
         }
         Vector3   s      = new Vector3(num3, 1f, num3);
         Matrix4x4 matrix = new Matrix4x4();
         matrix.SetTRS(pos, Quaternion.identity, s);
         Graphics.DrawMesh(MeshPool.plane10, matrix, subGraphic.MatSingle, 0);
     }
 }