|
- using System;
- using Svelto.ECS;
- //using Svelto.Context;
- using Unity.Mathematics;
- using RobocraftX.Character.Camera;
- using RobocraftX.Character.Factories;
-
- using GamecraftModdingAPI.Commands;
-
- namespace ExtraCommands.Basics
- {
- [CustomCommand("Rotation")]
- class RotatePlayerCommandEngine : ICustomCommandEngine
- {
- public string Description => "Rotation";
-
- public string Name => "Rotation commands";
-
- public EntitiesDB entitiesDB { set; private get; }
-
- public bool isRemovable => true;
-
- public void Ready()
- {
- CommandRegistrationHelper.Register<float, float>("RotateAbsolute", RotateAbsoluteCommand, "Rotate the player camera to the entered rotation");
- CommandRegistrationHelper.Register<float, float>("RotateRelative", RotateRelativeCommand, "Rotate the player camera by the entered rotation");
- }
-
-
- private void RotateAbsoluteCommand(float vertical, float horizontal)
- {
-
- EntityCollection<CharacterCameraEntityStruct> cameras = entitiesDB.QueryEntities<CharacterCameraEntityStruct>(CameraExclusiveGroups.VisualCameraGroup);
- uint count = cameras.count;
- int num2 = 0;
- while ((long)num2 < (long)((ulong)count))
- {
- cameras[num2].eulerRotation.x = vertical;
- cameras[num2].eulerRotation.y = horizontal;
- // TODO: Multiplayer compatibility
- /*
- uint num3;
- InputEntityStruct[] array;
- if (this.entitiesDB.TryQueryEntitiesAndIndex<InputEntityStruct>(item2[num2].ID.entityID, PlayersExclusiveGroups.LocalPlayers, out num3, out array))
- {
- desiredDistance = math.clamp(desiredDistance, 0f, item[num2].maxDistance);
- array[(int)num3].cameraZoomFactor = math.unlerp(item[num2].minDistance, item[num2].maxDistance, desiredDistance);
- }
- */
- num2++;
- }
- }
-
- private void RotateRelativeCommand(float vertical, float horizontal)
- {
- float2 angleDelta = new float2(vertical, horizontal);
- EntityCollection<CharacterCameraSettingsEntityStruct, CharacterCameraEntityStruct> tuple = entitiesDB.QueryEntities<CharacterCameraSettingsEntityStruct, CharacterCameraEntityStruct>(CameraExclusiveGroups.VisualCameraGroup);
- uint count = tuple.count;
- EntityCollection<CharacterCameraSettingsEntityStruct> settings = tuple.Item1;
- EntityCollection<CharacterCameraEntityStruct> cameras = tuple.Item2;
- int num2 = 0;
- while ((long)num2 < (long)((ulong)count))
- {
- CharacterCameraMovementUtility.UpdateCameraRotationFromDelta(ref cameras[num2], in settings[num2], angleDelta);
- // TODO: Multiplayer compatibility
- /*
- uint num3;
- InputEntityStruct[] array;
- if (this.entitiesDB.TryQueryEntitiesAndIndex<InputEntityStruct>(item2[num2].ID.entityID, PlayersExclusiveGroups.LocalPlayers, out num3, out array))
- {
- desiredDistance = math.clamp(desiredDistance, 0f, item[num2].maxDistance);
- array[(int)num3].cameraZoomFactor = math.unlerp(item[num2].minDistance, item[num2].maxDistance, desiredDistance);
- }
- */
- num2++;
- }
- }
-
- public void Dispose()
- {
- CommandRegistrationHelper.Unregister("RotateAbsolute");
- CommandRegistrationHelper.Unregister("RotateRelative");
- }
- }
- }
|