コード例 #1
0
        public void RenderPawnAt(Vector3 drawLoc, float angle, bool northSouthRotation)
        {
            if (!graphics.AllResolved)
            {
                graphics.ResolveAllGraphics();
            }

            RenderPawnInternal(drawLoc, angle, northSouthRotation);

            if (vehicle.def.race.specialShadowData != null)
            {
                if (shadowGraphic == null)
                {
                    shadowGraphic = new Graphic_Shadow(vehicle.def.race.specialShadowData);
                }
                shadowGraphic.Draw(drawLoc, Rot4.North, vehicle, 0f);
            }
            if (graphics.vehicle.VehicleGraphic != null && graphics.vehicle.VehicleGraphic.ShadowGraphic != null)
            {
                graphics.vehicle.VehicleGraphic.ShadowGraphic.Draw(drawLoc, Rot4.North, vehicle, 0f);
            }
            if (vehicle.Spawned && !vehicle.Dead)
            {
                //vehicle.stances.StanceTrackerDraw();
                vehicle.vPather.PatherDraw();
            }
        }
コード例 #2
0
        public void Launch(Thing launcher, Vector3 origin, LocalTargetInfo targ, Thing flyingThing, DamageInfo?newDamageInfo = null)
        {
            this.innerContainer = new ThingOwner <Thing>(this, false, LookMode.Deep);
            bool spawned = flyingThing.Spawned;

            this.pawn = (launcher as Pawn);
            bool flag = spawned;

            if (flag)
            {
                FieldInfo shadowgraphic = typeof(PawnRenderer).GetField("shadowGraphic", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                //    FieldInfo c2 = typeof(Thing).GetField("graphicInt", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
                Traverse   traverse = Traverse.Create(pawn.Drawer.renderer);
                ShadowData data     = new ShadowData();
                data.volume = Vector3.zero;
                Graphic_Shadow graphic = new Graphic_Shadow(data);
                shadowgraphic.SetValue(pawn.Drawer.renderer, graphic);
            }
            this.origin       = origin;
            this.impactDamage = newDamageInfo;
            this.flyingThing  = flyingThing;
            bool flag2 = targ.Thing != null;
            bool flag3 = flag2;

            if (flag3)
            {
                //    Log.Message("Has Target aat launch");
                this.assignedTarget = targ.Thing;
            }
            this.destination   = targ.Cell.ToVector3Shifted();
            this.ticksToImpact = this.StartingTicksToImpact;
            this.Initialize();
        }
コード例 #3
0
        public void MakeInvisible()
        {
            oldGraphics = pawn.Drawer.renderer.graphics;
            oldShadow   = GetShadowGraphic(pawn.Drawer.renderer);
            pawn.Drawer.renderer.graphics = new PawnGraphicSet_Invisible(pawn);
            ShadowData shadowData = new ShadowData
            {
                volume = new Vector3(0, 0, 0),
                offset = new Vector3(0, 0, 0)
            };

            SetShadowGraphic(pawn.Drawer.renderer, new Graphic_Shadow(shadowData));
            pawn.stances.CancelBusyStanceHard();
            if (lastCarried != null && lastCarried == pawn.carryTracker.CarriedThing)
            {
                lastCarriedGraphic = pawn.carryTracker.CarriedThing.Graphic;
                SetGraphicInt(pawn.carryTracker.CarriedThing, new Graphic_Invisible());
            }
            if (Find.Selector.SelectedObjects.Contains(pawn))
            {
                Find.Selector.SelectedObjects.Remove(pawn);
            }
            if (!PlayerKnowledgeDatabase.IsComplete(XenomorphConceptDefOf.RRY_Concept_Chestbursters))
            {
                LessonAutoActivator.TeachOpportunity(XenomorphConceptDefOf.RRY_Concept_Chestbursters, OpportunityType.Important);
            }
        }
コード例 #4
0
 public void SetShadowGraphic(PawnRenderer _this, Graphic_Shadow newValue)
 {
     if (_shadowGraphic == null)
     {
         _shadowGraphic = typeof(PawnRenderer).GetField("shadowGraphic", BindingFlags.Instance | BindingFlags.NonPublic);
         if (_shadowGraphic == null)
         {
             Log.ErrorOnce("Unable to reflect PawnRenderer.shadowGraphic!", 0x12348765);
         }
     }
     _shadowGraphic.SetValue(_this, newValue);
 }
コード例 #5
0
        public override void DrawAt(Vector3 drawLoc)
        {
            if (!Spawned)
            {
                base.DrawAt(drawLoc);
                return;
            }

            wheelLoc = drawLoc;
            bodyLoc  = drawLoc;
            //Vertical
            if (Rotation.AsInt % 2 == 0)
            {
                wheelLoc.y = Altitudes.AltitudeFor(AltitudeLayer.Item) + 0.02f;
            }

            //horizontal
            if (axlesComp.HasAxles() && Rotation.AsInt % 2 == 1)
            {
                wheelLoc.y = Altitudes.AltitudeFor(AltitudeLayer.Pawn) + 0.04f;
                bodyLoc.y  = Altitudes.AltitudeFor(AltitudeLayer.Pawn) + 0.03f;

                Vector2    drawSize = def.graphic.drawSize;
                int        num      = Rotation == Rot4.West ? -1 : 1;
                Vector3    vector3  = new Vector3(1f * drawSize.x, 1f, 1f * drawSize.y);
                Quaternion asQuat   = Rotation.AsQuat;
                float      x        = 1f * Mathf.Sin(num * (wheelRotation * 0.05f) % (2 * Mathf.PI));
                float      z        = 1f * Mathf.Cos(num * (wheelRotation * 0.05f) % (2 * Mathf.PI));

                asQuat.SetLookRotation(new Vector3(x, 0f, z), Vector3.up);

                wheel_shake = (float)((Math.Sin(tick_time) + Math.Abs(Math.Sin(tick_time))) / 40.0);

                wheelLoc.z = wheelLoc.z + wheel_shake;

                Vector3 mountThingLoc = drawLoc;
                mountThingLoc.y = Altitudes.AltitudeFor(AltitudeLayer.Pawn) + 0.06f;
                Vector3 mountThingOffset = new Vector3(0, 0, 1).RotatedBy(Rotation.AsAngle);

                List <Vector3> list;
                if (axlesComp.GetAxleLocations(drawSize, num, out list))
                {
                    foreach (Vector3 current in list)
                    {
                        Matrix4x4 matrix = default(Matrix4x4);
                        matrix.SetTRS(wheelLoc + current, asQuat, vector3);
                        Graphics.DrawMesh(MeshPool.plane10, matrix, graphic_Wheel_Single.MatAt(Rotation), 0);
                    }
                }
            }
            base.DrawAt(bodyLoc);

            if (vehicleComp.compProps.specialShadowData != null)
            {
                if (shadowGraphic == null)
                {
                    shadowGraphic = new Graphic_Shadow(vehicleComp.compProps.specialShadowData);
                }
                shadowGraphic.Draw(drawLoc, Rot4.North, this);
            }
        }