Ejemplo n.º 1
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.IgnoreDaggerCollisions();
     dagger.SetPhysics(0, 0.999f);
     dagger.CreateJoint();
 }
Ejemplo n.º 2
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.CreateJoint();
     dagger.IgnoreDaggerCollisions();
     dagger.SetPhysics(0);
     Catalog.GetData <EffectData>("DaggerSnickFX").Spawn(dagger.transform).Play();
 }
Ejemplo n.º 3
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.item.rb.velocity = Vector3.zero;
     dagger.SetPhysics(0);
     dagger.rb.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;
     dagger.rb.isKinematic            = true;
 }
Ejemplo n.º 4
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.Depenetrate();
     dagger.IgnoreDaggerCollisions();
     dagger.SetPhysics(0);
     dagger.CreateJoint();
     dagger.item.mainCollisionHandler.OnCollisionStartEvent += CollisionEvent;
 }
Ejemplo n.º 5
0
 public virtual void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     if (dagger == null)
     {
         return;
     }
     this.controller = controller;
     this.dagger     = dagger;
     enterTime       = Time.time;
 }
Ejemplo n.º 6
0
 public override void Load(SpellCaster spellCaster)
 {
     base.Load(spellCaster);
     hasSpawnedDagger  = false;
     isSpawningHandle  = false;
     controller        = spellCaster.mana.gameObject.GetOrAddComponent <DaggerController>();
     controller.itemId = itemId;
     controller.daggersOrbitWhenIdle = daggersOrbitWhenIdle;
     isCasting = false;
 }
Ejemplo n.º 7
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.item.GetMainHandle(Side.Left).SetTouch(false);
     dagger.item.GetMainHandle(Side.Right).SetTouch(false);
     dagger.SetPhysics(0);
     dagger.DisableCollisions();
     dagger.IgnoreDaggerCollisions();
     dagger.CreateJoint();
 }
Ejemplo n.º 8
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     whooshEffect = Catalog.GetData <EffectData>("ClawsWhoosh").Spawn(dagger.transform);
     whooshEffect.Play();
     dagger.SetPhysics(0);
     dagger.CreateJoint();
     dagger.IgnoreDaggerCollisions();
     dagger.item.mainCollisionHandler.OnCollisionStartEvent += CollisionEvent;
 }
Ejemplo n.º 9
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     dagger.transform.parent = null;
     if (dagger.joint)
     {
         dagger.DeleteJoint();
     }
     dagger.item.mainCollisionHandler.RemovePhysicModifier(this);
     dagger.IgnoreDaggerCollisions();
     dagger.item.IgnoreRagdollCollision(Player.currentCreature.ragdoll);
     dagger.item.mainCollisionHandler.SetPhysicModifier(this, 2, 0);
 }
Ejemplo n.º 10
0
        public override void Enter(DaggerBehaviour dagger, DaggerController controller)
        {
            base.Enter(dagger, controller);
            startedTracking = false;
            dagger.SetPhysics(0);
            float modifier = 1;

            if (dagger.rb.mass < 1)
            {
                modifier *= dagger.rb.mass;
            }
            else
            {
                modifier *= dagger.rb.mass * Mathf.Clamp(dagger.rb.drag, 1, 2);
            }
            dagger.rb.AddForce(Vector3.up * 30f * modifier, ForceMode.Acceleration);
        }
Ejemplo n.º 11
0
 public void Start()
 {
     item = GetComponent <Item>();
     rb   = item.rb;
     //item.mainCollisionHandler.damagers.ForEach(damager => damager.penetrationExitOnMaxDepth = true);
     controller = Player.currentCreature.mana.gameObject.GetComponent <DaggerController>();
     Catalog.GetData <EffectData>("SlingshotGrabPoint").Spawn(transform).Play();
     trailEffect = Catalog.GetData <EffectData>("ShiftTrail").Spawn(transform);
     trailEffect.SetIntensity(0);
     trailEffect.Play();
     item.OnSnapEvent += holder => {
         // item.lastHandler?.ClearTouch();
         // item.lastHandler = null;
         IntoState <DefaultState>();
         if (item.transform.parent.GetComponentsInChildren <Item>() is Item[] items && items.Count() > 1)
         {
             var slotToUse = holder.slots.FirstOrDefault(slot => slot.GetComponentsInChildren <Item>().Count() == 0);
             if (slotToUse == null)
             {
                 return;
             }
             var holderPoint = item.GetHolderPoint(holder.data.targetAnchor);
             item.transform.MoveAlign(holderPoint.anchor, slotToUse.transform, slotToUse.transform);
         }
         if (holder.GetComponentInParent <Item>() is Item holderItem)
         {
             item.IgnoreObjectCollision(holderItem);
         }
     };
     item.OnUnSnapEvent += holder => {
         if (holder.GetComponentInParent <Item>() is Item holderItem)
         {
             item.IgnoreObjectCollision(holderItem);
             item.RunNextFrame(() => item.IgnoreObjectCollision(holderItem));
         }
     };
     item.OnTelekinesisGrabEvent += (handle, grabber) => {
         if (!state.Grabbable())
         {
             IntoState <DefaultState>();
         }
     };
     item.OnGrabEvent += (handle, hand) => {
         IntoState <DefaultState>();
         foreach (var collider in hand.colliderGroup.colliders)
         {
             foreach (var group in item.colliderGroups)
             {
                 foreach (var otherCollider in group.colliders)
                 {
                     Physics.IgnoreCollision(collider, otherCollider);
                 }
             }
         }
         controller.RunAfter(() => {
             if (hand.caster?.spellInstance is SpellCastCharge spell)
             {
                 spell.imbueEnabled = true;
             }
         }, 0.5f);
     };
     item.OnUngrabEvent += (handle, hand, throwing) => {
         var velocity = Player.local.transform.rotation * PlayerControl.GetHand(hand.side).GetHandVelocity();
         if (throwing && velocity.magnitude > 3)
         {
             lastNoOrbitTime = Time.time;
             IntoState <DefaultState>();
         }
     };
     pidController = new PIDRigidbodyHelper(rb, 5, 1);
     if (state == null)
     {
         IntoState <DefaultState>();
     }
 }
Ejemplo n.º 12
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller) {
     base.Enter(dagger, controller);
     gatherable = true;
 }
Ejemplo n.º 13
0
 public override void Enter(DaggerBehaviour dagger, DaggerController controller)
 {
     base.Enter(dagger, controller);
     trapEffect = Catalog.GetData <EffectData>("DaggerFloatFX").Spawn(dagger.transform.position, dagger.transform.rotation);
     dagger.SetPhysics(0);
 }
Ejemplo n.º 14
0
 public override void Load(Mana mana)
 {
     base.Load(mana);
     controller = Player.currentCreature.mana.gameObject.GetComponent <DaggerController>();
 }