ALEXdaMIX Posted October 30, 2016 Share Posted October 30, 2016 I been trying to load maps using cleo but they get messed up because of the rotation. Here are the lines i got from the ipl file 15100, driftkorea1, 0, 1590.167, 322.83, 227.03, 0, 0, 0.64278715796, 0.766044822162, -115101, driftkorea2, 0, 1881.409, 266.66, 128.531, 0, 0, 0.64278715796, 0.766044822162, -115102, driftkorea3, 0, 2068.24, 449.09, 37.0, 0, 0, 0.64278715796, 0.766044822162, -1 and heres the part of the script where i try to apply the coords/rot from the ipl file [email protected] = [email protected] = [email protected] = [email protected] = 0.7660448221620107: [email protected] = create_object 15100 at 1590.167 322.83 227.0307C4: set_object [email protected] axis_angle_relation_to [email protected] [email protected] [email protected] [email protected]: [email protected] = create_object 15101 at 1881.409 266.66 128.53107C4: set_object [email protected] axis_angle_relation_to [email protected] [email protected] [email protected] [email protected]: [email protected] = create_object 15102 at 2068.24 449.09 37.007C4: set_object [email protected] axis_angle_relation_to [email protected] [email protected] [email protected] [email protected] I tired multiple methods.. for example converting the rotation from quaternions to degrees to get the z angle of the object but that doesnt work either. The map pieces are still messed up.. Any tips would be greatly appreciated.. thanks Link to comment Share on other sites More sharing options...
ZAZ Posted October 31, 2016 Share Posted October 31, 2016 convert quaternions to x,y,z float and use this 0453: object [email protected] set_rotation [email protected] [email protected] [email protected] but loading map by cleo isn't a good idea, maybe some houses or roads, it eats performance keep it up with your progress CLEO MODS CLEO Script Tutorial Link to comment Share on other sites More sharing options...
Wesser Posted November 12, 2016 Share Posted November 12, 2016 (edited) CFileLoader::LoadObjectInstance (0x00538090) calls CMatrix::SetRotate (0x0059BBF0) and so does SET_*_QUATERNION command with CQuaternion::Get (0x0059C080), which is a perfectly equivalent function. Nonetheless, the results discordance is closely linked to the negation of the quaternion XYZ components the game performs internally before applying changes to the rotation matrix, what you should do manually script-wise. EDIT: Interestingly, the third field of an IPL object instance is actually a bit field: class CFileObjectInstance{public: CVector m_vPosition; CQuaternion m_qRotation; int m_iModelIndex; union { struct { // CFileObjectInstanceType unsigned int m_ucAreaCode : 8; unsigned int m_bRedundantStream : 1; unsigned int m_bDontStream : 1; // Merely assumed, no countercheck possible. unsigned int m_bUnderwater : 1; unsigned int m_bTunnel : 1; unsigned int m_bTunnelTransition : 1; unsigned int m_nReserved : 19; }; unsigned int m_uiInstanceType; }; int m_iLodInstanceId;}; Edited November 12, 2016 by Wesser 012 345 678 9A BCD EFG HIJK LMN OPQR STUV WX YZ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now