Skip to content
GitLab
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    Projects Groups Topics Snippets
  • Register
  • Sign in
  • openmw openmw
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 831
    • Issues 831
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 32
    • Merge requests 32
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenMWOpenMW
  • openmwopenmw
  • Issues
  • #5579
Closed
Open
Issue created Aug 13, 2020 by Evil Eye@AssumeruDeveloper

MCP SetAngle enhancement

From the MCP's readme:

Adds the U, V, W axes to the SetAngle command, which are mapped to X, Y, Z but applying a ZYX rotation axis order matching the rest of the engine, allowing scripted rotations to be saved and restored properly, as well as being able to use the original rotation of the object. Using UVW axes allows this option to be backwards compatible with item placement mods.

In vanilla Morrowind, the SetAngle script command uses an opposite rotation axis order (XYZ) to the rest of the game and Construction Set (ZYX). The original intention seems to allow animation of X and Y rotations while keeping the object 'facing' constant by applying Z rotation last. As this different order is only applied when the scripted SetAngle executes, but not on loading, rotations made by this command would then not be saved and restored in the correct order on load. It also meant that for an object that had not yet been rotated by a script, angles obtained from GetAngle would not recreate the same rotation when used with SetAngle. Mods had to work around the problem by continuously restoring rotations with a script. This only worked well if the initial placement of the object has zero X and Y rotation. With SetAngle UVW this continuous scripting overhead is no longer required.

When positioning existing items, it should be noted that the SetAngle command as well as the SetPos command does not set a reference as modified. Therefore, the changes will not be saved until you mark the reference as modified. The easiest way to do so is using the Enable command on the reference; this only needs to be called once per reference. If you are also modifying the position, you should use the SetAtStart command to save the current position as the default position; however this resets the rotation. To set both position and rotation you should therefore use SetPos, then SetAtStart, then SetAngle in order.

Using SetAngle U, V and W will compile in the Construction Set, but not in the current MWEdit script editor. If MWSE fuctions are required for your mod, delegate the SetAngle commands to a new script that can be compiled in the Construction Set.

Assignee
Assign to
Time tracking