mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 16:44:36 +00:00
Merge branch 'Preview4_0' of https://github.com/TorqueGameEngines/Torque3D into Preview4_0_MenuUIRework
This commit is contained in:
commit
69089e1ee2
297 changed files with 4174 additions and 470 deletions
|
|
@ -103,7 +103,7 @@ EndImplementEnumType;
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
ImageAsset::ImageAsset() : AssetBase(), mImage(nullptr), mUseMips(true), mIsHDRImage(false), mIsValidImage(false)
|
ImageAsset::ImageAsset() : AssetBase(), mImage(nullptr), mUseMips(true), mIsHDRImage(false), mIsValidImage(false), mImageType(Albedo)
|
||||||
{
|
{
|
||||||
mImageFileName = StringTable->EmptyString();
|
mImageFileName = StringTable->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
@ -239,6 +239,50 @@ const char* ImageAsset::getImageInfo()
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* ImageAsset::getImageTypeNameFromType(ImageAsset::ImageTypes type)
|
||||||
|
{
|
||||||
|
// must match ImageTypes order
|
||||||
|
static const char* _names[] = {
|
||||||
|
"Albedo"
|
||||||
|
"Normal"
|
||||||
|
"Composite"
|
||||||
|
"GUI"
|
||||||
|
"Roughness"
|
||||||
|
"AO"
|
||||||
|
"Metalness"
|
||||||
|
"Glow"
|
||||||
|
"Particle"
|
||||||
|
"Decal"
|
||||||
|
"Cubemap"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (type < 0 || type >= ImageTypeCount)
|
||||||
|
{
|
||||||
|
Con::errorf("ImageAsset::getAdapterNameFromType - Invalid ImageType, defaulting to Albedo");
|
||||||
|
return _names[Albedo];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _names[type];
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageAsset::ImageTypes ImageAsset::getImageTypeFromName(const char* name)
|
||||||
|
{
|
||||||
|
S32 ret = -1;
|
||||||
|
for (S32 i = 0; i < ImageTypeCount; i++)
|
||||||
|
{
|
||||||
|
if (!dStricmp(getImageTypeNameFromType((ImageTypes)i), name))
|
||||||
|
ret = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret == -1)
|
||||||
|
{
|
||||||
|
Con::errorf("ImageAsset::getImageTypeFromName - Invalid ImageType name, defaulting to Albedo");
|
||||||
|
ret = Albedo;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (ImageTypes)ret;
|
||||||
|
}
|
||||||
|
|
||||||
DefineEngineMethod(ImageAsset, getImageFilename, const char*, (), ,
|
DefineEngineMethod(ImageAsset, getImageFilename, const char*, (), ,
|
||||||
"Creates an instance of the given GameObject given the asset definition.\n"
|
"Creates an instance of the given GameObject given the asset definition.\n"
|
||||||
"@return The GameObject entity created from the asset.")
|
"@return The GameObject entity created from the asset.")
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,7 @@ public:
|
||||||
Particle = 8,
|
Particle = 8,
|
||||||
Decal = 9,
|
Decal = 9,
|
||||||
Cubemap = 10,
|
Cubemap = 10,
|
||||||
|
ImageTypeCount = 11
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -100,6 +101,11 @@ public:
|
||||||
|
|
||||||
const char* getImageInfo();
|
const char* getImageInfo();
|
||||||
|
|
||||||
|
static const char* getImageTypeNameFromType(ImageTypes type);
|
||||||
|
static ImageTypes getImageTypeFromName(const char* name);
|
||||||
|
|
||||||
|
void setImageType(ImageTypes type) { mImageType = type; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void initializeAsset(void);
|
virtual void initializeAsset(void);
|
||||||
virtual void onAssetRefresh(void);
|
virtual void onAssetRefresh(void);
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@
|
||||||
|
|
||||||
// Debug Profiling.
|
// Debug Profiling.
|
||||||
#include "platform/profiler.h"
|
#include "platform/profiler.h"
|
||||||
|
#include "T3D/assets/assetImporter.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -329,19 +330,21 @@ bool ShapeAsset::getAssetByFilename(StringTableEntry fileName, AssetPtr<ShapeAss
|
||||||
Con::warnf("ShapeAsset::getAssetByFilename - Attempted to in-place import a shapefile(%s) that had no associated asset", fileName);
|
Con::warnf("ShapeAsset::getAssetByFilename - Attempted to in-place import a shapefile(%s) that had no associated asset", fileName);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ConsoleValueRef result = Con::executef("importLooseFile", fileName, true);
|
AssetImporter* autoAssetImporter;
|
||||||
|
if (!Sim::findObject("autoAssetImporter", autoAssetImporter))
|
||||||
if (result.getBoolValue())
|
|
||||||
{
|
{
|
||||||
StringTableEntry resultingAssetId = StringTable->insert(Con::getVariable("$importedLooseFileAsset"));
|
autoAssetImporter = new AssetImporter();
|
||||||
|
autoAssetImporter->registerObject("autoAssetImporter");
|
||||||
|
}
|
||||||
|
|
||||||
if (resultingAssetId != StringTable->EmptyString())
|
StringTableEntry resultingAssetId = autoAssetImporter->autoImportFile(fileName);
|
||||||
{
|
|
||||||
shapeAsset->setAssetId(resultingAssetId);
|
|
||||||
|
|
||||||
if (!shapeAsset->isNull())
|
if (resultingAssetId != StringTable->EmptyString())
|
||||||
return true;
|
{
|
||||||
}
|
shapeAsset->setAssetId(resultingAssetId);
|
||||||
|
|
||||||
|
if (!shapeAsset->isNull())
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Didn't work, so have us fall back to a placeholder asset
|
//Didn't work, so have us fall back to a placeholder asset
|
||||||
|
|
@ -375,17 +378,19 @@ StringTableEntry ShapeAsset::getAssetIdByFilename(StringTableEntry fileName)
|
||||||
Con::warnf("ShapeAsset::getAssetByFilename - Attempted to in-place import a shapefile(%s) that had no associated asset", fileName);
|
Con::warnf("ShapeAsset::getAssetByFilename - Attempted to in-place import a shapefile(%s) that had no associated asset", fileName);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ConsoleValueRef result = Con::executef("importLooseFile", fileName, true);
|
AssetImporter* autoAssetImporter;
|
||||||
|
if (!Sim::findObject("autoAssetImporter", autoAssetImporter))
|
||||||
if (result.getBoolValue())
|
|
||||||
{
|
{
|
||||||
StringTableEntry resultingAssetId = StringTable->insert(Con::getVariable("$importedLooseFileAsset"));
|
autoAssetImporter = new AssetImporter();
|
||||||
|
autoAssetImporter->registerObject("autoAssetImporter");
|
||||||
|
}
|
||||||
|
|
||||||
if (resultingAssetId != StringTable->EmptyString())
|
StringTableEntry resultingAssetId = autoAssetImporter->autoImportFile(fileName);
|
||||||
{
|
|
||||||
shapeAssetId = resultingAssetId;
|
if (resultingAssetId != StringTable->EmptyString())
|
||||||
return shapeAssetId;
|
{
|
||||||
}
|
shapeAssetId = resultingAssetId;
|
||||||
|
return shapeAssetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Didn't work, so have us fall back to a placeholder asset
|
//Didn't work, so have us fall back to a placeholder asset
|
||||||
|
|
|
||||||
2093
Engine/source/T3D/assets/assetImporter.cpp
Normal file
2093
Engine/source/T3D/assets/assetImporter.cpp
Normal file
File diff suppressed because it is too large
Load diff
777
Engine/source/T3D/assets/assetImporter.h
Normal file
777
Engine/source/T3D/assets/assetImporter.h
Normal file
|
|
@ -0,0 +1,777 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "assets/assetPtr.h"
|
||||||
|
#include "assets/assetManager.h"
|
||||||
|
#include "module/moduleManager.h"
|
||||||
|
#include "util/settings.h"
|
||||||
|
#include "gui/controls/guiTreeViewCtrl.h"
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AssetImportConfig is a SimObject derived object intended to act as a container for all the necessary configuration data when running the Asset Importer.
|
||||||
|
/// It dictates if and how any given asset type will be processed when running an import action. This is because the Asset Importer utilizes a lot of informed logic
|
||||||
|
/// to try and automate as much of the import process as possible. In theory, you would run the import on a given file, and based on your config the importer will do
|
||||||
|
/// everything from importing the designated file, as well as finding and importing any associated files such as images or materials, and prepping the objects at time
|
||||||
|
/// of import to avoid as much manual post-processing as possible.
|
||||||
|
/// </summary>
|
||||||
|
class AssetImportConfig : public SimObject
|
||||||
|
{
|
||||||
|
//General Settings
|
||||||
|
public:
|
||||||
|
/// <summary>
|
||||||
|
/// Duplicate Asset Auto-Resolution Action. Options are None, AutoPrune, AutoRename
|
||||||
|
/// </summary>
|
||||||
|
String DuplicatAutoResolution;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if warnings should be treated as errors.
|
||||||
|
/// </summary>
|
||||||
|
bool WarningsAsErrors;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if importing should be prevented from completing if any errors are detected at all
|
||||||
|
/// </summary>
|
||||||
|
bool PreventImportWithErrors;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the importer automatically prompt to find missing files if they are not detected automatically by the importer
|
||||||
|
/// </summary>
|
||||||
|
bool AutomaticallyPromptMissingFiles;
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
//Mesh Settings
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if this config supports importing meshes
|
||||||
|
/// </summary>
|
||||||
|
bool ImportMesh;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if the up axis in the model file should be overridden
|
||||||
|
/// </summary>
|
||||||
|
bool DoUpAxisOverride;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If overriding, what axis should be used as up. Options are X_AXIS, Y_AXIS, Z_AXIS
|
||||||
|
/// </summary>
|
||||||
|
String UpAxisOverride;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if the scale in the model file should be overridden
|
||||||
|
/// </summary>
|
||||||
|
bool DoScaleOverride;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If overriding, what scale should be used
|
||||||
|
/// </summary>
|
||||||
|
F32 ScaleOverride;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if scale of nodes should be ignored
|
||||||
|
/// </summary>
|
||||||
|
bool IgnoreNodeScale;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if the center of the model file should be automatically recentered
|
||||||
|
/// </summary>
|
||||||
|
bool AdjustCenter;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if the floor height of the model file should be automatically zero'd
|
||||||
|
/// </summary>
|
||||||
|
bool AdjustFloor;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if submeshes should be collapsed down into a single main mesh
|
||||||
|
/// </summary>
|
||||||
|
bool CollapseSubmeshes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates what LOD mode the model file should utilize to process out LODs. Options are TrailingNumber, DetectDTS, SingleSize
|
||||||
|
/// </summary>
|
||||||
|
String LODType;
|
||||||
|
|
||||||
|
//ImportAssetConfigSettingsList.addNewConfigSetting("TrailingNumber", "Trailing Number", "float", "", "2", "", "Mesh");
|
||||||
|
/// <summary>
|
||||||
|
/// A list of what nodes should be guaranteed to be imported if found in the model file. Separated by either , or ;
|
||||||
|
/// </summary>
|
||||||
|
String ImportedNodes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of what nodes should be guaranteed to not be imported if found in the model file. Separated by either , or ;
|
||||||
|
/// </summary>
|
||||||
|
String IgnoreNodes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of what mesh objects should be guaranteed to be imported if found in the model file. Separated by either , or ;
|
||||||
|
/// </summary>
|
||||||
|
String ImportMeshes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of what mesh objects should be guaranteed to not be imported if found in the model file. Separated by either , or ;
|
||||||
|
/// </summary>
|
||||||
|
String IgnoreMeshes;
|
||||||
|
|
||||||
|
//Assimp/Collada params
|
||||||
|
/// <summary>
|
||||||
|
/// Flag to indicate the shape loader should convert to a left-handed coordinate system
|
||||||
|
/// </summary>
|
||||||
|
bool convertLeftHanded;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader calculate tangent space values
|
||||||
|
/// </summary>
|
||||||
|
bool calcTangentSpace;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader automatically prune redundant/duplicate materials
|
||||||
|
/// </summary>
|
||||||
|
bool removeRedundantMats;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader auto-generate UV Coordinates for the mesh.
|
||||||
|
/// </summary>
|
||||||
|
bool genUVCoords;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the UV coordinates be transformed.
|
||||||
|
/// </summary>
|
||||||
|
bool TransformUVs;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the UV coordinates be flipped
|
||||||
|
/// </summary>
|
||||||
|
bool flipUVCoords;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader automatically look for instanced submeshes in the model file
|
||||||
|
/// </summary>
|
||||||
|
bool findInstances;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader limit the bone weights
|
||||||
|
/// </summary>
|
||||||
|
bool limitBoneWeights;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader automatically merge identical/duplicate verts
|
||||||
|
/// </summary>
|
||||||
|
bool JoinIdenticalVerts;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the shape loader reverse the winding order of the mesh's face indicies
|
||||||
|
/// </summary>
|
||||||
|
bool reverseWindingOrder;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the normals on the model be inverted
|
||||||
|
/// </summary>
|
||||||
|
bool invertNormals;
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
//Materials
|
||||||
|
/// <summary>
|
||||||
|
/// Does this config allow for importing of materials
|
||||||
|
/// </summary>
|
||||||
|
bool ImportMaterials;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When importing a material, should it automatically attempt to merge Roughness, AO and Metalness maps into a single, composited PBR Configuration map
|
||||||
|
/// </summary>
|
||||||
|
bool CreatePBRConfig;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When generating a material off of an importing image, should the importer force appending a diffusemap suffix onto the end to avoid potential naming confusion.
|
||||||
|
/// e.g. MyCoolStuff.png is imported, generating MyCoolStuff material asset and MyCoolStuff_Diffuse image asset
|
||||||
|
/// </summary>
|
||||||
|
bool UseDiffuseSuffixOnOriginImage;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the importer try and use existing material assets in the game directory if at all possible. (Not currently utilized)
|
||||||
|
/// </summary>
|
||||||
|
bool UseExistingMaterials;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of material names that should not be imported. Separated by either , or ;
|
||||||
|
/// </summary>
|
||||||
|
String IgnoreMaterials;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When processing a material asset, should the importer attempt to populate the various material maps on it by looking up common naming conventions for potentially relevent image files
|
||||||
|
/// e.g. If MyCoolStuff_Diffuse.png is imported, generating MyCoolStuff material, it would also find MyCoolStuff_Normal and MyCoolStuff_PBR images and map them to the normal and PBRConfig maps respectively automatically
|
||||||
|
/// </summary>
|
||||||
|
bool PopulateMaterialMaps;
|
||||||
|
|
||||||
|
//
|
||||||
|
//Animations
|
||||||
|
/// <summary>
|
||||||
|
/// Does this config allow for importing Shape Animations
|
||||||
|
/// </summary>
|
||||||
|
bool ImportAnimations;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// When importing a shape file, should the animations within be separated out into unique files
|
||||||
|
/// </summary>
|
||||||
|
bool SeparateAnimations;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If separating animations out from a source file, what prefix should be added to the names for grouping association
|
||||||
|
/// </summary>
|
||||||
|
String SeparateAnimationPrefix;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Defines the animation timing for the given animation sequence. Options are FrameTime, Seconds, Milliseconds
|
||||||
|
/// </summary>
|
||||||
|
String animTiming;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The FPS of the animation sequence
|
||||||
|
/// </summary>
|
||||||
|
F32 animFPS;
|
||||||
|
|
||||||
|
//
|
||||||
|
//Collision
|
||||||
|
/// <summary>
|
||||||
|
/// Does this configuration generate collision geometry when importing. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
bool GenerateCollisions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What sort of collision geometry is generated. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
String GenCollisionType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What prefix is added to the collision geometry generated. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
String CollisionMeshPrefix;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does this configuration generate Line of Sight collision geometry. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
bool GenerateLOSCollisions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What sort of Line of Sight collision geometry is generated. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
String GenLOSCollisionType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What prefix is added to the Line of Sight collision geometry generated. (Not currently enabled)
|
||||||
|
/// </summary>
|
||||||
|
String LOSCollisionMeshPrefix;
|
||||||
|
|
||||||
|
//
|
||||||
|
//Images
|
||||||
|
/// <summary>
|
||||||
|
/// Does this configuration support importing images.
|
||||||
|
/// </summary>
|
||||||
|
bool importImages;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the default ImageType images are imported as. Options are: N/A, Diffuse, Normal, Metalness, Roughness, AO, PBRConfig, GUI, Cubemap
|
||||||
|
/// </summary>
|
||||||
|
String ImageType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a diffuse map.
|
||||||
|
/// e.g. _Albedo or _Color
|
||||||
|
/// </summary>
|
||||||
|
String DiffuseTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a normal map.
|
||||||
|
/// e.g. _Normal or _Norm
|
||||||
|
/// </summary>
|
||||||
|
String NormalTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a metalness map.
|
||||||
|
/// e.g. _Metalness or _Metal
|
||||||
|
/// </summary>
|
||||||
|
String MetalnessTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a roughness map.
|
||||||
|
/// e.g. _roughness or _rough
|
||||||
|
/// </summary>
|
||||||
|
String RoughnessTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a smoothness map.
|
||||||
|
/// e.g. _smoothness or _smooth
|
||||||
|
/// </summary>
|
||||||
|
String SmoothnessTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a ambient occlusion map.
|
||||||
|
/// e.g. _ambient or _ao
|
||||||
|
/// </summary>
|
||||||
|
String AOTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What type of suffixes are scanned to detect if an importing image is a PBRConfig map.
|
||||||
|
/// e.g. _Composite or _PBR
|
||||||
|
/// </summary>
|
||||||
|
String PBRTypeSuffixes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates what filter mode images imported with this configuration utilizes. Options are Linear, Bilinear, Trilinear
|
||||||
|
/// </summary>
|
||||||
|
String TextureFilteringMode;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if images imported with this configuration utilize mipmaps
|
||||||
|
/// </summary>
|
||||||
|
bool UseMips;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if images imported with this configuration are in an HDR format
|
||||||
|
/// </summary>
|
||||||
|
bool IsHDR;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates what amount of scaling images imported with this configuration use
|
||||||
|
/// </summary>
|
||||||
|
F32 Scaling;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if images imported with this configuration are compressed
|
||||||
|
/// </summary>
|
||||||
|
bool ImagesCompressed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if images imported with this configuration generate a parent material for it as well
|
||||||
|
/// </summary>
|
||||||
|
bool GenerateMaterialOnImport;
|
||||||
|
|
||||||
|
//
|
||||||
|
//Sounds
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if sounds are imported with this configuration
|
||||||
|
/// </summary>
|
||||||
|
bool importSounds;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates what amount the volume is adjusted on sounds imported with this configuration
|
||||||
|
/// </summary>
|
||||||
|
F32 VolumeAdjust;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates what amount the pitch is adjusted on sounds imported with this configuration
|
||||||
|
/// </summary>
|
||||||
|
F32 PitchAdjust;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if sounds imported with this configuration are compressed
|
||||||
|
/// </summary>
|
||||||
|
bool SoundsCompressed;
|
||||||
|
|
||||||
|
public:
|
||||||
|
AssetImportConfig();
|
||||||
|
virtual ~AssetImportConfig();
|
||||||
|
|
||||||
|
/// Engine.
|
||||||
|
static void initPersistFields();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads a configuration from a Settings object
|
||||||
|
/// @param configSettings, The Settings object to load from
|
||||||
|
/// @param configName, The name of the configuration setting to load from the setting object
|
||||||
|
/// </summary>
|
||||||
|
void loadImportConfig(Settings* configSettings, String configName);
|
||||||
|
|
||||||
|
/// Declare Console Object.
|
||||||
|
DECLARE_CONOBJECT(AssetImportConfig);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AssetImportConfig is a SimObject derived object that represents and holds information for an importing asset. They are generated and processed by the AssetImporter
|
||||||
|
/// </summary>
|
||||||
|
class AssetImportObject : public SimObject
|
||||||
|
{
|
||||||
|
typedef SimObject Parent;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// <summary>
|
||||||
|
/// What type is the importing asset
|
||||||
|
/// </summary>
|
||||||
|
String assetType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the source file path of the importing asset
|
||||||
|
/// </summary>
|
||||||
|
Torque::Path filePath;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the asset's name
|
||||||
|
/// </summary>
|
||||||
|
String assetName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the original, unmodified by processing, asset name
|
||||||
|
/// </summary>
|
||||||
|
String cleanAssetName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the name of the module this asset will be importing into
|
||||||
|
/// </summary>
|
||||||
|
String moduleName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the current status of this asset item in it's import process
|
||||||
|
/// </summary>
|
||||||
|
String status;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If there is a warning or error status, what type is the condition for this asset item
|
||||||
|
/// </summary>
|
||||||
|
String statusType;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the articulated information of the status of the asset. Contains the error or warning log data.
|
||||||
|
/// </summary>
|
||||||
|
String statusInfo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is the asset item currently flagged as dirty
|
||||||
|
/// </summary>
|
||||||
|
bool dirty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is this asset item marked to be skipped. If it is, it's usually due to being marked as deleted
|
||||||
|
/// </summary>
|
||||||
|
bool skip;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Has the asset item been processed
|
||||||
|
/// </summary>
|
||||||
|
bool processed;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is this specific asset item generated as part of the import process of another item
|
||||||
|
/// </summary>
|
||||||
|
bool generatedAsset;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What, if any, importing asset item is this item's parent
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* parentAssetItem;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What, if any, importing asset item are children of this item
|
||||||
|
/// </summary>
|
||||||
|
Vector< AssetImportObject*> childAssetItems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// What is the ultimate asset taml file path for this import item
|
||||||
|
/// </summary>
|
||||||
|
String tamlFilePath;
|
||||||
|
|
||||||
|
//
|
||||||
|
/// <summary>
|
||||||
|
/// Specific to ImageAsset type
|
||||||
|
/// What is the image asset's suffix type. Options are: Albedo, Normal, Roughness, AO, Metalness, PBRConfig
|
||||||
|
/// </summary>
|
||||||
|
String imageSuffixType;
|
||||||
|
|
||||||
|
//
|
||||||
|
/// <summary>
|
||||||
|
/// Specific to ShapeAsset type
|
||||||
|
/// Processed information about the shape file. Contains numbers and lists of meshes, materials and animations
|
||||||
|
/// </summary>
|
||||||
|
GuiTreeViewCtrl* shapeInfo;
|
||||||
|
|
||||||
|
public:
|
||||||
|
AssetImportObject();
|
||||||
|
virtual ~AssetImportObject();
|
||||||
|
|
||||||
|
/// Engine.
|
||||||
|
static void initPersistFields();
|
||||||
|
|
||||||
|
/// Declare Console Object.
|
||||||
|
DECLARE_CONOBJECT(AssetImportObject);
|
||||||
|
};
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AssetImporter is a SimObject derived object that processed and imports files and turns them into assets if they are of valid types.
|
||||||
|
/// Utilizes an AssetImportConfig to inform the importing process's behavior.
|
||||||
|
/// </summary>
|
||||||
|
class AssetImporter : public SimObject
|
||||||
|
{
|
||||||
|
typedef SimObject Parent;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The import configuration that is currently being utilized
|
||||||
|
/// </summary>
|
||||||
|
AssetImportConfig activeImportConfig;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A log of all the actions that have been performed by the importer
|
||||||
|
/// </summary>
|
||||||
|
Vector<String> activityLog;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of AssetImportObjects that are to be imported
|
||||||
|
/// </summary>
|
||||||
|
Vector<AssetImportObject*> importingAssets;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A list of file paths that are to be imported. These are only used for resetting purposes;
|
||||||
|
/// </summary>
|
||||||
|
Vector<Torque::Path> originalImportingFiles;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The Id of the module the assets are to be imported into
|
||||||
|
/// </summary>
|
||||||
|
String targetModuleId;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The path any imported assets are placed in as their destination
|
||||||
|
/// </summary>
|
||||||
|
String targetPath;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Are there any issues with any of the current import asset items
|
||||||
|
/// </summary>
|
||||||
|
bool importIssues;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is this import action a reimport of an existing asset
|
||||||
|
/// </summary>
|
||||||
|
bool isReimport;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Has the heirarchy of asset import items changed due to processing
|
||||||
|
/// </summary>
|
||||||
|
bool assetHeirarchyChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A string used for writing into the importLog
|
||||||
|
/// </summary>
|
||||||
|
char importLogBuffer[1024];
|
||||||
|
|
||||||
|
public:
|
||||||
|
AssetImporter();
|
||||||
|
virtual ~AssetImporter();
|
||||||
|
|
||||||
|
/// Engine.
|
||||||
|
static void initPersistFields();
|
||||||
|
|
||||||
|
/// Declare Console Object.
|
||||||
|
DECLARE_CONOBJECT(AssetImporter);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the target path for the assets being imported to be deposited into
|
||||||
|
/// <para>@param pTargetPath, The filePath of the destination point assets are imported into</para>
|
||||||
|
/// </summary>
|
||||||
|
void setTargetPath(Torque::Path pTargetPath) { targetPath = pTargetPath; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Processes a file into an AssetImportObject and adds it to the session for importing
|
||||||
|
/// <para>@param filePath, The filePath of the file to be imported in as an asset</para>
|
||||||
|
/// <para>@return AssetImportObject that was created</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* addImportingFile(Torque::Path filePath);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds an importing asset to the current session
|
||||||
|
/// <para>@param assetType, Type of the asset being imported</para>
|
||||||
|
/// <para>@param filePath, path of the file to be imported</para>
|
||||||
|
/// <para>@param parentItem, AssetImportObject that the new item is a child of. null if no parent</para>
|
||||||
|
/// <para>@param assetNameOverride, If not blank, will be the new item's assetName instead of being created off of the filePath</para>
|
||||||
|
/// <para>@return AssetImportObject that was created</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* addImportingAsset(String assetType, Torque::Path filePath, AssetImportObject* parentItem, String assetNameOverride);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deletes the asset item from the import session. Affects the item's children as well
|
||||||
|
/// <para>@param assetItem, asset item to be marked as deleted</para>
|
||||||
|
/// </summary>
|
||||||
|
void deleteImportingAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Finds an asset item in the session if it exists, by name
|
||||||
|
/// <para>@param assetName, Asset name to find</para>
|
||||||
|
/// <para>@param assetItem, if null, will loop over and recurse the main import asset items, if a specific AssetImportObject is passed in, it will recurse it's children</para>
|
||||||
|
/// <para>@return AssetImportObject that was found</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* findImportingAssetByName(String assetName, AssetImportObject* assetItem = nullptr);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Finds the module associated with a given file path
|
||||||
|
/// <para>@param filePath, File path to parse the the module from</para>
|
||||||
|
/// <para>@return ModuleDefinition that was found</para>
|
||||||
|
/// </summary>
|
||||||
|
ModuleDefinition* getModuleFromPath(Torque::Path filePath);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parses an asset's name to try and find if any of the import config's suffix lists match to it
|
||||||
|
/// <para>@param assetName, Asset name to parse any image suffix out of</para>
|
||||||
|
/// <para>@param suffixType, output, The suffix type that was matched to the asset name</para>
|
||||||
|
/// <para>@return suffix that matched to the asset name</para>
|
||||||
|
/// </summary>
|
||||||
|
String parseImageSuffixes(String assetName, String* suffixType);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parses a file path to determine its asset type
|
||||||
|
/// <para>@param filePath, File path to parse</para>
|
||||||
|
/// <para>@return The asset type as a string</para>
|
||||||
|
/// </summary>
|
||||||
|
String getAssetTypeByFile(Torque::Path filePath);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Resets the import session to a clean slate. This will clear all existing AssetImportObjects and the activity log
|
||||||
|
/// and then re-process the original filePaths again.
|
||||||
|
/// </summary>
|
||||||
|
void resetImportSession();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the number of lines in the activity log
|
||||||
|
/// <para>@return Line count as S32</para>
|
||||||
|
/// </summary>
|
||||||
|
S32 getActivityLogLineCount();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the log line at a given index
|
||||||
|
/// <para>@param line, line in the log to get</para>
|
||||||
|
/// <para>@return The log line as a string</para>
|
||||||
|
/// </summary>
|
||||||
|
String getActivityLogLine(U32 line);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Dumps the entire current activity log to the console.
|
||||||
|
/// </summary>
|
||||||
|
void dumpActivityLog();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the number of top-level asset items in the current import session(doesn't count children)
|
||||||
|
/// <para>@return Number of children</para>
|
||||||
|
/// </summary>
|
||||||
|
S32 getAssetItemCount();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the top-level asset item in the current import session at the requested index
|
||||||
|
/// <para>@param index, The index of the item array to get</para>
|
||||||
|
/// <para>@return The AssetImportObject at the index</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* getAssetItem(U32 index);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the number of child asset items of a given AssetImportObject
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to get the number of child items for</para>
|
||||||
|
/// <para>@return Number of children</para>
|
||||||
|
/// </summary>
|
||||||
|
S32 getAssetItemChildCount(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the child asset item of a specific AssetImportObject at the requested index
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to get the number of child items for</para>
|
||||||
|
/// <para>@param index, The index of the child item array to get</para>
|
||||||
|
/// <para>@return The AssetImportObject at the index</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportObject* getAssetItemChild(AssetImportObject* assetItem, U32 index);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process AssetImportObject's to prepare them for importing.
|
||||||
|
/// <para>@param assetItem, If null, will loop over the top-level asset items list, if a specific item is provided, will process it's children</para>
|
||||||
|
/// </summary>
|
||||||
|
void processImportAssets(AssetImportObject* assetItem = nullptr);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process a specific AssetImportObject that is an ImageAsset type to prepare it for importing
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to process</para>
|
||||||
|
/// </summary>
|
||||||
|
void processImageAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process a specific AssetImportObject that is an MaterialAsset type to prepare it for importing
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to process</para>
|
||||||
|
/// </summary>
|
||||||
|
void processMaterialAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process a specific AssetImportObject that is an ShapeAsset type to prepare it for importing
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to process</para>
|
||||||
|
/// </summary>
|
||||||
|
void processShapeAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Process a specific ShapeAsset AssetImportObject with a material id in order to parse and handle the materials listed in the shape file
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to process</para>
|
||||||
|
/// <para>@param materialItemId, The materialItemId in the shapeInfo to process</para>
|
||||||
|
/// </summary>
|
||||||
|
void processShapeMaterialInfo(AssetImportObject* assetItem, S32 materialItemId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Run through and validate assets for issues, such as name collisions
|
||||||
|
/// </summary>
|
||||||
|
bool validateAssets();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Validate a specific asset item
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to validate</para>
|
||||||
|
/// </summary>
|
||||||
|
void validateAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reset the validation status of asset items
|
||||||
|
/// <para>@param assetItem, If null, will loop over the top-level asset items list, if a specific item is provided, will reset it's children</para>
|
||||||
|
/// </summary>
|
||||||
|
void resetAssetValidationStatus(AssetImportObject* assetItem = nullptr);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks asset items for any collisions in the current import session
|
||||||
|
/// <para>@param assetItemToCheckFor, The asset to check for collisions with</para>
|
||||||
|
/// <para>@param assetItem, if null, will loop over and recurse the main import asset items, if a specific AssetImportObject is passed in, it will recurse it's children</para>
|
||||||
|
/// <para>@return If a collision was detected</para>
|
||||||
|
/// </summary>
|
||||||
|
bool checkAssetForCollision(AssetImportObject* assetItemToCheckFor, AssetImportObject* assetItem = nullptr);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Attempts to automatically resolve import issues according to the import config settings
|
||||||
|
/// <para>@param assetItem, The AssetImportObject to resolve</para>
|
||||||
|
/// </summary>
|
||||||
|
void resolveAssetItemIssues(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Runs the import process on a single file in-place. Intended primarily for autoimporting a loose file that's in the game directory.
|
||||||
|
/// <para>@param filePath, The filePath of the file to be imported in as an asset</para>
|
||||||
|
/// <para>@return AssetId of the asset that was imported. If import failed, it will be empty.</para>
|
||||||
|
/// </summary>
|
||||||
|
StringTableEntry autoImportFile(Torque::Path filePath);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Runs the import process in the current session
|
||||||
|
/// <para>@param assetItem, if null, will loop over and recurse the main import asset items, if a specific AssetImportObject is passed in, it will recurse it's children</para>
|
||||||
|
/// </summary>
|
||||||
|
void importAssets(AssetImportObject* assetItem = nullptr);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Runs the import processing on a specific ImageAsset item
|
||||||
|
/// <para>@param assetItem, The asset item to import</para>
|
||||||
|
/// <para>@return AssetId of the asset that was imported. If import failed, it will be empty.</para>
|
||||||
|
/// </summary>
|
||||||
|
Torque::Path importImageAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Runs the import processing on a specific MaterialAsset item
|
||||||
|
/// <para>@param assetItem, The asset item to import</para>
|
||||||
|
/// <para>@return AssetId of the asset that was imported. If import failed, it will be empty.</para>
|
||||||
|
/// </summary>
|
||||||
|
Torque::Path importMaterialAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Runs the import processing on a specific ShapeAsset item
|
||||||
|
/// <para>@param assetItem, The asset item to import</para>
|
||||||
|
/// <para>@return AssetId of the asset that was imported. If import failed, it will be empty.</para>
|
||||||
|
/// </summary>
|
||||||
|
Torque::Path importShapeAsset(AssetImportObject* assetItem);
|
||||||
|
|
||||||
|
//
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the currently active import configuration
|
||||||
|
/// <para>@return Current AssetImportConfig the importer is using</para>
|
||||||
|
/// </summary>
|
||||||
|
AssetImportConfig* getImportConfig() { return &activeImportConfig; }
|
||||||
|
};
|
||||||
140
Engine/source/T3D/assets/assetImporter_ScriptBinding.h
Normal file
140
Engine/source/T3D/assets/assetImporter_ScriptBinding.h
Normal file
|
|
@ -0,0 +1,140 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "console/engineAPI.h"
|
||||||
|
#include "assetImporter.h"
|
||||||
|
|
||||||
|
//Console Functions
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImportConfig, loadImportConfig, void, (Settings* configSettings, String configName), (nullAsType<Settings*>(), ""),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->loadImportConfig(configSettings, configName);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, setTargetPath, void, (String path), (""),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->setTargetPath(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, resetImportSession, void, (), ,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->resetImportSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, dumpActivityLog, void, (), ,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->dumpActivityLog();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getActivityLogLineCount, S32, (),,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->getActivityLogLineCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getActivityLogLine, String, (S32 i), (0),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->getActivityLogLine(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, autoImportFile, String, (String path), (""),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->autoImportFile(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, addImportingFile, AssetImportObject*, (String path), (""),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->addImportingFile(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, processImportingAssets, void, (), ,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->processImportAssets();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, validateImportingAssets, bool, (), ,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->validateAssets();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, resolveAssetItemIssues, void, (AssetImportObject* assetItem), (nullAsType< AssetImportObject*>()),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
object->resolveAssetItemIssues(assetItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, importAssets, void, (),,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->importAssets();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getAssetItemCount, S32, (),,
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->getAssetItemCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getAssetItem, AssetImportObject*, (S32 index), (0),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
return object->getAssetItem(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getAssetItemChildCount, S32, (AssetImportObject* assetItem), (nullAsType< AssetImportObject*>()),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
if (assetItem == nullptr)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return object->getAssetItemChildCount(assetItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetImporter, getAssetItemChild, AssetImportObject*, (AssetImportObject* assetItem, S32 index), (nullAsType< AssetImportObject*>(), 0),
|
||||||
|
"Creates a new script asset using the targetFilePath.\n"
|
||||||
|
"@return The bool result of calling exec")
|
||||||
|
{
|
||||||
|
if (assetItem == nullptr)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return object->getAssetItemChild(assetItem, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*DefineEngineFunction(enumColladaForImport, bool, (const char* shapePath, const char* ctrl, bool loadCachedDts), ("", "", true),
|
||||||
|
"(string shapePath, GuiTreeViewCtrl ctrl) Collect scene information from "
|
||||||
|
"a COLLADA file and store it in a GuiTreeView control. This function is "
|
||||||
|
"used by the COLLADA import gui to show a preview of the scene contents "
|
||||||
|
"prior to import, and is probably not much use for anything else.\n"
|
||||||
|
"@param shapePath COLLADA filename\n"
|
||||||
|
"@param ctrl GuiTreeView control to add elements to\n"
|
||||||
|
"@param loadCachedDts dictates if it should try and load the cached dts file if it exists"
|
||||||
|
"@return true if successful, false otherwise\n"
|
||||||
|
"@ingroup Editors\n"
|
||||||
|
"@internal")
|
||||||
|
{
|
||||||
|
return enumColladaForImport(shapePath, ctrl, loadCachedDts);
|
||||||
|
}*/
|
||||||
|
|
@ -36,6 +36,7 @@ CameraSpline::Knot::Knot()
|
||||||
mSpeed = 0.0f;
|
mSpeed = 0.0f;
|
||||||
mType = NORMAL;
|
mType = NORMAL;
|
||||||
mPath = SPLINE;
|
mPath = SPLINE;
|
||||||
|
mDistance = 0.0f;
|
||||||
prev = NULL; next = NULL;
|
prev = NULL; next = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -46,6 +47,7 @@ CameraSpline::Knot::Knot(const Knot &k)
|
||||||
mSpeed = k.mSpeed;
|
mSpeed = k.mSpeed;
|
||||||
mType = k.mType;
|
mType = k.mType;
|
||||||
mPath = k.mPath;
|
mPath = k.mPath;
|
||||||
|
mDistance = k.mDistance;
|
||||||
prev = NULL; next = NULL;
|
prev = NULL; next = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -56,6 +58,7 @@ CameraSpline::Knot::Knot(const Point3F &p, const QuatF &r, F32 s, Knot::Type typ
|
||||||
mSpeed = s;
|
mSpeed = s;
|
||||||
mType = type;
|
mType = type;
|
||||||
mPath = path;
|
mPath = path;
|
||||||
|
mDistance = 0.0f;
|
||||||
prev = NULL; next = NULL;
|
prev = NULL; next = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,12 +92,12 @@ void ConvexShapeCollisionConvex::getFeatures( const MatrixF &mat, const VectorF
|
||||||
if ( pShape->mGeometry.points.empty() )
|
if ( pShape->mGeometry.points.empty() )
|
||||||
{
|
{
|
||||||
cf->material = 0;
|
cf->material = 0;
|
||||||
cf->object = NULL;
|
cf->mObject = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cf->material = 0;
|
cf->material = 0;
|
||||||
cf->object = mObject;
|
cf->mObject = mObject;
|
||||||
|
|
||||||
// Simple implementation... Add all Points, Edges and Faces.
|
// Simple implementation... Add all Points, Edges and Faces.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ protected:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ConvexShapeCollisionConvex() { mType = ConvexShapeCollisionConvexType; }
|
ConvexShapeCollisionConvex() { pShape = NULL; mType = ConvexShapeCollisionConvexType; }
|
||||||
|
|
||||||
ConvexShapeCollisionConvex( const ConvexShapeCollisionConvex& cv ) {
|
ConvexShapeCollisionConvex( const ConvexShapeCollisionConvex& cv ) {
|
||||||
mType = ConvexShapeCollisionConvexType;
|
mType = ConvexShapeCollisionConvexType;
|
||||||
|
|
@ -297,4 +297,4 @@ protected:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CONVEXSHAPE_H_
|
#endif // _CONVEXSHAPE_H_
|
||||||
|
|
|
||||||
|
|
@ -533,6 +533,8 @@ Debris::Debris()
|
||||||
mInitialTrans.identity();
|
mInitialTrans.identity();
|
||||||
mRadius = 0.2f;
|
mRadius = 0.2f;
|
||||||
mStatic = false;
|
mStatic = false;
|
||||||
|
mElasticity = 0.5f;
|
||||||
|
mFriction = 0.5f;
|
||||||
|
|
||||||
dMemset( mEmitterList, 0, sizeof( mEmitterList ) );
|
dMemset( mEmitterList, 0, sizeof( mEmitterList ) );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,23 @@
|
||||||
#include "T3D/decal/decalInstance.h"
|
#include "T3D/decal/decalInstance.h"
|
||||||
#include "scene/sceneRenderState.h"
|
#include "scene/sceneRenderState.h"
|
||||||
|
|
||||||
|
DecalInstance::DecalInstance()
|
||||||
|
: mDataBlock(NULL),
|
||||||
|
mRotAroundNormal(0.0f),
|
||||||
|
mSize(0.0f),
|
||||||
|
mCreateTime(0),
|
||||||
|
mVisibility(1.0f),
|
||||||
|
mLastAlpha(1.0f),
|
||||||
|
mTextureRectIdx(0),
|
||||||
|
mVerts(NULL),
|
||||||
|
mIndices(NULL),
|
||||||
|
mVertCount(0),
|
||||||
|
mIndxCount(0),
|
||||||
|
mFlags(0),
|
||||||
|
mRenderPriority(0),
|
||||||
|
mId(-1),
|
||||||
|
mCustomTex(NULL)
|
||||||
|
{}
|
||||||
void DecalInstance::getWorldMatrix( MatrixF *outMat, bool flip )
|
void DecalInstance::getWorldMatrix( MatrixF *outMat, bool flip )
|
||||||
{
|
{
|
||||||
outMat->setPosition( mPosition );
|
outMat->setPosition( mPosition );
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ class DecalInstance
|
||||||
/// Calculates the size of this decal onscreen in pixels, used for LOD.
|
/// Calculates the size of this decal onscreen in pixels, used for LOD.
|
||||||
F32 calcPixelSize( U32 viewportHeight, const Point3F &cameraPos, F32 worldToScreenScaleY ) const;
|
F32 calcPixelSize( U32 viewportHeight, const Point3F &cameraPos, F32 worldToScreenScaleY ) const;
|
||||||
|
|
||||||
DecalInstance() : mId(-1) {}
|
DecalInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _DECALINSTANCE_H_
|
#endif // _DECALINSTANCE_H_
|
||||||
|
|
|
||||||
|
|
@ -238,6 +238,9 @@ ExplosionData::ExplosionData()
|
||||||
explosionScale.set(1.0f, 1.0f, 1.0f);
|
explosionScale.set(1.0f, 1.0f, 1.0f);
|
||||||
playSpeed = 1.0f;
|
playSpeed = 1.0f;
|
||||||
|
|
||||||
|
explosionShape = NULL;
|
||||||
|
explosionAnimation = -1;
|
||||||
|
|
||||||
dMemset( emitterList, 0, sizeof( emitterList ) );
|
dMemset( emitterList, 0, sizeof( emitterList ) );
|
||||||
dMemset( emitterIDList, 0, sizeof( emitterIDList ) );
|
dMemset( emitterIDList, 0, sizeof( emitterIDList ) );
|
||||||
dMemset( debrisList, 0, sizeof( debrisList ) );
|
dMemset( debrisList, 0, sizeof( debrisList ) );
|
||||||
|
|
@ -924,6 +927,7 @@ Explosion::Explosion()
|
||||||
ss_index = 0;
|
ss_index = 0;
|
||||||
mDataBlock = 0;
|
mDataBlock = 0;
|
||||||
soundProfile_clone = 0;
|
soundProfile_clone = 0;
|
||||||
|
mRandomVal = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Explosion::~Explosion()
|
Explosion::~Explosion()
|
||||||
|
|
@ -962,7 +966,7 @@ void Explosion::setInitialState(const Point3F& point, const Point3F& normal, con
|
||||||
void Explosion::initPersistFields()
|
void Explosion::initPersistFields()
|
||||||
{
|
{
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
|
addField("initialNormal", TypePoint3F, Offset(mInitialNormal, Explosion), "Initial starting Normal.");
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,7 @@ fxFoliageReplicator::fxFoliageReplicator()
|
||||||
// Reset Foliage Count.
|
// Reset Foliage Count.
|
||||||
mCurrentFoliageCount = 0;
|
mCurrentFoliageCount = 0;
|
||||||
|
|
||||||
|
dMemset(&mFrustumRenderSet, 0, sizeof(mFrustumRenderSet));
|
||||||
// Reset Creation Area Angle Animation.
|
// Reset Creation Area Angle Animation.
|
||||||
mCreationAreaAngle = 0;
|
mCreationAreaAngle = 0;
|
||||||
|
|
||||||
|
|
@ -299,8 +300,15 @@ fxFoliageReplicator::fxFoliageReplicator()
|
||||||
|
|
||||||
// Reset Frame Serial ID.
|
// Reset Frame Serial ID.
|
||||||
mFrameSerialID = 0;
|
mFrameSerialID = 0;
|
||||||
|
mQuadTreeLevels = 0;
|
||||||
|
mNextAllocatedNodeIdx = 0;
|
||||||
mAlphaLookup = NULL;
|
mAlphaLookup = NULL;
|
||||||
|
mFadeInGradient = 0.0f;
|
||||||
|
mFadeOutGradient = 0.0f;
|
||||||
|
mGlobalSwayPhase = 0.0f;
|
||||||
|
mGlobalSwayTimeRatio = 1.0f;
|
||||||
|
mGlobalLightPhase = 0.0f;
|
||||||
|
mGlobalLightTimeRatio = 1.0f;
|
||||||
|
|
||||||
mDirty = true;
|
mDirty = true;
|
||||||
|
|
||||||
|
|
@ -317,6 +325,8 @@ fxFoliageReplicator::fxFoliageReplicator()
|
||||||
mFoliageShaderTrueBillboardSC = NULL;
|
mFoliageShaderTrueBillboardSC = NULL;
|
||||||
mFoliageShaderGroundAlphaSC = NULL;
|
mFoliageShaderGroundAlphaSC = NULL;
|
||||||
mFoliageShaderAmbientColorSC = NULL;
|
mFoliageShaderAmbientColorSC = NULL;
|
||||||
|
mDiffuseTextureSC = NULL;
|
||||||
|
mAlphaMapTextureSC = NULL;
|
||||||
|
|
||||||
mShaderData = NULL;
|
mShaderData = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@ LightningData::LightningData()
|
||||||
strikeTextureNames[i] = NULL;
|
strikeTextureNames[i] = NULL;
|
||||||
strikeTextures[i] = NULL;
|
strikeTextures[i] = NULL;
|
||||||
}
|
}
|
||||||
|
numThunders = 0;
|
||||||
mNumStrikeTextures = 0;
|
mNumStrikeTextures = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -371,6 +371,7 @@ Lightning::Lightning()
|
||||||
mNetFlags.set(Ghostable|ScopeAlways);
|
mNetFlags.set(Ghostable|ScopeAlways);
|
||||||
mTypeMask |= StaticObjectType|EnvironmentObjectType;
|
mTypeMask |= StaticObjectType|EnvironmentObjectType;
|
||||||
|
|
||||||
|
mDataBlock = NULL;
|
||||||
mLastThink = 0;
|
mLastThink = 0;
|
||||||
|
|
||||||
mStrikeListHead = NULL;
|
mStrikeListHead = NULL;
|
||||||
|
|
@ -1033,6 +1034,16 @@ LightningBolt::LightningBolt()
|
||||||
elapsedTime = 0.0f;
|
elapsedTime = 0.0f;
|
||||||
lifetime = 1.0f;
|
lifetime = 1.0f;
|
||||||
startRender = false;
|
startRender = false;
|
||||||
|
endPoint.zero();
|
||||||
|
width = 1;
|
||||||
|
numMajorNodes = 10;
|
||||||
|
maxMajorAngle = 30.0f;
|
||||||
|
numMinorNodes = 4;
|
||||||
|
maxMinorAngle = 15.0f;
|
||||||
|
fadeTime = 0.2f;
|
||||||
|
renderTime = 0.125;
|
||||||
|
dMemset(&mMajorNodes, 0, sizeof(mMajorNodes));
|
||||||
|
percentFade = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -846,6 +846,7 @@ ParticleEmitterData::ParticleEmitterData(const ParticleEmitterData& other, bool
|
||||||
textureName = other.textureName;
|
textureName = other.textureName;
|
||||||
textureHandle = other.textureHandle; // -- TextureHandle loads using textureName
|
textureHandle = other.textureHandle; // -- TextureHandle loads using textureName
|
||||||
highResOnly = other.highResOnly;
|
highResOnly = other.highResOnly;
|
||||||
|
glow = other.glow;
|
||||||
renderReflection = other.renderReflection;
|
renderReflection = other.renderReflection;
|
||||||
fade_color = other.fade_color;
|
fade_color = other.fade_color;
|
||||||
fade_size = other.fade_size;
|
fade_size = other.fade_size;
|
||||||
|
|
@ -965,7 +966,7 @@ ParticleEmitter::ParticleEmitter()
|
||||||
pos_pe.set(0,0,0);
|
pos_pe.set(0,0,0);
|
||||||
sort_priority = 0;
|
sort_priority = 0;
|
||||||
mDataBlock = 0;
|
mDataBlock = 0;
|
||||||
|
std::fill_n(sizes, ParticleData::PDC_NUM_KEYS, 0.0f);
|
||||||
#if defined(AFX_CAP_PARTICLE_POOLS)
|
#if defined(AFX_CAP_PARTICLE_POOLS)
|
||||||
pool = 0;
|
pool = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -170,6 +170,7 @@ void RibbonData::unpackData(BitStream* stream)
|
||||||
//
|
//
|
||||||
Ribbon::Ribbon()
|
Ribbon::Ribbon()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
mTypeMask |= StaticObjectType;
|
mTypeMask |= StaticObjectType;
|
||||||
|
|
||||||
VECTOR_SET_ASSOCIATION(mSegmentPoints);
|
VECTOR_SET_ASSOCIATION(mSegmentPoints);
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,6 @@ class RibbonNodeData : public GameBaseData
|
||||||
{
|
{
|
||||||
typedef GameBaseData Parent;
|
typedef GameBaseData Parent;
|
||||||
|
|
||||||
public:
|
|
||||||
F32 timeMultiple;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RibbonNodeData();
|
RibbonNodeData();
|
||||||
~RibbonNodeData();
|
~RibbonNodeData();
|
||||||
|
|
|
||||||
|
|
@ -309,6 +309,7 @@ Splash::Splash()
|
||||||
|
|
||||||
mDelayMS = 0;
|
mDelayMS = 0;
|
||||||
mCurrMS = 0;
|
mCurrMS = 0;
|
||||||
|
mRandAngle = 0;
|
||||||
mEndingMS = 1000;
|
mEndingMS = 1000;
|
||||||
mActive = false;
|
mActive = false;
|
||||||
mRadius = 0.0;
|
mRadius = 0.0;
|
||||||
|
|
@ -319,7 +320,8 @@ Splash::Splash()
|
||||||
mElapsedTime = 0.0;
|
mElapsedTime = 0.0;
|
||||||
|
|
||||||
mInitialNormal.set( 0.0, 0.0, 1.0 );
|
mInitialNormal.set( 0.0, 0.0, 1.0 );
|
||||||
|
mFade = 0;
|
||||||
|
mFog = 0;
|
||||||
// Only allocated client side.
|
// Only allocated client side.
|
||||||
mNetFlags.set( IsGhost );
|
mNetFlags.set( IsGhost );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,7 @@ GameBase::GameBase()
|
||||||
mTicksSinceLastMove = 0;
|
mTicksSinceLastMove = 0;
|
||||||
mIsAiControlled = false;
|
mIsAiControlled = false;
|
||||||
#endif
|
#endif
|
||||||
|
mCameraFov = 90.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameBase::~GameBase()
|
GameBase::~GameBase()
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
MoveList::MoveList()
|
MoveList::MoveList()
|
||||||
{
|
{
|
||||||
|
mConnection = NULL;
|
||||||
mControlMismatch = false;
|
mControlMismatch = false;
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,8 @@ GuiMaterialPreview::GuiMaterialPreview()
|
||||||
// By default don't do dynamic reflection
|
// By default don't do dynamic reflection
|
||||||
// updates for this viewport.
|
// updates for this viewport.
|
||||||
mReflectPriority = 0.0f;
|
mReflectPriority = 0.0f;
|
||||||
|
mMountedModel = NULL;
|
||||||
|
mSkinTag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiMaterialPreview::~GuiMaterialPreview()
|
GuiMaterialPreview::~GuiMaterialPreview()
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,20 @@ namespace IBLUtilities
|
||||||
GFXShaderConstHandle* prefilterMipSizeSC = prefilterShader->getShaderConstHandle("$mipSize");
|
GFXShaderConstHandle* prefilterMipSizeSC = prefilterShader->getShaderConstHandle("$mipSize");
|
||||||
GFXShaderConstHandle* prefilterResolutionSC = prefilterShader->getShaderConstHandle("$resolution");
|
GFXShaderConstHandle* prefilterResolutionSC = prefilterShader->getShaderConstHandle("$resolution");
|
||||||
|
|
||||||
|
GFXStateBlockDesc desc;
|
||||||
|
desc.zEnable = false;
|
||||||
|
desc.samplersDefined = true;
|
||||||
|
desc.samplers[0].addressModeU = GFXAddressClamp;
|
||||||
|
desc.samplers[0].addressModeV = GFXAddressClamp;
|
||||||
|
desc.samplers[0].addressModeW = GFXAddressClamp;
|
||||||
|
desc.samplers[0].magFilter = GFXTextureFilterLinear;
|
||||||
|
desc.samplers[0].minFilter = GFXTextureFilterLinear;
|
||||||
|
desc.samplers[0].mipFilter = GFXTextureFilterLinear;
|
||||||
|
|
||||||
|
GFXStateBlockRef preStateBlock;
|
||||||
|
preStateBlock = GFX->createStateBlock(desc);
|
||||||
|
GFX->setStateBlock(preStateBlock);
|
||||||
|
|
||||||
GFX->pushActiveRenderTarget();
|
GFX->pushActiveRenderTarget();
|
||||||
GFX->setShader(prefilterShader);
|
GFX->setShader(prefilterShader);
|
||||||
GFX->setShaderConstBuffer(prefilterConsts);
|
GFX->setShaderConstBuffer(prefilterConsts);
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ ConsoleDocClass( PhysicsForce,
|
||||||
PhysicsForce::PhysicsForce()
|
PhysicsForce::PhysicsForce()
|
||||||
:
|
:
|
||||||
mWorld( NULL ),
|
mWorld( NULL ),
|
||||||
|
mForce(0.0f),
|
||||||
mPhysicsTick( false ),
|
mPhysicsTick( false ),
|
||||||
mBody( NULL )
|
mBody( NULL )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -311,6 +311,11 @@ PlayerData::PlayerData()
|
||||||
jumpEnergyDrain = 0.0f;
|
jumpEnergyDrain = 0.0f;
|
||||||
minJumpEnergy = 0.0f;
|
minJumpEnergy = 0.0f;
|
||||||
jumpSurfaceAngle = 78.0f;
|
jumpSurfaceAngle = 78.0f;
|
||||||
|
jumpSurfaceCos = mCos(mDegToRad(jumpSurfaceAngle));
|
||||||
|
|
||||||
|
for (U32 i = 0; i < NumRecoilSequences; i++)
|
||||||
|
recoilSequence[i] = -1;
|
||||||
|
|
||||||
jumpDelay = 30;
|
jumpDelay = 30;
|
||||||
minJumpSpeed = 500.0f;
|
minJumpSpeed = 500.0f;
|
||||||
maxJumpSpeed = 2.0f * minJumpSpeed;
|
maxJumpSpeed = 2.0f * minJumpSpeed;
|
||||||
|
|
@ -370,6 +375,9 @@ PlayerData::PlayerData()
|
||||||
|
|
||||||
actionCount = 0;
|
actionCount = 0;
|
||||||
lookAction = 0;
|
lookAction = 0;
|
||||||
|
dMemset(spineNode, 0, sizeof(spineNode));
|
||||||
|
|
||||||
|
pickupDelta = 0.0f;
|
||||||
|
|
||||||
// size of bounding box
|
// size of bounding box
|
||||||
boxSize.set(1.0f, 1.0f, 2.3f);
|
boxSize.set(1.0f, 1.0f, 2.3f);
|
||||||
|
|
|
||||||
|
|
@ -253,6 +253,7 @@ RigidShapeData::RigidShapeData()
|
||||||
|
|
||||||
dustEmitter = NULL;
|
dustEmitter = NULL;
|
||||||
dustID = 0;
|
dustID = 0;
|
||||||
|
triggerDustHeight = 3.0;
|
||||||
dustHeight = 1.0;
|
dustHeight = 1.0;
|
||||||
|
|
||||||
dMemset( splashEmitterList, 0, sizeof( splashEmitterList ) );
|
dMemset( splashEmitterList, 0, sizeof( splashEmitterList ) );
|
||||||
|
|
|
||||||
|
|
@ -3571,7 +3571,7 @@ Point3F ShapeBaseConvex::support(const VectorF& v) const
|
||||||
void ShapeBaseConvex::getFeatures(const MatrixF& mat, const VectorF& n, ConvexFeature* cf)
|
void ShapeBaseConvex::getFeatures(const MatrixF& mat, const VectorF& n, ConvexFeature* cf)
|
||||||
{
|
{
|
||||||
cf->material = 0;
|
cf->material = 0;
|
||||||
cf->object = mObject;
|
cf->mObject = mObject;
|
||||||
|
|
||||||
TSShape::ConvexHullAccelerator* pAccel =
|
TSShape::ConvexHullAccelerator* pAccel =
|
||||||
pShapeBase->mShapeInstance->getShape()->getAccelerator(pShapeBase->mDataBlock->collisionDetails[hullId]);
|
pShapeBase->mShapeInstance->getShape()->getAccelerator(pShapeBase->mDataBlock->collisionDetails[hullId]);
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ class ShapeBaseConvex : public Convex
|
||||||
Box3F box;
|
Box3F box;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ShapeBaseConvex() { mType = ShapeBaseConvexType; nodeTransform = 0; }
|
ShapeBaseConvex() :pShapeBase(NULL), transform(NULL), hullId(NULL), nodeTransform(0) { mType = ShapeBaseConvexType; }
|
||||||
ShapeBaseConvex(const ShapeBaseConvex& cv) {
|
ShapeBaseConvex(const ShapeBaseConvex& cv) {
|
||||||
mObject = cv.mObject;
|
mObject = cv.mObject;
|
||||||
pShapeBase = cv.pShapeBase;
|
pShapeBase = cv.pShapeBase;
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,8 @@ ShapeBaseImageData::StateData::StateData()
|
||||||
recoil = NoRecoil;
|
recoil = NoRecoil;
|
||||||
sound = 0;
|
sound = 0;
|
||||||
emitter = NULL;
|
emitter = NULL;
|
||||||
|
shapeSequence = NULL;
|
||||||
|
shapeSequenceScale = true;
|
||||||
script = 0;
|
script = 0;
|
||||||
ignoreLoadedForReady = false;
|
ignoreLoadedForReady = false;
|
||||||
|
|
||||||
|
|
@ -1396,6 +1398,7 @@ ShapeBase::MountedImage::MountedImage()
|
||||||
dataBlock = 0;
|
dataBlock = 0;
|
||||||
nextImage = InvalidImagePtr;
|
nextImage = InvalidImagePtr;
|
||||||
delayTime = 0;
|
delayTime = 0;
|
||||||
|
rDT = 0.0f;
|
||||||
ammo = false;
|
ammo = false;
|
||||||
target = false;
|
target = false;
|
||||||
triggerDown = false;
|
triggerDown = false;
|
||||||
|
|
@ -1408,6 +1411,7 @@ ShapeBase::MountedImage::MountedImage()
|
||||||
motion = false;
|
motion = false;
|
||||||
lightStart = 0;
|
lightStart = 0;
|
||||||
lightInfo = NULL;
|
lightInfo = NULL;
|
||||||
|
dMemset(emitter, 0, sizeof(emitter));
|
||||||
|
|
||||||
for (U32 i=0; i<ShapeBaseImageData::MaxGenericTriggers; ++i)
|
for (U32 i=0; i<ShapeBaseImageData::MaxGenericTriggers; ++i)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -284,10 +284,17 @@ bool TSStatic::_setShapeName(void* obj, const char* index, const char* data)
|
||||||
if (assetId == StringTable->insert("Core_Rendering:noShape"))
|
if (assetId == StringTable->insert("Core_Rendering:noShape"))
|
||||||
{
|
{
|
||||||
ts->mShapeName = data;
|
ts->mShapeName = data;
|
||||||
|
ts->mShapeAssetId = StringTable->EmptyString();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ts->mShapeAssetId = assetId;
|
||||||
|
ts->mShapeName = StringTable->EmptyString();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -295,7 +302,7 @@ bool TSStatic::_setShapeName(void* obj, const char* index, const char* data)
|
||||||
ts->mShapeAsset = StringTable->EmptyString();
|
ts->mShapeAsset = StringTable->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TSStatic::_setFieldSkin(void* object, const char* index, const char* data)
|
bool TSStatic::_setFieldSkin(void* object, const char* index, const char* data)
|
||||||
|
|
@ -1486,7 +1493,7 @@ void TSStaticPolysoupConvex::getPolyList(AbstractPolyList* list)
|
||||||
void TSStaticPolysoupConvex::getFeatures(const MatrixF& mat, const VectorF& n, ConvexFeature* cf)
|
void TSStaticPolysoupConvex::getFeatures(const MatrixF& mat, const VectorF& n, ConvexFeature* cf)
|
||||||
{
|
{
|
||||||
cf->material = 0;
|
cf->material = 0;
|
||||||
cf->object = mObject;
|
cf->mObject = mObject;
|
||||||
|
|
||||||
// For a tetrahedron this is pretty easy... first
|
// For a tetrahedron this is pretty easy... first
|
||||||
// convert everything into world space.
|
// convert everything into world space.
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,7 @@ AITurretShapeData::AITurretShapeData()
|
||||||
}
|
}
|
||||||
isAnimated = false;
|
isAnimated = false;
|
||||||
statesLoaded = false;
|
statesLoaded = false;
|
||||||
|
fireState = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AITurretShapeData::initPersistFields()
|
void AITurretShapeData::initPersistFields()
|
||||||
|
|
|
||||||
|
|
@ -114,17 +114,21 @@ TurretShapeData::TurretShapeData()
|
||||||
|
|
||||||
headingNode = -1;
|
headingNode = -1;
|
||||||
pitchNode = -1;
|
pitchNode = -1;
|
||||||
|
U32 i = 0;
|
||||||
for (U32 i=0; i<NumMirrorDirectionNodes; ++i)
|
for (i=0; i<NumMirrorDirectionNodes; ++i)
|
||||||
{
|
{
|
||||||
pitchNodes[i] = -1;
|
pitchNodes[i] = -1;
|
||||||
headingNodes[i] = -1;
|
headingNodes[i] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (U32 i=0; i<ShapeBase::MaxMountedImages; ++i)
|
for (i=0; i<ShapeBase::MaxMountedImages; ++i)
|
||||||
{
|
{
|
||||||
weaponMountNode[i] = -1;
|
weaponMountNode[i] = -1;
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < NumRecoilSequences;i++)
|
||||||
|
recoilSequence[i] = -1;
|
||||||
|
pitchSequence = -1;
|
||||||
|
headingSequence = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TurretShapeData::initPersistFields()
|
void TurretShapeData::initPersistFields()
|
||||||
|
|
@ -284,6 +288,8 @@ TurretShape::TurretShape()
|
||||||
|
|
||||||
// For the Item class
|
// For the Item class
|
||||||
mSubclassItemHandlesScene = true;
|
mSubclassItemHandlesScene = true;
|
||||||
|
mRecoilThread = NULL;
|
||||||
|
mImageStateThread = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
TurretShape::~TurretShape()
|
TurretShape::~TurretShape()
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,7 @@ ConsoleDocClass( FlyingVehicle,
|
||||||
|
|
||||||
FlyingVehicle::FlyingVehicle()
|
FlyingVehicle::FlyingVehicle()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
mSteering.set(0,0);
|
mSteering.set(0,0);
|
||||||
mThrottle = 0;
|
mThrottle = 0;
|
||||||
mJetting = false;
|
mJetting = false;
|
||||||
|
|
@ -332,6 +333,10 @@ FlyingVehicle::FlyingVehicle()
|
||||||
mBackMaintainOn = false;
|
mBackMaintainOn = false;
|
||||||
mBottomMaintainOn = false;
|
mBottomMaintainOn = false;
|
||||||
createHeightOn = false;
|
createHeightOn = false;
|
||||||
|
mCeilingFactor = 1.0f;
|
||||||
|
mThrustDirection = FlyingVehicle::ThrustForward;
|
||||||
|
for (U32 i=0;i< JetAnimCount;i++)
|
||||||
|
mJetSeq[i] = -1;
|
||||||
|
|
||||||
for (S32 i = 0; i < JetAnimCount; i++)
|
for (S32 i = 0; i < JetAnimCount; i++)
|
||||||
mJetThread[i] = 0;
|
mJetThread[i] = 0;
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,6 @@ struct FlyingVehicleData: public VehicleData {
|
||||||
|
|
||||||
// Initialized in preload
|
// Initialized in preload
|
||||||
ClippedPolyList rigidBody;
|
ClippedPolyList rigidBody;
|
||||||
S32 surfaceCount;
|
|
||||||
F32 maxSpeed;
|
F32 maxSpeed;
|
||||||
|
|
||||||
enum JetNodes {
|
enum JetNodes {
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,7 @@ HoverVehicleData::HoverVehicleData()
|
||||||
dustTrailID = 0;
|
dustTrailID = 0;
|
||||||
dustTrailOffset.set( 0.0f, 0.0f, 0.0f );
|
dustTrailOffset.set( 0.0f, 0.0f, 0.0f );
|
||||||
dustTrailFreqMod = 15.0f;
|
dustTrailFreqMod = 15.0f;
|
||||||
|
maxThrustSpeed = 0;
|
||||||
triggerTrailHeight = 2.5f;
|
triggerTrailHeight = 2.5f;
|
||||||
|
|
||||||
floatingGravMag = 1;
|
floatingGravMag = 1;
|
||||||
|
|
@ -436,24 +437,29 @@ void HoverVehicleData::unpackData(BitStream* stream)
|
||||||
//
|
//
|
||||||
HoverVehicle::HoverVehicle()
|
HoverVehicle::HoverVehicle()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
// Todo: ScopeAlways?
|
// Todo: ScopeAlways?
|
||||||
mNetFlags.set(Ghostable);
|
mNetFlags.set(Ghostable);
|
||||||
|
|
||||||
mFloating = false;
|
mFloating = false;
|
||||||
mForwardThrust = 0;
|
mThrustLevel = 0.0f;
|
||||||
mReverseThrust = 0;
|
mForwardThrust = 0.0f;
|
||||||
mLeftThrust = 0;
|
mReverseThrust = 0.0f;
|
||||||
mRightThrust = 0;
|
mLeftThrust = 0.0f;
|
||||||
|
mRightThrust = 0.0f;
|
||||||
|
|
||||||
mJetSound = NULL;
|
mJetSound = NULL;
|
||||||
mEngineSound = NULL;
|
mEngineSound = NULL;
|
||||||
mFloatSound = NULL;
|
mFloatSound = NULL;
|
||||||
|
mThrustDirection = HoverVehicle::ThrustForward;
|
||||||
mDustTrailEmitter = NULL;
|
mDustTrailEmitter = NULL;
|
||||||
|
|
||||||
mBackMaintainOn = false;
|
mBackMaintainOn = false;
|
||||||
for (S32 i = 0; i < JetAnimCount; i++)
|
for (S32 i = 0; i < JetAnimCount; i++)
|
||||||
mJetThread[i] = 0;
|
{
|
||||||
|
mJetSeq[i] = -1;
|
||||||
|
mJetThread[i] = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HoverVehicle::~HoverVehicle()
|
HoverVehicle::~HoverVehicle()
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ WheeledVehicleData::WheeledVehicleData()
|
||||||
brakeLightSequence = -1;
|
brakeLightSequence = -1;
|
||||||
steeringSequence = -1;
|
steeringSequence = -1;
|
||||||
wheelCount = 0;
|
wheelCount = 0;
|
||||||
|
dMemset(&wheel, 0, sizeof(wheel));
|
||||||
for (S32 i = 0; i < MaxSounds; i++)
|
for (S32 i = 0; i < MaxSounds; i++)
|
||||||
sound[i] = 0;
|
sound[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,9 @@ IMPLEMENT_CONOBJECT( VSpawnSphereSpawnTargetTrack );
|
||||||
|
|
||||||
VSpawnSphereSpawnTargetTrack::VSpawnSphereSpawnTargetTrack( void )
|
VSpawnSphereSpawnTargetTrack::VSpawnSphereSpawnTargetTrack( void )
|
||||||
{
|
{
|
||||||
setLabel( "SpawnTargetTrack" );
|
mDespawnOnStop = false;
|
||||||
|
mDespawnOnLoop = false;
|
||||||
|
setLabel( "SpawnTargetTrack" );
|
||||||
}
|
}
|
||||||
|
|
||||||
void VSpawnSphereSpawnTargetTrack::initPersistFields( void )
|
void VSpawnSphereSpawnTargetTrack::initPersistFields( void )
|
||||||
|
|
@ -152,4 +154,4 @@ void VSpawnSphereSpawnTargetTrack::despawnTargets( void )
|
||||||
// Delete the Object.
|
// Delete the Object.
|
||||||
object->deleteObject();
|
object->deleteObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,8 @@ VActorPhysicsController::VActorPhysicsController( void ) :
|
||||||
mControlState( k_NullControlState ),
|
mControlState( k_NullControlState ),
|
||||||
mMoveState( k_NullMove ),
|
mMoveState( k_NullMove ),
|
||||||
mVelocity( VectorF::Zero ),
|
mVelocity( VectorF::Zero ),
|
||||||
mGravity( 0.f, 0.f, -9.8f )
|
mGravity( 0.f, 0.f, -9.8f ),
|
||||||
|
mOnGround(false)
|
||||||
{
|
{
|
||||||
// Void.
|
// Void.
|
||||||
}
|
}
|
||||||
|
|
@ -1274,4 +1275,4 @@ void VActorPhysicsController::unpackUpdate( NetConnection *pConnection, BitStrea
|
||||||
// Apply.
|
// Apply.
|
||||||
setPosition( position );
|
setPosition( position );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ private:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
VPathEditorEditPathAction( const UTF8 *pName = "" ) :
|
VPathEditorEditPathAction( const UTF8 *pName = "" ) :
|
||||||
UndoAction( pName )
|
UndoAction( pName ), mEditor(NULL), mPath(NULL)
|
||||||
{
|
{
|
||||||
// Void.
|
// Void.
|
||||||
};
|
};
|
||||||
|
|
@ -218,9 +218,11 @@ private:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
VPathEditorEditNodeAction( const UTF8 *pName = "" ) :
|
VPathEditorEditNodeAction( const UTF8 *pName = "" ) :
|
||||||
UndoAction( pName )
|
UndoAction( pName ), mEditor(NULL), mPath(NULL), mNodeIndex(0), mNodeWeight(0.0f)
|
||||||
{
|
{
|
||||||
// Void.
|
// Void.
|
||||||
|
mNodeOrientation.Type = VPathNode::k_OrientationFree;
|
||||||
|
mNodeOrientation.Point = Point3F(0.0f, 0.0f, 0.0f);
|
||||||
};
|
};
|
||||||
|
|
||||||
VPathEditor *mEditor;
|
VPathEditor *mEditor;
|
||||||
|
|
@ -290,4 +292,4 @@ namespace Utility
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
#endif // _VT_VPATHEDITOR_H_
|
#endif // _VT_VPATHEDITOR_H_
|
||||||
|
|
|
||||||
|
|
@ -147,8 +147,6 @@ public:
|
||||||
DECLARE_CATEGORY("AFX");
|
DECLARE_CATEGORY("AFX");
|
||||||
|
|
||||||
private: // 3POV SECTION
|
private: // 3POV SECTION
|
||||||
U32 mBlockers_mask_3pov;
|
|
||||||
|
|
||||||
void cam_update_3pov(F32 dt, bool on_server);
|
void cam_update_3pov(F32 dt, bool on_server);
|
||||||
bool avoid_blocked_view(const Point3F& start, const Point3F& end, Point3F& newpos);
|
bool avoid_blocked_view(const Point3F& start, const Point3F& end, Point3F& newpos);
|
||||||
bool test_blocked_line(const Point3F& start, const Point3F& end);
|
bool test_blocked_line(const Point3F& start, const Point3F& end);
|
||||||
|
|
|
||||||
|
|
@ -1904,6 +1904,9 @@ afxEffectConstraint::afxEffectConstraint(afxConstraintMgr* mgr)
|
||||||
{
|
{
|
||||||
mEffect_name = ST_NULLSTRING;
|
mEffect_name = ST_NULLSTRING;
|
||||||
mEffect = 0;
|
mEffect = 0;
|
||||||
|
mClip_tag = 0;
|
||||||
|
mIs_death_clip = false;
|
||||||
|
mLock_tag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxEffectConstraint::afxEffectConstraint(afxConstraintMgr* mgr, StringTableEntry effect_name)
|
afxEffectConstraint::afxEffectConstraint(afxConstraintMgr* mgr, StringTableEntry effect_name)
|
||||||
|
|
@ -1911,6 +1914,9 @@ afxEffectConstraint::afxEffectConstraint(afxConstraintMgr* mgr, StringTableEntry
|
||||||
{
|
{
|
||||||
mEffect_name = effect_name;
|
mEffect_name = effect_name;
|
||||||
mEffect = 0;
|
mEffect = 0;
|
||||||
|
mClip_tag = 0;
|
||||||
|
mIs_death_clip = false;
|
||||||
|
mLock_tag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxEffectConstraint::~afxEffectConstraint()
|
afxEffectConstraint::~afxEffectConstraint()
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@ afxEffectVector::afxEffectVector()
|
||||||
mOn_server = false;
|
mOn_server = false;
|
||||||
mTotal_fx_dur = 0;
|
mTotal_fx_dur = 0;
|
||||||
mAfter_life = 0;
|
mAfter_life = 0;
|
||||||
|
mPhrase_dur = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxEffectVector::~afxEffectVector()
|
afxEffectVector::~afxEffectVector()
|
||||||
|
|
|
||||||
|
|
@ -298,8 +298,6 @@ protected:
|
||||||
bool mIn_scope;
|
bool mIn_scope;
|
||||||
bool mIs_aborted;
|
bool mIs_aborted;
|
||||||
|
|
||||||
U8 mEffect_flags;
|
|
||||||
|
|
||||||
afxXM_Base* mXfm_modifiers[MAX_XFM_MODIFIERS];
|
afxXM_Base* mXfm_modifiers[MAX_XFM_MODIFIERS];
|
||||||
|
|
||||||
F32 mLive_scale_factor;
|
F32 mLive_scale_factor;
|
||||||
|
|
|
||||||
|
|
@ -168,13 +168,14 @@ afxMagicMissileData::afxMagicMissileData()
|
||||||
impactForce = 0.0f;
|
impactForce = 0.0f;
|
||||||
|
|
||||||
armingDelay = 0;
|
armingDelay = 0;
|
||||||
fadeDelay = 20000 / 32;
|
|
||||||
lifetime = 20000 / 32;
|
|
||||||
|
|
||||||
activateSeq = -1;
|
activateSeq = -1;
|
||||||
maintainSeq = -1;
|
maintainSeq = -1;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
lifetime = 20000 / 32;
|
||||||
|
fadeDelay = 20000 / 32;
|
||||||
|
|
||||||
gravityMod = 1.0;
|
gravityMod = 1.0;
|
||||||
/* From stock Projectile code...
|
/* From stock Projectile code...
|
||||||
bounceElasticity = 0.999f;
|
bounceElasticity = 0.999f;
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,10 @@ afxZodiacGroundPlaneRenderer::afxZodiacGroundPlaneRenderer()
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacGroundPlaneRenderer::afxZodiacGroundPlaneRenderer(F32 renderOrder, F32 processAddOrder)
|
afxZodiacGroundPlaneRenderer::afxZodiacGroundPlaneRenderer(F32 renderOrder, F32 processAddOrder)
|
||||||
|
|
@ -66,6 +70,10 @@ afxZodiacGroundPlaneRenderer::afxZodiacGroundPlaneRenderer(F32 renderOrder, F32
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacGroundPlaneRenderer::~afxZodiacGroundPlaneRenderer()
|
afxZodiacGroundPlaneRenderer::~afxZodiacGroundPlaneRenderer()
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,10 @@ afxZodiacMeshRoadRenderer::afxZodiacMeshRoadRenderer()
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacMeshRoadRenderer::afxZodiacMeshRoadRenderer(F32 renderOrder, F32 processAddOrder)
|
afxZodiacMeshRoadRenderer::afxZodiacMeshRoadRenderer(F32 renderOrder, F32 processAddOrder)
|
||||||
|
|
@ -66,6 +70,10 @@ afxZodiacMeshRoadRenderer::afxZodiacMeshRoadRenderer(F32 renderOrder, F32 proces
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacMeshRoadRenderer::~afxZodiacMeshRoadRenderer()
|
afxZodiacMeshRoadRenderer::~afxZodiacMeshRoadRenderer()
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,10 @@ afxZodiacPolysoupRenderer::afxZodiacPolysoupRenderer()
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacPolysoupRenderer::afxZodiacPolysoupRenderer(F32 renderOrder, F32 processAddOrder)
|
afxZodiacPolysoupRenderer::afxZodiacPolysoupRenderer(F32 renderOrder, F32 processAddOrder)
|
||||||
|
|
@ -66,6 +70,10 @@ afxZodiacPolysoupRenderer::afxZodiacPolysoupRenderer(F32 renderOrder, F32 proces
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacPolysoupRenderer::~afxZodiacPolysoupRenderer()
|
afxZodiacPolysoupRenderer::~afxZodiacPolysoupRenderer()
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,10 @@ afxZodiacTerrainRenderer::afxZodiacTerrainRenderer()
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacTerrainRenderer::afxZodiacTerrainRenderer(F32 renderOrder, F32 processAddOrder)
|
afxZodiacTerrainRenderer::afxZodiacTerrainRenderer(F32 renderOrder, F32 processAddOrder)
|
||||||
|
|
@ -76,6 +80,10 @@ afxZodiacTerrainRenderer::afxZodiacTerrainRenderer(F32 renderOrder, F32 processA
|
||||||
if (!master)
|
if (!master)
|
||||||
master = this;
|
master = this;
|
||||||
shader_initialized = false;
|
shader_initialized = false;
|
||||||
|
zodiac_shader = NULL;
|
||||||
|
shader_consts = NULL;
|
||||||
|
projection_sc = NULL;
|
||||||
|
color_sc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacTerrainRenderer::~afxZodiacTerrainRenderer()
|
afxZodiacTerrainRenderer::~afxZodiacTerrainRenderer()
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,11 @@ afxModelData::afxModelData(const afxModelData& other, bool temp_clone) : GameBas
|
||||||
customAmbientForSelfIllumination = other.customAmbientForSelfIllumination;
|
customAmbientForSelfIllumination = other.customAmbientForSelfIllumination;
|
||||||
customAmbientLighting = other.customAmbientLighting;
|
customAmbientLighting = other.customAmbientLighting;
|
||||||
shadowEnable = other.shadowEnable;
|
shadowEnable = other.shadowEnable;
|
||||||
|
|
||||||
|
shadowSize = other.shadowSize;
|
||||||
|
shadowMaxVisibleDistance = other.shadowMaxVisibleDistance;
|
||||||
|
shadowProjectionDistance = other.shadowProjectionDistance;
|
||||||
|
shadowSphereAdjust = other.shadowSphereAdjust;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxModelData::~afxModelData()
|
afxModelData::~afxModelData()
|
||||||
|
|
@ -360,7 +365,7 @@ afxModel::afxModel()
|
||||||
fade_amt = 1.0f;
|
fade_amt = 1.0f;
|
||||||
is_visible = true;
|
is_visible = true;
|
||||||
sort_priority = 0;
|
sort_priority = 0;
|
||||||
|
mDataBlock = NULL;
|
||||||
mNetFlags.set( IsGhost );
|
mNetFlags.set( IsGhost );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@ afxMooring::afxMooring()
|
||||||
chor_id = 0;
|
chor_id = 0;
|
||||||
hookup_with_chor = false;
|
hookup_with_chor = false;
|
||||||
ghost_cons_name = ST_NULLSTRING;
|
ghost_cons_name = ST_NULLSTRING;
|
||||||
|
mDataBlock = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxMooring::afxMooring(U32 networking, U32 chor_id, StringTableEntry cons_name)
|
afxMooring::afxMooring(U32 networking, U32 chor_id, StringTableEntry cons_name)
|
||||||
|
|
@ -160,6 +161,7 @@ afxMooring::afxMooring(U32 networking, U32 chor_id, StringTableEntry cons_name)
|
||||||
this->chor_id = chor_id;
|
this->chor_id = chor_id;
|
||||||
hookup_with_chor = false;
|
hookup_with_chor = false;
|
||||||
this->ghost_cons_name = cons_name;
|
this->ghost_cons_name = cons_name;
|
||||||
|
mDataBlock = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxMooring::~afxMooring()
|
afxMooring::~afxMooring()
|
||||||
|
|
@ -275,4 +277,4 @@ void afxMooring::onRemove()
|
||||||
Parent::onRemove();
|
Parent::onRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
|
||||||
|
|
@ -687,6 +687,7 @@ bool afxParticleEmitterDiscData::preload(bool server, String &errorStr)
|
||||||
|
|
||||||
afxParticleEmitter::afxParticleEmitter()
|
afxParticleEmitter::afxParticleEmitter()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
pe_vector.set(0,0,1);
|
pe_vector.set(0,0,1);
|
||||||
pe_vector_norm.set(0,0,1);
|
pe_vector_norm.set(0,0,1);
|
||||||
tpaths.clear();
|
tpaths.clear();
|
||||||
|
|
@ -1086,6 +1087,7 @@ void afxParticleEmitter::emitParticlesExt(const MatrixF& xfm, const Point3F& poi
|
||||||
|
|
||||||
afxParticleEmitterVector::afxParticleEmitterVector()
|
afxParticleEmitterVector::afxParticleEmitterVector()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxParticleEmitterVector::~afxParticleEmitterVector()
|
afxParticleEmitterVector::~afxParticleEmitterVector()
|
||||||
|
|
@ -1151,6 +1153,7 @@ void afxParticleEmitterVector::sub_preCompute(const MatrixF& mat)
|
||||||
|
|
||||||
afxParticleEmitterCone::afxParticleEmitterCone()
|
afxParticleEmitterCone::afxParticleEmitterCone()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
cone_v.set(0,0,1);
|
cone_v.set(0,0,1);
|
||||||
cone_s0.set(0,0,1);
|
cone_s0.set(0,0,1);
|
||||||
cone_s1.set(0,0,1);
|
cone_s1.set(0,0,1);
|
||||||
|
|
@ -1266,6 +1269,7 @@ void afxParticleEmitterCone::sub_preCompute(const MatrixF& mat)
|
||||||
|
|
||||||
afxParticleEmitterPath::afxParticleEmitterPath()
|
afxParticleEmitterPath::afxParticleEmitterPath()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
epaths.clear();
|
epaths.clear();
|
||||||
epath_mults.clear();
|
epath_mults.clear();
|
||||||
n_epath_points = 0;
|
n_epath_points = 0;
|
||||||
|
|
@ -1521,6 +1525,7 @@ void afxParticleEmitterPath::groundConformPoint(Point3F& point, const MatrixF& m
|
||||||
|
|
||||||
afxParticleEmitterDisc::afxParticleEmitterDisc()
|
afxParticleEmitterDisc::afxParticleEmitterDisc()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
disc_v.set(0,0,1);
|
disc_v.set(0,0,1);
|
||||||
disc_r.set(1,0,0);
|
disc_r.set(1,0,0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,7 @@ ConsoleDocClass( afxStaticShape,
|
||||||
|
|
||||||
afxStaticShape::afxStaticShape()
|
afxStaticShape::afxStaticShape()
|
||||||
{
|
{
|
||||||
|
mDataBlock = NULL;
|
||||||
mAFX_data = 0;
|
mAFX_data = 0;
|
||||||
mIs_visible = true;
|
mIs_visible = true;
|
||||||
mChor_id = 0;
|
mChor_id = 0;
|
||||||
|
|
@ -238,4 +239,4 @@ void afxStaticShape::prepRenderImage(SceneRenderState* state)
|
||||||
Parent::prepRenderImage(state);
|
Parent::prepRenderImage(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
|
||||||
|
|
@ -114,6 +114,7 @@ afxZodiacData::afxZodiacData()
|
||||||
grade_range_user.set(0.0f, 45.0f);
|
grade_range_user.set(0.0f, 45.0f);
|
||||||
afxZodiacData::convertGradientRangeFromDegrees(grade_range, grade_range_user);
|
afxZodiacData::convertGradientRangeFromDegrees(grade_range, grade_range_user);
|
||||||
inv_grade_range = false;
|
inv_grade_range = false;
|
||||||
|
zflags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxZodiacData::afxZodiacData(const afxZodiacData& other, bool temp_clone) : GameBaseData(other, temp_clone)
|
afxZodiacData::afxZodiacData(const afxZodiacData& other, bool temp_clone) : GameBaseData(other, temp_clone)
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ afxZodiacPlaneData::afxZodiacPlaneData()
|
||||||
color.set(1,1,1,1);
|
color.set(1,1,1,1);
|
||||||
blend_flags = BLEND_NORMAL;
|
blend_flags = BLEND_NORMAL;
|
||||||
respect_ori_cons = false;
|
respect_ori_cons = false;
|
||||||
|
zflags = 0;
|
||||||
double_sided = true;
|
double_sided = true;
|
||||||
face_dir = FACES_UP;
|
face_dir = FACES_UP;
|
||||||
use_full_xfm = false;
|
use_full_xfm = false;
|
||||||
|
|
@ -310,4 +310,4 @@ void afxZodiacPlane::onRemove()
|
||||||
Parent::onRemove();
|
Parent::onRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ afxEA_PhraseEffect::afxEA_PhraseEffect()
|
||||||
{
|
{
|
||||||
phrase_fx_data = 0;
|
phrase_fx_data = 0;
|
||||||
active_phrases = &_phrases_a;
|
active_phrases = &_phrases_a;
|
||||||
|
last_trigger_mask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxEA_PhraseEffect::~afxEA_PhraseEffect()
|
afxEA_PhraseEffect::~afxEA_PhraseEffect()
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ class afxF_Drag : public afxForce
|
||||||
typedef afxForce Parent;
|
typedef afxForce Parent;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
afxF_DragData* datablock;
|
afxF_DragData* mDatablock;
|
||||||
F32 air_friction_constant;
|
F32 air_friction_constant;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
@ -149,13 +149,14 @@ afxForceData* afxF_DragData::cloneAndPerformSubstitutions(const SimObject* owner
|
||||||
|
|
||||||
afxF_Drag::afxF_Drag() : afxForce()
|
afxF_Drag::afxF_Drag() : afxForce()
|
||||||
{
|
{
|
||||||
|
mDatablock = NULL;
|
||||||
air_friction_constant = 1.0f;
|
air_friction_constant = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool afxF_Drag::onNewDataBlock(afxForceData* dptr, bool reload)
|
bool afxF_Drag::onNewDataBlock(afxForceData* dptr, bool reload)
|
||||||
{
|
{
|
||||||
datablock = dynamic_cast<afxF_DragData*>(dptr);
|
mDatablock = dynamic_cast<afxF_DragData*>(dptr);
|
||||||
if (!datablock || !Parent::onNewDataBlock(dptr, reload))
|
if (!mDatablock || !Parent::onNewDataBlock(dptr, reload))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -163,9 +164,9 @@ bool afxF_Drag::onNewDataBlock(afxForceData* dptr, bool reload)
|
||||||
|
|
||||||
void afxF_Drag::start()
|
void afxF_Drag::start()
|
||||||
{
|
{
|
||||||
air_friction_constant = 0.5f * datablock->drag_coefficient
|
air_friction_constant = 0.5f * mDatablock->drag_coefficient
|
||||||
* datablock->air_density
|
* mDatablock->air_density
|
||||||
* datablock->cross_sectional_area;
|
* mDatablock->cross_sectional_area;
|
||||||
//Con::printf("Air Friction: %f", air_friction_constant);
|
//Con::printf("Air Friction: %f", air_friction_constant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ class afxF_Gravity : public afxForce
|
||||||
typedef afxForce Parent;
|
typedef afxForce Parent;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
afxF_GravityData* datablock;
|
afxF_GravityData* mDatablock;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*C*/ afxF_Gravity();
|
/*C*/ afxF_Gravity();
|
||||||
|
|
@ -133,12 +133,13 @@ afxForceData* afxF_GravityData::cloneAndPerformSubstitutions(const SimObject* ow
|
||||||
|
|
||||||
afxF_Gravity::afxF_Gravity() : afxForce()
|
afxF_Gravity::afxF_Gravity() : afxForce()
|
||||||
{
|
{
|
||||||
|
mDatablock = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool afxF_Gravity::onNewDataBlock(afxForceData* dptr, bool reload)
|
bool afxF_Gravity::onNewDataBlock(afxForceData* dptr, bool reload)
|
||||||
{
|
{
|
||||||
datablock = dynamic_cast<afxF_GravityData*>(dptr);
|
mDatablock = dynamic_cast<afxF_GravityData*>(dptr);
|
||||||
if (!datablock || !Parent::onNewDataBlock(dptr, reload))
|
if (!mDatablock || !Parent::onNewDataBlock(dptr, reload))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -146,7 +147,7 @@ bool afxF_Gravity::onNewDataBlock(afxForceData* dptr, bool reload)
|
||||||
|
|
||||||
Point3F afxF_Gravity::evaluate(Point3F pos, Point3F v, F32 mass)
|
Point3F afxF_Gravity::evaluate(Point3F pos, Point3F v, F32 mass)
|
||||||
{
|
{
|
||||||
return Point3F(0,0,-datablock->gravity)*mass;
|
return Point3F(0,0,-mDatablock->gravity)*mass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@
|
||||||
afxAnimCurve::afxAnimCurve() : usable( false ), final_value( 0.0f ), start_value( 0.0f )
|
afxAnimCurve::afxAnimCurve() : usable( false ), final_value( 0.0f ), start_value( 0.0f )
|
||||||
{
|
{
|
||||||
evaluator = new afxHermiteEval();
|
evaluator = new afxHermiteEval();
|
||||||
|
final_time = 0.0f;
|
||||||
|
start_time = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
afxAnimCurve::~afxAnimCurve()
|
afxAnimCurve::~afxAnimCurve()
|
||||||
|
|
@ -277,4 +279,4 @@ void afxAnimCurve::printKey( int index )
|
||||||
{
|
{
|
||||||
Key &k = keys[index];
|
Key &k = keys[index];
|
||||||
Con::printf( "%f: %f", k.time, k.value );
|
Con::printf( "%f: %f", k.time, k.value );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
#include "afx/util/afxCurveEval.h"
|
#include "afx/util/afxCurveEval.h"
|
||||||
#include "afx/util/afxCurve3D.h"
|
#include "afx/util/afxCurve3D.h"
|
||||||
|
|
||||||
afxCurve3D::afxCurve3D() : usable( false ), default_vector( 0, 0, 0 )
|
afxCurve3D::afxCurve3D() : usable( false ), default_vector( 0, 0, 0 ), flip(false)
|
||||||
{
|
{
|
||||||
evaluator = new afxHermiteEval();
|
evaluator = new afxHermiteEval();
|
||||||
}
|
}
|
||||||
|
|
@ -329,4 +329,4 @@ void afxCurve3D::print()
|
||||||
Con::printf( "%f: %f %f %f", p.parameter, p.point.x, p.point.y, p.point.z );
|
Con::printf( "%f: %f %f %f", p.parameter, p.point.x, p.point.y, p.point.z );
|
||||||
}
|
}
|
||||||
Con::printf( "---------------------------------" );
|
Con::printf( "---------------------------------" );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
#include "afx/util/afxPath3D.h"
|
#include "afx/util/afxPath3D.h"
|
||||||
|
|
||||||
afxPath3D::afxPath3D() : mStart_time(0), mNum_points(0), mLoop_type(LOOP_CONSTANT)
|
afxPath3D::afxPath3D() : mStart_time(0), mNum_points(0), mLoop_type(LOOP_CONSTANT), mEnd_time(0.0f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -114,12 +114,22 @@ ConsoleDocClass( HTTPObject,
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
|
|
||||||
HTTPObject::HTTPObject()
|
HTTPObject::HTTPObject()
|
||||||
|
: mParseState(ParsingStatusLine),
|
||||||
|
mTotalBytes(0),
|
||||||
|
mBytesRemaining(0),
|
||||||
|
mStatus(0),
|
||||||
|
mVersion(0.0f),
|
||||||
|
mContentLength(0),
|
||||||
|
mChunkedEncoding(false),
|
||||||
|
mChunkSize(0),
|
||||||
|
mContentType(""),
|
||||||
|
mHostName(NULL),
|
||||||
|
mPath(NULL),
|
||||||
|
mQuery(NULL),
|
||||||
|
mPost(NULL),
|
||||||
|
mBufferSave(NULL),
|
||||||
|
mBufferSaveSize(0)
|
||||||
{
|
{
|
||||||
mHostName = 0;
|
|
||||||
mPath = 0;
|
|
||||||
mQuery = 0;
|
|
||||||
mPost = 0;
|
|
||||||
mBufferSave = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HTTPObject::~HTTPObject()
|
HTTPObject::~HTTPObject()
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ struct ServerInfo
|
||||||
statusString = NULL;
|
statusString = NULL;
|
||||||
infoString = NULL;
|
infoString = NULL;
|
||||||
version = 0;
|
version = 0;
|
||||||
|
dMemset(&address, '\0', sizeof(NetAddress));
|
||||||
ping = 0;
|
ping = 0;
|
||||||
cpuSpeed = 0;
|
cpuSpeed = 0;
|
||||||
isFavorite = false;
|
isFavorite = false;
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ inline bool isOnPlane(const Point3F& p,PlaneF& plane)
|
||||||
void BoxConvex::getFeatures(const MatrixF& mat,const VectorF& n, ConvexFeature* cf)
|
void BoxConvex::getFeatures(const MatrixF& mat,const VectorF& n, ConvexFeature* cf)
|
||||||
{
|
{
|
||||||
cf->material = 0;
|
cf->material = 0;
|
||||||
cf->object = mObject;
|
cf->mObject = mObject;
|
||||||
|
|
||||||
S32 v = 0;
|
S32 v = 0;
|
||||||
v += (n.x >= 0)? 1: 0;
|
v += (n.x >= 0)? 1: 0;
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ class ClippedPolyList : public AbstractPolyList
|
||||||
public:
|
public:
|
||||||
struct Vertex {
|
struct Vertex {
|
||||||
Point3F point;
|
Point3F point;
|
||||||
U32 mask;
|
U32 mask = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Poly {
|
struct Poly {
|
||||||
|
|
@ -61,6 +61,8 @@ public:
|
||||||
U32 vertexCount;
|
U32 vertexCount;
|
||||||
U32 surfaceKey;
|
U32 surfaceKey;
|
||||||
U32 polyFlags;
|
U32 polyFlags;
|
||||||
|
Poly() :object(NULL), material(NULL), vertexStart(0), vertexCount(0), surfaceKey(0), polyFlags(0) {}
|
||||||
|
~Poly() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// ???
|
/// ???
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,11 @@ struct Collision
|
||||||
object( NULL ),
|
object( NULL ),
|
||||||
material( NULL ),
|
material( NULL ),
|
||||||
generateTexCoord(false),
|
generateTexCoord(false),
|
||||||
texCoord(-1.0f, -1.0f)
|
texCoord(-1.0f, -1.0f),
|
||||||
|
face(0),
|
||||||
|
faceDot(0.0f),
|
||||||
|
distance(0)
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,9 @@ class ConcretePolyList : public AbstractPolyList
|
||||||
|
|
||||||
Poly()
|
Poly()
|
||||||
{
|
{
|
||||||
|
vertexStart = 0;
|
||||||
|
vertexCount = 0;
|
||||||
|
surfaceKey = 0;
|
||||||
object = NULL;
|
object = NULL;
|
||||||
material = NULL;
|
material = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,9 @@ F32 sqrDistanceEdges(const Point3F& start0,
|
||||||
|
|
||||||
CollisionState::CollisionState()
|
CollisionState::CollisionState()
|
||||||
{
|
{
|
||||||
mLista = mListb = 0;
|
mB = mA = NULL;
|
||||||
|
mDist = 0.0f;
|
||||||
|
mListb = mLista = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
CollisionState::~CollisionState()
|
CollisionState::~CollisionState()
|
||||||
|
|
@ -85,7 +87,7 @@ F32 CollisionState::distance(const MatrixF& a2w, const MatrixF& b2w, const F32 d
|
||||||
void ConvexFeature::reset()
|
void ConvexFeature::reset()
|
||||||
{
|
{
|
||||||
material = NULL;
|
material = NULL;
|
||||||
object = NULL;
|
mObject = NULL;
|
||||||
mVertexList.clear();
|
mVertexList.clear();
|
||||||
mEdgeList.clear();
|
mEdgeList.clear();
|
||||||
mFaceList.clear();
|
mFaceList.clear();
|
||||||
|
|
@ -114,7 +116,7 @@ bool ConvexFeature::collide(ConvexFeature& cf,CollisionList* cList, F32 tol)
|
||||||
{
|
{
|
||||||
Collision &col = (*cList)[cList->getCount() - 1];
|
Collision &col = (*cList)[cList->getCount() - 1];
|
||||||
col.material = cf.material;
|
col.material = cf.material;
|
||||||
col.object = cf.object;
|
col.object = cf.mObject;
|
||||||
}
|
}
|
||||||
vert++;
|
vert++;
|
||||||
}
|
}
|
||||||
|
|
@ -167,7 +169,7 @@ void ConvexFeature::testVertex(const Point3F& v,CollisionList* cList,bool flip,
|
||||||
if (flip)
|
if (flip)
|
||||||
info.normal.neg();
|
info.normal.neg();
|
||||||
info.material = material;
|
info.material = material;
|
||||||
info.object = object;
|
info.object = mObject;
|
||||||
info.distance = distance;
|
info.distance = distance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -213,7 +215,7 @@ void ConvexFeature::testEdge(ConvexFeature* cf,const Point3F& s1, const Point3F&
|
||||||
info.normal = normal;
|
info.normal = normal;
|
||||||
info.distance = distance;
|
info.distance = distance;
|
||||||
info.material = material;
|
info.material = material;
|
||||||
info.object = object;
|
info.object = mObject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -282,6 +284,7 @@ CollisionWorkingList::CollisionWorkingList()
|
||||||
{
|
{
|
||||||
wLink.mPrev = wLink.mNext = this;
|
wLink.mPrev = wLink.mNext = this;
|
||||||
rLink.mPrev = rLink.mNext = this;
|
rLink.mPrev = rLink.mNext = this;
|
||||||
|
mConvex = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CollisionWorkingList::wLinkAfter(CollisionWorkingList* ptr)
|
void CollisionWorkingList::wLinkAfter(CollisionWorkingList* ptr)
|
||||||
|
|
@ -340,6 +343,8 @@ Convex::Convex()
|
||||||
{
|
{
|
||||||
mNext = mPrev = this;
|
mNext = mPrev = this;
|
||||||
mTag = 0;
|
mTag = 0;
|
||||||
|
mObject = NULL;
|
||||||
|
mType = ConvexType::BoxConvexType;
|
||||||
}
|
}
|
||||||
|
|
||||||
Convex::~Convex()
|
Convex::~Convex()
|
||||||
|
|
@ -418,7 +423,7 @@ Point3F Convex::support(const VectorF&) const
|
||||||
|
|
||||||
void Convex::getFeatures(const MatrixF&,const VectorF&,ConvexFeature* f)
|
void Convex::getFeatures(const MatrixF&,const VectorF&,ConvexFeature* f)
|
||||||
{
|
{
|
||||||
f->object = NULL;
|
f->mObject = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
const MatrixF& Convex::getTransform() const
|
const MatrixF& Convex::getTransform() const
|
||||||
|
|
|
||||||
|
|
@ -56,10 +56,10 @@ public:
|
||||||
Vector<Edge> mEdgeList;
|
Vector<Edge> mEdgeList;
|
||||||
Vector<Face> mFaceList;
|
Vector<Face> mFaceList;
|
||||||
BaseMatInstance* material;
|
BaseMatInstance* material;
|
||||||
SceneObject* object;
|
SceneObject* mObject;
|
||||||
|
|
||||||
ConvexFeature()
|
ConvexFeature()
|
||||||
: mVertexList(64), mEdgeList(128), mFaceList(64), material( 0 )
|
: mVertexList(64), mEdgeList(128), mFaceList(64), material( 0 ), mObject(NULL)
|
||||||
{
|
{
|
||||||
VECTOR_SET_ASSOCIATION(mVertexList);
|
VECTOR_SET_ASSOCIATION(mVertexList);
|
||||||
VECTOR_SET_ASSOCIATION(mEdgeList);
|
VECTOR_SET_ASSOCIATION(mEdgeList);
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,13 @@ S32 gBadSpots = 0;
|
||||||
|
|
||||||
DepthSortList::DepthSortList()
|
DepthSortList::DepthSortList()
|
||||||
{
|
{
|
||||||
|
mBase = 0;
|
||||||
|
mBasePoly = NULL;
|
||||||
|
mBaseNormal = NULL;
|
||||||
|
mBaseDot = 0.0f;
|
||||||
|
mBaseYMax = 0.0f;
|
||||||
|
mMaxTouched = 0;
|
||||||
|
mBaseExtents = NULL;
|
||||||
VECTOR_SET_ASSOCIATION(mPolyExtentsList);
|
VECTOR_SET_ASSOCIATION(mPolyExtentsList);
|
||||||
VECTOR_SET_ASSOCIATION(mPolyIndexList);
|
VECTOR_SET_ASSOCIATION(mPolyIndexList);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ ExtrudedPolyList::ExtrudedPolyList()
|
||||||
mPolyPlaneList.reserve(64);
|
mPolyPlaneList.reserve(64);
|
||||||
mPlaneList.reserve(64);
|
mPlaneList.reserve(64);
|
||||||
mCollisionList = 0;
|
mCollisionList = 0;
|
||||||
|
dMemset(&mPoly, 0, sizeof(mPoly));
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtrudedPolyList::~ExtrudedPolyList()
|
ExtrudedPolyList::~ExtrudedPolyList()
|
||||||
|
|
|
||||||
|
|
@ -56,13 +56,15 @@ class ExtrudedPolyList: public AbstractPolyList
|
||||||
public:
|
public:
|
||||||
struct Vertex {
|
struct Vertex {
|
||||||
Point3F point;
|
Point3F point;
|
||||||
U32 mask;
|
U32 mask = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Poly {
|
struct Poly {
|
||||||
PlaneF plane;
|
PlaneF plane;
|
||||||
SceneObject* object;
|
SceneObject* object;
|
||||||
BaseMatInstance* material;
|
BaseMatInstance* material;
|
||||||
|
Poly() : object(NULL), material(NULL) {}
|
||||||
|
~Poly() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ExtrudedFace {
|
struct ExtrudedFace {
|
||||||
|
|
@ -75,6 +77,8 @@ public:
|
||||||
F32 time;
|
F32 time;
|
||||||
Point3F point;
|
Point3F point;
|
||||||
F32 height;
|
F32 height;
|
||||||
|
ExtrudedFace(): active(false), maxDistance(0.0f), planeMask(0), faceDot(0.0f), faceShift(0.0f), time(0.0f), height(0.0f) {}
|
||||||
|
~ExtrudedFace() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Vector<ExtrudedFace> ExtrudedList;
|
typedef Vector<ExtrudedFace> ExtrudedList;
|
||||||
|
|
@ -92,7 +96,6 @@ public:
|
||||||
PlaneList mPlaneList;
|
PlaneList mPlaneList;
|
||||||
VectorF mVelocity;
|
VectorF mVelocity;
|
||||||
VectorF mNormalVelocity;
|
VectorF mNormalVelocity;
|
||||||
F32 mFaceShift;
|
|
||||||
Poly mPoly;
|
Poly mPoly;
|
||||||
|
|
||||||
// Returned info
|
// Returned info
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,19 @@ S32 num_irregularities = 0;
|
||||||
|
|
||||||
GjkCollisionState::GjkCollisionState()
|
GjkCollisionState::GjkCollisionState()
|
||||||
{
|
{
|
||||||
|
mBits = 0;
|
||||||
|
mAll_bits = 0;
|
||||||
|
U32 x, y;
|
||||||
|
for (x = 0; x < 16; x++)
|
||||||
|
for (y = 0; y < 4; y++)
|
||||||
|
mDet[x][y] = 0.0f;
|
||||||
|
|
||||||
|
for (x = 0; x < 4; x++)
|
||||||
|
for (y = 0; y < 4; y++)
|
||||||
|
mDP[x][y] = 0.0f;
|
||||||
|
|
||||||
|
mLast = 0;
|
||||||
|
mLast_bit = 0;
|
||||||
mA = mB = 0;
|
mA = mB = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,9 @@ class OptimizedPolyList : public AbstractPolyList
|
||||||
Poly()
|
Poly()
|
||||||
: plane( -1 ),
|
: plane( -1 ),
|
||||||
material( NULL ),
|
material( NULL ),
|
||||||
|
vertexStart(0),
|
||||||
vertexCount( 0 ),
|
vertexCount( 0 ),
|
||||||
|
surfaceKey(0),
|
||||||
object( NULL ),
|
object( NULL ),
|
||||||
type( TriangleFan )
|
type( TriangleFan )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ PlaneExtractorPolyList::PlaneExtractorPolyList()
|
||||||
{
|
{
|
||||||
VECTOR_SET_ASSOCIATION(mVertexList);
|
VECTOR_SET_ASSOCIATION(mVertexList);
|
||||||
VECTOR_SET_ASSOCIATION(mPolyPlaneList);
|
VECTOR_SET_ASSOCIATION(mPolyPlaneList);
|
||||||
|
mPlaneList = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaneExtractorPolyList::~PlaneExtractorPolyList()
|
PlaneExtractorPolyList::~PlaneExtractorPolyList()
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ public:
|
||||||
Collision()
|
Collision()
|
||||||
{
|
{
|
||||||
object = NULL;
|
object = NULL;
|
||||||
|
material = NULL;
|
||||||
distance = 0.0;
|
distance = 0.0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,7 @@ StmtNode::StmtNode()
|
||||||
{
|
{
|
||||||
mNext = NULL;
|
mNext = NULL;
|
||||||
dbgFileName = CodeBlock::smCurrentParser->getCurrentFile();
|
dbgFileName = CodeBlock::smCurrentParser->getCurrentFile();
|
||||||
|
dbgLineNumber = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StmtNode::setPackage(StringTableEntry)
|
void StmtNode::setPackage(StringTableEntry)
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,9 @@ CodeBlock::CodeBlock()
|
||||||
name = NULL;
|
name = NULL;
|
||||||
fullPath = NULL;
|
fullPath = NULL;
|
||||||
modPath = NULL;
|
modPath = NULL;
|
||||||
|
codeSize = 0;
|
||||||
|
lineBreakPairCount = 0;
|
||||||
|
nextFile = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeBlock::~CodeBlock()
|
CodeBlock::~CodeBlock()
|
||||||
|
|
|
||||||
|
|
@ -224,6 +224,9 @@ CodeInterpreter::CodeInterpreter(CodeBlock *cb) :
|
||||||
mSaveCodeBlock(nullptr),
|
mSaveCodeBlock(nullptr),
|
||||||
mCurrentInstruction(0)
|
mCurrentInstruction(0)
|
||||||
{
|
{
|
||||||
|
dMemset(&mExec, 0, sizeof(mExec));
|
||||||
|
dMemset(&mObjectCreationStack, 0, sizeof(mObjectCreationStack));
|
||||||
|
dMemset(&mNSDocBlockClass, 0, sizeof(mNSDocBlockClass));
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeInterpreter::~CodeInterpreter()
|
CodeInterpreter::~CodeInterpreter()
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ protected:
|
||||||
U32 addr; ///< Address to patch
|
U32 addr; ///< Address to patch
|
||||||
U32 value; ///< Value to place at addr
|
U32 value; ///< Value to place at addr
|
||||||
|
|
||||||
PatchEntry() { ; }
|
PatchEntry(): addr(0), value(0) { ; }
|
||||||
PatchEntry(U32 a, U32 v) : addr(a), value(v) { ; }
|
PatchEntry(U32 a, U32 v) : addr(a), value(v) { ; }
|
||||||
} PatchEntry;
|
} PatchEntry;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -475,7 +475,7 @@ Dictionary::Entry::Entry(StringTableEntry in_name)
|
||||||
nextEntry = NULL;
|
nextEntry = NULL;
|
||||||
mUsage = NULL;
|
mUsage = NULL;
|
||||||
mIsConstant = false;
|
mIsConstant = false;
|
||||||
|
mNext = NULL;
|
||||||
// NOTE: This is data inside a nameless
|
// NOTE: This is data inside a nameless
|
||||||
// union, so we don't need to init the rest.
|
// union, so we don't need to init the rest.
|
||||||
value.init();
|
value.init();
|
||||||
|
|
@ -856,6 +856,7 @@ ExprEvalState::ExprEvalState()
|
||||||
stack.reserve(64);
|
stack.reserve(64);
|
||||||
mShouldReset = false;
|
mShouldReset = false;
|
||||||
mResetLocked = false;
|
mResetLocked = false;
|
||||||
|
copyVariable = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExprEvalState::~ExprEvalState()
|
ExprEvalState::~ExprEvalState()
|
||||||
|
|
@ -927,6 +928,15 @@ Namespace::Entry::Entry()
|
||||||
mUsage = NULL;
|
mUsage = NULL;
|
||||||
mHeader = NULL;
|
mHeader = NULL;
|
||||||
mNamespace = NULL;
|
mNamespace = NULL;
|
||||||
|
cb.mStringCallbackFunc = NULL;
|
||||||
|
mFunctionLineNumber = 0;
|
||||||
|
mFunctionName = StringTable->EmptyString();
|
||||||
|
mFunctionOffset = 0;
|
||||||
|
mMinArgs = 0;
|
||||||
|
mMaxArgs = 0;
|
||||||
|
mNext = NULL;
|
||||||
|
mPackage = StringTable->EmptyString();
|
||||||
|
mToolOnly = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Namespace::Entry::clear()
|
void Namespace::Entry::clear()
|
||||||
|
|
@ -959,6 +969,7 @@ Namespace::Namespace()
|
||||||
mHashSequence = 0;
|
mHashSequence = 0;
|
||||||
mRefCountToParent = 0;
|
mRefCountToParent = 0;
|
||||||
mClassRep = 0;
|
mClassRep = 0;
|
||||||
|
lastUsage = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Namespace::~Namespace()
|
Namespace::~Namespace()
|
||||||
|
|
|
||||||
|
|
@ -306,6 +306,7 @@ public:
|
||||||
nextEntry = NULL;
|
nextEntry = NULL;
|
||||||
mUsage = NULL;
|
mUsage = NULL;
|
||||||
mIsConstant = false;
|
mIsConstant = false;
|
||||||
|
mNext = NULL;
|
||||||
value.init();
|
value.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,7 +220,21 @@ public:
|
||||||
: Parent( sizeof( void* ), conIdPtr, typeName )
|
: Parent( sizeof( void* ), conIdPtr, typeName )
|
||||||
{
|
{
|
||||||
VECTOR_SET_ASSOCIATION( mFieldList );
|
VECTOR_SET_ASSOCIATION( mFieldList );
|
||||||
|
mCategory = StringTable->EmptyString();
|
||||||
|
mClassGroupMask = 0;
|
||||||
|
std::fill_n(mClassId, NetClassGroupsCount, -1);
|
||||||
|
mClassName = StringTable->EmptyString();
|
||||||
|
mClassSizeof = 0;
|
||||||
|
mClassType = 0;
|
||||||
|
mDescription = StringTable->EmptyString();
|
||||||
|
#ifdef TORQUE_NET_STATS
|
||||||
|
dMemset(mDirtyMaskFrequency, 0, sizeof(mDirtyMaskFrequency));
|
||||||
|
dMemset(mDirtyMaskTotal, 0, sizeof(mDirtyMaskTotal));
|
||||||
|
#endif
|
||||||
|
mDynamicGroupExpand = false;
|
||||||
|
mNamespace = NULL;
|
||||||
|
mNetEventDir = 0;
|
||||||
|
nextClass = NULL;
|
||||||
parentClass = NULL;
|
parentClass = NULL;
|
||||||
mIsRenderEnabled = true;
|
mIsRenderEnabled = true;
|
||||||
mIsSelectionEnabled = true;
|
mIsSelectionEnabled = true;
|
||||||
|
|
@ -496,6 +510,7 @@ public:
|
||||||
validator( NULL ),
|
validator( NULL ),
|
||||||
setDataFn( NULL ),
|
setDataFn( NULL ),
|
||||||
getDataFn( NULL ),
|
getDataFn( NULL ),
|
||||||
|
writeDataFn(NULL),
|
||||||
networkMask(0)
|
networkMask(0)
|
||||||
{
|
{
|
||||||
doNotSubstitute = keepClearSubsOnly = false;
|
doNotSubstitute = keepClearSubsOnly = false;
|
||||||
|
|
|
||||||
|
|
@ -1190,7 +1190,7 @@ public:
|
||||||
ConsoleValueRef _exec();
|
ConsoleValueRef _exec();
|
||||||
ConsoleValueRef _execLater(SimConsoleThreadExecEvent *evt);
|
ConsoleValueRef _execLater(SimConsoleThreadExecEvent *evt);
|
||||||
|
|
||||||
_BaseEngineConsoleCallbackHelper() {;}
|
_BaseEngineConsoleCallbackHelper(): mThis(NULL), mInitialArgc(0), mArgc(0), mCallbackName(StringTable->EmptyString()){;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,7 @@ class EngineExport : public StaticEngineObject
|
||||||
: mExportName( "" ),
|
: mExportName( "" ),
|
||||||
mExportKind( EngineExportKindScope ),
|
mExportKind( EngineExportKindScope ),
|
||||||
mExportScope( NULL ),
|
mExportScope( NULL ),
|
||||||
|
mDocString(""),
|
||||||
mNextExport( NULL ) {}
|
mNextExport( NULL ) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -165,7 +166,7 @@ class EngineExportScope : public EngineExport
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/// Constructor for the global scope.
|
/// Constructor for the global scope.
|
||||||
EngineExportScope() {}
|
EngineExportScope():mExports(NULL){}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ void*& _USERDATA( EngineObject* object )
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
EngineObject::EngineObject()
|
EngineObject::EngineObject()
|
||||||
: mEngineObjectUserData( NULL )
|
: mEngineObjectPool(NULL), mEngineObjectUserData( NULL )
|
||||||
{
|
{
|
||||||
#ifdef TORQUE_DEBUG
|
#ifdef TORQUE_DEBUG
|
||||||
// Add to instance list.
|
// Add to instance list.
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ EngineTypeInfo::EngineTypeInfo( const char* typeName, EngineExportScope* scope,
|
||||||
mEnumTable( NULL ),
|
mEnumTable( NULL ),
|
||||||
mFieldTable( NULL ),
|
mFieldTable( NULL ),
|
||||||
mPropertyTable( NULL ),
|
mPropertyTable( NULL ),
|
||||||
|
mArgumentTypeTable(NULL),
|
||||||
mSuperType( NULL ),
|
mSuperType( NULL ),
|
||||||
mNext( smFirst )
|
mNext( smFirst )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ ConsoleDocClass( SimDataBlock,
|
||||||
|
|
||||||
SimDataBlock::SimDataBlock()
|
SimDataBlock::SimDataBlock()
|
||||||
{
|
{
|
||||||
|
modifiedKey = 0;
|
||||||
setModDynamicFields(true);
|
setModDynamicFields(true);
|
||||||
setModStaticFields(true);
|
setModStaticFields(true);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,8 @@ SimNameDictionary::SimNameDictionary()
|
||||||
{
|
{
|
||||||
#ifndef USE_NEW_SIMDICTIONARY
|
#ifndef USE_NEW_SIMDICTIONARY
|
||||||
hashTable = NULL;
|
hashTable = NULL;
|
||||||
|
hashTableSize = DefaultTableSize;
|
||||||
|
hashEntryCount = 0;
|
||||||
#endif
|
#endif
|
||||||
mutex = Mutex::createMutex();
|
mutex = Mutex::createMutex();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ public:
|
||||||
/// of addition to the list.
|
/// of addition to the list.
|
||||||
SimObject *destObject; ///< Object on which this event will be applied.
|
SimObject *destObject; ///< Object on which this event will be applied.
|
||||||
|
|
||||||
SimEvent() { destObject = NULL; }
|
SimEvent() { nextEvent = NULL; startTime = 0; time = 0; sequenceCount = 0; destObject = NULL; }
|
||||||
virtual ~SimEvent() {} ///< Destructor
|
virtual ~SimEvent() {} ///< Destructor
|
||||||
///
|
///
|
||||||
/// A dummy virtual destructor is required
|
/// A dummy virtual destructor is required
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class SimFieldDictionary
|
||||||
public:
|
public:
|
||||||
struct Entry
|
struct Entry
|
||||||
{
|
{
|
||||||
Entry() : type(NULL) {};
|
Entry() : slotName(StringTable->EmptyString()), value(NULL), next(NULL), type(NULL) {};
|
||||||
|
|
||||||
StringTableEntry slotName;
|
StringTableEntry slotName;
|
||||||
char *value;
|
char *value;
|
||||||
|
|
@ -112,4 +112,4 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif // _SIMFIELDDICTIONARY_H_
|
#endif // _SIMFIELDDICTIONARY_H_
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ SimObjectId SimObject::smForcedId = 0;
|
||||||
|
|
||||||
bool SimObject::preventNameChanging = false;
|
bool SimObject::preventNameChanging = false;
|
||||||
|
|
||||||
|
IMPLEMENT_CALLBACK(SimObject, onInspectPostApply, void, (SimObject* obj), (obj), "Generic callback for when an object is edited");
|
||||||
|
|
||||||
namespace Sim
|
namespace Sim
|
||||||
{
|
{
|
||||||
// Defined in simManager.cpp
|
// Defined in simManager.cpp
|
||||||
|
|
@ -1380,6 +1382,7 @@ SimObject::SimObject(const SimObject& other, bool temp_clone)
|
||||||
nextIdObject = other.nextIdObject;
|
nextIdObject = other.nextIdObject;
|
||||||
mGroup = other.mGroup;
|
mGroup = other.mGroup;
|
||||||
mFlags = other.mFlags;
|
mFlags = other.mFlags;
|
||||||
|
mProgenitorFile = other.mProgenitorFile;
|
||||||
mCopySource = other.mCopySource;
|
mCopySource = other.mCopySource;
|
||||||
mFieldDictionary = other.mFieldDictionary;
|
mFieldDictionary = other.mFieldDictionary;
|
||||||
//mIdString = other.mIdString; // special treatment (see below)
|
//mIdString = other.mIdString; // special treatment (see below)
|
||||||
|
|
@ -2237,6 +2240,7 @@ void SimObject::inspectPreApply()
|
||||||
|
|
||||||
void SimObject::inspectPostApply()
|
void SimObject::inspectPostApply()
|
||||||
{
|
{
|
||||||
|
onInspectPostApply_callback(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -965,6 +965,7 @@ class SimObject: public ConsoleObject, public TamlCallbacks
|
||||||
virtual void getConsoleMethodData(const char * fname, S32 routingId, S32 * type, S32 * minArgs, S32 * maxArgs, void ** callback, const char ** usage) {}
|
virtual void getConsoleMethodData(const char * fname, S32 routingId, S32 * type, S32 * minArgs, S32 * maxArgs, void ** callback, const char ** usage) {}
|
||||||
|
|
||||||
DECLARE_CONOBJECT( SimObject );
|
DECLARE_CONOBJECT( SimObject );
|
||||||
|
DECLARE_CALLBACK(void, onInspectPostApply, (SimObject* obj));
|
||||||
|
|
||||||
static SimObject* __findObject( const char* id ) { return Sim::findObject( id ); }
|
static SimObject* __findObject( const char* id ) { return Sim::findObject( id ); }
|
||||||
static const char* __getObjectId( ConsoleObject* object )
|
static const char* __getObjectId( ConsoleObject* object )
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,12 @@ StringStack::StringStack()
|
||||||
mBuffer = NULL;
|
mBuffer = NULL;
|
||||||
mArgBufferSize = 0;
|
mArgBufferSize = 0;
|
||||||
mArgBuffer = NULL;
|
mArgBuffer = NULL;
|
||||||
|
for (U32 i = 0; i < MaxArgs; i++)
|
||||||
|
mArgV[i] = "";
|
||||||
|
dMemset(mFrameOffsets, 0, sizeof(mFrameOffsets));
|
||||||
|
dMemset(mStartOffsets, 0, sizeof(mStartOffsets));
|
||||||
mNumFrames = 0;
|
mNumFrames = 0;
|
||||||
|
mArgc = 0;
|
||||||
mStart = 0;
|
mStart = 0;
|
||||||
mLen = 0;
|
mLen = 0;
|
||||||
mStartStackSize = 0;
|
mStartStackSize = 0;
|
||||||
|
|
@ -232,6 +237,7 @@ mStackPos(0)
|
||||||
mStack[i].init();
|
mStack[i].init();
|
||||||
mStack[i].type = ConsoleValue::TypeInternalString;
|
mStack[i].type = ConsoleValue::TypeInternalString;
|
||||||
}
|
}
|
||||||
|
dMemset(mStackFrames, 0, sizeof(mStackFrames));
|
||||||
}
|
}
|
||||||
|
|
||||||
ConsoleValueStack::~ConsoleValueStack()
|
ConsoleValueStack::~ConsoleValueStack()
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,9 @@ TelnetConsole::TelnetConsole()
|
||||||
mAcceptPort = -1;
|
mAcceptPort = -1;
|
||||||
mClientList = NULL;
|
mClientList = NULL;
|
||||||
mRemoteEchoEnabled = false;
|
mRemoteEchoEnabled = false;
|
||||||
|
|
||||||
|
dStrncpy(mTelnetPassword, "", PasswordMaxLength);
|
||||||
|
dStrncpy(mListenPassword, "", PasswordMaxLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
TelnetConsole::~TelnetConsole()
|
TelnetConsole::~TelnetConsole()
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ class TelnetConsole
|
||||||
S32 state; ///< State of the client.
|
S32 state; ///< State of the client.
|
||||||
/// @see TelnetConsole::State
|
/// @see TelnetConsole::State
|
||||||
TelnetClient *nextClient;
|
TelnetClient *nextClient;
|
||||||
|
TelnetClient() { dStrncpy(curLine, "", Con::MaxLineLength); curPos = 0; state = 0; nextClient = NULL; }
|
||||||
};
|
};
|
||||||
TelnetClient *mClientList;
|
TelnetClient *mClientList;
|
||||||
TelnetConsole();
|
TelnetConsole();
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,9 @@ TelnetDebugger::TelnetDebugger()
|
||||||
mProgramPaused = false;
|
mProgramPaused = false;
|
||||||
mWaitForClient = false;
|
mWaitForClient = false;
|
||||||
|
|
||||||
|
dStrncpy(mDebuggerPassword, "", PasswordMaxLength);
|
||||||
|
dStrncpy(mLineBuffer, "", sizeof(mLineBuffer));
|
||||||
|
|
||||||
// Add the version number in a global so that
|
// Add the version number in a global so that
|
||||||
// scripts can detect the presence of the
|
// scripts can detect the presence of the
|
||||||
// "enhanced" debugger features.
|
// "enhanced" debugger features.
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ class TypeValidator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
S32 fieldIndex;
|
S32 fieldIndex;
|
||||||
|
TypeValidator() : fieldIndex(0) {}
|
||||||
|
~TypeValidator() {}
|
||||||
/// Prints a console error message for the validator.
|
/// Prints a console error message for the validator.
|
||||||
///
|
///
|
||||||
/// The message is prefaced with with:
|
/// The message is prefaced with with:
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ public:
|
||||||
class StockColorItem
|
class StockColorItem
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
StockColorItem() {}
|
StockColorItem():mColorName("") {}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
StockColorItem( const char* pName, const U8 red, const U8 green, const U8 blue, const U8 alpha = 255 )
|
StockColorItem( const char* pName, const U8 red, const U8 green, const U8 blue, const U8 alpha = 255 )
|
||||||
|
|
@ -529,6 +529,7 @@ inline void ColorI::set(const Hsb& color)
|
||||||
red = (U32)((((F64)r) / 100) * 255);
|
red = (U32)((((F64)r) / 100) * 255);
|
||||||
green = (U32)((((F64)g) / 100) * 255);
|
green = (U32)((((F64)g) / 100) * 255);
|
||||||
blue = (U32)((((F64)b) / 100) * 255);
|
blue = (U32)((((F64)b) / 100) * 255);
|
||||||
|
alpha = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is a subfunction of HSLtoRGB
|
// This is a subfunction of HSLtoRGB
|
||||||
|
|
|
||||||
|
|
@ -295,6 +295,7 @@ public:
|
||||||
AssertFatal( count > 0, "Allocating a FrameTemp with less than one instance" ); \
|
AssertFatal( count > 0, "Allocating a FrameTemp with less than one instance" ); \
|
||||||
mWaterMark = FrameAllocator::getWaterMark(); \
|
mWaterMark = FrameAllocator::getWaterMark(); \
|
||||||
mMemory = reinterpret_cast<type *>( FrameAllocator::alloc( sizeof( type ) * count ) ); \
|
mMemory = reinterpret_cast<type *>( FrameAllocator::alloc( sizeof( type ) * count ) ); \
|
||||||
|
mNumObjectsInMemory = 0; \
|
||||||
} \
|
} \
|
||||||
template<>\
|
template<>\
|
||||||
inline FrameTemp<type>::~FrameTemp() \
|
inline FrameTemp<type>::~FrameTemp() \
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ class OggTheoraFrame : public RawData
|
||||||
|
|
||||||
typedef RawData Parent;
|
typedef RawData Parent;
|
||||||
|
|
||||||
OggTheoraFrame() {}
|
OggTheoraFrame() :mFrameNumber(0), mFrameTime(0), mFrameDuration(0) {}
|
||||||
OggTheoraFrame( S8* data, U32 size, bool ownMemory = false )
|
OggTheoraFrame( S8* data, U32 size, bool ownMemory = false )
|
||||||
: Parent( data, size, ownMemory ) {}
|
: Parent( data, size, ownMemory ), mFrameNumber(0), mFrameTime(0), mFrameDuration(0) {}
|
||||||
|
|
||||||
/// Serial number of this frame in the stream.
|
/// Serial number of this frame in the stream.
|
||||||
U32 mFrameNumber;
|
U32 mFrameNumber;
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue