public void Execute (ref ActorAttribute1 <_VelocityLevel> velocityLevel , ref ActorAttribute1 <_PowerLevel> powerLevel , ref ActorAttribute1 <_ShieldLevel> shieldLevel , [ReadOnly, ChangedFilter] ref ShipWeaponArray shipWeaponArray) { velocityLevel.value = 0f; shieldLevel.value = 0f; powerLevel.value = 0f; for (int i = 0; i < ShipWeaponArray.AssistWeaponMaxCount; ++i) { var assistWeapon = shipWeaponArray.GetAssistWeapon(i); if (assistWeapon == Entity.Null) { continue; } var w = weaponFromEntity[assistWeapon]; if (w.type == WeaponType.Velocity) { velocityLevel.value += 1f; } else if (w.type == WeaponType.Power) { powerLevel.value += 1f; } else if (w.type == WeaponType.Shield) { shieldLevel.value += 1f; } } }
public void Execute([ReadOnly] ref ShipPowers shipPowers, ref ActorAttribute3 <_Power> power, [ReadOnly, ChangedFilter] ref ActorAttribute1 <_PowerLevel> powerLevel) { var level = (int)powerLevel.value; var powerInfo = shipPowers.get(level); power.max = powerInfo.max; power.regain = powerInfo.regain; }
public void Execute(ref ControlForceDirection controlForceDirection, ref ShipForceControl shipForceControl, [ReadOnly] ref ShipControlInfo shipControlData, [ReadOnly] ref ShipMoveInput shipMoveInput, [ReadOnly] ref ActorAttribute1 <_VelocityLevel> shipVelocityLevel, [ReadOnly] ref Rotation rotation) { shipForceControl.moveDirection = float3.zero; if (shipMoveInput.lost) { shipForceControl.noControlTime = 0f; controlForceDirection.force = 0f; return; } var shipForward = math.forward(rotation.Value); var shipBack = -shipForward; var shipLeft = math.mul(rotation.Value, new float3(-1f, 0f, 0f)); var shipRight = -shipLeft; // var velocityLevel = (int)shipVelocityLevel.value; var velocity = shipControlData.getVelocity(velocityLevel); if (shipMoveInput.accelerate == false) { if (shipMoveInput.moveForward) { shipForceControl.moveDirection = shipForward * shipControlData.forwardScale; } else if (shipMoveInput.moveBack) { shipForceControl.moveDirection = shipBack * shipControlData.backScale; } if (shipMoveInput.moveLeft) { shipForceControl.moveDirection += shipLeft * shipControlData.leftRightScale; } else if (shipMoveInput.moveRight) { shipForceControl.moveDirection += shipRight * shipControlData.leftRightScale; } if ((shipMoveInput.moveForward || shipMoveInput.moveBack) && (shipMoveInput.moveLeft || shipMoveInput.moveRight)) { shipForceControl.moveDirection *= shipControlData.moveComboScale; } var force = velocity.force; if (shipForceControl.moveDirection.Equals(default))
public void Execute(ref ControlTorqueAngular controlTorqueAngular, ref ShipTorqueControl shipTorqueControl, [ReadOnly] ref ShipControlInfo shipControlData, [ReadOnly] ref ShipMoveInput shipMoveInput, [ReadOnly] ref ActorAttribute1 <_VelocityLevel> shipVelocity) { if (shipMoveInput.lost) { shipTorqueControl.noControlTorqueTime = 0f; controlTorqueAngular.torque = 0f; return; } var velocityLevel = (int)shipVelocity.value; //velocityLevel += 1; var velocity = shipControlData.getVelocity(velocityLevel); var torqueY = math.clamp(shipMoveInput.torqueY, -1f, 1f); //out controlTorqueAngular.torque = velocity.torque; if (torqueY != 0f) { shipTorqueControl.noControlTorqueTime = shipTorqueControl.noControlTorqueBeginTime; } else { controlTorqueAngular.torque *= shipTorqueControl.noControlTorqueTime; shipTorqueControl.noControlTorqueTime -= fixedDeltaTime; shipTorqueControl.noControlTorqueTime = math.clamp(shipTorqueControl.noControlTorqueTime, 0f, 1f); } controlTorqueAngular.maxTorque = velocity.maxTorque; controlTorqueAngular.angular = new float3 { y = torqueY }; }