/[Sims3RigEditor]/trunk/gr2lib_cpp/gr2lib_rigeditor_frm.h
ViewVC logotype

Diff of /trunk/gr2lib_cpp/gr2lib_rigeditor_frm.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 71 by william, Sat Aug 14 08:06:32 2010 UTC revision 74 by william, Sat Aug 14 10:47:15 2010 UTC
# Line 325  private: Line 325  private:
325                  Textures_ToManaged(_grn_file->GrannyFileInfo->Textures,_grn_file->GrannyFileInfo->TextureCount);                  Textures_ToManaged(_grn_file->GrannyFileInfo->Textures,_grn_file->GrannyFileInfo->TextureCount);
326                  // Material List                  // Material List
327                  Materials_ToManaged(_grn_file->GrannyFileInfo->Materials,_grn_file->GrannyFileInfo->MaterialCount);                  Materials_ToManaged(_grn_file->GrannyFileInfo->Materials,_grn_file->GrannyFileInfo->MaterialCount);
328                    // Skeleton List
329                    Skeletons_ToManaged(_grn_file->GrannyFileInfo->Skeletons, _grn_file->GrannyFileInfo->SkeletonCount);
330          }          }
331          void ConvertToNative()          void ConvertToNative()
332          {          {
# Line 336  private: Line 338  private:
338                  Textures_ToNative();                  Textures_ToNative();
339                  // Material List                  // Material List
340                  Materials_ToNative();                  Materials_ToNative();
341                    // Skeleton List
342                    Skeletons_ToNative();
343          }          }
344  #pragma endregion  #pragma endregion
345  #pragma region MarshalToMananaged  #pragma region MarshalToMananaged
# Line 484  private: Line 488  private:
488                  }                  }
489          }          }
490  #pragma endregion  #pragma endregion
491    #pragma region Skeletons_ToManaged
492            void Skeletons_ToManaged(granny_skeleton** toolinfo, granny_int32 SkeletonCount)
493            {
494                    if (toolinfo != NULL)
495                    {
496                            GR2LibPropertyWrapper->Skeletons = gcnew List<Skeleton^>();
497                            for(int i=0;i<SkeletonCount;i++)
498                            {
499                                    Skeleton^ s = gcnew Skeleton();
500                                    s->Name = gcnew String(reinterpret_cast<const char*>(toolinfo[i]->Name));
501                                    s->LODType = toolinfo[i]->LODType;
502                                    List<Bone^>^ bones = gcnew List<Bone^>();
503                                    for(int j=0;j<toolinfo[i]->BoneCount;j++)
504                                    {
505                                            Bone^ b = gcnew Bone();
506    
507                                            b->Name = gcnew String(reinterpret_cast<const char*>(toolinfo[i]->Bones[j].Name));
508                                            b->ParentIndex = toolinfo[i]->Bones[j].ParentIndex;
509    
510                                            Transform^ _transform = gcnew Transform();
511                                            Matrix44^ _matrix44 = gcnew Matrix44(_transform->Matrix);                              
512    
513                                            _transform->Dimensions = toolinfo[i]->Bones[j].LocalTransform.Flags;
514                                            _transform->Origin = *gcnew Vector3(
515                                                    toolinfo[i]->Bones[j].LocalTransform.Position[0],
516                                                    toolinfo[i]->Bones[j].LocalTransform.Position[1],
517                                                    toolinfo[i]->Bones[j].LocalTransform.Position[2]
518                                            );
519    
520                                            _transform->Rotation = *gcnew Quaternion(
521                                                    toolinfo[i]->Bones[j].LocalTransform.Orientation[0],
522                                                    toolinfo[i]->Bones[j].LocalTransform.Orientation[1],
523                                                    toolinfo[i]->Bones[j].LocalTransform.Orientation[2],
524                                                    toolinfo[i]->Bones[j].LocalTransform.Orientation[3]
525                                            );
526                                            _transform->Scale = *gcnew Matrix33
527                                                    (
528                                                    *gcnew Vector3(
529                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[0][0],
530                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[0][1],
531                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[0][2]),
532                                                    *gcnew Vector3(
533                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[1][0],
534                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[1][1],
535                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[1][2]),
536                                                    *gcnew Vector3(
537                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[2][0],
538                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[2][1],
539                                                    toolinfo[i]->Bones[j].LocalTransform.ScaleShear[2][2])
540                                                    );
541    
542                                            _matrix44->right = *gcnew Vector4(
543                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[0][0],
544                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[0][1],
545                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[0][2],
546                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[0][3]
547                                                                                                                    );
548                                                                                                                    
549                                            _matrix44->up = *gcnew Vector4(
550                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[1][0],
551                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[1][1],
552                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[1][2],
553                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[1][3]
554                                                                                                                    );
555                                                                                                                    
556                                            _matrix44->at = *gcnew Vector4(
557                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[2][0],
558                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[2][1],
559                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[2][2],
560                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[2][3]
561                                                                                                                    );
562                                                                                                                    
563                                            _matrix44->pos = *gcnew Vector4(
564                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[3][0],
565                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[3][1],
566                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[3][2],
567                                                                                                                    toolinfo[i]->Bones[j].InverseWorld4x4[3][3]
568                                                                                                                    );
569    
570                                            b->LocalTransform = _transform;
571                                            b->InverseWorld4x4 = *_matrix44;
572                                            b->LODError = toolinfo[i]->Bones[j].LODError;
573                                            b->ExtendedData = ExtendedData_ToManaged(toolinfo[i]->Bones[j].ExtendedData);
574                                            bones->Add(b);
575                                    }
576                                    s->Bones = bones;
577                                    GR2LibPropertyWrapper->Skeletons->Add(s);
578                            }
579                    }
580            }
581    #pragma endregion
582  #pragma endregion  #pragma endregion
583  #pragma region MarshalToNative  #pragma region MarshalToNative
584  #pragma region ArtToolInfo_ToNative  #pragma region ArtToolInfo_ToNative
# Line 595  private: Line 690  private:
690                  }                  }
691          }          }
692  #pragma endregion  #pragma endregion
693    #pragma region Skeletons_ToNative
694            void Skeletons_ToNative()
695            {
696                    _grn_file->GrannyFileInfo->SkeletonCount = GR2LibPropertyWrapper->Skeletons->Count;
697                    for(int i=0;i<_grn_file->GrannyFileInfo->SkeletonCount;i++)
698                    {
699                            _grn_file->GrannyFileInfo->Skeletons[i]->Name = (char*)Marshal::StringToHGlobalAnsi(GR2LibPropertyWrapper->Skeletons[i]->Name).ToPointer();
700                            _grn_file->GrannyFileInfo->Skeletons[i]->LODType = GR2LibPropertyWrapper->Skeletons[i]->LODType;
701                            _grn_file->GrannyFileInfo->Skeletons[i]->BoneCount = GR2LibPropertyWrapper->Skeletons[i]->Bones->Count;
702                            for(int j=0;j<_grn_file->GrannyFileInfo->Skeletons[i]->BoneCount;j++)
703                            {
704                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].Name = (char*)Marshal::StringToHGlobalAnsi(GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->Name).ToPointer();
705                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].ParentIndex = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->ParentIndex;
706                                    
707                                    // Update LocalTransform
708                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Flags = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Dimensions;
709    
710                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Position[0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Origin.x;
711                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Position[1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Origin.y;
712                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Position[2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Origin.z;                        
713                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Orientation[0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Rotation.v.x;
714                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Orientation[1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Rotation.v.y;
715                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Orientation[2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Rotation.v.z;
716                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.Orientation[3] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Rotation.n;                            
717                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[0][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.right.x;
718                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[0][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.right.y;
719                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[0][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.right.z;
720                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[1][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.up.x;
721                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[1][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.up.y;
722                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[1][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.up.z;
723                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[2][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.at.x;
724                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[2][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.at.y;
725                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LocalTransform.ScaleShear[2][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LocalTransform->Scale.at.z;
726                                    // Update InverseWorld4x4
727                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[0][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.right.x;
728                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[0][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.right.y;
729                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[0][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.right.z;
730                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[0][3] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.right.w;
731                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[1][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.up.x;
732                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[1][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.up.y;
733                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[1][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.up.z;
734                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[1][3] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.up.w;
735                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[2][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.at.x;
736                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[2][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.at.y;
737                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[2][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.at.z;
738                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[2][3] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.at.w;
739                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[3][0] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.pos.x;
740                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[3][1] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.pos.y;
741                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[3][2] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.pos.z;
742                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].InverseWorld4x4[3][3] = GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->InverseWorld4x4.pos.w;
743    
744                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].LODError =  GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->LODError;
745                                    _grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].ExtendedData = ExtendedData_ToNative( GR2LibPropertyWrapper->Skeletons[i]->Bones[j]->ExtendedData,_grn_file->GrannyFileInfo->Skeletons[i]->Bones[j].ExtendedData);
746                            }
747                    }
748            }
749    #pragma endregion
750  #pragma endregion  #pragma endregion
751  #pragma region ExtendedDataToManagedNative  #pragma region ExtendedDataToManagedNative
752  #pragma region ExtendedData_ToManaged  #pragma region ExtendedData_ToManaged

Legend:
Removed from v.71  
changed lines
  Added in v.74

  ViewVC Help
Powered by ViewVC 1.1.22