Welcome
Ladies and Gents:

These forums are now closed and registration disabled.

Please join us at our new forum on Proboards. Our hope is that these new forums are more stable, provide more and better features, and allow continuation of the project forums in a safer, more secure, long term environment.

me3explorer.proboards.com

--The ME3Explorer Team

WV | Property Dumper

Development board for ME3Explorer tools. Please try to keep discussions for each tool inside its own thread.

Re: Tool added for bruteforce dumping possible props

Postby WarrantyVoider » 07 Jan 2013, 19:21

Possible properties found for class "BlockingVolume":
Object Property : "Brush" first found: BioA_Cat002_050Shuttle.pcc #106
Object Property : "BrushComponent" first found: BioA_Cat002_050Shuttle.pcc #106
Struct Property : "location" first found: BioA_Cat002_050Shuttle.pcc #106
Name Property : "Tag" first found: BioA_Cat002_050Shuttle.pcc #106
Object Property : "CollisionComponent" first found: BioA_Cat002_050Shuttle.pcc #106
Unkown/None : "None" first found: BioA_Cat002_050Shuttle.pcc #106
Bool Property : "bBlockCamera" first found: BioA_Cat002_200Bridge.pcc #17
Bool Property : "bCanStepUpOn" first found: BioA_Cat002_200Bridge.pcc #17
Bool Property : "bPathColliding" first found: BioA_Cat002_200Bridge.pcc #17
Bool Property : "bCollideActors" first found: BioA_Cat003_700Desks.pcc #9
Bool Property : "bInclusionaryList" first found: BioA_Cat004_100HangarBay.pcc #5
Name Property : "Group" first found: BioA_CerJcb_500Landing.pcc #4
Struct Property : "PrePivot" first found: BioA_End001_220Street.pcc #95
Struct Property : "DrawScale3D" first found: BioA_Nor_420CargoHold.pcc #23
Array Property : "lstAffectedActors" first found: BioD_Cat002_120TurretEnemies.pcc #1094
Bool Property : "OverridePhysMat" first found: BioD_Gth001_150Entry.pcc #84
Bool Property : "bSafeFall" first found: BioD_Gth001_200Docking.pcc #344
Bool Property : "bHiddenEdGroup" first found: BioD_Kro002_550bridge.pcc #122
Bool Property : "bAllowFluidSurfaceInteraction" first found: BioD_ProEar.pcc #126
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: Tool added for bruteforce dumping possible props

Postby WarrantyVoider » 07 Jan 2013, 20:02

Possible properties found for class "InterpActor":
Object Property : "StaticMeshComponent" first found: BioA_Cat002_050Shuttle.pcc #178
Object Property : "LightEnvironment" first found: BioA_Cat002_050Shuttle.pcc #178
Struct Property : "location" first found: BioA_Cat002_050Shuttle.pcc #178
Struct Property : "Rotation" first found: BioA_Cat002_050Shuttle.pcc #178
Struct Property : "DrawScale3D" first found: BioA_Cat002_050Shuttle.pcc #178
Struct Property : "RelativeLocation" first found: BioA_Cat002_050Shuttle.pcc #178
Struct Property : "RelativeRotation" first found: BioA_Cat002_050Shuttle.pcc #178
Name Property : "Tag" first found: BioA_Cat002_050Shuttle.pcc #178
Float Property : "DrawScale" first found: BioA_Cat002_050Shuttle.pcc #178
Object Property : "CollisionComponent" first found: BioA_Cat002_050Shuttle.pcc #178
Bool Property : "bShadowParented" first found: BioA_Cat002_050Shuttle.pcc #178
Bool Property : "bCollideActors" first found: BioA_Cat002_050Shuttle.pcc #178
Unkown/None : "None" first found: BioA_Cat002_050Shuttle.pcc #178
Bool Property : "bHidden" first found: BioA_Cat002_600CathedralInt.pcc #29
Bool Property : "bPathColliding" first found: BioA_Cat002_600CathedralInt.pcc #77
Byte Property : "Physics" first found: BioA_Cat002_650CathedralFlr.pcc #19
Bool Property : "bCanStepUpOn" first found: BioA_Cat004_100HangarBay.pcc #648
Object Property : "Base" first found: BioA_CerJcb_000LevelTrans.pcc #484
Bool Property : "bHardAttach" first found: BioA_CerJcb_000LevelTrans.pcc #484
Float Property : "CreationTime" first found: BioA_CerJcb_000LevelTrans.pcc #493
Array Property : "Attached" first found: BioA_CerJcb_000LevelTrans.pcc #721
Name Property : "Group" first found: BioA_CitHub_000BSP.pcc #77
Struct Property : "PrePivot" first found: BioA_CitHub_000Docking.pcc #210
Name Property : "BaseBoneName" first found: BioA_End001_300ShuttleRide.pcc #489
Object Property : "BaseSkelComponent" first found: BioA_End001_300ShuttleRide.pcc #489
Float Property : "TickFrequencyAtEndDistance" first found: BioA_Gth001_BSP.pcc #166
Name Property : "UniqueTag" first found: BioA_MPNov_000_BG.pcc #48
Bool Property : "bStopOnEncroach" first found: BioA_MPTowr_200.pcc #439
Float Property : "NetUpdateFrequency" first found: BioA_Nor_100Cabin.pcc #220
Byte Property : "RemoteRole" first found: BioA_Nor_100Cabin.pcc #220
Bool Property : "bHiddenEdGroup" first found: BioA_Nor_210CIC.pcc #139
Bool Property : "bNoEncroachCheck" first found: BioD_Cat003_620FirstCar.pcc #2682
Bool Property : "bPawnCanBaseOn" first found: BioD_CerMir_450_1stFlrLift.pcc #40
Array Property : "Modules" first found: BioD_CerMir_650Factory2ndFlr.pcc #422
Bool Property : "bLockLocation" first found: BioD_CitSam_800Finalroom.pcc #2780
Bool Property : "bCollideComplex" first found: BioD_GthLeg_250Paths.pcc #209
Bool Property : "bBlockActors" first found: BioD_Kro002_300trucktalk.pcc #209
Struct Property : "RotationRate" first found: BioD_MPCer_100SP.pcc #3265
Bool Property : "bHiddenEd" first found: BioD_Nor_203bGalaxyMapObjs.pcc #26
Bool Property : "bBioSnapToBase" first found: BioD_ProMar_240ExteriorWalk.pcc #524
Bool Property : "bIgnoreBaseRotation" first found: BioD_ProMar_410SealedLabs.pcc #539
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

WV | Property Dumper

Postby WarrantyVoider » 07 Jan 2013, 20:21

Most of unreals classes consist purely of propertys, but to better work with it, we want to read the values in and represent them in C# terms. This is just an example and OPEN FOR DISCUSSION, also pretty expandable (I could now write such a class for the linked object classes, and instead showing only the index, that class can give me more treenodes I simply add). My problem is not that its hard, but alot to code... anyone who wanna help us can use this as a template and just customize it for the given class.

now first screenie how that will look like:

Image

this is taken from my Level class, which here just loops through its objects in list and tries to make such a treenode for its class. Its pretty short:
case "BlockingVolume":
BlockingVolume bvol = new BlockingVolume(pcc, index);
t.Nodes.Add(bvol.ToTree());
break;


well and now the actual class code:

Spoiler:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ME3Explorer.Unreal;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace ME3Explorer.Unreal.Classes
{
public class BlockingVolume
{
#region Unreal Props
//booleans
public bool bAllowFluidSurfaceInteraction = false;
public bool bBlockCamera = false;
public bool bCanStepUpOn = false;
public bool bCollideActors = false;
public bool bHiddenEdGroup = false;
public bool bInclusionaryList = false;
public bool bPathColliding = false;
public bool bSafeFall = false;
public bool OverridePhysMat = false;
//object index
public int Brush;
public int BrushComponent;
public int CollisionComponent;
//name index
public int Tag;
public int Group;
//structs
public Vector3 location;
public Vector3 DrawScale3D = new Vector3(1, 1, 1);
#endregion

public int MyIndex;
public PCCObject pcc;
public byte[] data;
public List<PropertyReader.Property> Props;

public BlockingVolume(PCCObject Pcc, int Index)
{
pcc = Pcc;
MyIndex = Index;
if (pcc.isExport(Index))
data = pcc.Exports[Index].Data;
Props = PropertyReader.getPropList(pcc, data);
BitConverter.IsLittleEndian = true;
Vector3 v;
Tag = -1;
Group = -1;
foreach (PropertyReader.Property p in Props)
switch (pcc.getNameEntry(p.Name))
{
case "bAllowFluidSurfaceInteraction":
if (p.raw[p.raw.Length - 1] == 1)
bAllowFluidSurfaceInteraction = true;
break;
case "bBlockCamera":
if (p.raw[p.raw.Length - 1] == 1)
bBlockCamera = true;
break;
case "bCanStepUpOn":
if (p.raw[p.raw.Length - 1] == 1)
bCanStepUpOn = true;
break;
case "bCollideActors":
if (p.raw[p.raw.Length - 1] == 1)
bCollideActors = true;
break;
case "bHiddenEdGroup":
if (p.raw[p.raw.Length - 1] == 1)
bHiddenEdGroup = true;
break;
case "bInclusionaryList":
if (p.raw[p.raw.Length - 1] == 1)
bInclusionaryList = true;
break;
case "bPathColliding":
if (p.raw[p.raw.Length - 1] == 1)
bPathColliding = true;
break;
case "bSafeFall":
if (p.raw[p.raw.Length - 1] == 1)
bSafeFall = true;
break;
case "OverridePhysMat":
if (p.raw[p.raw.Length - 1] == 1)
OverridePhysMat = true;
break;
case "Brush":
Brush = p.Value.IntValue;
break;
case "BrushComponent":
BrushComponent = p.Value.IntValue;
break;
case "CollisionComponent":
CollisionComponent = p.Value.IntValue;
break;
case "Tag":
Tag = p.Value.IntValue;
break;
case "Group":
Group = p.Value.IntValue;
break;
case "location":
v.X = BitConverter.ToSingle(p.raw, p.raw.Length - 12);
v.Y = BitConverter.ToSingle(p.raw, p.raw.Length - 8);
v.Z = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
location = v;
break;
case "DrawScale3D":
v.X = BitConverter.ToSingle(p.raw, p.raw.Length - 12);
v.Y = BitConverter.ToSingle(p.raw, p.raw.Length - 8);
v.Z = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
DrawScale3D = v;
break;
}
}

public TreeNode ToTree()
{
TreeNode res = new TreeNode(pcc.Exports[MyIndex].ObjectName + "(#" + MyIndex + ")");
res.Nodes.Add("bAllowFluidSurfaceInteraction : " + bAllowFluidSurfaceInteraction);
res.Nodes.Add("bBlockCamera : " + bBlockCamera);
res.Nodes.Add("bCanStepUpOn : " + bCanStepUpOn);
res.Nodes.Add("bCollideActors : " + bCollideActors);
res.Nodes.Add("bHiddenEdGroup : " + bHiddenEdGroup);
res.Nodes.Add("bInclusionaryList : " + bInclusionaryList);
res.Nodes.Add("bPathColliding : " + bPathColliding);
res.Nodes.Add("bSafeFall : " + bSafeFall);
res.Nodes.Add("OverridePhysMat : " + OverridePhysMat);
res.Nodes.Add("Brush : #" + Brush);
res.Nodes.Add("BrushComponent : #" + BrushComponent);
res.Nodes.Add("CollisionComponent : #" + CollisionComponent);
res.Nodes.Add("Tag : " + pcc.getNameEntry(Tag));
res.Nodes.Add("Group : " + pcc.getNameEntry(Group));
res.Nodes.Add("location : (" + location.X + "; " + location.Y + "; " + location.Z + ")");
res.Nodes.Add("DrawScale3D : (" + DrawScale3D.X + "; " + DrawScale3D.Y + "; " + DrawScale3D.Z + ")");
return res;
}

}
}


you can determine all possible properties with property dumper.

Any comments? Suggestions? Critic?

greetz WV
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: How to write code for unreal class property based

Postby WarrantyVoider » 10 Jan 2013, 14:07

Well lets take it a step further and autogenerate these with the property database! So here comes my ME3 SDK Generator. Here such an generated example class:

Spoiler:
//This class was generated by ME3Explorer
//Author: Warranty Voider
//URL: http://sourceforge.net/projects/me3explorer/
//URL: http://me3explorer.freeforums.org/
//URL: http://www.facebook.com/pages/Creating- ... 2408865659
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ME3Explorer.Unreal;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;

namespace ME3Explorer.Unreal.Classes
{
public class StaticMeshComponent
{
#region Unreal Props

//Byte Properties

public int LightMapEncoding;
public int RBChannel;
public int DepthPriorityGroup;
public int TickGroup;
//Bool Properties

public bool bIgnoreInstanceForTextureStreaming = false;
public bool CastShadow = false;
public bool CollideActors = false;
public bool BlockRigidBody = false;
public bool bForceDirectLightMap = false;
public bool bCastDynamicShadow = false;
public bool bAcceptsDynamicDominantLightShadows = false;
public bool bAcceptsLights = false;
public bool bAcceptsDynamicLights = false;
public bool bCullModulatedShadowOnBackfaces = false;
public bool bCullModulatedShadowOnEmissive = false;
public bool bAllowAmbientOcclusion = false;
public bool bUsePrecomputedShadows = false;
public bool CanBlockCamera = false;
public bool bAllowShadowFade = false;
public bool bBioIsReceivingDecals = false;
public bool BlockNonZeroExtent = false;
public bool bAcceptsStaticDecals = false;
public bool bAcceptsDynamicDecals = false;
public bool bAcceptsFoliage = false;
public bool HiddenGame = false;
public bool bBioForcePrecomputedShadows = false;
public bool bCastHiddenShadow = false;
public bool bUseAsOccluder = false;
public bool BlockZeroExtent = false;
public bool bAllowCullDistanceVolume = false;
public bool bAllowApproximateOcclusion = false;
public bool bSelfShadowOnly = false;
public bool OverridePhysMat = false;
public bool bUseOnePassLightingOnTranslucency = false;
public bool bLockLightingCache = false;
public bool bDisableAllRigidBody = false;
public bool BlockActors = false;
public bool bNotifyRigidBodyCollision = false;
public bool bIgnoreRadialImpulse = false;
public bool bIgnoreRadialForce = false;
public bool HiddenEditor = false;
//Object Properties

public int StaticMesh;
public int ReplacementPrimitive;
public int LightEnvironment;
public int ShadowParent;
public int PhysMaterialOverride;
//Float Properties

public float MaxDrawDistance;
public float CachedMaxDrawDistance;
public float MinDrawDistance;
public float AudioObstruction;
public float AudioOcclusion;
public float OverriddenLODMaxRange;
public float Scale;
public float MassiveLODDistance;
public float MotionBlurScale;
//Integer Properties

public int TranslucencySortPriority;
public int LocalTranslucencySortPriority;
public int ForcedLodModel;

#endregion

public int MyIndex;
public PCCObject pcc;
public byte[] data;
public List<PropertyReader.Property> Props;

public StaticMeshComponent (PCCObject Pcc, int Index)
{
pcc = Pcc;
MyIndex = Index;
if (pcc.isExport(Index))
data = pcc.Exports[Index].Data;
Props = PropertyReader.getPropList(pcc, data);
BitConverter.IsLittleEndian = true;
foreach (PropertyReader.Property p in Props)
switch (pcc.getNameEntry(p.Name))
{

case "LightMapEncoding":
LightMapEncoding = p.Value.IntValue;
break;
case "RBChannel":
RBChannel = p.Value.IntValue;
break;
case "DepthPriorityGroup":
DepthPriorityGroup = p.Value.IntValue;
break;
case "TickGroup":
TickGroup = p.Value.IntValue;
break;
case "bIgnoreInstanceForTextureStreaming":
if (p.raw[p.raw.Length - 1] == 1)
bIgnoreInstanceForTextureStreaming = true;
break;
case "CastShadow":
if (p.raw[p.raw.Length - 1] == 1)
CastShadow = true;
break;
case "CollideActors":
if (p.raw[p.raw.Length - 1] == 1)
CollideActors = true;
break;
case "BlockRigidBody":
if (p.raw[p.raw.Length - 1] == 1)
BlockRigidBody = true;
break;
case "bForceDirectLightMap":
if (p.raw[p.raw.Length - 1] == 1)
bForceDirectLightMap = true;
break;
case "bCastDynamicShadow":
if (p.raw[p.raw.Length - 1] == 1)
bCastDynamicShadow = true;
break;
case "bAcceptsDynamicDominantLightShadows":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsDynamicDominantLightShadows = true;
break;
case "bAcceptsLights":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsLights = true;
break;
case "bAcceptsDynamicLights":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsDynamicLights = true;
break;
case "bCullModulatedShadowOnBackfaces":
if (p.raw[p.raw.Length - 1] == 1)
bCullModulatedShadowOnBackfaces = true;
break;
case "bCullModulatedShadowOnEmissive":
if (p.raw[p.raw.Length - 1] == 1)
bCullModulatedShadowOnEmissive = true;
break;
case "bAllowAmbientOcclusion":
if (p.raw[p.raw.Length - 1] == 1)
bAllowAmbientOcclusion = true;
break;
case "bUsePrecomputedShadows":
if (p.raw[p.raw.Length - 1] == 1)
bUsePrecomputedShadows = true;
break;
case "CanBlockCamera":
if (p.raw[p.raw.Length - 1] == 1)
CanBlockCamera = true;
break;
case "bAllowShadowFade":
if (p.raw[p.raw.Length - 1] == 1)
bAllowShadowFade = true;
break;
case "bBioIsReceivingDecals":
if (p.raw[p.raw.Length - 1] == 1)
bBioIsReceivingDecals = true;
break;
case "BlockNonZeroExtent":
if (p.raw[p.raw.Length - 1] == 1)
BlockNonZeroExtent = true;
break;
case "bAcceptsStaticDecals":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsStaticDecals = true;
break;
case "bAcceptsDynamicDecals":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsDynamicDecals = true;
break;
case "bAcceptsFoliage":
if (p.raw[p.raw.Length - 1] == 1)
bAcceptsFoliage = true;
break;
case "HiddenGame":
if (p.raw[p.raw.Length - 1] == 1)
HiddenGame = true;
break;
case "bBioForcePrecomputedShadows":
if (p.raw[p.raw.Length - 1] == 1)
bBioForcePrecomputedShadows = true;
break;
case "bCastHiddenShadow":
if (p.raw[p.raw.Length - 1] == 1)
bCastHiddenShadow = true;
break;
case "bUseAsOccluder":
if (p.raw[p.raw.Length - 1] == 1)
bUseAsOccluder = true;
break;
case "BlockZeroExtent":
if (p.raw[p.raw.Length - 1] == 1)
BlockZeroExtent = true;
break;
case "bAllowCullDistanceVolume":
if (p.raw[p.raw.Length - 1] == 1)
bAllowCullDistanceVolume = true;
break;
case "bAllowApproximateOcclusion":
if (p.raw[p.raw.Length - 1] == 1)
bAllowApproximateOcclusion = true;
break;
case "bSelfShadowOnly":
if (p.raw[p.raw.Length - 1] == 1)
bSelfShadowOnly = true;
break;
case "OverridePhysMat":
if (p.raw[p.raw.Length - 1] == 1)
OverridePhysMat = true;
break;
case "bUseOnePassLightingOnTranslucency":
if (p.raw[p.raw.Length - 1] == 1)
bUseOnePassLightingOnTranslucency = true;
break;
case "bLockLightingCache":
if (p.raw[p.raw.Length - 1] == 1)
bLockLightingCache = true;
break;
case "bDisableAllRigidBody":
if (p.raw[p.raw.Length - 1] == 1)
bDisableAllRigidBody = true;
break;
case "BlockActors":
if (p.raw[p.raw.Length - 1] == 1)
BlockActors = true;
break;
case "bNotifyRigidBodyCollision":
if (p.raw[p.raw.Length - 1] == 1)
bNotifyRigidBodyCollision = true;
break;
case "bIgnoreRadialImpulse":
if (p.raw[p.raw.Length - 1] == 1)
bIgnoreRadialImpulse = true;
break;
case "bIgnoreRadialForce":
if (p.raw[p.raw.Length - 1] == 1)
bIgnoreRadialForce = true;
break;
case "HiddenEditor":
if (p.raw[p.raw.Length - 1] == 1)
HiddenEditor = true;
break;
case "StaticMesh":
StaticMesh = p.Value.IntValue;
break;
case "ReplacementPrimitive":
ReplacementPrimitive = p.Value.IntValue;
break;
case "LightEnvironment":
LightEnvironment = p.Value.IntValue;
break;
case "ShadowParent":
ShadowParent = p.Value.IntValue;
break;
case "PhysMaterialOverride":
PhysMaterialOverride = p.Value.IntValue;
break;
case "MaxDrawDistance":
MaxDrawDistance = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "CachedMaxDrawDistance":
CachedMaxDrawDistance = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "MinDrawDistance":
MinDrawDistance = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "AudioObstruction":
AudioObstruction = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "AudioOcclusion":
AudioOcclusion = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "OverriddenLODMaxRange":
OverriddenLODMaxRange = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "Scale":
Scale = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "MassiveLODDistance":
MassiveLODDistance = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "MotionBlurScale":
MotionBlurScale = BitConverter.ToSingle(p.raw, p.raw.Length - 4);
break;
case "TranslucencySortPriority":
TranslucencySortPriority = p.Value.IntValue;
break;
case "LocalTranslucencySortPriority":
LocalTranslucencySortPriority = p.Value.IntValue;
break;
case "ForcedLodModel":
ForcedLodModel = p.Value.IntValue;
break;
}
}

public TreeNode ToTree()
{
TreeNode res = new TreeNode(pcc.Exports[MyIndex].ObjectName + "(#" + MyIndex + ")");
res.Nodes.Add("LightMapEncoding : " + pcc.getNameEntry(LightMapEncoding));
res.Nodes.Add("RBChannel : " + pcc.getNameEntry(RBChannel));
res.Nodes.Add("DepthPriorityGroup : " + pcc.getNameEntry(DepthPriorityGroup));
res.Nodes.Add("TickGroup : " + pcc.getNameEntry(TickGroup));
res.Nodes.Add("bIgnoreInstanceForTextureStreaming : " + bIgnoreInstanceForTextureStreaming);
res.Nodes.Add("CastShadow : " + CastShadow);
res.Nodes.Add("CollideActors : " + CollideActors);
res.Nodes.Add("BlockRigidBody : " + BlockRigidBody);
res.Nodes.Add("bForceDirectLightMap : " + bForceDirectLightMap);
res.Nodes.Add("bCastDynamicShadow : " + bCastDynamicShadow);
res.Nodes.Add("bAcceptsDynamicDominantLightShadows : " + bAcceptsDynamicDominantLightShadows);
res.Nodes.Add("bAcceptsLights : " + bAcceptsLights);
res.Nodes.Add("bAcceptsDynamicLights : " + bAcceptsDynamicLights);
res.Nodes.Add("bCullModulatedShadowOnBackfaces : " + bCullModulatedShadowOnBackfaces);
res.Nodes.Add("bCullModulatedShadowOnEmissive : " + bCullModulatedShadowOnEmissive);
res.Nodes.Add("bAllowAmbientOcclusion : " + bAllowAmbientOcclusion);
res.Nodes.Add("bUsePrecomputedShadows : " + bUsePrecomputedShadows);
res.Nodes.Add("CanBlockCamera : " + CanBlockCamera);
res.Nodes.Add("bAllowShadowFade : " + bAllowShadowFade);
res.Nodes.Add("bBioIsReceivingDecals : " + bBioIsReceivingDecals);
res.Nodes.Add("BlockNonZeroExtent : " + BlockNonZeroExtent);
res.Nodes.Add("bAcceptsStaticDecals : " + bAcceptsStaticDecals);
res.Nodes.Add("bAcceptsDynamicDecals : " + bAcceptsDynamicDecals);
res.Nodes.Add("bAcceptsFoliage : " + bAcceptsFoliage);
res.Nodes.Add("HiddenGame : " + HiddenGame);
res.Nodes.Add("bBioForcePrecomputedShadows : " + bBioForcePrecomputedShadows);
res.Nodes.Add("bCastHiddenShadow : " + bCastHiddenShadow);
res.Nodes.Add("bUseAsOccluder : " + bUseAsOccluder);
res.Nodes.Add("BlockZeroExtent : " + BlockZeroExtent);
res.Nodes.Add("bAllowCullDistanceVolume : " + bAllowCullDistanceVolume);
res.Nodes.Add("bAllowApproximateOcclusion : " + bAllowApproximateOcclusion);
res.Nodes.Add("bSelfShadowOnly : " + bSelfShadowOnly);
res.Nodes.Add("OverridePhysMat : " + OverridePhysMat);
res.Nodes.Add("bUseOnePassLightingOnTranslucency : " + bUseOnePassLightingOnTranslucency);
res.Nodes.Add("bLockLightingCache : " + bLockLightingCache);
res.Nodes.Add("bDisableAllRigidBody : " + bDisableAllRigidBody);
res.Nodes.Add("BlockActors : " + BlockActors);
res.Nodes.Add("bNotifyRigidBodyCollision : " + bNotifyRigidBodyCollision);
res.Nodes.Add("bIgnoreRadialImpulse : " + bIgnoreRadialImpulse);
res.Nodes.Add("bIgnoreRadialForce : " + bIgnoreRadialForce);
res.Nodes.Add("HiddenEditor : " + HiddenEditor);
res.Nodes.Add("StaticMesh : " + StaticMesh);
res.Nodes.Add("ReplacementPrimitive : " + ReplacementPrimitive);
res.Nodes.Add("LightEnvironment : " + LightEnvironment);
res.Nodes.Add("ShadowParent : " + ShadowParent);
res.Nodes.Add("PhysMaterialOverride : " + PhysMaterialOverride);
res.Nodes.Add("MaxDrawDistance : " + MaxDrawDistance);
res.Nodes.Add("CachedMaxDrawDistance : " + CachedMaxDrawDistance);
res.Nodes.Add("MinDrawDistance : " + MinDrawDistance);
res.Nodes.Add("AudioObstruction : " + AudioObstruction);
res.Nodes.Add("AudioOcclusion : " + AudioOcclusion);
res.Nodes.Add("OverriddenLODMaxRange : " + OverriddenLODMaxRange);
res.Nodes.Add("Scale : " + Scale);
res.Nodes.Add("MassiveLODDistance : " + MassiveLODDistance);
res.Nodes.Add("MotionBlurScale : " + MotionBlurScale);
res.Nodes.Add("TranslucencySortPriority : " + TranslucencySortPriority);
res.Nodes.Add("LocalTranslucencySortPriority : " + LocalTranslucencySortPriority);
res.Nodes.Add("ForcedLodModel : " + ForcedLodModel);
return res;
}

}
}


happy coding! Btw the template is stored in /exec/ subfolder as template.code

greetz WV
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: How to write code for unreal class property based

Postby Eudaimonium » 10 Jan 2013, 17:04

All that was auto-generated? From what, a scan through existing object?

Incredible.
One of few surviving members of species that actually loved Mass Effect endings.
User avatar
Eudaimonium
Emeritus
 
Posts: 299
Joined: 23 Aug 2012, 23:22
Has thanked: 17 time
Have thanks: 33 time

Re: How to write code for unreal class property based

Postby WarrantyVoider » 10 Jan 2013, 17:40

try it yourself:
1. goto developers/properties/propertyDB
2. there goto file/start scan (have debug output open)
3. you can now browse all classes and their props
4. now goto generate templates/WV method
greetz^^
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: How to write code for unreal class property based

Postby mnn » 10 Jan 2013, 21:29

Hmm, no offense but that's horrible code for reading properties. Even my manually-created Unreal classes are much shorter than that.

You could heavily use reflection to get rid of so much boilerplate code. Execution speed of such code could be slower, but to speed it up, you could use Fasterflect, which boosts reflection usage: http://fasterflect.codeplex.com/
mnn
User
 
Posts: 42
Joined: 22 Aug 2012, 17:10
Has thanked: 1 time
Have thanks: 15 time

Re: How to write code for unreal class property based

Postby WarrantyVoider » 10 Jan 2013, 21:39

EDIT:
Thanks.
always backup your files!
mess with the best or die like the rest!
"I tried everything!" - "mkay, please list that..." ; please dont pm me for help, we have a help section
User avatar
WarrantyVoider
Emeritus
 
Posts: 2270
Joined: 22 Aug 2012, 11:33
Has thanked: 480 time
Have thanks: 626 time

Re: How to write code for unreal class property based

Postby mnn » 11 Jan 2013, 07:09

I'm not sure I ever sent you any of my own code - I only sent you modified UnHood, if I recall correctly (and that one seems to be written just fine, though sometimes too much derived classes for me).

WarrantyVoider wrote:Just show me how YOU would do it!

I already have - reflection using Fasterflect library.
mnn
User
 
Posts: 42
Joined: 22 Aug 2012, 17:10
Has thanked: 1 time
Have thanks: 15 time

Re: How to write code for unreal class property based

Postby AmaroK86 » 14 Jan 2013, 22:04

Wow I totally want to know all about code reflection but I can't find a good noobie tutorial... Do you know where I can find any of them? Or perhaps a book?
My multiplayer ID: AmaroK86_64
User avatar
AmaroK86
Emeritus
 
Posts: 66
Joined: 22 Aug 2012, 12:51
Has thanked: 25 time
Have thanks: 36 time

PreviousNext

Return to ME3Explorer Toolset Development

Who is online

Users browsing this forum: No registered users and 1 guest

suspicion-preferred