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;
                    }
                }
            }
Example #2
0
            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;
            }
Example #3
0
            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))
Example #4
0
            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
                };
            }