示例#1
0
        public override void Initialize(FObjectInitializer initializer)
        {
            base.Initialize(initializer);

            if (baseMaterial.Value == null)
            {
                baseMaterial.Value = ConstructorHelpers.FObjectFinder <UMaterialInterface> .Find("Material'/Game/Puzzle/Meshes/BaseMaterial.BaseMaterial'");
            }
            if (blueMaterial.Value == null)
            {
                blueMaterial.Value = ConstructorHelpers.FObjectFinder <UMaterialInterface> .Find("MaterialInstanceConstant'/Game/Puzzle/Meshes/BlueMaterial.BlueMaterial'");
            }
            if (orangeMaterial.Value == null)
            {
                orangeMaterial.Value = ConstructorHelpers.FObjectFinder <UMaterialInterface> .Find("MaterialInstanceConstant'/Game/Puzzle/Meshes/OrangeMaterial.OrangeMaterial'");
            }

            UStaticMesh mesh = ConstructorHelpers.FObjectFinder <UStaticMesh> .Find("StaticMesh'/Game/Puzzle/Meshes/PuzzleCube.PuzzleCube'");

            if (mesh != null)
            {
                BlockMesh = initializer.CreateDefaultSubobject <UStaticMeshComponent>(this, new FName("BlockMesh"));
                BlockMesh.SetStaticMesh(mesh);
                BlockMesh.RelativeLocation = new FVector(0, 0, 25);
                BlockMesh.RelativeScale3D  = new FVector(1, 1, 0.25f);
                RootComponent = BlockMesh;

                if (blueMaterial.Value != null)
                {
                    BlockMesh.SetMaterial(0, blueMaterial.Value);
                }
            }
        }
        public override void OnConstruction(FTransform transform)
        {
            PrimaryActorTick.bCanEverTick = 1;

            var transformRules = new FAttachmentTransformRules(
                EAttachmentRule.SnapToTarget,
                EAttachmentRule.SnapToTarget,
                EAttachmentRule.SnapToTarget,
                false
                );

            _mesh = new UStaticMeshComponent(this, "mesh");
            _mesh.RegisterComponent();

            _mesh.AttachToComponent(GetRootComponent(), transformRules, "");

            _collider = new UBoxComponent(this, "collider");
            _collider.RegisterComponent();
            _collider.SetBoxExtent(new FVector(250, 250, 100), false);
            _collider.SetHiddenInGame(false);

            _collider.OnComponentBeginOverlap += Collider_OnComponentBeginOverlap;
            _collider.OnComponentEndOverlap   += Collider_OnComponentEndOverlap;

            _collider.AttachToComponent(_mesh, transformRules, "");
        }
示例#3
0
        protected override void BeginPlay()
        {
            var transformRules = new FAttachmentTransformRules(
                EAttachmentRule.SnapToTarget,
                EAttachmentRule.SnapToTarget,
                EAttachmentRule.SnapToTarget,
                false
                );

            _mesh = new UStaticMeshComponent(this, "mesh");
            _mesh.RegisterComponent();

            _mesh.AttachToComponent(GetRootComponent(), transformRules, "");

            _collider = new UBoxComponent(this, "collider");
            _collider.RegisterComponent();
            _collider.SetBoxExtent(new FVector(250, 250, 100), false);
            _collider.SetHiddenInGame(false);

            _collider.OnComponentBeginOverlap += Collider_OnComponentBeginOverlap;
            _collider.OnComponentEndOverlap   += Collider_OnComponentEndOverlap;

            _collider.AttachToComponent(_mesh, transformRules, "");
        }
 public void MyBeginPlayInitializer(UStaticMeshComponent _mymeshcomponent, UAudioComponent _myaudiosourcecomponent)
 {
     MyMeshComponent        = _mymeshcomponent;
     MyAudioSourceComponent = _myaudiosourcecomponent;
 }
示例#5
0
 public void MyBeginPlayInitializer(UStaticMeshComponent _collidermesh, UAudioComponent _uaudiocomponent)
 {
     MyColliderMeshComponent = _collidermesh;
     MyAudioSourceComponent  = _uaudiocomponent;
     MyBeginPlayPostInitialization();
 }
示例#6
0
        private void button13_Click(object sender, EventArgs e)
        {
            int             source    = refO.Level.UStat[refStat].LP.source;
            int             entry     = refO.Level.UStat[refStat].LP.sourceentry;
            int             parent    = refO.Level.UStat[refStat].index2;
            int             parentidx = refO.Level.UStat[refStat].index3;
            UPropertyReader UPR       = refO.Level.UPR;
            PCCFile         pcc       = refO.Level.pcc;
            UMath           math      = new UMath();

            if (source == 0)//Static Actor
            {
                UStaticMeshActor u = new UStaticMeshActor(pcc.EntryToBuff(entry), pcc.names);
                u.UPR = UPR;
                u.Deserialize();
                int ent = UPR.FindProperty("location", u.props);
                if (ent != -1)
                {
                    ent++;
                    int     off1 = (int)pcc.Export[entry].DataOffset;
                    int     off2 = u.props[ent].offset + u.props[ent].raw.Length - 12;
                    Vector3 v    = UPR.PropToVector3(u.props[ent].raw);
                    v += loc;
                    byte[] buff = BitConverter.GetBytes(v.X);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i] = buff[i];
                    }
                    buff = BitConverter.GetBytes(v.Y);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 4] = buff[i];
                    }
                    buff = BitConverter.GetBytes(v.Z);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 8] = buff[i];
                    }
                }
                ent = UPR.FindProperty("Rotator", u.props);
                if (ent != -1)
                {
                    int           off1 = (int)pcc.Export[entry].DataOffset;
                    int           off2 = u.props[ent].offset + u.props[ent].raw.Length - 12;
                    UMath.Rotator r    = math.PropToRotator(u.props[ent].raw);
                    UMath.Rotator r2   = math.IntVectorToRotator(rot);
                    r = r + r2;
                    byte[] buff = BitConverter.GetBytes(r.Pitch);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i] = buff[i];
                    }
                    buff = BitConverter.GetBytes(r.Roll);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 4] = buff[i];
                    }
                    buff = BitConverter.GetBytes(r.Yaw);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 8] = buff[i];
                    }
                }
            }
            if (source == 1)//Collection
            {
                UStaticMeshComponent       uc = refO.Level.UStatComp[parentidx];
                UStaticMeshCollectionActor u  = refO.Level.UStatColl[uc.index3];
                int ent = UPR.FindProperty("Scale3D", uc.props);
                if (ent != -1)
                {
                    Matrix  m  = current;
                    Vector3 v  = new Vector3(m.M41, m.M42, m.M43);
                    Vector3 v2 = UPR.PropToVector3(uc.props[ent + 1].raw);
                    v2.X    = 1 / v2.X;
                    v2.Y    = 1 / v2.Y;
                    v2.Z    = 1 / v2.Z;
                    m.M41   = 0;
                    m.M42   = 0;
                    m.M43   = 0;
                    m      *= Matrix.Scaling(v2);
                    m.M41   = v.X;
                    m.M42   = v.Y;
                    m.M43   = v.Z;
                    current = m;
                }
                int ent2 = uc.index2;
                if (ent2 != -1)
                {
                    int    off  = u.props[u.props.Count - 1].offset + u.props[u.props.Count - 1].raw.Length + (int)pcc.Export[entry].DataOffset + ent2 * 16 * 4;
                    byte[] buff = BitConverter.GetBytes(current.M11);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M12);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M13);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M14);
                    WriteMemory(off, buff); off += 4;

                    buff = BitConverter.GetBytes(current.M21);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M22);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M23);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M24);
                    WriteMemory(off, buff); off += 4;

                    buff = BitConverter.GetBytes(current.M31);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M32);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M33);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M34);
                    WriteMemory(off, buff); off += 4;

                    buff = BitConverter.GetBytes(current.M41);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M42);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M43);
                    WriteMemory(off, buff); off += 4;
                    buff = BitConverter.GetBytes(current.M44);
                    WriteMemory(off, buff); off += 4;
                }
            }
            if (source == 2)//Interp Actor
            {
                UInterpActor u = new UInterpActor(pcc.EntryToBuff(entry), pcc.names);
                u.UPR = UPR;
                u.Deserialize();
                int ent = UPR.FindProperty("location", u.props);
                if (ent != -1)
                {
                    ent++;
                    int     off1 = (int)pcc.Export[entry].DataOffset;
                    int     off2 = u.props[ent].offset + u.props[ent].raw.Length - 12;
                    Vector3 v    = UPR.PropToVector3(u.props[ent].raw);
                    v += loc;
                    byte[] buff = BitConverter.GetBytes(v.X);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i] = buff[i];
                    }
                    buff = BitConverter.GetBytes(v.Y);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 4] = buff[i];
                    }
                    buff = BitConverter.GetBytes(v.Z);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 8] = buff[i];
                    }
                }
                ent = UPR.FindProperty("Rotator", u.props);
                if (ent != -1)
                {
                    int           off1 = (int)pcc.Export[entry].DataOffset;
                    int           off2 = u.props[ent].offset + u.props[ent].raw.Length - 12;
                    UMath.Rotator r    = math.PropToRotator(u.props[ent].raw);
                    UMath.Rotator r2   = math.IntVectorToRotator(rot);
                    r = r + r2;
                    byte[] buff = BitConverter.GetBytes(r.Pitch);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i] = buff[i];
                    }
                    buff = BitConverter.GetBytes(r.Roll);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 4] = buff[i];
                    }
                    buff = BitConverter.GetBytes(r.Yaw);
                    for (int i = 0; i < 4; i++)
                    {
                        pcc.memory[off1 + off2 + i + 8] = buff[i];
                    }
                }
            }
        }