public unsafe void DroneMovement(FixedUpdateEvent e, DroneNode drone) { DroneOwnerComponent droneOwner = drone.droneOwner; Rigidbody body = drone.rigidbody.Rigidbody; DroneMoveConfigComponent droneMoveConfig = drone.droneMoveConfig; if (droneOwner.Incarnation.Alive && droneOwner.Rigidbody) { this.ApplyMovingForce(body, droneMoveConfig, droneOwner); } Rigidbody rigidbody = drone.rigidbody.Rigidbody; this.ApplyStabilization(rigidbody); Rigidbody rigidbody3 = null; if (drone.Entity.HasComponent <UnitTargetComponent>()) { Entity target = drone.Entity.GetComponent <UnitTargetComponent>().Target; if (target.HasComponent <RigidbodyComponent>()) { rigidbody3 = target.GetComponent <RigidbodyComponent>().Rigidbody; } } if (rigidbody3 != null) { Vector3 position = rigidbody3.position; Vector3 *vectorPtr1 = &position; vectorPtr1->y += 0.5f; this.ApplyTargetingForce(rigidbody, (position - rigidbody.position).normalized); } else if (droneOwner.Incarnation.Alive && droneOwner.Rigidbody) { this.ApplyTargetingForce(rigidbody, (droneOwner.Rigidbody.transform.forward - (Vector3.up * 0.5f)).normalized); } }
public void InitDroneWeapon(NodeAddedEvent e, [Combine] DroneNode drone, [JoinByUnit] SingleNode <WeaponComponent> weapon, [JoinAll, Context] SingleNode <MapInstanceComponent> map) { MuzzlePointMarkerComponent componentInChildren = drone.rigidbody.Rigidbody.GetComponentInChildren <MuzzlePointMarkerComponent>(); componentInChildren.gameObject.GetComponent <EntityBehaviour>().BuildEntity(weapon.Entity); weapon.Entity.AddComponent(new WeaponInstanceComponent(componentInChildren.gameObject)); weapon.Entity.AddComponent(new TargetCollectorComponent(new TargetCollector(drone.Entity), new TargetValidator(drone.Entity))); }