Page 1 of 1
Is there a sort of dummy all purpose entity type available?
Posted: Mon Jun 19, 2017 2:01 am
by rtssmkn
I am currently working on making the Helicopters mod more efficient. Is there a sort of dummy all purpose entity type available that I can use to simulate rotor and both body and rotor shadow movement without me having to make these additional entities also of type car? And I am quite reluctant to mis-re-use any other entity types for that purpose.
And, if there is no such general purpose entity type, would it be possible to introduce such an entity type? E.g. a custom-animated type that would support animations and smoke and so on.
Re: Is there a sort of dummy all purpose entity type available?
Posted: Mon Jun 19, 2017 10:27 am
by 321freddy
It looks like you just need an anmated entity without any collision box so I can suggest you use "smoke".
It can have an animation, multiple sprite layers (for shadow), customizable render layer and is mostly for visuals only.
Although you would probably need to teleport the rotor to the helicopter base every tick which would impact performance.
But anyway here is an example:
Code: Select all
data:extend{
{
type = "smoke",
name = "helicopter-rotor",
flags = {"not-repairable", "not-blueprintable", "not-deconstructable", "placeable-off-grid", "not-on-map"},
duration = 99999999,
spread_duration = 1,
start_scale = 1,
end_scale = 1,
color = { r = 1, g = 1, b = 1, a = 1 },
cyclic = true,
affected_by_wind = false,
show_when_smoke_off = true,
movement_slow_down_factor = 0,
vertical_speed_slowdown = 0,
render_layer = "air-object",
animation = {
layers = {
{
filename = "__my-mod__/graphics/rotor.png",
width = 64,
height = 64,
scale = 0.5,
frame_count = 1
},
{
filename = "__my-mod__/graphics/rotor-shadow.png",
width = 64,
height = 64,
draw_as_shadow = true,
shift = {2,0.5},
scale = 0.5,
frame_count = 1
}
}
}
}
}
Re: Is there a sort of dummy all purpose entity type available?
Posted: Mon Jun 19, 2017 9:53 pm
by rtssmkn
Thanks, I will try this. I have already reduced the number of entities to only 4 during the landing and starting phase.
During flight it will be reduced to only 3, but I reckon that I can reduce it to just two. Before that it was 7.
Re: Is there a sort of dummy all purpose entity type available?
Posted: Wed Jun 21, 2017 6:30 pm
by rtssmkn
@321freddy Sadly, the smoke entity type has some issues that prevents me from reusing it. First, the smoke entity will be
destroyed after the specified duration. While these entities could be recreated, its animation cannot be controlled in the
way that the mod is implemented, so the rotors will not be moving at all.
Too bad, that there is no general purpose entity...
Re: Is there a sort of dummy all purpose entity type available?
Posted: Wed Jun 21, 2017 7:30 pm
by 321freddy
rtssmkn wrote:First, the smoke entity will be destroyed after the specified duration.
This is why I set the duration to be very large. 99999999 ticks is almost 20 days of pure game time, so the smoke will essentially last forever.
Set it higher if you want. I think the maxmimum is 2^31 (414 days).
rtssmkn wrote: its animation cannot be controlled in the way that the mod is implemented, so the rotors will not be moving at all.
How do you implement the animation? Smoke has a static animation which never ends (with cyclic = true).
So if you define a proper spritesheet for the animation it will work. The spritesheet contains every frame of the animation in order. You have to set the frame_count paramter to the correct value to ensure that the animation will play properly.
If you want to stop the animation replace the smoke entity with a second new smoke entity without any animation (use a seperate prototype definition).
If by animation you mean rotate the rotors direction every tick there is no other entitiy type than "car" that supports this behaviour. But I don't recommend doing this because the performance will be very bad, especially if you have multiple helicopters.
Once your helicopter is in the air you just need a static rotation animation for your rotor for which smoke would the perfect choice because you don't need to do all the rotation every tick and and it supports render layers so it can always be ontop of other entities.