📄 modelbuilder.cpp
字号:
ModelParticleEmitter2->Data().SegmentColor1.x = ParticleEmitter2.Segment1.Color.B;
ModelParticleEmitter2->Data().SegmentColor1.y = ParticleEmitter2.Segment1.Color.G;
ModelParticleEmitter2->Data().SegmentColor1.z = ParticleEmitter2.Segment1.Color.R;
ModelParticleEmitter2->Data().Alpha.x = ParticleEmitter2.Segment1.Alpha * 255.0f;
ModelParticleEmitter2->Data().ParticleScaling.x = ParticleEmitter2.Segment1.Scaling;
ModelParticleEmitter2->Data().SegmentColor2.x = ParticleEmitter2.Segment2.Color.B;
ModelParticleEmitter2->Data().SegmentColor2.y = ParticleEmitter2.Segment2.Color.G;
ModelParticleEmitter2->Data().SegmentColor2.z = ParticleEmitter2.Segment2.Color.R;
ModelParticleEmitter2->Data().Alpha.y = ParticleEmitter2.Segment2.Alpha * 255.0f;
ModelParticleEmitter2->Data().ParticleScaling.y = ParticleEmitter2.Segment2.Scaling;
ModelParticleEmitter2->Data().SegmentColor2.x = ParticleEmitter2.Segment2.Color.B;
ModelParticleEmitter2->Data().SegmentColor2.y = ParticleEmitter2.Segment2.Color.G;
ModelParticleEmitter2->Data().SegmentColor2.z = ParticleEmitter2.Segment2.Color.R;
ModelParticleEmitter2->Data().Alpha.z = ParticleEmitter2.Segment3.Alpha * 255.0f;
ModelParticleEmitter2->Data().ParticleScaling.z = ParticleEmitter2.Segment3.Scaling;
ModelParticleEmitter2->Data().HeadLifeSpan.x = static_cast<FLOAT>(ParticleEmitter2.HeadLifeSpan.Start);
ModelParticleEmitter2->Data().HeadLifeSpan.y = static_cast<FLOAT>(ParticleEmitter2.HeadLifeSpan.End);
ModelParticleEmitter2->Data().HeadLifeSpan.z = static_cast<FLOAT>(ParticleEmitter2.HeadLifeSpan.Repeat);
ModelParticleEmitter2->Data().HeadDecay.x = static_cast<FLOAT>(ParticleEmitter2.HeadDecay.Start);
ModelParticleEmitter2->Data().HeadDecay.y = static_cast<FLOAT>(ParticleEmitter2.HeadDecay.End);
ModelParticleEmitter2->Data().HeadDecay.z = static_cast<FLOAT>(ParticleEmitter2.HeadDecay.Repeat);
ModelParticleEmitter2->Data().TailLifeSpan.x = static_cast<FLOAT>(ParticleEmitter2.TailLifeSpan.Start);
ModelParticleEmitter2->Data().TailLifeSpan.y = static_cast<FLOAT>(ParticleEmitter2.TailLifeSpan.End);
ModelParticleEmitter2->Data().TailLifeSpan.z = static_cast<FLOAT>(ParticleEmitter2.TailLifeSpan.Repeat);
ModelParticleEmitter2->Data().TailDecay.x = static_cast<FLOAT>(ParticleEmitter2.TailDecay.Start);
ModelParticleEmitter2->Data().TailDecay.y = static_cast<FLOAT>(ParticleEmitter2.TailDecay.End);
ModelParticleEmitter2->Data().TailDecay.z = static_cast<FLOAT>(ParticleEmitter2.TailDecay.Repeat);
ModelParticleEmitter2->Data().Rows = ParticleEmitter2.Rows;
ModelParticleEmitter2->Data().Columns = ParticleEmitter2.Columns;
ModelParticleEmitter2->Data().TextureId = ParticleEmitter2.TextureId;
ModelParticleEmitter2->Data().PriorityPlane = ParticleEmitter2.PriorityPlane;
ModelParticleEmitter2->Data().ReplaceableId = ParticleEmitter2.ReplaceableId;
ModelParticleEmitter2->Data().Time = ParticleEmitter2.Time;
ModelParticleEmitter2->Data().LifeSpan = ParticleEmitter2.LifeSpan;
ModelParticleEmitter2->Data().TailLength = ParticleEmitter2.TailLength;
ModelParticleEmitter2->Data().SortPrimitivesFarZ = ParticleEmitter2.SortPrimitivesFarZ;
ModelParticleEmitter2->Data().LineEmitter = ParticleEmitter2.LineEmitter;
ModelParticleEmitter2->Data().ModelSpace = ParticleEmitter2.ModelSpace;
ModelParticleEmitter2->Data().AlphaKey = ParticleEmitter2.AlphaKey;
ModelParticleEmitter2->Data().Unshaded = ParticleEmitter2.Unshaded;
ModelParticleEmitter2->Data().Unfogged = ParticleEmitter2.Unfogged;
ModelParticleEmitter2->Data().XYQuad = ParticleEmitter2.XYQuad;
ModelParticleEmitter2->Data().Squirt = ParticleEmitter2.Squirt;
ModelParticleEmitter2->Data().Head = ParticleEmitter2.Head;
ModelParticleEmitter2->Data().Tail = ParticleEmitter2.Tail;
if(!Model.AddParticleEmitter2(ModelParticleEmitter2)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a ribbon emitter
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateRibbonEmitter(CONST WAR3_MODEL_RIBBON_EMITTER& RibbonEmitter)
{
MODEL_RIBBON_EMITTER* ModelRibbonEmitter;
ModelRibbonEmitter = new MODEL_RIBBON_EMITTER();
if(ModelRibbonEmitter == NULL) return FALSE;
ModelRibbonEmitter->Data().Name = RibbonEmitter.Node.Name;
ModelRibbonEmitter->Data().ObjectId = RibbonEmitter.Node.ObjectId;
ModelRibbonEmitter->Data().ParentId = RibbonEmitter.Node.ParentId;
ModelRibbonEmitter->Data().DontInheritTranslation = RibbonEmitter.Node.DontInheritTranslation;
ModelRibbonEmitter->Data().DontInheritRotation = RibbonEmitter.Node.DontInheritRotation;
ModelRibbonEmitter->Data().DontInheritScaling = RibbonEmitter.Node.DontInheritScaling;
ModelRibbonEmitter->Data().Billboarded = RibbonEmitter.Node.Billboarded;
ModelRibbonEmitter->Data().BillboardedLockX = RibbonEmitter.Node.BillboardedLockX;
ModelRibbonEmitter->Data().BillboardedLockY = RibbonEmitter.Node.BillboardedLockY;
ModelRibbonEmitter->Data().BillboardedLockZ = RibbonEmitter.Node.BillboardedLockZ;
ModelRibbonEmitter->Data().CameraAnchored = RibbonEmitter.Node.CameraAnchored;
ModelRibbonEmitter->Data().Color.SetStaticVector3(D3DXVECTOR3(RibbonEmitter.Color.B, RibbonEmitter.Color.G, RibbonEmitter.Color.R));
ModelRibbonEmitter->Data().HeightAbove.SetStaticScalar(RibbonEmitter.HeightAbove);
ModelRibbonEmitter->Data().HeightBelow.SetStaticScalar(RibbonEmitter.HeightBelow);
ModelRibbonEmitter->Data().Alpha.SetStaticScalar(RibbonEmitter.Alpha);
ModelRibbonEmitter->Data().TextureSlot.SetStaticScalar(RibbonEmitter.TextureSlot);
ModelRibbonEmitter->Data().Visibility.SetStaticScalar(RibbonEmitter.Visibility);
ModelRibbonEmitter->Data().EmissionRate = RibbonEmitter.EmissionRate;
ModelRibbonEmitter->Data().LifeSpan = RibbonEmitter.LifeSpan;
ModelRibbonEmitter->Data().Gravity = RibbonEmitter.Gravity;
ModelRibbonEmitter->Data().Rows = RibbonEmitter.Rows;
ModelRibbonEmitter->Data().Columns = RibbonEmitter.Columns;
ModelRibbonEmitter->Data().MaterialId = RibbonEmitter.MaterialId;
if(!Model.AddRibbonEmitter(ModelRibbonEmitter)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a camera
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateCamera(CONST WAR3_MODEL_CAMERA& Camera)
{
MODEL_CAMERA* ModelCamera;
ModelCamera = new MODEL_CAMERA();
if(ModelCamera == NULL) return FALSE;
ModelCamera->Data().Name = Camera.Name;
ModelCamera->Data().Source.x = Camera.Position.X;
ModelCamera->Data().Source.y = Camera.Position.Y;
ModelCamera->Data().Source.z = Camera.Position.Z;
ModelCamera->Data().Target.x = Camera.TargetPosition.X;
ModelCamera->Data().Target.y = Camera.TargetPosition.Y;
ModelCamera->Data().Target.z = Camera.TargetPosition.Z;
ModelCamera->Data().FieldOfView = Camera.FieldOfView;
ModelCamera->Data().NearDistance = Camera.NearDistance;
ModelCamera->Data().FarDistance = Camera.FarDistance;
if(!Model.AddCamera(ModelCamera)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a geoset
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateGeoset(CONST WAR3_MODEL_GEOSET& Geoset)
{
MODEL_GEOSET* ModelGeoset;
ModelGeoset = new MODEL_GEOSET();
if(ModelGeoset == NULL) return FALSE;
ModelGeoset->Data().MaterialId = Geoset.MaterialId;
ModelGeoset->Data().SelectionGroup = Geoset.SelectionGroup;
ModelGeoset->Data().Unselectable = Geoset.Unselectable;
ModelGeoset->Data().Extent.Radius = Geoset.Extent.Radius;
ModelGeoset->Data().Extent.Min.x = Geoset.Extent.Min.X;
ModelGeoset->Data().Extent.Min.y = Geoset.Extent.Min.Y;
ModelGeoset->Data().Extent.Min.z = Geoset.Extent.Min.Z;
ModelGeoset->Data().Extent.Max.x = Geoset.Extent.Max.X;
ModelGeoset->Data().Extent.Max.y = Geoset.Extent.Max.Y;
ModelGeoset->Data().Extent.Max.z = Geoset.Extent.Max.Z;
if(!Model.AddGeoset(ModelGeoset)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a geoset animation
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateGeosetAnimation(CONST WAR3_MODEL_GEOSET_ANIMATION& GeosetAnimation)
{
MODEL_GEOSET_ANIMATION* ModelGeosetAnimation;
ModelGeosetAnimation = new MODEL_GEOSET_ANIMATION();
if(ModelGeosetAnimation == NULL) return FALSE;
ModelGeosetAnimation->Data().GeosetId = GeosetAnimation.GeosetId;
ModelGeosetAnimation->Data().Color.SetStaticVector3(D3DXVECTOR3(GeosetAnimation.Color.B, GeosetAnimation.Color.G, GeosetAnimation.Color.R));
ModelGeosetAnimation->Data().Alpha.SetStaticScalar(GeosetAnimation.Alpha);
ModelGeosetAnimation->Data().UseColor = GeosetAnimation.UseColor;
ModelGeosetAnimation->Data().DropShadow = GeosetAnimation.DropShadow;
if(!Model.AddGeosetAnimation(ModelGeosetAnimation)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a global sequence
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateGlobalSequence(CONST WAR3_MODEL_GLOBAL_SEQUENCE& GlobalSequence)
{
MODEL_GLOBAL_SEQUENCE* ModelGlobalSequence;
ModelGlobalSequence = new MODEL_GLOBAL_SEQUENCE();
if(ModelGlobalSequence == NULL) return FALSE;
ModelGlobalSequence->Data().Duration = GlobalSequence.Duration;
if(!Model.AddGlobalSequence(ModelGlobalSequence)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a material
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateMaterial(CONST WAR3_MODEL_MATERIAL& Material)
{
MODEL_MATERIAL* ModelMaterial;
ModelMaterial = new MODEL_MATERIAL();
if(ModelMaterial == NULL) return FALSE;
ModelMaterial->Data().PriorityPlane = Material.PriorityPlane;
ModelMaterial->Data().ConstantColor = Material.ConstantColor;
ModelMaterial->Data().SortPrimitivesFarZ = Material.SortPrimitivesFarZ;
ModelMaterial->Data().FullResolution = Material.FullResolution;
if(!Model.AddMaterial(ModelMaterial)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a pivot point
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreatePivotPoint(CONST WAR3_MODEL_PIVOT_POINT& PivotPoint)
{
D3DXVECTOR3* ModelPivotPoint;
ModelPivotPoint = new D3DXVECTOR3();
if(ModelPivotPoint == NULL) return FALSE;
ModelPivotPoint->x = PivotPoint.Position.X;
ModelPivotPoint->y = PivotPoint.Position.Y;
ModelPivotPoint->z = PivotPoint.Position.Z;
if(!Model.AddPivotPoint(ModelPivotPoint)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a sequence
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateSequence(CONST WAR3_MODEL_SEQUENCE& Sequence)
{
MODEL_SEQUENCE* ModelSequence;
ModelSequence = new MODEL_SEQUENCE();
if(ModelSequence == NULL) return FALSE;
ModelSequence->Data().Name = Sequence.Name;
ModelSequence->Data().Rarity = Sequence.Rarity;
ModelSequence->Data().MoveSpeed = Sequence.MoveSpeed;
ModelSequence->Data().NonLooping = Sequence.NonLooping;
ModelSequence->Data().Interval.x = static_cast<FLOAT>(Sequence.IntervalStart);
ModelSequence->Data().Interval.y = static_cast<FLOAT>(Sequence.IntervalEnd);
ModelSequence->Data().Extent.Radius = Sequence.Extent.Radius;
ModelSequence->Data().Extent.Min.x = Sequence.Extent.Min.X;
ModelSequence->Data().Extent.Min.y = Sequence.Extent.Min.Y;
ModelSequence->Data().Extent.Min.z = Sequence.Extent.Min.Z;
ModelSequence->Data().Extent.Max.x = Sequence.Extent.Max.X;
ModelSequence->Data().Extent.Max.y = Sequence.Extent.Max.Y;
ModelSequence->Data().Extent.Max.z = Sequence.Extent.Max.Z;
if(!Model.AddSequence(ModelSequence)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a texture
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateTexture(CONST WAR3_MODEL_TEXTURE& Texture)
{
std::string FileName;
MODEL_TEXTURE* ModelTexture;
FileName = Texture.FileName;
if(FileName != "")
{
if(FileName.substr(0, 2) == ".\\") FileName.erase(0, 2);
if(!TextureManager.Load(FileName))
{
FileName = Common.GetFileName(FileName);
if(!TextureManager.Load(FileName))
{
return FALSE;
}
}
}
Error.ClearMessage();
ModelTexture = new MODEL_TEXTURE();
if(ModelTexture == NULL) return FALSE;
ModelTexture->Data().FileName = FileName;
ModelTexture->Data().ReplaceableId = Texture.ReplaceableId;
ModelTexture->Data().WrapWidth = Texture.WrapWidth;
ModelTexture->Data().WrapHeight = Texture.WrapHeight;
if(!Model.AddTexture(ModelTexture)) return FALSE;
return TRUE;
}
//+-----------------------------------------------------------------------------
//| Creates a texture animation
//+-----------------------------------------------------------------------------
BOOL MODEL_BUILDER::CreateTextureAnimation(CONST WAR3_MODEL_TEXTURE_ANIMATION& TextureAnimation)
{
MODEL_TEXTURE_ANIMATION* ModelTextureAnimation;
ModelTextureAnimation = new MODEL_TEXTURE_ANIMATION();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -