Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 74 additions & 73 deletions DEGaplessParticleEmitter.cs
Original file line number Diff line number Diff line change
@@ -1,78 +1,79 @@
using System;
//1.2pre
using UnityEngine;

namespace DestructionEffects
{
public class DEGaplessParticleEmitter : MonoBehaviour
{
public KSPParticleEmitter pEmitter;

public float maxDistance = 1.1f;

public bool emit = false;

public Part part = null;

public Rigidbody rb;



void Start()
{
pEmitter = gameObject.GetComponent<KSPParticleEmitter>();
pEmitter.emit = false;


if(part!=null)
{
Debug.Log ("Part "+part.partName+"'s explosionPotential: "+ part.explosionPotential);
}

maxDistance = pEmitter.minSize/3;


}

void FixedUpdate()
{
if(emit)
{
Vector3 velocity = (part == null) ? rb.velocity : part.rigidbody.velocity;
Vector3 originalLocalPosition = gameObject.transform.localPosition;
Vector3 originalPosition = gameObject.transform.position;
Vector3 startPosition = gameObject.transform.position + (velocity * Time.fixedDeltaTime);
float originalGapDistance = Vector3.Distance(originalPosition, startPosition);
float intermediateSteps = originalGapDistance/maxDistance;

pEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, startPosition, maxDistance);
for(int i = 1; i < intermediateSteps; i++)
{
pEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, startPosition, maxDistance);
}
gameObject.transform.localPosition = originalLocalPosition;
}

}

public void EmitParticles()
{
Vector3 velocity = (part == null) ? rb.velocity : part.rigidbody.velocity;
Vector3 originalLocalPosition = gameObject.transform.localPosition;
Vector3 originalPosition = gameObject.transform.position;
Vector3 startPosition = gameObject.transform.position + (velocity * Time.fixedDeltaTime);
float originalGapDistance = Vector3.Distance(originalPosition, startPosition);
float intermediateSteps = originalGapDistance/maxDistance;

//gameObject.transform.position = startPosition;
for(int i = 0; i < intermediateSteps; i++)
{
pEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, startPosition, maxDistance);
}
gameObject.transform.localPosition = originalLocalPosition;
}
}
}
public class DeGaplessParticleEmitter : MonoBehaviour
{
public bool Emit;

public float MaxDistance = 1.1f;

public Part Part;

public KSPParticleEmitter PEmitter;

public Rigidbody Rb;

private void Start()
{
PEmitter = gameObject.GetComponent<KSPParticleEmitter>();
PEmitter.emit = false;

if (Part != null)
{
Debug.Log("Part " + Part.partName + "'s explosionPotential: " + Part.explosionPotential);
}

MaxDistance = PEmitter.minSize / 3;
}

private void FixedUpdate()
{
if (!Emit) return;

var velocity = Part?.GetComponent<Rigidbody>().velocity ?? Rb.velocity;
var originalLocalPosition = gameObject.transform.localPosition;
var originalPosition = gameObject.transform.position;
var startPosition = gameObject.transform.position + velocity * Time.fixedDeltaTime;
var originalGapDistance = Vector3.Distance(originalPosition, startPosition);
var intermediateSteps = originalGapDistance / MaxDistance;

PEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(
gameObject.transform.position,
startPosition,
MaxDistance);
for (var i = 1; i < intermediateSteps; i++)
{
PEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(
gameObject.transform.position,
startPosition,
MaxDistance);
}
gameObject.transform.localPosition = originalLocalPosition;
}

public void EmitParticles()
{
var velocity = Part?.GetComponent<Rigidbody>().velocity ?? Rb.velocity;
var originalLocalPosition = gameObject.transform.localPosition;
var originalPosition = gameObject.transform.position;
var startPosition = gameObject.transform.position + velocity * Time.fixedDeltaTime;
var originalGapDistance = Vector3.Distance(originalPosition, startPosition);
var intermediateSteps = originalGapDistance / MaxDistance;

//gameObject.transform.position = startPosition;
for (var i = 0; i < intermediateSteps; i++)
{
PEmitter.EmitParticle();
gameObject.transform.position = Vector3.MoveTowards(
gameObject.transform.position,
startPosition,
MaxDistance);
}
gameObject.transform.localPosition = originalLocalPosition;
}
}
}
120 changes: 116 additions & 4 deletions DestructionEffects.csproj
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
Expand All @@ -10,6 +10,27 @@
<RootNamespace>DestructionEffects</RootNamespace>
<AssemblyName>DestructionEffects</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
Expand All @@ -31,18 +52,109 @@
<PlatformTarget>x86</PlatformTarget>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<OutputPath>bin\Release\</OutputPath>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Optimize>true</Optimize>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\..\..\Games\KSP\KSP 0.90 - Mod Dev\KSP_Data\Managed\Assembly-CSharp.dll</HintPath>
<HintPath>G:\Steam\steamapps\common\Kerbal Space Program\KSP_x64_Data\Managed\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Assembly-CSharp-firstpass, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>G:\Steam\steamapps\common\Kerbal Space Program\KSP_x64_Data\Managed\Assembly-CSharp-firstpass.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="KSPAssets, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>G:\Steam\steamapps\common\Kerbal Space Program\KSP_x64_Data\Managed\KSPAssets.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System" />
<Reference Include="UnityEngine">
<HintPath>..\..\..\Games\KSP\KSP 0.90 - Mod Dev\KSP_Data\Managed\UnityEngine.dll</HintPath>
<HintPath>G:\Steam\steamapps\common\Kerbal Space Program\KSP_x64_Data\Managed\UnityEngine.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>G:\Steam\steamapps\common\Kerbal Space Program\KSP_x64_Data\Managed\UnityEngine.UI.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="FlamingJoints.cs" />
<Compile Include="DEGaplessParticleEmitter.cs" />
<Compile Include="FlamingJointScript.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="Distribution\GameData\DestructionEffects\License.txt" />
<Content Include="Distribution\GameData\DestructionEffects\Models\FlameEffect\flameA.png" />
<Content Include="Distribution\GameData\DestructionEffects\Models\FlameEffect\flameD.png" />
<Content Include="Distribution\GameData\DestructionEffects\Models\FlameEffect\muzzleSmoke.png" />
<Content Include="Distribution\GameData\DestructionEffects\Models\FlameEffect\Torchanimation_135.png" />
<Content Include="Distribution\GameData\DestructionEffects\Plugins\DestructionEffects.dll" />
<Content Include="LocalDev\7za_dir.txt" />
<Content Include="LocalDev\dist_dir.txt" />
<Content Include="LocalDev\ksp_dir.txt" />
<Content Include="LocalDev\mono_exe.txt" />
<Content Include="LocalDev\pdb2mdb_exe.txt" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<None Include="Distribution\GameData\DestructionEffects\Models\FlameEffect\model.mu" />
</ItemGroup>
<PropertyGroup>
<PostBuildEvent>@echo $(Targetname)
@echo ...
@echo set lpath vars from LocalDev storage...
set /p KSP_DIR=&lt;"$(ProjectDir)LocalDev\ksp_dir.txt"
set /p PDB2MDB_EXE=&lt;"$(ProjectDir)LocalDev\pdb2mdb_exe.txt"
set /p ZA_DIR=&lt;"$(ProjectDir)LocalDev\7za_dir.txt"
set /p DIST_DIR=&lt;"$(ProjectDir)LocalDev\dist_dir.txt"

@echo distributing $(Targetname) files...
copy /Y "$(TargetPath)" "$(ProjectDir)Distribution\GameData\DestructionEffects\Plugins\"

if $(ConfigurationName) == Debug (
@echo building $(Targetname).dll.mdb file...
cd "$(TargetDir)"
call "%25PDB2MDB_EXE%25" $(Targetname).dll
copy /Y "$(TargetDir)$(Targetname).dll.mdb" "%25KSP_DIR%25\GameData\DestructionEffects\Plugins\"
)

@echo packaging files...
if exist "%25DIST_DIR%25\DestructionEffects*.zip" del "%25DIST_DIR%25\DestructionEffects*.zip"
call "%25ZA_DIR%25\7za.exe" a -tzip -r "%25DIST_DIR%25\DestructionEffects.@(VersionNumber)_%25DATE:~4,2%25%25DATE:~7,2%25%25DATE:~10,4%25.zip" "$(ProjectDir)Distribution\*.*"

@echo Deploy $(Targetname) Distribution files to test env: %25KSP_DIR%25\GameData...
@echo copying:"$(SolutionDir)Distribution\GameData" to "%25KSP_DIR%25\GameData"
xcopy /E /Y "$(SolutionDir)Distribution\GameData" "%25KSP_DIR%25\GameData"

if $(ConfigurationName) == Debug (
copy /Y "$(TargetDir)$(Targetname).pdb" "%25KSP_DIR%25\GameData\DestructionEffects\Plugins\"
)

@echo Build/deploy complete!</PostBuildEvent>
</PropertyGroup>
</Project>
28 changes: 28 additions & 0 deletions DestructionEffects.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DestructionEffects", "DestructionEffects.csproj", "{7BBA3030-1674-4759-8DEA-2012D86512BC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Debug|x86.ActiveCfg = Debug|x86
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Debug|x86.Build.0 = Debug|x86
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Release|Any CPU.Build.0 = Release|Any CPU
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Release|x86.ActiveCfg = Release|x86
{7BBA3030-1674-4759-8DEA-2012D86512BC}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
8 changes: 8 additions & 0 deletions Distribution/GameData/DestructionEffects/License.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
This mod is released under the Creative Commons 0 license.

"The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. "

CC0 1.0 Universal
https://creativecommons.org/publicdomain/zero/1.0/
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading